Skip to content

Commit e983dbf

Browse files
0xEbrahimUmang01-hasharyanmehrotra
authored
Rewrite new_test.go removing duplications (#2440)
* fix miss match method name at tests * patch test fixed * acstract duplicat response validation * resolve linting * fix unrelated changes * move helpers to end of the file --------- Co-authored-by: Umang Mundhra <[email protected]> Co-authored-by: Aryan Mehrotra <[email protected]>
1 parent 4d5e402 commit e983dbf

File tree

1 file changed

+49
-130
lines changed

1 file changed

+49
-130
lines changed

pkg/gofr/service/new_test.go

Lines changed: 49 additions & 130 deletions
Original file line numberDiff line numberDiff line change
@@ -117,24 +117,14 @@ func TestHTTPService_Get(t *testing.T) {
117117
}))
118118
defer server.Close()
119119

120-
service := &httpService{
121-
Client: http.DefaultClient,
122-
url: server.URL,
123-
Tracer: otel.Tracer("gofr-http-client"),
124-
Logger: logging.NewMockLogger(logging.INFO),
125-
}
120+
service := newService(t, server)
126121

127122
// TODO : Nil Correlation ID is coming in logs, it has to be fixed
128123

129124
resp, err := service.Get(t.Context(), "test-path",
130125
map[string]any{"key": "value", "name": []string{"gofr", "test"}})
131126

132-
if resp != nil {
133-
defer resp.Body.Close()
134-
}
135-
136-
require.NoError(t, err)
137-
assert.NotNil(t, resp, "TEST, Failed.")
127+
validateResponse(t, resp, err, false)
138128
}
139129

140130
func TestHTTPService_GetWithHeaders(t *testing.T) {
@@ -149,25 +139,15 @@ func TestHTTPService_GetWithHeaders(t *testing.T) {
149139
}))
150140
defer server.Close()
151141

152-
service := &httpService{
153-
Client: http.DefaultClient,
154-
url: server.URL,
155-
Tracer: otel.Tracer("gofr-http-client"),
156-
Logger: logging.NewMockLogger(logging.INFO),
157-
}
142+
service := newService(t, server)
158143

159144
// TODO : Nil Correlation ID is coming in logs, it has to be fixed
160145

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

165-
if resp != nil {
166-
defer resp.Body.Close()
167-
}
168-
169-
require.NoError(t, err)
170-
assert.NotNil(t, resp, "TEST, Failed.")
150+
validateResponse(t, resp, err, false)
171151
}
172152

173153
func TestHTTPService_Put(t *testing.T) {
@@ -190,24 +170,14 @@ func TestHTTPService_Put(t *testing.T) {
190170
}))
191171
defer server.Close()
192172

193-
service := &httpService{
194-
Client: http.DefaultClient,
195-
url: server.URL,
196-
Tracer: otel.Tracer("gofr-http-client"),
197-
Logger: logging.NewMockLogger(logging.INFO),
198-
}
173+
service := newService(t, server)
199174

200175
// TODO : Nil Correlation ID is coming in logs, it has to be fixed
201176

202177
resp, err := service.Put(t.Context(), "test-path",
203178
map[string]any{"key": "value", "name": []string{"gofr", "test"}}, []byte("{Test Body}"))
204179

205-
if resp != nil {
206-
defer resp.Body.Close()
207-
}
208-
209-
require.NoError(t, err)
210-
assert.NotNil(t, resp, "TEST, Failed.")
180+
validateResponse(t, resp, err, false)
211181
}
212182

213183
func TestHTTPService_PutWithHeaders(t *testing.T) {
@@ -231,25 +201,15 @@ func TestHTTPService_PutWithHeaders(t *testing.T) {
231201
}))
232202
defer server.Close()
233203

234-
service := &httpService{
235-
Client: http.DefaultClient,
236-
url: server.URL,
237-
Tracer: otel.Tracer("gofr-http-client"),
238-
Logger: logging.NewMockLogger(logging.INFO),
239-
}
204+
service := newService(t, server)
240205

241206
// TODO : Nil Correlation ID is coming in logs, it has to be fixed
242207

243208
resp, err := service.PutWithHeaders(t.Context(), "test-path",
244209
map[string]any{"key": "value", "name": []string{"gofr", "test"}}, []byte("{Test Body}"),
245210
map[string]string{"header1": "value1"})
246211

247-
if resp != nil {
248-
defer resp.Body.Close()
249-
}
250-
251-
require.NoError(t, err)
252-
assert.NotNil(t, resp, "TEST, Failed.")
212+
validateResponse(t, resp, err, false)
253213
}
254214

255215
func TestHTTPService_Patch(t *testing.T) {
@@ -272,24 +232,14 @@ func TestHTTPService_Patch(t *testing.T) {
272232
}))
273233
defer server.Close()
274234

275-
service := &httpService{
276-
Client: http.DefaultClient,
277-
url: server.URL,
278-
Tracer: otel.Tracer("gofr-http-client"),
279-
Logger: logging.NewMockLogger(logging.INFO),
280-
}
235+
service := newService(t, server)
281236

282237
// TODO : Nil Correlation ID is coming in logs, it has to be fixed
283238

284239
resp, err := service.Patch(t.Context(), "test-path",
285240
map[string]any{"key": "value", "name": []string{"gofr", "test"}}, []byte("{Test Body}"))
286241

287-
if resp != nil {
288-
defer resp.Body.Close()
289-
}
290-
291-
require.NoError(t, err)
292-
assert.NotNil(t, resp, "TEST, Failed.")
242+
validateResponse(t, resp, err, false)
293243
}
294244

295245
func TestHTTPService_PatchWithHeaders(t *testing.T) {
@@ -303,7 +253,7 @@ func TestHTTPService_PatchWithHeaders(t *testing.T) {
303253
t.Fatal("Unable to read request body")
304254
}
305255

306-
assert.Equal(t, http.MethodPut, r.Method)
256+
assert.Equal(t, http.MethodPatch, r.Method)
307257
assert.Equal(t, "/test-path", r.URL.Path)
308258
assert.Equal(t, "key=value&name=gofr&name=test", r.URL.RawQuery)
309259
assert.Contains(t, "value1", r.Header.Get("Header1"))
@@ -313,25 +263,15 @@ func TestHTTPService_PatchWithHeaders(t *testing.T) {
313263
}))
314264
defer server.Close()
315265

316-
service := &httpService{
317-
Client: http.DefaultClient,
318-
url: server.URL,
319-
Tracer: otel.Tracer("gofr-http-client"),
320-
Logger: logging.NewMockLogger(logging.INFO),
321-
}
266+
service := newService(t, server)
322267

323268
// TODO : Nil Correlation ID is coming in logs, it has to be fixed
324269

325-
resp, err := service.PutWithHeaders(t.Context(), "test-path",
270+
resp, err := service.PatchWithHeaders(t.Context(), "test-path",
326271
map[string]any{"key": "value", "name": []string{"gofr", "test"}}, []byte("{Test Body}"),
327272
map[string]string{"header1": "value1"})
328273

329-
if resp != nil {
330-
defer resp.Body.Close()
331-
}
332-
333-
require.NoError(t, err)
334-
assert.NotNil(t, resp, "TEST, Failed.")
274+
validateResponse(t, resp, err, false)
335275
}
336276

337277
func TestHTTPService_Post(t *testing.T) {
@@ -354,24 +294,14 @@ func TestHTTPService_Post(t *testing.T) {
354294
}))
355295
defer server.Close()
356296

357-
service := &httpService{
358-
Client: http.DefaultClient,
359-
url: server.URL,
360-
Tracer: otel.Tracer("gofr-http-client"),
361-
Logger: logging.NewMockLogger(logging.INFO),
362-
}
297+
service := newService(t, server)
363298

364299
// TODO : Nil Correlation ID is coming in logs, it has to be fixed
365300

366301
resp, err := service.Post(t.Context(), "test-path",
367302
map[string]any{"key": "value", "name": []string{"gofr", "test"}}, []byte("{Test Body}"))
368303

369-
if resp != nil {
370-
defer resp.Body.Close()
371-
}
372-
373-
require.NoError(t, err)
374-
assert.NotNil(t, resp, "TEST, Failed.")
304+
validateResponse(t, resp, err, false)
375305
}
376306

377307
func TestHTTPService_PostWithHeaders(t *testing.T) {
@@ -395,25 +325,15 @@ func TestHTTPService_PostWithHeaders(t *testing.T) {
395325
}))
396326
defer server.Close()
397327

398-
service := &httpService{
399-
Client: http.DefaultClient,
400-
url: server.URL,
401-
Tracer: otel.Tracer("gofr-http-client"),
402-
Logger: logging.NewMockLogger(logging.INFO),
403-
}
328+
service := newService(t, server)
404329

405330
// TODO : Nil Correlation ID is coming in logs, it has to be fixed
406331

407332
resp, err := service.PostWithHeaders(t.Context(), "test-path",
408333
map[string]any{"key": "value", "name": []string{"gofr", "test"}}, []byte("{Test Body}"),
409334
map[string]string{"header1": "value1"})
410335

411-
if resp != nil {
412-
defer resp.Body.Close()
413-
}
414-
415-
require.NoError(t, err)
416-
assert.NotNil(t, resp, "TEST, Failed.")
336+
validateResponse(t, resp, err, false)
417337
}
418338

419339
func TestHTTPService_Delete(t *testing.T) {
@@ -435,23 +355,13 @@ func TestHTTPService_Delete(t *testing.T) {
435355
}))
436356
defer server.Close()
437357

438-
service := &httpService{
439-
Client: http.DefaultClient,
440-
url: server.URL,
441-
Tracer: otel.Tracer("gofr-http-client"),
442-
Logger: logging.NewMockLogger(logging.INFO),
443-
}
358+
service := newService(t, server)
444359

445360
// TODO : Nil Correlation ID is coming in logs, it has to be fixed
446361

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

449-
if resp != nil {
450-
defer resp.Body.Close()
451-
}
452-
453-
require.NoError(t, err)
454-
assert.NotNil(t, resp, "TEST, Failed.")
364+
validateResponse(t, resp, err, false)
455365
}
456366

457367
func TestHTTPService_DeleteWithHeaders(t *testing.T) {
@@ -474,24 +384,14 @@ func TestHTTPService_DeleteWithHeaders(t *testing.T) {
474384
}))
475385
defer server.Close()
476386

477-
service := &httpService{
478-
Client: http.DefaultClient,
479-
url: server.URL,
480-
Tracer: otel.Tracer("gofr-http-client"),
481-
Logger: logging.NewMockLogger(logging.INFO),
482-
}
387+
service := newService(t, server)
483388

484389
// TODO : Nil Correlation ID is coming in logs, it has to be fixed
485390

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

489-
if resp != nil {
490-
defer resp.Body.Close()
491-
}
492-
493-
require.NoError(t, err)
494-
assert.NotNil(t, resp, "TEST, Failed.")
394+
validateResponse(t, resp, err, false)
495395
}
496396

497397
func TestHTTPService_createAndSendRequestCreateRequestFailure(t *testing.T) {
@@ -507,12 +407,7 @@ func TestHTTPService_createAndSendRequestCreateRequestFailure(t *testing.T) {
507407
"!@#$", "test-path", map[string]any{"key": "value", "name": []string{"gofr", "test"}},
508408
[]byte("{Test Body}"), map[string]string{"header1": "value1"})
509409

510-
if resp != nil {
511-
defer resp.Body.Close()
512-
}
513-
514-
require.Error(t, err)
515-
assert.Nil(t, resp, "TEST[%d], Failed.\n%s")
410+
validateResponse(t, resp, err, true)
516411
}
517412

518413
func TestHTTPService_createAndSendRequestServerError(t *testing.T) {
@@ -536,10 +431,34 @@ func TestHTTPService_createAndSendRequestServerError(t *testing.T) {
536431
http.MethodPost, "test-path", map[string]any{"key": "value", "name": []string{"gofr", "test"}},
537432
[]byte("{Test Body}"), map[string]string{"header1": "value1"})
538433

434+
validateResponse(t, resp, err, true)
435+
}
436+
437+
func validateResponse(t *testing.T, resp *http.Response, err error, hasError bool) {
438+
t.Helper()
439+
539440
if resp != nil {
540441
defer resp.Body.Close()
541442
}
542443

543-
require.Error(t, err)
544-
assert.Nil(t, resp, "TEST[%d], Failed.\n%s")
444+
if hasError {
445+
require.Error(t, err)
446+
assert.Nil(t, resp, "TEST[%d], Failed.\n%s")
447+
448+
return
449+
}
450+
451+
require.NoError(t, err)
452+
assert.NotNil(t, resp, "TEST[%d], Failed.\n%s")
453+
}
454+
455+
func newService(t *testing.T, server *httptest.Server) *httpService {
456+
t.Helper()
457+
458+
return &httpService{
459+
Client: http.DefaultClient,
460+
url: server.URL,
461+
Tracer: otel.Tracer("gofr-http-client"),
462+
Logger: logging.NewMockLogger(logging.INFO),
463+
}
545464
}

0 commit comments

Comments
 (0)