Skip to content
179 changes: 49 additions & 130 deletions pkg/gofr/service/new_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -117,24 +117,14 @@ 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

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, false)
}

func TestHTTPService_GetWithHeaders(t *testing.T) {
Expand All @@ -149,25 +139,15 @@ 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

resp, err := service.GetWithHeaders(t.Context(), "test-path",
map[string]any{"key": "value", "name": []string{"gofr", "test"}},
map[string]string{"header1": "value1"})

if resp != nil {
defer resp.Body.Close()
}

require.NoError(t, err)
assert.NotNil(t, resp, "TEST, Failed.")
validateResponse(t, resp, err, false)
}

func TestHTTPService_Put(t *testing.T) {
Expand All @@ -190,24 +170,14 @@ 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

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()
}

require.NoError(t, err)
assert.NotNil(t, resp, "TEST, Failed.")
validateResponse(t, resp, err, false)
}

func TestHTTPService_PutWithHeaders(t *testing.T) {
Expand All @@ -231,25 +201,15 @@ 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

resp, err := service.PutWithHeaders(t.Context(), "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()
}

require.NoError(t, err)
assert.NotNil(t, resp, "TEST, Failed.")
validateResponse(t, resp, err, false)
}

func TestHTTPService_Patch(t *testing.T) {
Expand All @@ -272,24 +232,14 @@ 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

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()
}

require.NoError(t, err)
assert.NotNil(t, resp, "TEST, Failed.")
validateResponse(t, resp, err, false)
}

func TestHTTPService_PatchWithHeaders(t *testing.T) {
Expand All @@ -303,7 +253,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"))
Expand All @@ -313,25 +263,15 @@ 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

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"})

if resp != nil {
defer resp.Body.Close()
}

require.NoError(t, err)
assert.NotNil(t, resp, "TEST, Failed.")
validateResponse(t, resp, err, false)
}

func TestHTTPService_Post(t *testing.T) {
Expand All @@ -354,24 +294,14 @@ 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

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()
}

require.NoError(t, err)
assert.NotNil(t, resp, "TEST, Failed.")
validateResponse(t, resp, err, false)
}

func TestHTTPService_PostWithHeaders(t *testing.T) {
Expand All @@ -395,25 +325,15 @@ 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

resp, err := service.PostWithHeaders(t.Context(), "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()
}

require.NoError(t, err)
assert.NotNil(t, resp, "TEST, Failed.")
validateResponse(t, resp, err, false)
}

func TestHTTPService_Delete(t *testing.T) {
Expand All @@ -435,23 +355,13 @@ 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

resp, err := service.Delete(t.Context(), "test-path", []byte("{Test Body}"))

if resp != nil {
defer resp.Body.Close()
}

require.NoError(t, err)
assert.NotNil(t, resp, "TEST, Failed.")
validateResponse(t, resp, err, false)
}

func TestHTTPService_DeleteWithHeaders(t *testing.T) {
Expand All @@ -474,24 +384,14 @@ 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

resp, err := service.DeleteWithHeaders(t.Context(), "test-path", []byte("{Test Body}"),
map[string]string{"header1": "value1"})

if resp != nil {
defer resp.Body.Close()
}

require.NoError(t, err)
assert.NotNil(t, resp, "TEST, Failed.")
validateResponse(t, resp, err, false)
}

func TestHTTPService_createAndSendRequestCreateRequestFailure(t *testing.T) {
Expand All @@ -507,12 +407,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"})

if resp != nil {
defer resp.Body.Close()
}

require.Error(t, err)
assert.Nil(t, resp, "TEST[%d], Failed.\n%s")
validateResponse(t, resp, err, true)
}

func TestHTTPService_createAndSendRequestServerError(t *testing.T) {
Expand All @@ -536,10 +431,34 @@ 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, true)
}

func validateResponse(t *testing.T, resp *http.Response, err error, hasError bool) {
t.Helper()

if resp != nil {
defer resp.Body.Close()
}

require.Error(t, err)
assert.Nil(t, resp, "TEST[%d], Failed.\n%s")
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),
}
}
Loading