2020-04-13 22:14:56 +00:00
|
|
|
package endpoints
|
|
|
|
|
|
|
|
import (
|
2020-10-02 09:56:48 +00:00
|
|
|
"context"
|
2020-04-13 22:14:56 +00:00
|
|
|
"fmt"
|
2020-10-02 09:56:48 +00:00
|
|
|
apimock "github.com/baez90/inetmock/internal/mock/api"
|
2020-04-13 22:14:56 +00:00
|
|
|
"github.com/baez90/inetmock/pkg/api"
|
2020-04-27 22:26:15 +00:00
|
|
|
"github.com/baez90/inetmock/pkg/config"
|
2020-04-13 22:14:56 +00:00
|
|
|
"github.com/golang/mock/gomock"
|
2020-10-02 09:56:48 +00:00
|
|
|
"reflect"
|
2020-04-13 22:14:56 +00:00
|
|
|
"testing"
|
|
|
|
)
|
|
|
|
|
2020-10-02 09:56:48 +00:00
|
|
|
var (
|
|
|
|
anyContext = context.Background()
|
|
|
|
)
|
|
|
|
|
2020-04-13 22:14:56 +00:00
|
|
|
func Test_endpoint_Name(t *testing.T) {
|
|
|
|
type fields struct {
|
|
|
|
name string
|
|
|
|
handler api.ProtocolHandler
|
2020-04-27 22:26:15 +00:00
|
|
|
config config.HandlerConfig
|
2020-04-13 22:14:56 +00:00
|
|
|
}
|
|
|
|
tests := []struct {
|
|
|
|
name string
|
|
|
|
fields fields
|
|
|
|
want string
|
|
|
|
}{
|
|
|
|
{
|
|
|
|
name: "Empty Name if struct is uninitialized",
|
|
|
|
fields: fields{},
|
|
|
|
want: "",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: "Expected Name if struct is initialized",
|
|
|
|
fields: fields{
|
|
|
|
name: "sampleHandler",
|
|
|
|
},
|
|
|
|
want: "sampleHandler",
|
|
|
|
},
|
|
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
|
|
e := endpoint{
|
|
|
|
name: tt.fields.name,
|
|
|
|
handler: tt.fields.handler,
|
|
|
|
config: tt.fields.config,
|
|
|
|
}
|
|
|
|
if got := e.Name(); got != tt.want {
|
|
|
|
t.Errorf("Name() = %v, want %v", got, tt.want)
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func Test_endpoint_Shutdown(t *testing.T) {
|
|
|
|
type fields struct {
|
|
|
|
name string
|
|
|
|
handler api.ProtocolHandler
|
2020-04-27 22:26:15 +00:00
|
|
|
config config.HandlerConfig
|
2020-04-13 22:14:56 +00:00
|
|
|
}
|
|
|
|
tests := []struct {
|
|
|
|
name string
|
|
|
|
fields fields
|
|
|
|
wantErr bool
|
|
|
|
}{
|
|
|
|
{
|
|
|
|
name: "Expect no error if mocked handler does not return one",
|
|
|
|
fields: fields{
|
|
|
|
handler: func() api.ProtocolHandler {
|
2020-10-02 09:56:48 +00:00
|
|
|
handler := apimock.NewMockProtocolHandler(gomock.NewController(t))
|
2020-04-13 22:14:56 +00:00
|
|
|
handler.EXPECT().
|
2020-10-02 09:56:48 +00:00
|
|
|
Shutdown(gomock.Any()).
|
2020-04-13 22:14:56 +00:00
|
|
|
MaxTimes(1).
|
|
|
|
Return(nil)
|
|
|
|
return handler
|
|
|
|
}(),
|
|
|
|
},
|
|
|
|
wantErr: false,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: "Expect error if mocked handler returns one",
|
|
|
|
fields: fields{
|
|
|
|
handler: func() api.ProtocolHandler {
|
2020-10-02 09:56:48 +00:00
|
|
|
handler := apimock.NewMockProtocolHandler(gomock.NewController(t))
|
2020-04-13 22:14:56 +00:00
|
|
|
handler.EXPECT().
|
2020-10-02 09:56:48 +00:00
|
|
|
Shutdown(gomock.AssignableToTypeOf(reflect.TypeOf(context.Background()))).
|
2020-04-13 22:14:56 +00:00
|
|
|
MaxTimes(1).
|
|
|
|
Return(fmt.Errorf(""))
|
|
|
|
return handler
|
|
|
|
}(),
|
|
|
|
},
|
|
|
|
wantErr: true,
|
|
|
|
},
|
|
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
|
|
e := &endpoint{
|
|
|
|
name: tt.fields.name,
|
|
|
|
handler: tt.fields.handler,
|
|
|
|
config: tt.fields.config,
|
|
|
|
}
|
2020-10-02 09:56:48 +00:00
|
|
|
if err := e.Shutdown(context.Background()); (err != nil) != tt.wantErr {
|
2020-04-13 22:14:56 +00:00
|
|
|
t.Errorf("Shutdown() error = %v, wantErr %v", err, tt.wantErr)
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func Test_endpoint_Start(t *testing.T) {
|
|
|
|
|
2020-04-27 22:26:15 +00:00
|
|
|
demoHandlerConfig := config.HandlerConfig{
|
|
|
|
HandlerName: "sampleHandler",
|
|
|
|
Port: 80,
|
|
|
|
ListenAddress: "0.0.0.0",
|
|
|
|
}
|
2020-04-13 22:14:56 +00:00
|
|
|
|
|
|
|
type fields struct {
|
|
|
|
name string
|
|
|
|
handler api.ProtocolHandler
|
2020-04-27 22:26:15 +00:00
|
|
|
config config.HandlerConfig
|
2020-04-13 22:14:56 +00:00
|
|
|
}
|
|
|
|
tests := []struct {
|
|
|
|
name string
|
|
|
|
fields fields
|
|
|
|
wantErr bool
|
|
|
|
}{
|
|
|
|
{
|
|
|
|
name: "Expect no error if mocked handler does not return one",
|
|
|
|
fields: fields{
|
|
|
|
handler: func() api.ProtocolHandler {
|
2020-10-02 09:56:48 +00:00
|
|
|
handler := apimock.NewMockProtocolHandler(gomock.NewController(t))
|
2020-04-13 22:14:56 +00:00
|
|
|
handler.EXPECT().
|
2020-04-27 22:26:15 +00:00
|
|
|
Start(gomock.Any()).
|
2020-04-13 22:14:56 +00:00
|
|
|
MaxTimes(1).
|
|
|
|
Return(nil)
|
|
|
|
return handler
|
|
|
|
}(),
|
|
|
|
},
|
|
|
|
wantErr: false,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: "Expect error if mocked handler returns one",
|
|
|
|
fields: fields{
|
|
|
|
handler: func() api.ProtocolHandler {
|
2020-10-02 09:56:48 +00:00
|
|
|
handler := apimock.NewMockProtocolHandler(gomock.NewController(t))
|
2020-04-13 22:14:56 +00:00
|
|
|
handler.EXPECT().
|
2020-04-27 22:26:15 +00:00
|
|
|
Start(gomock.Any()).
|
2020-04-13 22:14:56 +00:00
|
|
|
MaxTimes(1).
|
|
|
|
Return(fmt.Errorf(""))
|
|
|
|
return handler
|
|
|
|
}(),
|
|
|
|
},
|
|
|
|
wantErr: true,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: "Expect config to be passed to Start call",
|
|
|
|
fields: fields{
|
|
|
|
config: demoHandlerConfig,
|
|
|
|
handler: func() api.ProtocolHandler {
|
2020-10-02 09:56:48 +00:00
|
|
|
handler := apimock.NewMockProtocolHandler(gomock.NewController(t))
|
2020-04-13 22:14:56 +00:00
|
|
|
handler.EXPECT().
|
|
|
|
Start(demoHandlerConfig).
|
|
|
|
MaxTimes(1).
|
|
|
|
Return(fmt.Errorf(""))
|
|
|
|
return handler
|
|
|
|
}(),
|
|
|
|
},
|
|
|
|
wantErr: true,
|
|
|
|
},
|
|
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
|
|
e := &endpoint{
|
|
|
|
name: tt.fields.name,
|
|
|
|
handler: tt.fields.handler,
|
|
|
|
config: tt.fields.config,
|
|
|
|
}
|
|
|
|
if err := e.Start(); (err != nil) != tt.wantErr {
|
|
|
|
t.Errorf("Start() error = %v, wantErr %v", err, tt.wantErr)
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|