diff --git a/test/api.go b/test/api.go new file mode 100644 index 0000000000000000000000000000000000000000..b67503d1f08ec5f0a09053ad8741a638a9a226bb --- /dev/null +++ b/test/api.go @@ -0,0 +1,11 @@ +package test + +import ( + "gitlab.informatika.org/ocw/ocw-backend/test/db" + "gitlab.informatika.org/ocw/ocw-backend/utils/app" +) + +type ApiTestPack struct { + *db.MockDatabase + app.Server +} diff --git a/test/di.go b/test/di.go index 8d6997f7ff0940614242aae78a432b99b81c01d4..62866e4e6cb835d4512fad9e87d7dbd86c395ab8 100644 --- a/test/di.go +++ b/test/di.go @@ -15,12 +15,13 @@ import ( "gitlab.informatika.org/ocw/ocw-backend/test/db" "gitlab.informatika.org/ocw/ocw-backend/utils" - "gitlab.informatika.org/ocw/ocw-backend/utils/app" "gitlab.informatika.org/ocw/ocw-backend/utils/env" ) -func CreateServer(logger logger.Logger, envTest *env.Environment) (app.Server, error) { +func CreateServer(logger logger.Logger, envTest *env.Environment) (*ApiTestPack, error) { wire.Build( + wire.Struct(new(ApiTestPack), "*"), + utils.UtilSetTest, repository.RepositoryBasicSet, handler.HandlerSet, diff --git a/test/utils/base.go b/test/utils/base.go index 4a75e7745250daf15dc3ffdfbce8f83c22527fdc..e744a1ff61ef13b5842d21561d746430e6f295f1 100644 --- a/test/utils/base.go +++ b/test/utils/base.go @@ -4,19 +4,20 @@ import ( "net/http" "gitlab.informatika.org/ocw/ocw-backend/test" + "gitlab.informatika.org/ocw/ocw-backend/test/db" "gitlab.informatika.org/ocw/ocw-backend/utils/env" ) -func NewTestHandler() (http.Handler, *MockLogger, error) { +func NewTestHandler() (http.Handler, *MockLogger, *db.MockDatabase, error) { logger := NewMockLogger() handler, err := test.CreateServer(logger, &env.Environment{ AppEnvironment: "DEVELOPMENT", }) if err != nil { - return nil, nil, err + return nil, nil, nil, err } logger.CleanLog() - return handler.GetServer(), logger, nil + return handler.GetServer(), logger, handler.MockDatabase, nil } diff --git a/test/utils/executor.go b/test/utils/executor.go index 1b4fda663f3e7372703dd1f7107878f9bbaaf8a3..ced02a1a5ca17d6578e2a8a51ccde8f31cdfac87 100644 --- a/test/utils/executor.go +++ b/test/utils/executor.go @@ -15,7 +15,7 @@ type RequestData struct { } func ExecuteJSON(reqData RequestData) (*http.Response, *MockLogger, error) { - r, log, err := NewTestHandler() + r, log, _, err := NewTestHandler() if err != nil { return nil, nil, err @@ -50,3 +50,32 @@ func ExecuteJSON(reqData RequestData) (*http.Response, *MockLogger, error) { return res, log, nil } + +func ExecuteJSONWithHandler(r http.Handler, reqData RequestData) (*http.Response, error) { + var req *http.Request + + if reqData.Data == nil { + req = httptest.NewRequest(reqData.Method, reqData.Endpoint, nil) + } else { + byteData, err := json.Marshal(reqData.Data) + + if err != nil { + return nil, err + } + + reader := bytes.NewReader(byteData) + req = httptest.NewRequest(reqData.Method, reqData.Endpoint, reader) + } + + if reqData.Headers != nil { + for key, value := range reqData.Headers { + req.Header.Add(key, value) + } + } + + rec := httptest.NewRecorder() + + r.ServeHTTP(rec, req) + + return rec.Result(), nil +}