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
+}