Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
187 changes: 53 additions & 134 deletions pkg/gofr/service/new_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,35 @@ 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
Expand Down Expand Up @@ -117,24 +146,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 +168,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 +199,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 +230,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 +261,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 +282,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 +292,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 +323,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 +354,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 +384,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 +413,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 +436,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 +460,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"})

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