From f9cca5a94d8d380bb1c1102f7e8a82957168ae95 Mon Sep 17 00:00:00 2001 From: petruki <31597636+petruki@users.noreply.github.com> Date: Mon, 11 Mar 2024 00:27:08 -0700 Subject: [PATCH] Fixed registering mux routes --- README.md | 1 + sonar-project.properties | 1 + src/controller/account.go | 8 ++++---- src/controller/account_test.go | 16 ++++++++++++++++ src/controller/api.go | 2 +- src/controller/api_test.go | 9 +++++++++ src/utils/http_test.go | 12 ++++++++++++ 7 files changed, 44 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index e17a373..9a83ff8 100644 --- a/README.md +++ b/README.md @@ -32,4 +32,5 @@ GitOps Domain Snapshot Orchestrator for Switcher API Windows: `$env:GO_ENV="test"; go run ./src/cmd/app/main.go`
Unit: `GO_ENV=test go run ./src/cmd/app/main.go` - Testing `go test -coverpkg=./... -v` +- Coverage `go test -coverprofile="coverage.out" ./... && go tool cover -html="coverage.out"` - Building `go build -o ./bin/app ./src/cmd/app/main.go` \ No newline at end of file diff --git a/sonar-project.properties b/sonar-project.properties index 81b7a6c..3b253dc 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -8,6 +8,7 @@ sonar.sources=src sonar.exclusions=**/*_test.go sonar.tests=src sonar.test.inclusions=**/*_test.go +sonar.coverage.exclusions=src/server/**/*,src/db/**/*,src/cmd/**/*,src/repository/**/* sonar.language=go sonar.go.coverage.reportPaths=coverage.out \ No newline at end of file diff --git a/src/controller/account.go b/src/controller/account.go index 625b03c..89383a8 100644 --- a/src/controller/account.go +++ b/src/controller/account.go @@ -30,10 +30,10 @@ func NewAccountController(repo repository.AccountRepository) *AccountController func (controller *AccountController) RegisterRoutes(r *mux.Router) http.Handler { const routesDomainVar = "/{domainId}" - r.HandleFunc(controller.RouteAccountPath, controller.CreateAccountHandler).Methods(http.MethodPost) - r.HandleFunc(controller.RouteAccountPath+routesDomainVar, controller.FetchAccountHandler).Methods(http.MethodGet) - r.HandleFunc(controller.RouteAccountPath+routesDomainVar, controller.UpdateAccountHandler).Methods(http.MethodPut) - r.HandleFunc(controller.RouteAccountPath+routesDomainVar, controller.DeleteAccountHandler).Methods(http.MethodDelete) + r.NewRoute().Path(controller.RouteAccountPath + routesDomainVar).Name("GetAccount").HandlerFunc(controller.FetchAccountHandler).Methods(http.MethodGet) + r.NewRoute().Path(controller.RouteAccountPath).Name("CreateAccount").HandlerFunc(controller.CreateAccountHandler).Methods(http.MethodPost) + r.NewRoute().Path(controller.RouteAccountPath + routesDomainVar).Name("UpdateAccount").HandlerFunc(controller.UpdateAccountHandler).Methods(http.MethodPut) + r.NewRoute().Path(controller.RouteAccountPath + routesDomainVar).Name("DeleteAccount").HandlerFunc(controller.DeleteAccountHandler).Methods(http.MethodDelete) return r } diff --git a/src/controller/account_test.go b/src/controller/account_test.go index 848a18c..6609d0a 100644 --- a/src/controller/account_test.go +++ b/src/controller/account_test.go @@ -8,10 +8,26 @@ import ( "net/http/httptest" "testing" + "github.com/gorilla/mux" "github.com/stretchr/testify/assert" "github.com/switcherapi/switcher-gitops/src/model" ) +func TestAccountRegisterRoutes(t *testing.T) { + // Create a router + r := mux.NewRouter() + + // Test + accountController.RegisterRoutes(r) + + // Assert + assert.NotNil(t, r) + assert.NotNil(t, r.GetRoute("GetAccount")) + assert.NotNil(t, r.GetRoute("CreateAccount")) + assert.NotNil(t, r.GetRoute("UpdateAccount")) + assert.NotNil(t, r.GetRoute("DeleteAccount")) +} + func TestCreateAccountHandler(t *testing.T) { // Create a request and response recorder w, r := givenAccountRequest(accountV1) diff --git a/src/controller/api.go b/src/controller/api.go index 85ed3c8..ac6f66a 100644 --- a/src/controller/api.go +++ b/src/controller/api.go @@ -22,7 +22,7 @@ func NewApiController() *ApiController { } func (controller *ApiController) RegisterRoutes(r *mux.Router) http.Handler { - r.HandleFunc(controller.RouteCheckApiPath, controller.CheckApiHandler).Methods(http.MethodGet) + r.NewRoute().Path(controller.RouteCheckApiPath).Name("CheckApi").HandlerFunc(controller.CheckApiHandler).Methods(http.MethodGet) return r } diff --git a/src/controller/api_test.go b/src/controller/api_test.go index 5b7266b..467bf7a 100644 --- a/src/controller/api_test.go +++ b/src/controller/api_test.go @@ -5,9 +5,18 @@ import ( "net/http/httptest" "testing" + "github.com/gorilla/mux" "github.com/stretchr/testify/assert" ) +func TestApiRegisterRoutes(t *testing.T) { + r := mux.NewRouter() + apiController.RegisterRoutes(r) + + assert.NotNil(t, r) + assert.NotNil(t, r.GetRoute("CheckApi")) +} + func TestCheckApiHandler(t *testing.T) { w, r := givenApiRequest() apiController.CheckApiHandler(w, r) diff --git a/src/utils/http_test.go b/src/utils/http_test.go index 1cbf167..8159da7 100644 --- a/src/utils/http_test.go +++ b/src/utils/http_test.go @@ -24,3 +24,15 @@ func TestResponseJSON(t *testing.T) { assert.NoError(t, err) assert.Equal(t, "Some message", response["message"]) } + +func TestResponseJSONError(t *testing.T) { + w := httptest.NewRecorder() + data := make(chan int) + status := http.StatusOK + + ResponseJSON(w, data, status) + + assert.Equal(t, http.StatusOK, w.Code) + assert.Equal(t, "application/json", w.Header().Get("Content-Type")) + assert.Equal(t, "", w.Body.String()) +}