From 1d459b5c0468d12fe4ae98ca333399237e378fa1 Mon Sep 17 00:00:00 2001 From: Jonathan Fontes Date: Sun, 22 Nov 2020 13:08:30 +0000 Subject: [PATCH] FIX: AuditInfo is now properley parsed --- README.md | 2 +- pkg/apicall.go | 1 - pkg/apicall_test.go | 30 ++++++++++++++++++++++++++++++ pkg/response.go | 2 +- 4 files changed, 32 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index a88dcb8..7a703bb 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# API CALL - Creative Code Solution +# API CALL - [Creative Code Solution](https://creativecodesolutions.pt) ![Test](https://github.com/gravataLonga/api-call/workflows/Test/badge.svg?branch=master) [![Coverage Status](https://coveralls.io/repos/github/gravataLonga/api-call/badge.svg?branch=master)](https://coveralls.io/github/gravataLonga/api-call?branch=master) diff --git a/pkg/apicall.go b/pkg/apicall.go index fc936bd..2ef7e15 100644 --- a/pkg/apicall.go +++ b/pkg/apicall.go @@ -135,7 +135,6 @@ func formatResponse(baseResponse *BaseStandard, response *http.Response) error { } baseResponse.AuditInfo.StatusCode = response.StatusCode - baseResponse.AuditInfo.Duration = time.Since(baseResponse.Timestamp) return nil } diff --git a/pkg/apicall_test.go b/pkg/apicall_test.go index 13cd44c..691e4fb 100644 --- a/pkg/apicall_test.go +++ b/pkg/apicall_test.go @@ -337,3 +337,33 @@ func TestSetProperlyHeader(t *testing.T) { assert.NotEmpty(t, header) } + +func TestCanParseAuditInfo(t *testing.T) { + type ItemToken struct { + Token string `json:"token"` + } + ts := httptest.NewServer(http.HandlerFunc(func(writer http.ResponseWriter, request *http.Request) { + writer.Header().Set("Content-Type", "application/json") + json := `{"items":{"token":"token"},"auditInfo":{"duration":0.027,"host":"test.com","dbHost":"dbHost","clientIP":"127.0.0.1","ok":true,"errors":{"items":[]},"info":{"items":[]},"warning":{"items":[]},"total":1,"env":"local","version":"1.0.0 - 2020-01-01 00:00:00","tokenAudience":""},"interfaceSettings":[]}` + _, _ = writer.Write([]byte(json)) + })) + defer ts.Close() + apicall := NewApiCall( + WithBaseUrl(ts.URL), + ) + response, err := apicall.Send("POST", "/", nil) + items := &ItemToken{} + errGetItems := response.GetItems(items) + + assert.Nil(t, errGetItems) + assert.Nil(t, err) + assert.Equal(t, "token", items.Token) + assert.Equal(t, 0.027, response.AuditInfo.Duration) + assert.Equal(t, "test.com", response.AuditInfo.Host) + assert.Equal(t, "127.0.0.1", response.AuditInfo.ClientIP) + assert.Equal(t, true, response.AuditInfo.Ok) + + assert.Empty(t, response.AuditInfo.Errors.Items) + assert.Empty(t, response.AuditInfo.Warning.Items) + assert.Empty(t, response.AuditInfo.Info.Items) +} diff --git a/pkg/response.go b/pkg/response.go index b03d2c3..7f45ec1 100644 --- a/pkg/response.go +++ b/pkg/response.go @@ -39,7 +39,7 @@ func (i Items) String() string { // request/response from server side type AuditInfo struct { // Duration of request - Duration time.Duration `json:"duration"` + Duration float64 `json:"duration"` // Timestamp when the request started Timestamp time.Time `json:"timestamp"` // Host is hostname of made request