From 3e34b1978c7b5d3eec1f8e1e1e77fbc4ef78fc12 Mon Sep 17 00:00:00 2001 From: 0xEbrahim Date: Fri, 17 Oct 2025 13:50:04 +0300 Subject: [PATCH 1/6] fix miss match method name at tests --- pkg/gofr/service/new_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/gofr/service/new_test.go b/pkg/gofr/service/new_test.go index 0f179fc51..519ffa26a 100644 --- a/pkg/gofr/service/new_test.go +++ b/pkg/gofr/service/new_test.go @@ -303,7 +303,7 @@ func TestHTTPService_PatchWithHeaders(t *testing.T) { t.Fatal("Unable to read request body") } - assert.Equal(t, http.MethodPut, r.Method) + assert.Equal(t, http.MethodPatch, r.Method) assert.Equal(t, "/test-path", r.URL.Path) assert.Equal(t, "key=value&name=gofr&name=test", r.URL.RawQuery) assert.Contains(t, "value1", r.Header.Get("Header1")) From 30acd1e2564c5d37d774b34e4f3b40628fab094b Mon Sep 17 00:00:00 2001 From: 0xEbrahim Date: Fri, 17 Oct 2025 14:02:33 +0300 Subject: [PATCH 2/6] patch test fixed --- pkg/gofr/service/new_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/gofr/service/new_test.go b/pkg/gofr/service/new_test.go index 519ffa26a..91f8cc52a 100644 --- a/pkg/gofr/service/new_test.go +++ b/pkg/gofr/service/new_test.go @@ -322,7 +322,7 @@ func TestHTTPService_PatchWithHeaders(t *testing.T) { // TODO : Nil Correlation ID is coming in logs, it has to be fixed - resp, err := service.PutWithHeaders(t.Context(), "test-path", + resp, err := service.PatchWithHeaders(t.Context(), "test-path", map[string]any{"key": "value", "name": []string{"gofr", "test"}}, []byte("{Test Body}"), map[string]string{"header1": "value1"}) From a238ab599dc66f090becd588d9c0de3089c82dfb Mon Sep 17 00:00:00 2001 From: 0xEbrahim Date: Fri, 17 Oct 2025 14:45:00 +0300 Subject: [PATCH 3/6] acstract duplicat response validation --- pkg/gofr/service/new_test.go | 100 ++++++++++------------------------- 1 file changed, 28 insertions(+), 72 deletions(-) diff --git a/pkg/gofr/service/new_test.go b/pkg/gofr/service/new_test.go index 91f8cc52a..8262818b9 100644 --- a/pkg/gofr/service/new_test.go +++ b/pkg/gofr/service/new_test.go @@ -15,6 +15,20 @@ import ( "gofr.dev/pkg/gofr/logging" ) +func validateResponse(t *testing.T, resp *http.Response, err error, testNum int, desc string, hasError bool) { + + if resp != nil { + defer resp.Body.Close() + } + if hasError { + require.Error(t, err) + assert.Nil(t, resp, "TEST[%d], Failed.\n%s") + return + } + require.NoError(t, err) + assert.NotNil(t, resp, "TEST[%d], Failed.\n%s", testNum, desc) +} + func TestNewHTTPService(t *testing.T) { tests := []struct { desc string @@ -79,7 +93,7 @@ func TestHTTPService_createAndSendRequest(t *testing.T) { w.WriteHeader(http.StatusOK) })) - + defer server.Close() service := &httpService{ Client: http.DefaultClient, url: server.URL, @@ -93,16 +107,7 @@ func TestHTTPService_createAndSendRequest(t *testing.T) { resp, err := service.createAndSendRequest(ctx, http.MethodPost, "test-path", tc.queryParams, tc.body, tc.headers) - if err != nil { - if resp != nil { - resp.Body.Close() - } - } - - require.NoError(t, err) - assert.NotNil(t, resp, "TEST[%d], Failed.\n%s", i, tc.desc) - - server.Close() + validateResponse(t, resp, err, i, tc.desc, false) } } @@ -129,12 +134,7 @@ func TestHTTPService_Get(t *testing.T) { resp, err := service.Get(t.Context(), "test-path", map[string]any{"key": "value", "name": []string{"gofr", "test"}}) - if resp != nil { - defer resp.Body.Close() - } - - require.NoError(t, err) - assert.NotNil(t, resp, "TEST, Failed.") + validateResponse(t, resp, err, 0, "", false) } func TestHTTPService_GetWithHeaders(t *testing.T) { @@ -162,12 +162,8 @@ func TestHTTPService_GetWithHeaders(t *testing.T) { map[string]any{"key": "value", "name": []string{"gofr", "test"}}, map[string]string{"header1": "value1"}) - if resp != nil { - defer resp.Body.Close() - } + validateResponse(t, resp, err, 0, "", false) - require.NoError(t, err) - assert.NotNil(t, resp, "TEST, Failed.") } func TestHTTPService_Put(t *testing.T) { @@ -202,12 +198,8 @@ func TestHTTPService_Put(t *testing.T) { resp, err := service.Put(t.Context(), "test-path", map[string]any{"key": "value", "name": []string{"gofr", "test"}}, []byte("{Test Body}")) - if resp != nil { - defer resp.Body.Close() - } + validateResponse(t, resp, err, 0, "", false) - require.NoError(t, err) - assert.NotNil(t, resp, "TEST, Failed.") } func TestHTTPService_PutWithHeaders(t *testing.T) { @@ -244,12 +236,8 @@ func TestHTTPService_PutWithHeaders(t *testing.T) { map[string]any{"key": "value", "name": []string{"gofr", "test"}}, []byte("{Test Body}"), map[string]string{"header1": "value1"}) - if resp != nil { - defer resp.Body.Close() - } + validateResponse(t, resp, err, 0, "", false) - require.NoError(t, err) - assert.NotNil(t, resp, "TEST, Failed.") } func TestHTTPService_Patch(t *testing.T) { @@ -284,12 +272,8 @@ func TestHTTPService_Patch(t *testing.T) { resp, err := service.Patch(t.Context(), "test-path", map[string]any{"key": "value", "name": []string{"gofr", "test"}}, []byte("{Test Body}")) - if resp != nil { - defer resp.Body.Close() - } + validateResponse(t, resp, err, 0, "", false) - require.NoError(t, err) - assert.NotNil(t, resp, "TEST, Failed.") } func TestHTTPService_PatchWithHeaders(t *testing.T) { @@ -326,12 +310,8 @@ func TestHTTPService_PatchWithHeaders(t *testing.T) { map[string]any{"key": "value", "name": []string{"gofr", "test"}}, []byte("{Test Body}"), map[string]string{"header1": "value1"}) - if resp != nil { - defer resp.Body.Close() - } + validateResponse(t, resp, err, 0, "", false) - require.NoError(t, err) - assert.NotNil(t, resp, "TEST, Failed.") } func TestHTTPService_Post(t *testing.T) { @@ -366,12 +346,8 @@ func TestHTTPService_Post(t *testing.T) { resp, err := service.Post(t.Context(), "test-path", map[string]any{"key": "value", "name": []string{"gofr", "test"}}, []byte("{Test Body}")) - if resp != nil { - defer resp.Body.Close() - } + validateResponse(t, resp, err, 0, "", false) - require.NoError(t, err) - assert.NotNil(t, resp, "TEST, Failed.") } func TestHTTPService_PostWithHeaders(t *testing.T) { @@ -408,12 +384,8 @@ func TestHTTPService_PostWithHeaders(t *testing.T) { map[string]any{"key": "value", "name": []string{"gofr", "test"}}, []byte("{Test Body}"), map[string]string{"header1": "value1"}) - if resp != nil { - defer resp.Body.Close() - } + validateResponse(t, resp, err, 0, "", false) - require.NoError(t, err) - assert.NotNil(t, resp, "TEST, Failed.") } func TestHTTPService_Delete(t *testing.T) { @@ -446,12 +418,8 @@ func TestHTTPService_Delete(t *testing.T) { resp, err := service.Delete(t.Context(), "test-path", []byte("{Test Body}")) - if resp != nil { - defer resp.Body.Close() - } + validateResponse(t, resp, err, 0, "", false) - require.NoError(t, err) - assert.NotNil(t, resp, "TEST, Failed.") } func TestHTTPService_DeleteWithHeaders(t *testing.T) { @@ -486,12 +454,8 @@ func TestHTTPService_DeleteWithHeaders(t *testing.T) { resp, err := service.DeleteWithHeaders(t.Context(), "test-path", []byte("{Test Body}"), map[string]string{"header1": "value1"}) - if resp != nil { - defer resp.Body.Close() - } + validateResponse(t, resp, err, 0, "", false) - require.NoError(t, err) - assert.NotNil(t, resp, "TEST, Failed.") } func TestHTTPService_createAndSendRequestCreateRequestFailure(t *testing.T) { @@ -507,12 +471,8 @@ func TestHTTPService_createAndSendRequestCreateRequestFailure(t *testing.T) { "!@#$", "test-path", map[string]any{"key": "value", "name": []string{"gofr", "test"}}, []byte("{Test Body}"), map[string]string{"header1": "value1"}) - if resp != nil { - defer resp.Body.Close() - } + validateResponse(t, resp, err, 0, "", true) - require.Error(t, err) - assert.Nil(t, resp, "TEST[%d], Failed.\n%s") } func TestHTTPService_createAndSendRequestServerError(t *testing.T) { @@ -536,10 +496,6 @@ func TestHTTPService_createAndSendRequestServerError(t *testing.T) { http.MethodPost, "test-path", map[string]any{"key": "value", "name": []string{"gofr", "test"}}, []byte("{Test Body}"), map[string]string{"header1": "value1"}) - if resp != nil { - defer resp.Body.Close() - } + validateResponse(t, resp, err, 0, "", true) - require.Error(t, err) - assert.Nil(t, resp, "TEST[%d], Failed.\n%s") } From 6b5e2477dbdcfac1be9e881f692f99c8eb0cdcbe Mon Sep 17 00:00:00 2001 From: 0xEbrahim Date: Fri, 17 Oct 2025 14:57:37 +0300 Subject: [PATCH 4/6] resolve linting --- pkg/gofr/service/new_test.go | 56 +++++++++++++++++++----------------- 1 file changed, 29 insertions(+), 27 deletions(-) diff --git a/pkg/gofr/service/new_test.go b/pkg/gofr/service/new_test.go index 8262818b9..9e7cfb14f 100644 --- a/pkg/gofr/service/new_test.go +++ b/pkg/gofr/service/new_test.go @@ -15,18 +15,22 @@ import ( "gofr.dev/pkg/gofr/logging" ) -func validateResponse(t *testing.T, resp *http.Response, err error, testNum int, desc string, hasError bool) { +func validateResponse(t *testing.T, resp *http.Response, err error, hasError bool) { + t.Helper() if resp != nil { defer resp.Body.Close() } + if hasError { require.Error(t, err) assert.Nil(t, resp, "TEST[%d], Failed.\n%s") + return } + require.NoError(t, err) - assert.NotNil(t, resp, "TEST[%d], Failed.\n%s", testNum, desc) + assert.NotNil(t, resp, "TEST[%d], Failed.\n%s") } func TestNewHTTPService(t *testing.T) { @@ -93,7 +97,7 @@ func TestHTTPService_createAndSendRequest(t *testing.T) { w.WriteHeader(http.StatusOK) })) - defer server.Close() + service := &httpService{ Client: http.DefaultClient, url: server.URL, @@ -107,7 +111,16 @@ func TestHTTPService_createAndSendRequest(t *testing.T) { resp, err := service.createAndSendRequest(ctx, http.MethodPost, "test-path", tc.queryParams, tc.body, tc.headers) - validateResponse(t, resp, err, i, tc.desc, false) + if err != nil { + if resp != nil { + resp.Body.Close() + } + } + + require.NoError(t, err) + assert.NotNil(t, resp, "TEST[%d], Failed.\n%s", i, tc.desc) + + server.Close() } } @@ -134,7 +147,7 @@ func TestHTTPService_Get(t *testing.T) { resp, err := service.Get(t.Context(), "test-path", map[string]any{"key": "value", "name": []string{"gofr", "test"}}) - validateResponse(t, resp, err, 0, "", false) + validateResponse(t, resp, err, false) } func TestHTTPService_GetWithHeaders(t *testing.T) { @@ -162,8 +175,7 @@ func TestHTTPService_GetWithHeaders(t *testing.T) { map[string]any{"key": "value", "name": []string{"gofr", "test"}}, map[string]string{"header1": "value1"}) - validateResponse(t, resp, err, 0, "", false) - + validateResponse(t, resp, err, false) } func TestHTTPService_Put(t *testing.T) { @@ -198,8 +210,7 @@ func TestHTTPService_Put(t *testing.T) { resp, err := service.Put(t.Context(), "test-path", map[string]any{"key": "value", "name": []string{"gofr", "test"}}, []byte("{Test Body}")) - validateResponse(t, resp, err, 0, "", false) - + validateResponse(t, resp, err, false) } func TestHTTPService_PutWithHeaders(t *testing.T) { @@ -236,8 +247,7 @@ func TestHTTPService_PutWithHeaders(t *testing.T) { map[string]any{"key": "value", "name": []string{"gofr", "test"}}, []byte("{Test Body}"), map[string]string{"header1": "value1"}) - validateResponse(t, resp, err, 0, "", false) - + validateResponse(t, resp, err, false) } func TestHTTPService_Patch(t *testing.T) { @@ -272,8 +282,7 @@ func TestHTTPService_Patch(t *testing.T) { resp, err := service.Patch(t.Context(), "test-path", map[string]any{"key": "value", "name": []string{"gofr", "test"}}, []byte("{Test Body}")) - validateResponse(t, resp, err, 0, "", false) - + validateResponse(t, resp, err, false) } func TestHTTPService_PatchWithHeaders(t *testing.T) { @@ -310,8 +319,7 @@ func TestHTTPService_PatchWithHeaders(t *testing.T) { map[string]any{"key": "value", "name": []string{"gofr", "test"}}, []byte("{Test Body}"), map[string]string{"header1": "value1"}) - validateResponse(t, resp, err, 0, "", false) - + validateResponse(t, resp, err, false) } func TestHTTPService_Post(t *testing.T) { @@ -346,8 +354,7 @@ func TestHTTPService_Post(t *testing.T) { resp, err := service.Post(t.Context(), "test-path", map[string]any{"key": "value", "name": []string{"gofr", "test"}}, []byte("{Test Body}")) - validateResponse(t, resp, err, 0, "", false) - + validateResponse(t, resp, err, false) } func TestHTTPService_PostWithHeaders(t *testing.T) { @@ -384,8 +391,7 @@ func TestHTTPService_PostWithHeaders(t *testing.T) { map[string]any{"key": "value", "name": []string{"gofr", "test"}}, []byte("{Test Body}"), map[string]string{"header1": "value1"}) - validateResponse(t, resp, err, 0, "", false) - + validateResponse(t, resp, err, false) } func TestHTTPService_Delete(t *testing.T) { @@ -418,8 +424,7 @@ func TestHTTPService_Delete(t *testing.T) { resp, err := service.Delete(t.Context(), "test-path", []byte("{Test Body}")) - validateResponse(t, resp, err, 0, "", false) - + validateResponse(t, resp, err, false) } func TestHTTPService_DeleteWithHeaders(t *testing.T) { @@ -454,8 +459,7 @@ func TestHTTPService_DeleteWithHeaders(t *testing.T) { resp, err := service.DeleteWithHeaders(t.Context(), "test-path", []byte("{Test Body}"), map[string]string{"header1": "value1"}) - validateResponse(t, resp, err, 0, "", false) - + validateResponse(t, resp, err, false) } func TestHTTPService_createAndSendRequestCreateRequestFailure(t *testing.T) { @@ -471,8 +475,7 @@ func TestHTTPService_createAndSendRequestCreateRequestFailure(t *testing.T) { "!@#$", "test-path", map[string]any{"key": "value", "name": []string{"gofr", "test"}}, []byte("{Test Body}"), map[string]string{"header1": "value1"}) - validateResponse(t, resp, err, 0, "", true) - + validateResponse(t, resp, err, true) } func TestHTTPService_createAndSendRequestServerError(t *testing.T) { @@ -496,6 +499,5 @@ func TestHTTPService_createAndSendRequestServerError(t *testing.T) { http.MethodPost, "test-path", map[string]any{"key": "value", "name": []string{"gofr", "test"}}, []byte("{Test Body}"), map[string]string{"header1": "value1"}) - validateResponse(t, resp, err, 0, "", true) - + validateResponse(t, resp, err, true) } From bbaddcc0afac3cbaee4d44ec7074a479cbd452e6 Mon Sep 17 00:00:00 2001 From: 0xEbrahim Date: Fri, 24 Oct 2025 10:45:59 +0300 Subject: [PATCH 5/6] fix unrelated changes --- pkg/gofr/service/new_test.go | 81 ++++++++++-------------------------- 1 file changed, 21 insertions(+), 60 deletions(-) diff --git a/pkg/gofr/service/new_test.go b/pkg/gofr/service/new_test.go index 9e7cfb14f..dc795b3bd 100644 --- a/pkg/gofr/service/new_test.go +++ b/pkg/gofr/service/new_test.go @@ -33,6 +33,17 @@ func validateResponse(t *testing.T, resp *http.Response, err error, hasError boo assert.NotNil(t, resp, "TEST[%d], Failed.\n%s") } +func newService(t *testing.T, server *httptest.Server) *httpService { + t.Helper() + + return &httpService{ + Client: http.DefaultClient, + url: server.URL, + Tracer: otel.Tracer("gofr-http-client"), + Logger: logging.NewMockLogger(logging.INFO), + } +} + func TestNewHTTPService(t *testing.T) { tests := []struct { desc string @@ -135,12 +146,7 @@ func TestHTTPService_Get(t *testing.T) { })) defer server.Close() - service := &httpService{ - Client: http.DefaultClient, - url: server.URL, - Tracer: otel.Tracer("gofr-http-client"), - Logger: logging.NewMockLogger(logging.INFO), - } + service := newService(t, server) // TODO : Nil Correlation ID is coming in logs, it has to be fixed @@ -162,12 +168,7 @@ func TestHTTPService_GetWithHeaders(t *testing.T) { })) defer server.Close() - service := &httpService{ - Client: http.DefaultClient, - url: server.URL, - Tracer: otel.Tracer("gofr-http-client"), - Logger: logging.NewMockLogger(logging.INFO), - } + service := newService(t, server) // TODO : Nil Correlation ID is coming in logs, it has to be fixed @@ -198,12 +199,7 @@ func TestHTTPService_Put(t *testing.T) { })) defer server.Close() - service := &httpService{ - Client: http.DefaultClient, - url: server.URL, - Tracer: otel.Tracer("gofr-http-client"), - Logger: logging.NewMockLogger(logging.INFO), - } + service := newService(t, server) // TODO : Nil Correlation ID is coming in logs, it has to be fixed @@ -234,12 +230,7 @@ func TestHTTPService_PutWithHeaders(t *testing.T) { })) defer server.Close() - service := &httpService{ - Client: http.DefaultClient, - url: server.URL, - Tracer: otel.Tracer("gofr-http-client"), - Logger: logging.NewMockLogger(logging.INFO), - } + service := newService(t, server) // TODO : Nil Correlation ID is coming in logs, it has to be fixed @@ -270,12 +261,7 @@ func TestHTTPService_Patch(t *testing.T) { })) defer server.Close() - service := &httpService{ - Client: http.DefaultClient, - url: server.URL, - Tracer: otel.Tracer("gofr-http-client"), - Logger: logging.NewMockLogger(logging.INFO), - } + service := newService(t, server) // TODO : Nil Correlation ID is coming in logs, it has to be fixed @@ -306,12 +292,7 @@ func TestHTTPService_PatchWithHeaders(t *testing.T) { })) defer server.Close() - service := &httpService{ - Client: http.DefaultClient, - url: server.URL, - Tracer: otel.Tracer("gofr-http-client"), - Logger: logging.NewMockLogger(logging.INFO), - } + service := newService(t, server) // TODO : Nil Correlation ID is coming in logs, it has to be fixed @@ -342,12 +323,7 @@ func TestHTTPService_Post(t *testing.T) { })) defer server.Close() - service := &httpService{ - Client: http.DefaultClient, - url: server.URL, - Tracer: otel.Tracer("gofr-http-client"), - Logger: logging.NewMockLogger(logging.INFO), - } + service := newService(t, server) // TODO : Nil Correlation ID is coming in logs, it has to be fixed @@ -378,12 +354,7 @@ func TestHTTPService_PostWithHeaders(t *testing.T) { })) defer server.Close() - service := &httpService{ - Client: http.DefaultClient, - url: server.URL, - Tracer: otel.Tracer("gofr-http-client"), - Logger: logging.NewMockLogger(logging.INFO), - } + service := newService(t, server) // TODO : Nil Correlation ID is coming in logs, it has to be fixed @@ -413,12 +384,7 @@ func TestHTTPService_Delete(t *testing.T) { })) defer server.Close() - service := &httpService{ - Client: http.DefaultClient, - url: server.URL, - Tracer: otel.Tracer("gofr-http-client"), - Logger: logging.NewMockLogger(logging.INFO), - } + service := newService(t, server) // TODO : Nil Correlation ID is coming in logs, it has to be fixed @@ -447,12 +413,7 @@ func TestHTTPService_DeleteWithHeaders(t *testing.T) { })) defer server.Close() - service := &httpService{ - Client: http.DefaultClient, - url: server.URL, - Tracer: otel.Tracer("gofr-http-client"), - Logger: logging.NewMockLogger(logging.INFO), - } + service := newService(t, server) // TODO : Nil Correlation ID is coming in logs, it has to be fixed From 2e6d277ce3bfb8856d87c4bc386018915c319fc5 Mon Sep 17 00:00:00 2001 From: 0xEbrahim Date: Tue, 28 Oct 2025 09:36:11 +0300 Subject: [PATCH 6/6] move helpers to end of the file --- pkg/gofr/service/new_test.go | 58 ++++++++++++++++++------------------ 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/pkg/gofr/service/new_test.go b/pkg/gofr/service/new_test.go index dc795b3bd..3a1a520c9 100644 --- a/pkg/gofr/service/new_test.go +++ b/pkg/gofr/service/new_test.go @@ -15,35 +15,6 @@ import ( "gofr.dev/pkg/gofr/logging" ) -func validateResponse(t *testing.T, resp *http.Response, err error, hasError bool) { - t.Helper() - - if resp != nil { - defer resp.Body.Close() - } - - if hasError { - require.Error(t, err) - assert.Nil(t, resp, "TEST[%d], Failed.\n%s") - - return - } - - require.NoError(t, err) - assert.NotNil(t, resp, "TEST[%d], Failed.\n%s") -} - -func newService(t *testing.T, server *httptest.Server) *httpService { - t.Helper() - - return &httpService{ - Client: http.DefaultClient, - url: server.URL, - Tracer: otel.Tracer("gofr-http-client"), - Logger: logging.NewMockLogger(logging.INFO), - } -} - func TestNewHTTPService(t *testing.T) { tests := []struct { desc string @@ -462,3 +433,32 @@ func TestHTTPService_createAndSendRequestServerError(t *testing.T) { validateResponse(t, resp, err, true) } + +func validateResponse(t *testing.T, resp *http.Response, err error, hasError bool) { + t.Helper() + + if resp != nil { + defer resp.Body.Close() + } + + if hasError { + require.Error(t, err) + assert.Nil(t, resp, "TEST[%d], Failed.\n%s") + + return + } + + require.NoError(t, err) + assert.NotNil(t, resp, "TEST[%d], Failed.\n%s") +} + +func newService(t *testing.T, server *httptest.Server) *httpService { + t.Helper() + + return &httpService{ + Client: http.DefaultClient, + url: server.URL, + Tracer: otel.Tracer("gofr-http-client"), + Logger: logging.NewMockLogger(logging.INFO), + } +}