From c0c49ef0c0ee5c364290521712e44ac50723c6d1 Mon Sep 17 00:00:00 2001 From: Sergiu Ghitea <28300158+sergiught@users.noreply.github.com> Date: Fri, 25 Aug 2023 12:01:48 +0300 Subject: [PATCH 1/6] Update apns.p12 cert --- test/data/apns.p12 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/data/apns.p12 b/test/data/apns.p12 index cb550ebf1..df946fd82 100644 --- a/test/data/apns.p12 +++ b/test/data/apns.p12 @@ -1 +1 @@ -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 From 8d3a6a873c3e362e3f09f74db4efcbe174eb16dd Mon Sep 17 00:00:00 2001 From: Sergiu Ghitea <28300158+sergiught@users.noreply.github.com> Date: Thu, 24 Aug 2023 10:38:43 +0300 Subject: [PATCH 2/6] Update golangci-lint config --- .golangci.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.golangci.yml b/.golangci.yml index 34cb0f55d..336617b43 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -39,5 +39,8 @@ issues: - path: "(.+)_test.go" linters: - gosec + - path: "internal/config/config.go" + linters: + - gosec exclude: - "should have a package comment" From 71389f6a462eebb77ce6d1b426a1719ad3387993 Mon Sep 17 00:00:00 2001 From: Sergiu Ghitea <28300158+sergiught@users.noreply.github.com> Date: Thu, 24 Aug 2023 10:10:37 +0300 Subject: [PATCH 3/6] Use a custom client with retries for auth0 api client config --- go.mod | 2 +- go.sum | 21 ++++ internal/config/client_retry_test.go | 175 +++++++++++++++++++++++++++ internal/config/config.go | 95 ++++++++++++++- 4 files changed, 291 insertions(+), 2 deletions(-) create mode 100644 internal/config/client_retry_test.go diff --git a/go.mod b/go.mod index 889929fc1..a4ac2297c 100644 --- a/go.mod +++ b/go.mod @@ -3,6 +3,7 @@ module github.com/auth0/terraform-provider-auth0 go 1.21 require ( + github.com/PuerkitoBio/rehttp v1.2.0 github.com/auth0/go-auth0 v1.0.0 github.com/google/go-cmp v0.5.9 github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320 @@ -19,7 +20,6 @@ require ( github.com/Masterminds/semver/v3 v3.1.1 // indirect github.com/Masterminds/sprig/v3 v3.2.2 // indirect github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8 // indirect - github.com/PuerkitoBio/rehttp v1.2.0 // indirect github.com/agext/levenshtein v1.2.3 // indirect github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect github.com/armon/go-radix v1.0.0 // indirect diff --git a/go.sum b/go.sum index 05d05ac45..f022e6603 100644 --- a/go.sum +++ b/go.sum @@ -6,11 +6,13 @@ github.com/Masterminds/sprig/v3 v3.2.1/go.mod h1:UoaO7Yp8KlPnJIYWTFkMaqPUYKTfGFP github.com/Masterminds/sprig/v3 v3.2.2 h1:17jRggJu518dr3QaafizSXOjKYp94wKfABxUmyxvxX8= github.com/Masterminds/sprig/v3 v3.2.2/go.mod h1:UoaO7Yp8KlPnJIYWTFkMaqPUYKTfGFPhxNuwnnxkKlk= github.com/Microsoft/go-winio v0.5.2 h1:a9IhgEQBCUEk6QCdml9CiJGhAws+YwffDHEMp1VMrpA= +github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8 h1:wPbRQzjjwFc0ih8puEVAOFGELsn1zoIIYdxvML7mDxA= github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8/go.mod h1:I0gYDMZ6Z5GRU7l58bNFSkPTFN6Yl12dsUlAZ8xy98g= github.com/PuerkitoBio/rehttp v1.2.0 h1:V8MGVcDwR+u/xwLlMrw5YZONDm3JISEKqwJTiIuJA+s= github.com/PuerkitoBio/rehttp v1.2.0/go.mod h1:LUwKPoDbDIA2RL5wYZCNsQ90cx4OJ4AWBmq6KzWZL1s= github.com/acomagu/bufpipe v1.0.4 h1:e3H4WUzM3npvo5uv95QuJM3cQspFNtFBzvJ2oNjKIDQ= +github.com/acomagu/bufpipe v1.0.4/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/apparentlymart/go-textseg/v12 v12.0.0/go.mod h1:S/4uRK2UtaQttw1GenVJEynmyUenKwP++x/+DdGV/Ec= @@ -36,14 +38,20 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= +github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= +github.com/frankban/quicktest v1.14.3/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps= github.com/go-git/gcfg v1.5.0 h1:Q5ViNfGF8zFgyJWPqYwA7qGFoMTEiBmdlkcfRmpIMa4= +github.com/go-git/gcfg v1.5.0/go.mod h1:5m20vg6GwYabIxaOonVkTdrILxQMpEShl1xiMF4ua+E= github.com/go-git/go-billy/v5 v5.4.1 h1:Uwp5tDRkPr+l/TnbHOQzp+tmJfLceOlbVucgpTz8ix4= +github.com/go-git/go-billy/v5 v5.4.1/go.mod h1:vjbugF6Fz7JIflbVpl1hJsGjSHNltrSw45YK/ukIvQg= github.com/go-git/go-git/v5 v5.6.1 h1:q4ZRqQl4pR/ZJHc1L5CFjGA1a10u76aV1iC+nh+bHsk= +github.com/go-git/go-git/v5 v5.6.1/go.mod h1:mvyoL6Unz0PiTQrGQfSfiLFhBH1c1e84ylC2MDs4ee8= github.com/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68= +github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= @@ -112,15 +120,22 @@ github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk= github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= +github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jhump/protoreflect v1.6.0 h1:h5jfMVslIg6l29nsMs0D8Wj17RDVdNYti0vDN/PZZoE= +github.com/jhump/protoreflect v1.6.0/go.mod h1:eaTn3RZAmMBcV0fifFvlm6VHNz3wSkYyXYWUh7ymB74= github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= +github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= +github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= +github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= @@ -148,19 +163,23 @@ github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA= github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= +github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/posener/complete v1.2.3 h1:NP0eAhjcjImqslEwo/1hq7gpajME0fTLTezBKDqfXqo= github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= github.com/rogpeppe/go-internal v1.6.1 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k= +github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/russross/blackfriday v1.6.0 h1:KqfZb0pUVN2lYqZUYRddxF4OR8ZMURnJIG5Y3VRLtww= github.com/russross/blackfriday v1.6.0/go.mod h1:ti0ldHuxg49ri4ksnFxlkCfN+hvslNlmVHqNRXXJNAY= github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ= +github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shopspring/decimal v1.3.1 h1:2Usl1nmF/WZucqkFZhnfFYxxxu8LG21F6nPQBE5gKV8= github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/skeema/knownhosts v1.1.0 h1:Wvr9V0MxhjRbl3f9nMnKnFfiWTJmtECJ9Njkea3ysW0= +github.com/skeema/knownhosts v1.1.0/go.mod h1:sKFq3RD6/TKZkSWn8boUbDC7Qkgcv+8XXijpFO6roag= github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= @@ -181,6 +200,7 @@ github.com/vmihailenco/msgpack/v5 v5.3.5/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g= github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= +github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/zclconf/go-cty v1.13.2 h1:4GvrUxe/QUDYuJKAav4EYqdM47/kZa672LwmXFmEKT0= github.com/zclconf/go-cty v1.13.2/go.mod h1:YKQzy/7pZ7iq2jNFzy5go57xdxdWoLLpaEp4u238AE0= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= @@ -242,6 +262,7 @@ gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/dnaeon/go-vcr.v3 v3.1.2 h1:F1smfXBqQqwpVifDfUBQG6zzaGjzT+EnVZakrOdr5wA= gopkg.in/dnaeon/go-vcr.v3 v3.1.2/go.mod h1:2IMOnnlx9I6u9x+YBsM3tAMx6AlOxnJ0pWxQAzZ79Ag= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= +gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/internal/config/client_retry_test.go b/internal/config/client_retry_test.go new file mode 100644 index 000000000..ad16161fc --- /dev/null +++ b/internal/config/client_retry_test.go @@ -0,0 +1,175 @@ +package config + +import ( + "crypto/tls" + "crypto/x509" + "errors" + "net/http" + "net/http/httptest" + "net/url" + "strconv" + "testing" + "time" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestCustomClientWithRetries(t *testing.T) { + t.Run("it retries on rate limit error", func(t *testing.T) { + apiCalls := 0 + fail := true + testServer := httptest.NewServer(http.HandlerFunc(func(writer http.ResponseWriter, request *http.Request) { + apiCalls++ + + if fail { + fail = false + writer.WriteHeader(429) + resetAt := time.Now().Add(time.Second).Unix() + writer.Header().Set("X-RateLimit-Reset", strconv.Itoa(int(resetAt))) + return + } + + writer.WriteHeader(200) + })) + + client := customClientWithRetries() + + request, err := http.NewRequest(http.MethodGet, testServer.URL, nil) + require.NoError(t, err) + + response, err := client.Do(request) + require.NoError(t, err) + + assert.Equal(t, 200, response.StatusCode) + assert.False(t, fail) + assert.Equal(t, 2, apiCalls) + + t.Cleanup(func() { + testServer.Close() + err := response.Body.Close() + require.NoError(t, err) + }) + }) + + t.Run("it retries on server error", func(t *testing.T) { + apiCalls := 0 + fail := true + testServer := httptest.NewServer(http.HandlerFunc(func(writer http.ResponseWriter, request *http.Request) { + apiCalls++ + + if fail { + fail = false + writer.WriteHeader(500) + return + } + + writer.WriteHeader(200) + })) + + client := customClientWithRetries() + + request, err := http.NewRequest(http.MethodGet, testServer.URL, nil) + require.NoError(t, err) + + response, err := client.Do(request) + require.NoError(t, err) + + assert.Equal(t, 200, response.StatusCode) + assert.False(t, fail) + assert.Equal(t, 2, apiCalls) + + t.Cleanup(func() { + testServer.Close() + err := response.Body.Close() + require.NoError(t, err) + }) + }) + + t.Run("it does not retry more than 3 times on server error", func(t *testing.T) { + apiCalls := 0 + testServer := httptest.NewServer(http.HandlerFunc(func(writer http.ResponseWriter, request *http.Request) { + apiCalls++ + writer.WriteHeader(500) + })) + + client := customClientWithRetries() + + request, err := http.NewRequest(http.MethodGet, testServer.URL, nil) + require.NoError(t, err) + + response, err := client.Do(request) + require.NoError(t, err) + + assert.Equal(t, 500, response.StatusCode) + assert.Equal(t, 3+1, apiCalls) // 3 retries + 1 first call. + + t.Cleanup(func() { + testServer.Close() + err := response.Body.Close() + require.NoError(t, err) + }) + }) +} + +func TestRetryableErrorRetryFunc(t *testing.T) { + testCases := []struct { + name string + err error + expected bool + }{ + { + name: "NilError", + err: nil, + expected: false, + }, + { + name: "TooManyRedirectsError", + err: &url.Error{ + Op: "Get", + URL: "http://example.com", + Err: errors.New("stopped after 5 redirects"), + }, + expected: false, + }, + { + name: "UnsupportedProtocolSchemeError", + err: &url.Error{ + Op: "Get", + URL: "ftp://example.com", + Err: errors.New("unsupported protocol scheme"), + }, + expected: false, + }, + { + name: "CertificateVerificationError", + err: &url.Error{ + Op: "Get", + URL: "https://example.com", + Err: &tls.CertificateVerificationError{}, + }, + expected: false, + }, + { + name: "UnknownAuthorityError", + err: &url.Error{ + Op: "Get", + URL: "https://example.com", + Err: x509.UnknownAuthorityError{}, + }, + expected: false, + }, + { + name: "OtherError", + err: errors.New("some other error"), + expected: true, + }, + } + + for _, testCase := range testCases { + t.Run(testCase.name, func(t *testing.T) { + actual := retryableErrorRetryFunc(testCase.err) + assert.Equal(t, testCase.expected, actual) + }) + } +} diff --git a/internal/config/config.go b/internal/config/config.go index 7e323760c..9c847cb1f 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -2,9 +2,16 @@ package config import ( "context" + "crypto/tls" + "crypto/x509" "fmt" "net/http" + "net/url" + "regexp" + "strconv" + "time" + "github.com/PuerkitoBio/rehttp" "github.com/auth0/go-auth0" "github.com/auth0/go-auth0/management" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" @@ -60,7 +67,8 @@ func ConfigureProvider(terraformVersion *string) schema.ConfigureContextFunc { management.WithDebug(debug), management.WithUserAgent(userAgent(terraformVersion)), management.WithAuth0ClientEnvEntry(providerName, version), - management.WithRetries(3, []int{http.StatusTooManyRequests, http.StatusInternalServerError}), + management.WithNoRetries(), + management.WithClient(customClientWithRetries()), ) if err != nil { return nil, diag.FromErr(err) @@ -106,3 +114,88 @@ func authenticationOption(clientID, clientSecret, apiToken, audience string) man return management.WithClientCredentials(ctx, clientID, clientSecret) } + +func customClientWithRetries() *http.Client { + client := &http.Client{ + Transport: rateLimitTransport( + retryableErrorTransport( + http.DefaultTransport, + ), + ), + } + + return client +} + +func rateLimitTransport(tripper http.RoundTripper) http.RoundTripper { + return rehttp.NewTransport(tripper, rateLimitRetry, rateLimitDelay) +} + +func rateLimitRetry(attempt rehttp.Attempt) bool { + if attempt.Response == nil { + return false + } + + return attempt.Response.StatusCode == http.StatusTooManyRequests +} + +func rateLimitDelay(attempt rehttp.Attempt) time.Duration { + resetAt := attempt.Response.Header.Get("X-RateLimit-Reset") + + resetAtUnix, err := strconv.ParseInt(resetAt, 10, 64) + if err != nil { + resetAtUnix = time.Now().Add(5 * time.Second).Unix() + } + + return time.Duration(resetAtUnix-time.Now().Unix()) * time.Second +} + +func retryableErrorTransport(tripper http.RoundTripper) http.RoundTripper { + return rehttp.NewTransport( + tripper, + rehttp.RetryAll( + rehttp.RetryMaxRetries(3), + rehttp.RetryAny( + rehttp.RetryStatuses( + http.StatusServiceUnavailable, + http.StatusInternalServerError, + http.StatusBadGateway, + http.StatusGatewayTimeout, + ), + rehttp.RetryIsErr(retryableErrorRetryFunc), + ), + ), + rehttp.ExpJitterDelay(500*time.Millisecond, 10*time.Second), + ) +} + +func retryableErrorRetryFunc(err error) bool { + if err == nil { + return false + } + + if v, ok := err.(*url.Error); ok { + // Don't retry if the error was due to too many redirects. + if regexp.MustCompile(`stopped after \d+ redirects\z`).MatchString(v.Error()) { + return false + } + + // Don't retry if the error was due to an invalid protocol scheme. + if regexp.MustCompile(`unsupported protocol scheme`).MatchString(v.Error()) { + return false + } + + // Don't retry if the certificate issuer is unknown. + if _, ok := v.Err.(*tls.CertificateVerificationError); ok { + return false + } + + // Don't retry if the certificate issuer is unknown. + if _, ok := v.Err.(x509.UnknownAuthorityError); ok { + return false + } + } + + // The error is likely recoverable so retry. + return true +} From 724f4e2d91d2977fc278f21f4009a017a47305f7 Mon Sep 17 00:00:00 2001 From: Sergiu Ghitea <28300158+sergiught@users.noreply.github.com> Date: Fri, 25 Aug 2023 12:08:46 +0300 Subject: [PATCH 4/6] Remove golangci config for ignoring gosec --- .golangci.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index 336617b43..34cb0f55d 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -39,8 +39,5 @@ issues: - path: "(.+)_test.go" linters: - gosec - - path: "internal/config/config.go" - linters: - - gosec exclude: - "should have a package comment" From 4ee9cd92815d5111d5a99dfb82c75e50a40d6a70 Mon Sep 17 00:00:00 2001 From: Sergiu Ghitea <28300158+sergiught@users.noreply.github.com> Date: Fri, 25 Aug 2023 12:58:29 +0300 Subject: [PATCH 5/6] Update resource server data source test assertion --- internal/auth0/resourceserver/data_source_test.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/internal/auth0/resourceserver/data_source_test.go b/internal/auth0/resourceserver/data_source_test.go index 50b2eb2ae..4c7719526 100644 --- a/internal/auth0/resourceserver/data_source_test.go +++ b/internal/auth0/resourceserver/data_source_test.go @@ -162,7 +162,10 @@ func TestAccDataSourceResourceServer(t *testing.T) { resource.TestCheckResourceAttr("data.auth0_resource_server.auth0", "allow_offline_access", "false"), resource.TestCheckResourceAttr("data.auth0_resource_server.auth0", "signing_alg", "RS256"), resource.TestCheckResourceAttr("data.auth0_resource_server.auth0", "token_lifetime_for_web", "7200"), - resource.TestCheckResourceAttr("data.auth0_resource_server.auth0", "scopes.#", "140"), + resource.TestCheckTypeSetElemNestedAttrs("data.auth0_resource_server.auth0", "scopes.*", map[string]string{ + "name": "read:users", + "description": "Read Users", + }), // Checking just one to ensure that scopes are not empty, as they get expanded periodically. resource.TestCheckResourceAttr("data.auth0_resource_server.auth0", "verification_location", ""), resource.TestCheckResourceAttr("data.auth0_resource_server.auth0", "enforce_policies", "false"), resource.TestCheckResourceAttr("data.auth0_resource_server.auth0", "token_dialect", ""), From ee81372f74c63258c0b9dc2b7fe952b6e28e6a97 Mon Sep 17 00:00:00 2001 From: Sergiu Ghitea <28300158+sergiught@users.noreply.github.com> Date: Fri, 25 Aug 2023 15:45:02 +0300 Subject: [PATCH 6/6] Add cloudflare specific status code error in retry mechanism --- internal/config/config.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/internal/config/config.go b/internal/config/config.go index 9c847cb1f..2749f1a82 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -161,6 +161,10 @@ func retryableErrorTransport(tripper http.RoundTripper) http.RoundTripper { http.StatusInternalServerError, http.StatusBadGateway, http.StatusGatewayTimeout, + // Cloudflare-specific server error that is generated + // because Cloudflare did not receive an HTTP response + // from the origin server after an HTTP Connection was made. + 524, ), rehttp.RetryIsErr(retryableErrorRetryFunc), ),