Fix lint errors
This commit is contained in:
parent
393801368b
commit
7e48eb1eb2
@ -112,8 +112,7 @@ type auth struct {
|
|||||||
// Middleware returns jwt auth middleware
|
// Middleware returns jwt auth middleware
|
||||||
func Middleware(key interface{}, alg jwa.SignatureAlgorithm, opts ...Option) func(next http.Handler) http.Handler {
|
func Middleware(key interface{}, alg jwa.SignatureAlgorithm, opts ...Option) func(next http.Handler) http.Handler {
|
||||||
a := &auth{}
|
a := &auth{}
|
||||||
opts = append(opts, SetKey(key))
|
opts = append(opts, SetKey(key), SetAlgorithm(alg))
|
||||||
opts = append(opts, SetAlgorithm(alg))
|
|
||||||
opts = append([]Option{DefaultOptions}, opts...)
|
opts = append([]Option{DefaultOptions}, opts...)
|
||||||
|
|
||||||
for _, opt := range opts {
|
for _, opt := range opts {
|
||||||
@ -162,10 +161,10 @@ func Middleware(key interface{}, alg jwa.SignatureAlgorithm, opts ...Option) fun
|
|||||||
}
|
}
|
||||||
|
|
||||||
// RespondWithUnauthorized is a default response handler
|
// RespondWithUnauthorized is a default response handler
|
||||||
func RespondWithUnauthorized(w http.ResponseWriter, r *http.Request, err error) {
|
func RespondWithUnauthorized(w http.ResponseWriter, _ *http.Request, _ error) {
|
||||||
http.Error(w, http.StatusText(http.StatusUnauthorized), http.StatusUnauthorized)
|
http.Error(w, http.StatusText(http.StatusUnauthorized), http.StatusUnauthorized)
|
||||||
}
|
}
|
||||||
|
|
||||||
func allowAll(token jwt.Token) (bool, interface{}) {
|
func allowAll(_ jwt.Token) (bool, interface{}) {
|
||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
|
@ -97,8 +97,8 @@ func TestJWTAuthParseVerify(t *testing.T) {
|
|||||||
assert.Equal(t, http.StatusUnauthorized, res.StatusCode)
|
assert.Equal(t, http.StatusUnauthorized, res.StatusCode)
|
||||||
|
|
||||||
now := time.Now()
|
now := time.Now()
|
||||||
token.Set(jwt.IssuedAtKey, now.Add(-1*time.Hour)) // nolint:errcheck
|
token.Set(jwt.IssuedAtKey, now.Add(-1*time.Hour)) // nolint:errcheck // No need to check error here
|
||||||
token.Set(jwt.ExpirationKey, now.Add(-58*time.Minute)) // nolint:errcheck
|
token.Set(jwt.ExpirationKey, now.Add(-58*time.Minute)) // nolint:errcheck // No need to check error here
|
||||||
payload, err = jwt.Sign(token, jwa.HS512, []byte("tkey"))
|
payload, err = jwt.Sign(token, jwa.HS512, []byte("tkey"))
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|
||||||
@ -120,7 +120,7 @@ func TestJWTAuthVerifyOptions(t *testing.T) {
|
|||||||
|
|
||||||
token := jwt.New()
|
token := jwt.New()
|
||||||
|
|
||||||
token.Set(jwt.IssuerKey, "wrongissuer") // nolint:errcheck
|
token.Set(jwt.IssuerKey, "wrongissuer") // nolint:errcheck // No need to check error here
|
||||||
payload, err := jwt.Sign(token, jwa.HS256, []byte("changethis"))
|
payload, err := jwt.Sign(token, jwa.HS256, []byte("changethis"))
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|
||||||
@ -129,7 +129,7 @@ func TestJWTAuthVerifyOptions(t *testing.T) {
|
|||||||
defer res.Body.Close()
|
defer res.Body.Close()
|
||||||
assert.Equal(t, http.StatusUnauthorized, res.StatusCode)
|
assert.Equal(t, http.StatusUnauthorized, res.StatusCode)
|
||||||
|
|
||||||
token.Set(jwt.IssuerKey, "tissuer") // nolint:errcheck
|
token.Set(jwt.IssuerKey, "tissuer") // nolint:errcheck // No need to check error here
|
||||||
payload, err = jwt.Sign(token, jwa.HS256, []byte("changethis"))
|
payload, err = jwt.Sign(token, jwa.HS256, []byte("changethis"))
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|
||||||
@ -155,16 +155,16 @@ func TestJWTAuthContext(t *testing.T) {
|
|||||||
)
|
)
|
||||||
|
|
||||||
token := jwt.New()
|
token := jwt.New()
|
||||||
token.Set(jwt.JwtIDKey, "tid") // nolint:errcheck
|
token.Set(jwt.JwtIDKey, "tid") // nolint:errcheck // No need to check error here
|
||||||
|
|
||||||
testCtxHandler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
testCtxHandler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
data, ok := r.Context().Value(DataCtxKey).(*data)
|
data, ok := r.Context().Value(DataCtxKey).(*data)
|
||||||
require.True(t, ok)
|
require.True(t, ok)
|
||||||
assert.Equal(t, "test data", data.inner)
|
assert.Equal(t, "test data", data.inner)
|
||||||
|
|
||||||
token, ok := r.Context().Value(JWTCtxKey).(jwt.Token)
|
ctxToken, ok := r.Context().Value(JWTCtxKey).(jwt.Token)
|
||||||
require.True(t, ok)
|
require.True(t, ok)
|
||||||
assert.Equal(t, "tid", token.JwtID())
|
assert.Equal(t, "tid", ctxToken.JwtID())
|
||||||
|
|
||||||
_, err := w.Write([]byte("resp"))
|
_, err := w.Write([]byte("resp"))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
@ -181,7 +181,7 @@ func TestJWTAuthContext(t *testing.T) {
|
|||||||
defer res.Body.Close()
|
defer res.Body.Close()
|
||||||
assert.Equal(t, http.StatusOK, res.StatusCode)
|
assert.Equal(t, http.StatusOK, res.StatusCode)
|
||||||
|
|
||||||
token.Set(jwt.JwtIDKey, "invalid") // nolint:errcheck
|
token.Set(jwt.JwtIDKey, "invalid") // nolint:errcheck // No need to check error here
|
||||||
payload, err = jwt.Sign(token, jwa.HS256, []byte("changethis"))
|
payload, err = jwt.Sign(token, jwa.HS256, []byte("changethis"))
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
@ -114,10 +114,10 @@ func Middleware(opts ...Option) func(next http.Handler) http.Handler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// RespondWithUnauthorized is a default response handler
|
// RespondWithUnauthorized is a default response handler
|
||||||
func RespondWithUnauthorized(w http.ResponseWriter, r *http.Request, err error) {
|
func RespondWithUnauthorized(w http.ResponseWriter, _ *http.Request, _ error) {
|
||||||
http.Error(w, http.StatusText(http.StatusUnauthorized), http.StatusUnauthorized)
|
http.Error(w, http.StatusText(http.StatusUnauthorized), http.StatusUnauthorized)
|
||||||
}
|
}
|
||||||
|
|
||||||
func rejectAll(token string) (bool, interface{}) {
|
func rejectAll(_ string) (bool, interface{}) {
|
||||||
return false, nil
|
return false, nil
|
||||||
}
|
}
|
||||||
|
@ -9,42 +9,42 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func TestTokenFromAuthorizationHeader(t *testing.T) {
|
func TestTokenFromAuthorizationHeader(t *testing.T) {
|
||||||
req, err := http.NewRequest("GET", "/", nil)
|
req, err := http.NewRequest("GET", "/", http.NoBody)
|
||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
req.Header.Set("Authorization", "abc")
|
req.Header.Set("Authorization", "abc")
|
||||||
assert.Equal(t, "abc", TokenFromAuthorizationHeader(req))
|
assert.Equal(t, "abc", TokenFromAuthorizationHeader(req))
|
||||||
|
|
||||||
req, err = http.NewRequest("GET", "/", nil)
|
req, err = http.NewRequest("GET", "/", http.NoBody)
|
||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
req.Header.Set("Authorization", "abcdefghe")
|
req.Header.Set("Authorization", "abcdefghe")
|
||||||
assert.Equal(t, "abcdefghe", TokenFromAuthorizationHeader(req))
|
assert.Equal(t, "abcdefghe", TokenFromAuthorizationHeader(req))
|
||||||
|
|
||||||
req, err = http.NewRequest("GET", "/", nil)
|
req, err = http.NewRequest("GET", "/", http.NoBody)
|
||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
req.Header.Set("Authorization", "Bearer abc")
|
req.Header.Set("Authorization", "Bearer abc")
|
||||||
assert.Equal(t, "abc", TokenFromAuthorizationHeader(req))
|
assert.Equal(t, "abc", TokenFromAuthorizationHeader(req))
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestTokenFromHeader(t *testing.T) {
|
func TestTokenFromHeader(t *testing.T) {
|
||||||
req, err := http.NewRequest("GET", "/", nil)
|
req, err := http.NewRequest("GET", "/", http.NoBody)
|
||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
req.Header.Set("X-Token", "abc")
|
req.Header.Set("X-Token", "abc")
|
||||||
assert.Equal(t, "abc", TokenFromHeader("X-Token")(req))
|
assert.Equal(t, "abc", TokenFromHeader("X-Token")(req))
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestTokenFromQuery(t *testing.T) {
|
func TestTokenFromQuery(t *testing.T) {
|
||||||
req, err := http.NewRequest("GET", "/?token=abc", nil)
|
req, err := http.NewRequest("GET", "/?token=abc", http.NoBody)
|
||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
assert.Equal(t, "abc", TokenFromQuery("token")(req))
|
assert.Equal(t, "abc", TokenFromQuery("token")(req))
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestTokenFromCookie(t *testing.T) {
|
func TestTokenFromCookie(t *testing.T) {
|
||||||
req, err := http.NewRequest("GET", "/", nil)
|
req, err := http.NewRequest("GET", "/", http.NoBody)
|
||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
req.AddCookie(&http.Cookie{Name: "token", Value: "abc"})
|
req.AddCookie(&http.Cookie{Name: "token", Value: "abc"})
|
||||||
assert.Equal(t, "abc", TokenFromCookie("token")(req))
|
assert.Equal(t, "abc", TokenFromCookie("token")(req))
|
||||||
|
|
||||||
req, err = http.NewRequest("GET", "/", nil)
|
req, err = http.NewRequest("GET", "/", http.NoBody)
|
||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
assert.Equal(t, "", TokenFromCookie("token")(req))
|
assert.Equal(t, "", TokenFromCookie("token")(req))
|
||||||
}
|
}
|
||||||
|
@ -113,7 +113,7 @@ func (s *logger) body(r *http.Request) string {
|
|||||||
r.Body = ioutil.NopCloser(rdr)
|
r.Body = ioutil.NopCloser(rdr)
|
||||||
|
|
||||||
if len(body) > 0 {
|
if len(body) > 0 {
|
||||||
body = strings.Replace(body, "\n", " ", -1)
|
body = strings.ReplaceAll(body, "\n", " ")
|
||||||
body = regexpMultiWhitespace.ReplaceAllString(body, " ")
|
body = regexpMultiWhitespace.ReplaceAllString(body, " ")
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -186,7 +186,7 @@ func Middleware(opts ...Option) func(http.Handler) http.Handler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// DefaultLogHandler is a default log handler
|
// DefaultLogHandler is a default log handler
|
||||||
func DefaultLogHandler(entry LogEntry) {
|
func DefaultLogHandler(entry LogEntry) { // nolint:gocritic // For backwards compatibility
|
||||||
log.Printf(
|
log.Printf(
|
||||||
"%s - %s - %s - %d (%d) - %v",
|
"%s - %s - %s - %d (%d) - %v",
|
||||||
entry.Method,
|
entry.Method,
|
||||||
|
@ -8,7 +8,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
errWriterNotImplentsHijacker = errors.New("ResponseWriter does not implement the Hijacker interface") // nolint:golint
|
errWriterNotImplentsHijacker = errors.New("ResponseWriter does not implement the Hijacker interface")
|
||||||
)
|
)
|
||||||
|
|
||||||
type trackingResponseWriter struct {
|
type trackingResponseWriter struct {
|
||||||
|
@ -24,7 +24,7 @@ func TestNoCache(t *testing.T) {
|
|||||||
|
|
||||||
client := http.Client{}
|
client := http.Client{}
|
||||||
|
|
||||||
req, err := http.NewRequest("GET", server.URL, nil)
|
req, err := http.NewRequest("GET", server.URL, http.NoBody)
|
||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
req.Header.Set("ETag", "ETagValue")
|
req.Header.Set("ETag", "ETagValue")
|
||||||
|
|
||||||
|
2
ping.go
2
ping.go
@ -11,7 +11,7 @@ func Ping(next http.Handler) http.Handler {
|
|||||||
if r.Method == "GET" && strings.HasSuffix(strings.ToLower(r.URL.Path), "/ping") {
|
if r.Method == "GET" && strings.HasSuffix(strings.ToLower(r.URL.Path), "/ping") {
|
||||||
w.Header().Set("Content-Type", "text/plain")
|
w.Header().Set("Content-Type", "text/plain")
|
||||||
w.WriteHeader(http.StatusOK)
|
w.WriteHeader(http.StatusOK)
|
||||||
w.Write([]byte("pong")) // nolint:errcheck
|
w.Write([]byte("pong")) // nolint:errcheck // No need to check error here
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -26,7 +26,7 @@ func TestRealIPXRealIP(t *testing.T) {
|
|||||||
|
|
||||||
client := http.Client{}
|
client := http.Client{}
|
||||||
|
|
||||||
req, err := http.NewRequest("GET", server.URL, nil)
|
req, err := http.NewRequest("GET", server.URL, http.NoBody)
|
||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
req.Header.Set("X-Real-IP", "3.3.3.3")
|
req.Header.Set("X-Real-IP", "3.3.3.3")
|
||||||
|
|
||||||
@ -46,7 +46,7 @@ func TestRealIPXForwardedFor(t *testing.T) {
|
|||||||
|
|
||||||
client := http.Client{}
|
client := http.Client{}
|
||||||
|
|
||||||
req, err := http.NewRequest("GET", server.URL, nil)
|
req, err := http.NewRequest("GET", server.URL, http.NoBody)
|
||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
req.Header.Set("X-Forwarded-For", "3.3.3.3")
|
req.Header.Set("X-Forwarded-For", "3.3.3.3")
|
||||||
|
|
||||||
@ -55,7 +55,7 @@ func TestRealIPXForwardedFor(t *testing.T) {
|
|||||||
defer res.Body.Close()
|
defer res.Body.Close()
|
||||||
assert.Equal(t, http.StatusOK, res.StatusCode)
|
assert.Equal(t, http.StatusOK, res.StatusCode)
|
||||||
|
|
||||||
req, err = http.NewRequest("GET", server.URL, nil)
|
req, err = http.NewRequest("GET", server.URL, http.NoBody)
|
||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
req.Header.Set("X-Forwarded-For", "3.3.3.3, 4.4.4.4, 5.5.5.5")
|
req.Header.Set("X-Forwarded-For", "3.3.3.3, 4.4.4.4, 5.5.5.5")
|
||||||
|
|
||||||
@ -71,7 +71,7 @@ func TestRealIPBothHeaders(t *testing.T) {
|
|||||||
|
|
||||||
client := http.Client{}
|
client := http.Client{}
|
||||||
|
|
||||||
req, err := http.NewRequest("GET", server.URL, nil)
|
req, err := http.NewRequest("GET", server.URL, http.NoBody)
|
||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
req.Header.Set("X-Real-IP", "3.3.3.3")
|
req.Header.Set("X-Real-IP", "3.3.3.3")
|
||||||
req.Header.Set("X-Forwarded-For", "4.4.4.4")
|
req.Header.Set("X-Forwarded-For", "4.4.4.4")
|
||||||
|
@ -79,7 +79,7 @@ func Middleware(opts ...Option) func(next http.Handler) http.Handler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// RespondWithInternalServerError is a default response handler
|
// RespondWithInternalServerError is a default response handler
|
||||||
func RespondWithInternalServerError(w http.ResponseWriter, r *http.Request, err error) {
|
func RespondWithInternalServerError(w http.ResponseWriter, _ *http.Request, _ error) {
|
||||||
http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
|
http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -171,6 +171,6 @@ func Middleware(opts ...Option) func(http.Handler) http.Handler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// RespondWithTooManyRequests is a default response handler
|
// RespondWithTooManyRequests is a default response handler
|
||||||
func RespondWithTooManyRequests(w http.ResponseWriter, r *http.Request, err error) {
|
func RespondWithTooManyRequests(w http.ResponseWriter, _ *http.Request, _ error) {
|
||||||
http.Error(w, http.StatusText(http.StatusTooManyRequests), http.StatusTooManyRequests)
|
http.Error(w, http.StatusText(http.StatusTooManyRequests), http.StatusTooManyRequests)
|
||||||
}
|
}
|
||||||
|
@ -35,7 +35,7 @@ func TestThrottleBacklog(t *testing.T) {
|
|||||||
var wg sync.WaitGroup
|
var wg sync.WaitGroup
|
||||||
for i := 0; i < 1; i++ {
|
for i := 0; i < 1; i++ {
|
||||||
wg.Add(1)
|
wg.Add(1)
|
||||||
go func(i int) {
|
go func() {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
|
|
||||||
res, err := client.Get(server.URL)
|
res, err := client.Get(server.URL)
|
||||||
@ -46,7 +46,7 @@ func TestThrottleBacklog(t *testing.T) {
|
|||||||
b, err := ioutil.ReadAll(res.Body)
|
b, err := ioutil.ReadAll(res.Body)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.Equal(t, "resp", string(b))
|
assert.Equal(t, "resp", string(b))
|
||||||
}(i)
|
}()
|
||||||
}
|
}
|
||||||
|
|
||||||
wg.Wait()
|
wg.Wait()
|
||||||
@ -75,12 +75,12 @@ func TestThrottleClientTimeout(t *testing.T) {
|
|||||||
var wg sync.WaitGroup
|
var wg sync.WaitGroup
|
||||||
for i := 0; i < 10; i++ {
|
for i := 0; i < 10; i++ {
|
||||||
wg.Add(1)
|
wg.Add(1)
|
||||||
go func(i int) {
|
go func() {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
|
|
||||||
_, err := client.Get(server.URL)
|
_, err := client.Get(server.URL)
|
||||||
assert.Error(t, err)
|
assert.Error(t, err)
|
||||||
}(i)
|
}()
|
||||||
}
|
}
|
||||||
|
|
||||||
wg.Wait()
|
wg.Wait()
|
||||||
@ -110,7 +110,7 @@ func TestThrottleTriggerGatewayTimeout(t *testing.T) {
|
|||||||
|
|
||||||
for i := 0; i < 50; i++ {
|
for i := 0; i < 50; i++ {
|
||||||
wg.Add(1)
|
wg.Add(1)
|
||||||
go func(i int) {
|
go func() {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
|
|
||||||
res, err := client.Get(server.URL)
|
res, err := client.Get(server.URL)
|
||||||
@ -118,21 +118,21 @@ func TestThrottleTriggerGatewayTimeout(t *testing.T) {
|
|||||||
defer res.Body.Close()
|
defer res.Body.Close()
|
||||||
assert.Equal(t, http.StatusOK, res.StatusCode)
|
assert.Equal(t, http.StatusOK, res.StatusCode)
|
||||||
|
|
||||||
}(i)
|
}()
|
||||||
}
|
}
|
||||||
|
|
||||||
time.Sleep(time.Second * 1)
|
time.Sleep(time.Second * 1)
|
||||||
|
|
||||||
for i := 0; i < 50; i++ {
|
for i := 0; i < 50; i++ {
|
||||||
wg.Add(1)
|
wg.Add(1)
|
||||||
go func(i int) {
|
go func() {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
|
|
||||||
res, err := client.Get(server.URL)
|
res, err := client.Get(server.URL)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
defer res.Body.Close()
|
defer res.Body.Close()
|
||||||
assert.Equal(t, http.StatusTooManyRequests, res.StatusCode)
|
assert.Equal(t, http.StatusTooManyRequests, res.StatusCode)
|
||||||
}(i)
|
}()
|
||||||
}
|
}
|
||||||
|
|
||||||
wg.Wait()
|
wg.Wait()
|
||||||
@ -162,7 +162,7 @@ func TestThrottleMaximum(t *testing.T) {
|
|||||||
|
|
||||||
for i := 0; i < 20; i++ {
|
for i := 0; i < 20; i++ {
|
||||||
wg.Add(1)
|
wg.Add(1)
|
||||||
go func(i int) {
|
go func() {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
|
|
||||||
res, err := client.Get(server.URL)
|
res, err := client.Get(server.URL)
|
||||||
@ -173,21 +173,21 @@ func TestThrottleMaximum(t *testing.T) {
|
|||||||
b, err := ioutil.ReadAll(res.Body)
|
b, err := ioutil.ReadAll(res.Body)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.Equal(t, "resp", string(b))
|
assert.Equal(t, "resp", string(b))
|
||||||
}(i)
|
}()
|
||||||
}
|
}
|
||||||
|
|
||||||
time.Sleep(time.Second * 1)
|
time.Sleep(time.Second * 1)
|
||||||
|
|
||||||
for i := 0; i < 20; i++ {
|
for i := 0; i < 20; i++ {
|
||||||
wg.Add(1)
|
wg.Add(1)
|
||||||
go func(i int) {
|
go func() {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
|
|
||||||
res, err := client.Get(server.URL)
|
res, err := client.Get(server.URL)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
defer res.Body.Close()
|
defer res.Body.Close()
|
||||||
assert.Equal(t, http.StatusTooManyRequests, res.StatusCode)
|
assert.Equal(t, http.StatusTooManyRequests, res.StatusCode)
|
||||||
}(i)
|
}()
|
||||||
}
|
}
|
||||||
|
|
||||||
wg.Wait()
|
wg.Wait()
|
||||||
@ -216,21 +216,21 @@ func TestThrottleRetryAfter(t *testing.T) {
|
|||||||
|
|
||||||
for i := 0; i < 10; i++ {
|
for i := 0; i < 10; i++ {
|
||||||
wg.Add(1)
|
wg.Add(1)
|
||||||
go func(i int) {
|
go func() {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
|
|
||||||
res, err := client.Get(server.URL)
|
res, err := client.Get(server.URL)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
defer res.Body.Close()
|
defer res.Body.Close()
|
||||||
assert.Equal(t, http.StatusOK, res.StatusCode)
|
assert.Equal(t, http.StatusOK, res.StatusCode)
|
||||||
}(i)
|
}()
|
||||||
}
|
}
|
||||||
|
|
||||||
time.Sleep(time.Second * 1)
|
time.Sleep(time.Second * 1)
|
||||||
|
|
||||||
for i := 0; i < 10; i++ {
|
for i := 0; i < 10; i++ {
|
||||||
wg.Add(1)
|
wg.Add(1)
|
||||||
go func(i int) {
|
go func() {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
|
|
||||||
res, err := client.Get(server.URL)
|
res, err := client.Get(server.URL)
|
||||||
@ -238,7 +238,7 @@ func TestThrottleRetryAfter(t *testing.T) {
|
|||||||
defer res.Body.Close()
|
defer res.Body.Close()
|
||||||
assert.Equal(t, http.StatusTooManyRequests, res.StatusCode)
|
assert.Equal(t, http.StatusTooManyRequests, res.StatusCode)
|
||||||
assert.Equal(t, res.Header.Get("Retry-After"), "3600")
|
assert.Equal(t, res.Header.Get("Retry-After"), "3600")
|
||||||
}(i)
|
}()
|
||||||
}
|
}
|
||||||
|
|
||||||
wg.Wait()
|
wg.Wait()
|
||||||
|
@ -76,6 +76,6 @@ func Middleware(opts ...Option) func(next http.Handler) http.Handler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// RespondWithTimeout is a default response handler
|
// RespondWithTimeout is a default response handler
|
||||||
func RespondWithTimeout(w http.ResponseWriter, r *http.Request, err error) {
|
func RespondWithTimeout(w http.ResponseWriter, _ *http.Request, _ error) {
|
||||||
http.Error(w, http.StatusText(http.StatusGatewayTimeout), http.StatusGatewayTimeout)
|
http.Error(w, http.StatusText(http.StatusGatewayTimeout), http.StatusGatewayTimeout)
|
||||||
}
|
}
|
||||||
|
@ -48,7 +48,8 @@ func TestTimeoutTimedOut(t *testing.T) {
|
|||||||
return
|
return
|
||||||
|
|
||||||
case <-time.After(time.Second * 1):
|
case <-time.After(time.Second * 1):
|
||||||
w.Write([]byte("resp")) // nolint:errcheck
|
_, err := w.Write([]byte("resp"))
|
||||||
|
require.NoError(t, err)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user