From 36a0e2a6a1218c547e3846170f73ea71615ed392 Mon Sep 17 00:00:00 2001 From: vipul-rawat Date: Wed, 11 Dec 2024 18:55:04 +0530 Subject: [PATCH 1/3] added application add command to create applications --- application/handler/application.go | 34 ++++++ application/handler/handler_test.go | 68 +++++++++++ application/handler/interface.go | 7 ++ application/handler/mock_interface.go | 55 +++++++++ application/service/application.go | 65 ++++++++++ application/service/application_test.go | 153 ++++++++++++++++++++++++ application/service/models.go | 53 ++++++++ application/service/models_test.go | 122 +++++++++++++++++++ main.go | 16 ++- 9 files changed, 569 insertions(+), 4 deletions(-) create mode 100644 application/handler/application.go create mode 100644 application/handler/handler_test.go create mode 100644 application/handler/interface.go create mode 100644 application/handler/mock_interface.go create mode 100644 application/service/application.go create mode 100644 application/service/application_test.go create mode 100644 application/service/models.go create mode 100644 application/service/models_test.go diff --git a/application/handler/application.go b/application/handler/application.go new file mode 100644 index 0000000..79400cc --- /dev/null +++ b/application/handler/application.go @@ -0,0 +1,34 @@ +package handler + +import ( + "errors" + "gofr.dev/pkg/gofr" +) + +var ( + ErrorApplicationNameNotProvided = errors.New("please enter application name, -name=") +) + +type Handler struct { + appAdd ApplicationAdder +} + +func New(appAdd ApplicationAdder) *Handler { + return &Handler{ + appAdd: appAdd, + } +} + +func (h *Handler) Add(ctx *gofr.Context) (any, error) { + name := ctx.Param("name") + if name == "" { + return nil, ErrorApplicationNameNotProvided + } + + err := h.appAdd.AddApplication(ctx, name) + if err != nil { + return nil, err + } + + return "Application " + name + " added successfully!", nil +} diff --git a/application/handler/handler_test.go b/application/handler/handler_test.go new file mode 100644 index 0000000..6133938 --- /dev/null +++ b/application/handler/handler_test.go @@ -0,0 +1,68 @@ +package handler + +import ( + "errors" + "go.uber.org/mock/gomock" + "gofr.dev/pkg/gofr/cmd" + + "github.com/stretchr/testify/require" + "gofr.dev/pkg/gofr" + "gofr.dev/pkg/gofr/container" + "testing" +) + +func TestHandler_Add(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + mockAppAdder := NewMockApplicationAdder(ctrl) + + testCases := []struct { + name string + appName string + mockCalls []*gomock.Call + expected any + expErr error + }{ + { + name: "success", + appName: "test-app", + mockCalls: []*gomock.Call{ + mockAppAdder.EXPECT().AddApplication(gomock.Any(), "test-app").Return(nil), + }, + expected: "Application test-app added successfully!", + expErr: nil, + }, + { + name: "missing name parameter", + appName: "", + expected: nil, + expErr: ErrorApplicationNameNotProvided, + }, + { + name: "error adding application", + appName: "test-app", + mockCalls: []*gomock.Call{ + mockAppAdder.EXPECT().AddApplication(gomock.Any(), "test-app").Return(errors.New("internal error")), + }, + expected: nil, + expErr: errors.New("internal error"), + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + mockCont, _ := container.NewMockContainer(t) + ctx := &gofr.Context{ + Container: mockCont, + Request: cmd.NewRequest([]string{"", "-name=" + tc.appName}), + } + + h := New(mockAppAdder) + res, err := h.Add(ctx) + + require.Equal(t, tc.expErr, err) + require.Equal(t, tc.expected, res) + }) + } +} diff --git a/application/handler/interface.go b/application/handler/interface.go new file mode 100644 index 0000000..fb29e0e --- /dev/null +++ b/application/handler/interface.go @@ -0,0 +1,7 @@ +package handler + +import "gofr.dev/pkg/gofr" + +type ApplicationAdder interface { + AddApplication(ctx *gofr.Context, name string) error +} diff --git a/application/handler/mock_interface.go b/application/handler/mock_interface.go new file mode 100644 index 0000000..1435ad3 --- /dev/null +++ b/application/handler/mock_interface.go @@ -0,0 +1,55 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: interface.go +// +// Generated by this command: +// +// mockgen -source=interface.go -destination=mock_interface.go -package=handler +// + +// Package handler is a generated GoMock package. +package handler + +import ( + reflect "reflect" + + gomock "go.uber.org/mock/gomock" + gofr "gofr.dev/pkg/gofr" +) + +// MockApplicationAdder is a mock of ApplicationAdder interface. +type MockApplicationAdder struct { + ctrl *gomock.Controller + recorder *MockApplicationAdderMockRecorder + isgomock struct{} +} + +// MockApplicationAdderMockRecorder is the mock recorder for MockApplicationAdder. +type MockApplicationAdderMockRecorder struct { + mock *MockApplicationAdder +} + +// NewMockApplicationAdder creates a new mock instance. +func NewMockApplicationAdder(ctrl *gomock.Controller) *MockApplicationAdder { + mock := &MockApplicationAdder{ctrl: ctrl} + mock.recorder = &MockApplicationAdderMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockApplicationAdder) EXPECT() *MockApplicationAdderMockRecorder { + return m.recorder +} + +// AddApplication mocks base method. +func (m *MockApplicationAdder) AddApplication(ctx *gofr.Context, name string) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "AddApplication", ctx, name) + ret0, _ := ret[0].(error) + return ret0 +} + +// AddApplication indicates an expected call of AddApplication. +func (mr *MockApplicationAdderMockRecorder) AddApplication(ctx, name any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "AddApplication", reflect.TypeOf((*MockApplicationAdder)(nil).AddApplication), ctx, name) +} diff --git a/application/service/application.go b/application/service/application.go new file mode 100644 index 0000000..3456abf --- /dev/null +++ b/application/service/application.go @@ -0,0 +1,65 @@ +package service + +import ( + "encoding/json" + "fmt" + "net/http" + + "gofr.dev/pkg/gofr" +) + +type Service struct { +} + +func New() *Service { + return &Service{} +} + +func (s *Service) AddApplication(ctx *gofr.Context, name string) error { + var ( + envs []Environment + input string + ) + + app := &Application{Name: name} + api := ctx.GetHTTPService("api-service") + order := 1 + + ctx.Out.Print("Do you wish to add environments to the application? (y/n) ") + + fmt.Scanf("%s", &input) + + for { + if input == "y" { + ctx.Out.Println("Enter environment name:") + fmt.Scanf("%s", &input) + + envs = append(envs, Environment{Name: input, Order: order}) + order++ + } else { + break + } + + ctx.Out.Print("Do you wish to add more? (y/n) ") + fmt.Scanf("%s", &input) + if input == "n" { + break + } + } + + app.Envs = envs + body, _ := json.Marshal(app) + + resp, err := api.PostWithHeaders(ctx, "application", nil, body, nil) + if err != nil { + return err + } + + defer resp.Body.Close() + + if resp.StatusCode != http.StatusCreated { + return getAPIError(resp) + } + + return nil +} diff --git a/application/service/application_test.go b/application/service/application_test.go new file mode 100644 index 0000000..0bec1d2 --- /dev/null +++ b/application/service/application_test.go @@ -0,0 +1,153 @@ +package service + +import ( + "bytes" + "encoding/json" + "errors" + "github.com/stretchr/testify/require" + "go.uber.org/mock/gomock" + "gofr.dev/pkg/gofr" + "gofr.dev/pkg/gofr/cmd/terminal" + "gofr.dev/pkg/gofr/container" + "gofr.dev/pkg/gofr/service" + "io" + "net/http" + "os" + "testing" +) + +var errAPICall = errors.New("error in API call") + +func Test_AddApplication(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + mockCont, mocks := container.NewMockContainer(t, func(c *container.Container, ctrl *gomock.Controller) any { + return service.NewMockHTTP(ctrl) + }) + mockCont.Services["api-service"] = mocks.HTTPService + ctx := &gofr.Context{Container: mockCont, Out: terminal.New()} + + b, err := json.Marshal(MockErrorResponse{Error: "Something went wrong"}) + if err != nil { + t.Fatalf("Failed to marshal test response body: %v", err) + } + + testCases := []struct { + name string + mockCalls []*gomock.Call + expError error + }{ + { + name: "success Post call", + mockCalls: []*gomock.Call{ + mocks.HTTPService.EXPECT().PostWithHeaders(ctx, "application", nil, gomock.Any(), nil). + Return(&http.Response{StatusCode: http.StatusCreated, Body: io.NopCloser(&errorReader{})}, nil), + }, + expError: nil, + }, + { + name: "error in Post call", + mockCalls: []*gomock.Call{ + mocks.HTTPService.EXPECT().PostWithHeaders(ctx, "application", nil, gomock.Any(), nil). + Return(nil, errAPICall), + }, + expError: errAPICall, + }, + { + name: "unexpected response", + mockCalls: []*gomock.Call{ + mocks.HTTPService.EXPECT().PostWithHeaders(ctx, "application", nil, gomock.Any(), nil). + Return(&http.Response{StatusCode: http.StatusInternalServerError, Body: io.NopCloser(bytes.NewBuffer(b))}, nil), + }, + expError: &ErrAPIService{StatusCode: http.StatusInternalServerError, Message: "Something went wrong"}, + }, + } + + for _, tt := range testCases { + t.Run(tt.name, func(t *testing.T) { + s := New() + + errSvc := s.AddApplication(ctx, "test") + + require.Equal(t, tt.expError, errSvc) + }) + } +} + +func Test_AddApplication_WithEnvs(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + mockCont, mocks := container.NewMockContainer(t, func(c *container.Container, ctrl *gomock.Controller) any { + return service.NewMockHTTP(ctrl) + }) + + mockCont.Services["api-service"] = mocks.HTTPService + ctx := &gofr.Context{Container: mockCont, Out: terminal.New()} + + testCases := []struct { + name string + mockCalls []*gomock.Call + userInput string + expectedEnvs []Environment + expError error + }{ + { + name: "success with environments", + userInput: "y\nprod\ny\ndev\nn\n", + expectedEnvs: []Environment{ + {Name: "prod", Order: 1}, + {Name: "dev", Order: 2}, + }, + mockCalls: []*gomock.Call{ + mocks.HTTPService.EXPECT().PostWithHeaders(ctx, "application", nil, gomock.Any(), nil). + DoAndReturn(func(ctx *gofr.Context, endpoint string, headers, body, query interface{}) (*http.Response, error) { + var app Application + _ = json.Unmarshal(body.([]byte), &app) + require.Equal(t, "test", app.Name) + require.Equal(t, []Environment{ + {Name: "prod", Order: 1}, + {Name: "dev", Order: 2}, + }, app.Envs) + return &http.Response{StatusCode: http.StatusCreated, Body: io.NopCloser(bytes.NewBuffer(nil))}, nil + }), + }, + expError: nil, + }, + { + name: "no environments added", + userInput: "n\n", + expectedEnvs: []Environment{}, + mockCalls: []*gomock.Call{ + mocks.HTTPService.EXPECT().PostWithHeaders(ctx, "application", nil, gomock.Any(), nil). + DoAndReturn(func(ctx *gofr.Context, endpoint string, headers, body, query interface{}) (*http.Response, error) { + var app Application + _ = json.Unmarshal(body.([]byte), &app) + require.Equal(t, "test", app.Name) + require.Empty(t, app.Envs) + return &http.Response{StatusCode: http.StatusCreated, Body: io.NopCloser(bytes.NewBuffer(nil))}, nil + }), + }, + expError: nil, + }, + } + + for _, tt := range testCases { + t.Run(tt.name, func(t *testing.T) { + s := New() + + // Mock user input + r, w, _ := os.Pipe() + w.Write([]byte(tt.userInput)) + + oldStdin := os.Stdin + os.Stdin = r + + defer func() { os.Stdin = oldStdin }() + + errSvc := s.AddApplication(ctx, "test") + require.Equal(t, tt.expError, errSvc) + }) + } +} diff --git a/application/service/models.go b/application/service/models.go new file mode 100644 index 0000000..44fe149 --- /dev/null +++ b/application/service/models.go @@ -0,0 +1,53 @@ +package service + +import ( + "encoding/json" + "io" + "net/http" +) + +type ErrAPIService struct { + StatusCode int + Message string +} + +func (e *ErrAPIService) Error() string { + return e.Message +} + +var errInternal = &ErrAPIService{ + StatusCode: http.StatusInternalServerError, + Message: "error in POST /application zop-api, invalid response", +} + +func getAPIError(resp *http.Response) *ErrAPIService { + var errResp struct { + Error string `json:"error"` + } + + b, err := io.ReadAll(resp.Body) + if err != nil { + return errInternal + } + + err = json.Unmarshal(b, &errResp) + if err != nil { + return errInternal + } + + return &ErrAPIService{ + StatusCode: resp.StatusCode, + Message: errResp.Error, + } +} + +type Environment struct { + Name string `json:"name"` + Order int `json:"order"` + DeploymentSpace any `json:"deploymentSpace,omitempty"` +} + +type Application struct { + Name string `json:"name"` + Envs []Environment `json:"environments,omitempty"` +} diff --git a/application/service/models_test.go b/application/service/models_test.go new file mode 100644 index 0000000..f67aecd --- /dev/null +++ b/application/service/models_test.go @@ -0,0 +1,122 @@ +package service + +import ( + "bytes" + "encoding/json" + "github.com/stretchr/testify/require" + "io" + "net/http" + "testing" +) + +func TestGetAPIError(t *testing.T) { + tests := []struct { + name string + responseBody interface{} + responseCode int + expectError *ErrAPIService + }{ + { + name: "Valid error response", + responseBody: MockErrorResponse{ + Error: "Something went wrong", + }, + responseCode: http.StatusBadRequest, + expectError: &ErrAPIService{ + StatusCode: http.StatusBadRequest, + Message: "Something went wrong", + }, + }, + { + name: "Malformed JSON response", + responseBody: "{error: unquoted string}", + responseCode: http.StatusBadRequest, + expectError: errInternal, + }, + { + name: "Empty response body", + responseBody: "", + responseCode: http.StatusBadRequest, + expectError: errInternal, + }, + { + name: "Error reading body", + responseBody: nil, + responseCode: http.StatusInternalServerError, + expectError: errInternal, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + var bodyReader io.ReadCloser + + if tt.responseBody == nil { + // Simulate error reading body by providing a reader that always errors + bodyReader = io.NopCloser(&errorReader{}) + } else { + b, err := json.Marshal(tt.responseBody) + if err != nil { + t.Fatalf("Failed to marshal test response body: %v", err) + } + + bodyReader = io.NopCloser(bytes.NewBuffer(b)) + } + + // Create a mock response + resp := &http.Response{ + StatusCode: tt.responseCode, + Body: bodyReader, + } + + // Call the function and check results + actualError := getAPIError(resp) + + require.Equal(t, tt.expectError.StatusCode, actualError.StatusCode, "Unexpected status code") + require.Equal(t, tt.expectError.Message, actualError.Message, "Unexpected error message") + }) + } +} + +type MockErrorResponse struct { + Error string `json:"error"` +} + +type errorReader struct{} + +func (e *errorReader) Read(p []byte) (n int, err error) { + return 0, io.ErrUnexpectedEOF +} + +func (e *errorReader) Close() error { + return nil +} + +func Test_ErrAPIError(t *testing.T) { + tests := []struct { + name string + err *ErrAPIService + }{ + { + name: "Valid error", + err: &ErrAPIService{ + StatusCode: http.StatusBadRequest, + Message: "Something went wrong", + }, + }, + { + name: "Empty error message", + err: &ErrAPIService{ + StatusCode: http.StatusBadRequest, + Message: "", + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + actual := tt.err.Error() + require.Equal(t, tt.err.Message, actual, "Unexpected error message") + }) + } +} diff --git a/main.go b/main.go index fff82e9..a2426d1 100644 --- a/main.go +++ b/main.go @@ -6,10 +6,12 @@ import ( "os" "path/filepath" - _ "github.com/mattn/go-sqlite3" "gofr.dev/pkg/gofr" "gofr.dev/pkg/gofr/service" + _ "modernc.org/sqlite" + applicationHandler "zop.dev/cli/zop/application/handler" + applicationSvc "zop.dev/cli/zop/application/service" impHandler "zop.dev/cli/zop/cloud/handler" impService "zop.dev/cli/zop/cloud/service/gcp" listSvc "zop.dev/cli/zop/cloud/service/list" @@ -42,13 +44,19 @@ func main() { } defer db.Close() - aStore := impStore.New(db) - aSvc := impService.New(aStore) + accStore := impStore.New() + accSvc := impService.New(accStore) lSvc := listSvc.New() - h := impHandler.New(aSvc, lSvc) + h := impHandler.New(accSvc, lSvc) app.SubCommand("cloud import", h.Import) app.SubCommand("cloud list", h.List) + app.SubCommand("cloud select", h.Set) + + appSvc := applicationSvc.New() + appH := applicationHandler.New(appSvc) + + app.SubCommand("application add", appH.Add) app.Run() } From 7bc24e2b99633bfa68e3f1ed5b53911c6dda6e5e Mon Sep 17 00:00:00 2001 From: vipul-rawat Date: Wed, 11 Dec 2024 19:07:01 +0530 Subject: [PATCH 2/3] fix linters --- application/handler/application.go | 1 + application/handler/handler_test.go | 12 +++++++----- application/service/application.go | 22 ++++++++++++---------- application/service/application_test.go | 19 ++++++++++--------- application/service/models_test.go | 7 ++++--- main.go | 2 +- 6 files changed, 35 insertions(+), 28 deletions(-) diff --git a/application/handler/application.go b/application/handler/application.go index 79400cc..65b9dbd 100644 --- a/application/handler/application.go +++ b/application/handler/application.go @@ -2,6 +2,7 @@ package handler import ( "errors" + "gofr.dev/pkg/gofr" ) diff --git a/application/handler/handler_test.go b/application/handler/handler_test.go index 6133938..deb430b 100644 --- a/application/handler/handler_test.go +++ b/application/handler/handler_test.go @@ -2,15 +2,17 @@ package handler import ( "errors" - "go.uber.org/mock/gomock" - "gofr.dev/pkg/gofr/cmd" + "testing" "github.com/stretchr/testify/require" + "go.uber.org/mock/gomock" "gofr.dev/pkg/gofr" + "gofr.dev/pkg/gofr/cmd" "gofr.dev/pkg/gofr/container" - "testing" ) +var errAPICall = errors.New("error in API call") + func TestHandler_Add(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() @@ -43,10 +45,10 @@ func TestHandler_Add(t *testing.T) { name: "error adding application", appName: "test-app", mockCalls: []*gomock.Call{ - mockAppAdder.EXPECT().AddApplication(gomock.Any(), "test-app").Return(errors.New("internal error")), + mockAppAdder.EXPECT().AddApplication(gomock.Any(), "test-app").Return(errAPICall), }, expected: nil, - expErr: errors.New("internal error"), + expErr: errAPICall, }, } diff --git a/application/service/application.go b/application/service/application.go index 3456abf..afd0e64 100644 --- a/application/service/application.go +++ b/application/service/application.go @@ -15,7 +15,7 @@ func New() *Service { return &Service{} } -func (s *Service) AddApplication(ctx *gofr.Context, name string) error { +func (*Service) AddApplication(ctx *gofr.Context, name string) error { var ( envs []Environment input string @@ -27,21 +27,23 @@ func (s *Service) AddApplication(ctx *gofr.Context, name string) error { ctx.Out.Print("Do you wish to add environments to the application? (y/n) ") - fmt.Scanf("%s", &input) + _, _ = fmt.Scanf("%s", &input) for { - if input == "y" { - ctx.Out.Println("Enter environment name:") - fmt.Scanf("%s", &input) - - envs = append(envs, Environment{Name: input, Order: order}) - order++ - } else { + if input != "y" { break } + ctx.Out.Print("Enter environment name: ") + + _, _ = fmt.Scanf("%s", &input) + envs = append(envs, Environment{Name: input, Order: order}) + order++ + ctx.Out.Print("Do you wish to add more? (y/n) ") - fmt.Scanf("%s", &input) + + _, _ = fmt.Scanf("%s", &input) + if input == "n" { break } diff --git a/application/service/application_test.go b/application/service/application_test.go index 0bec1d2..1642983 100644 --- a/application/service/application_test.go +++ b/application/service/application_test.go @@ -4,16 +4,17 @@ import ( "bytes" "encoding/json" "errors" + "io" + "net/http" + "os" + "testing" + "github.com/stretchr/testify/require" "go.uber.org/mock/gomock" "gofr.dev/pkg/gofr" "gofr.dev/pkg/gofr/cmd/terminal" "gofr.dev/pkg/gofr/container" "gofr.dev/pkg/gofr/service" - "io" - "net/http" - "os" - "testing" ) var errAPICall = errors.New("error in API call") @@ -22,7 +23,7 @@ func Test_AddApplication(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() - mockCont, mocks := container.NewMockContainer(t, func(c *container.Container, ctrl *gomock.Controller) any { + mockCont, mocks := container.NewMockContainer(t, func(_ *container.Container, ctrl *gomock.Controller) any { return service.NewMockHTTP(ctrl) }) mockCont.Services["api-service"] = mocks.HTTPService @@ -79,7 +80,7 @@ func Test_AddApplication_WithEnvs(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() - mockCont, mocks := container.NewMockContainer(t, func(c *container.Container, ctrl *gomock.Controller) any { + mockCont, mocks := container.NewMockContainer(t, func(_ *container.Container, ctrl *gomock.Controller) any { return service.NewMockHTTP(ctrl) }) @@ -102,7 +103,7 @@ func Test_AddApplication_WithEnvs(t *testing.T) { }, mockCalls: []*gomock.Call{ mocks.HTTPService.EXPECT().PostWithHeaders(ctx, "application", nil, gomock.Any(), nil). - DoAndReturn(func(ctx *gofr.Context, endpoint string, headers, body, query interface{}) (*http.Response, error) { + DoAndReturn(func(body any) (*http.Response, error) { var app Application _ = json.Unmarshal(body.([]byte), &app) require.Equal(t, "test", app.Name) @@ -121,7 +122,7 @@ func Test_AddApplication_WithEnvs(t *testing.T) { expectedEnvs: []Environment{}, mockCalls: []*gomock.Call{ mocks.HTTPService.EXPECT().PostWithHeaders(ctx, "application", nil, gomock.Any(), nil). - DoAndReturn(func(ctx *gofr.Context, endpoint string, headers, body, query interface{}) (*http.Response, error) { + DoAndReturn(func(body any) (*http.Response, error) { var app Application _ = json.Unmarshal(body.([]byte), &app) require.Equal(t, "test", app.Name) @@ -139,7 +140,7 @@ func Test_AddApplication_WithEnvs(t *testing.T) { // Mock user input r, w, _ := os.Pipe() - w.Write([]byte(tt.userInput)) + _, _ = w.WriteString(tt.userInput) oldStdin := os.Stdin os.Stdin = r diff --git a/application/service/models_test.go b/application/service/models_test.go index f67aecd..2dbc281 100644 --- a/application/service/models_test.go +++ b/application/service/models_test.go @@ -3,10 +3,11 @@ package service import ( "bytes" "encoding/json" - "github.com/stretchr/testify/require" "io" "net/http" "testing" + + "github.com/stretchr/testify/require" ) func TestGetAPIError(t *testing.T) { @@ -84,11 +85,11 @@ type MockErrorResponse struct { type errorReader struct{} -func (e *errorReader) Read(p []byte) (n int, err error) { +func (*errorReader) Read(_ []byte) (n int, err error) { return 0, io.ErrUnexpectedEOF } -func (e *errorReader) Close() error { +func (*errorReader) Close() error { return nil } diff --git a/main.go b/main.go index a2426d1..e036e5c 100644 --- a/main.go +++ b/main.go @@ -44,7 +44,7 @@ func main() { } defer db.Close() - accStore := impStore.New() + accStore := impStore.New(db) accSvc := impService.New(accStore) lSvc := listSvc.New() h := impHandler.New(accSvc, lSvc) From 650e5e07ad4c05bd4759687fc7643ad51eda926d Mon Sep 17 00:00:00 2001 From: vipul-rawat Date: Thu, 12 Dec 2024 11:19:34 +0530 Subject: [PATCH 3/3] fix tests for application --- application/service/application_test.go | 4 ++-- main.go | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/application/service/application_test.go b/application/service/application_test.go index 1642983..70c46ec 100644 --- a/application/service/application_test.go +++ b/application/service/application_test.go @@ -103,7 +103,7 @@ func Test_AddApplication_WithEnvs(t *testing.T) { }, mockCalls: []*gomock.Call{ mocks.HTTPService.EXPECT().PostWithHeaders(ctx, "application", nil, gomock.Any(), nil). - DoAndReturn(func(body any) (*http.Response, error) { + DoAndReturn(func(_ *gofr.Context, _ string, _, body, _ interface{}) (*http.Response, error) { var app Application _ = json.Unmarshal(body.([]byte), &app) require.Equal(t, "test", app.Name) @@ -122,7 +122,7 @@ func Test_AddApplication_WithEnvs(t *testing.T) { expectedEnvs: []Environment{}, mockCalls: []*gomock.Call{ mocks.HTTPService.EXPECT().PostWithHeaders(ctx, "application", nil, gomock.Any(), nil). - DoAndReturn(func(body any) (*http.Response, error) { + DoAndReturn(func(_ *gofr.Context, _ string, _, body, _ interface{}) (*http.Response, error) { var app Application _ = json.Unmarshal(body.([]byte), &app) require.Equal(t, "test", app.Name) diff --git a/main.go b/main.go index e036e5c..7713c0a 100644 --- a/main.go +++ b/main.go @@ -51,7 +51,6 @@ func main() { app.SubCommand("cloud import", h.Import) app.SubCommand("cloud list", h.List) - app.SubCommand("cloud select", h.Set) appSvc := applicationSvc.New() appH := applicationHandler.New(appSvc)