From 9a9c1990a167054f21363235c93ff7fa84824eb6 Mon Sep 17 00:00:00 2001 From: Rafael Dantas <36964299+dantasrafael@users.noreply.github.com> Date: Fri, 21 Jun 2024 19:00:05 -0300 Subject: [PATCH] fix: request error rest-server return (#91) --- pkg/web/restserver/fiber_server.go | 10 +++------- pkg/web/restserver/fiber_web_context.go | 14 ++++++-------- pkg/web/restserver/server_test.go | 15 +++++++++------ 3 files changed, 18 insertions(+), 21 deletions(-) diff --git a/pkg/web/restserver/fiber_server.go b/pkg/web/restserver/fiber_server.go index 69cbb96..273425c 100644 --- a/pkg/web/restserver/fiber_server.go +++ b/pkg/web/restserver/fiber_server.go @@ -2,14 +2,15 @@ package restserver import ( "fmt" + "strings" + "time" + "github.com/colibri-project-io/colibri-sdk-go/pkg/base/config" "github.com/colibri-project-io/colibri-sdk-go/pkg/base/logging" "github.com/gofiber/fiber/v2" "github.com/gofiber/swagger" "github.com/prometheus/client_golang/prometheus/promhttp" "github.com/valyala/fasthttp/fasthttpadaptor" - "strings" - "time" ) type fiberWebServer struct { @@ -88,11 +89,6 @@ func (f *fiberWebServer) injectRoutes() { } fn(webContext) - - if webContext.err != nil { - return webContext.err - } - return nil }) diff --git a/pkg/web/restserver/fiber_web_context.go b/pkg/web/restserver/fiber_web_context.go index 2f72b34..43cff91 100644 --- a/pkg/web/restserver/fiber_web_context.go +++ b/pkg/web/restserver/fiber_web_context.go @@ -3,18 +3,18 @@ package restserver import ( "context" "encoding/json" + "mime/multipart" + "net/http" + "strings" + "github.com/colibri-project-io/colibri-sdk-go/pkg/base/logging" "github.com/colibri-project-io/colibri-sdk-go/pkg/base/security" "github.com/colibri-project-io/colibri-sdk-go/pkg/base/validator" "github.com/gofiber/fiber/v2" - "mime/multipart" - "net/http" - "strings" ) type fiberWebContext struct { ctx *fiber.Ctx - err error } func newFiberWebContext(ctx *fiber.Ctx) *fiberWebContext { @@ -94,16 +94,14 @@ func (f *fiberWebContext) ServeFile(path string) { } func (f *fiberWebContext) JsonResponse(statusCode int, body any) { - f.ctx.Response().SetStatusCode(statusCode) + f.ctx.Status(statusCode) if err := f.ctx.JSON(body); err != nil { f.ErrorResponse(http.StatusInternalServerError, err) } } func (f *fiberWebContext) ErrorResponse(statusCode int, err error) { - f.ctx.Response().SetStatusCode(statusCode) - _ = f.ctx.JSON(Error{err.Error()}) - f.err = err + f.JsonResponse(statusCode, Error{err.Error()}) } func (f *fiberWebContext) EmptyResponse(statusCode int) { diff --git a/pkg/web/restserver/server_test.go b/pkg/web/restserver/server_test.go index 2f2be1d..45d6821 100644 --- a/pkg/web/restserver/server_test.go +++ b/pkg/web/restserver/server_test.go @@ -421,7 +421,9 @@ func TestStartRestServer(t *testing.T) { }) t.Run("Should return error response body", func(t *testing.T) { - response := restclient.Request[Error, any]{ + expected := &Error{"test-error-body"} + + response := restclient.Request[any, Error]{ Ctx: ctx, Client: client, HttpMethod: http.MethodGet, @@ -431,7 +433,8 @@ func TestStartRestServer(t *testing.T) { assert.NotNil(t, response) assert.EqualValues(t, http.StatusInternalServerError, response.StatusCode()) assert.Nil(t, response.SuccessBody()) - assert.Nil(t, response.ErrorBody()) + assert.NotNil(t, response.ErrorBody()) + assert.EqualValues(t, expected, response.ErrorBody()) assert.Error(t, errors.New("500 statusCode"), response.Error()) }) @@ -543,7 +546,7 @@ func TestStartRestServer(t *testing.T) { }) t.Run("Should return bad request when an error occurred in decoded body", func(t *testing.T) { - response := restclient.Request[Resp, any]{ + response := restclient.Request[Resp, Error]{ Ctx: ctx, Client: client, HttpMethod: http.MethodPost, @@ -552,10 +555,10 @@ func TestStartRestServer(t *testing.T) { }.Call() assert.NotNil(t, response) - assert.EqualValues(t, http.StatusInternalServerError, response.StatusCode()) + assert.EqualValues(t, http.StatusBadRequest, response.StatusCode()) assert.Nil(t, response.SuccessBody()) - assert.Nil(t, response.ErrorBody()) - assert.ErrorContains(t, response.Error(), "500 status code.") + assert.NotNil(t, response.ErrorBody()) + assert.ErrorContains(t, response.Error(), "400 status code") }) t.Run("Should return decoded body", func(t *testing.T) {