From c9cb08f75d209e0baaceed41fbbf42b15e78b056 Mon Sep 17 00:00:00 2001 From: Alexandre Malucelli Date: Sun, 4 Aug 2019 15:16:31 -0300 Subject: [PATCH] fix: increase http timeout over the cloudflare client (#13) * fix: increase http timeout to cloudflare client * fix: const error msg --- internal/cloudflare/cloudflare.go | 3 +- internal/cloudflare/cloudflare_test.go | 47 ++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/internal/cloudflare/cloudflare.go b/internal/cloudflare/cloudflare.go index b3e5025..fb4221f 100644 --- a/internal/cloudflare/cloudflare.go +++ b/internal/cloudflare/cloudflare.go @@ -30,6 +30,7 @@ type Cloudflare struct { Client http.Client } +// New returns a Cloudflare client func New(apiKey, apiEmail string) Cloudflare { if apiKey == "" || apiEmail == "" { panic(errNoAuthorization) @@ -39,7 +40,7 @@ func New(apiKey, apiEmail string) Cloudflare { AuthKey: apiKey, AuthEmail: apiEmail, Client: http.Client{ - Timeout: time.Second * 5, + Timeout: time.Second * 30, }, } return client diff --git a/internal/cloudflare/cloudflare_test.go b/internal/cloudflare/cloudflare_test.go index 3d4a3c3..70277a4 100644 --- a/internal/cloudflare/cloudflare_test.go +++ b/internal/cloudflare/cloudflare_test.go @@ -8,12 +8,59 @@ package cloudflare import ( "fmt" + "net/http" "os" + "reflect" "testing" + "time" "github.com/stretchr/testify/assert" ) +func TestNew(t *testing.T) { + type args struct { + apiKey string + apiEmail string + } + tests := []struct { + name string + args args + want Cloudflare + }{ + { + "NewCloudFlareClient", + args{ + "key", + "email", + }, + Cloudflare{ + API: "https://api.cloudflare.com/client/v4", + AuthKey: "key", + AuthEmail: "email", + Client: http.Client{ + Timeout: time.Second * 30, + }, + }, + }, + } + t.Run("NewClientApiEmpty", func(t *testing.T) { + assert.PanicsWithValue(t, errNoAuthorization, func() { New("", "email") }) + }) + t.Run("NewClientEmailEmpty", func(t *testing.T) { + assert.PanicsWithValue(t, errNoAuthorization, func() { New("api", "") }) + }) + t.Run("NewClientWithApiAndEmailEmpty", func(t *testing.T) { + assert.PanicsWithValue(t, errNoAuthorization, func() { New("", "") }) + }) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := New(tt.args.apiKey, tt.args.apiEmail); !reflect.DeepEqual(got, tt.want) { + t.Errorf("got %v, want %v", got, tt.want) + } + }) + } +} + func TestCloudflare_Zones(t *testing.T) { // fail case