MCPcopy Index your code
hub / github.com/labstack/echo / TestRateLimiterWithConfig_defaultConfig

Function TestRateLimiterWithConfig_defaultConfig

middleware/rate_limiter_test.go:181–226  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

179}
180
181func TestRateLimiterWithConfig_defaultConfig(t *testing.T) {
182 {
183 var inMemoryStore = NewRateLimiterMemoryStoreWithConfig(RateLimiterMemoryStoreConfig{Rate: 1, Burst: 3})
184
185 e := echo.New()
186
187 handler := func(c *echo.Context) error {
188 return c.String(http.StatusOK, "test")
189 }
190
191 mw, err := RateLimiterConfig{
192 Store: inMemoryStore,
193 }.ToMiddleware()
194 assert.NoError(t, err)
195
196 testCases := []struct {
197 id string
198 expectErr string
199 }{
200 {id: "127.0.0.1"},
201 {id: "127.0.0.1"},
202 {id: "127.0.0.1"},
203 {id: "127.0.0.1", expectErr: "code=429, message=rate limit exceeded"},
204 {id: "127.0.0.1", expectErr: "code=429, message=rate limit exceeded"},
205 {id: "127.0.0.1", expectErr: "code=429, message=rate limit exceeded"},
206 {id: "127.0.0.1", expectErr: "code=429, message=rate limit exceeded"},
207 }
208
209 for _, tc := range testCases {
210 req := httptest.NewRequest(http.MethodGet, "/", nil)
211 req.Header.Add(echo.HeaderXRealIP, tc.id)
212
213 rec := httptest.NewRecorder()
214
215 c := e.NewContext(req, rec)
216
217 err := mw(handler)(c)
218 if tc.expectErr != "" {
219 assert.EqualError(t, err, tc.expectErr)
220 } else {
221 assert.NoError(t, err)
222 }
223 assert.Equal(t, http.StatusOK, rec.Code)
224 }
225 }
226}
227
228func TestRateLimiterWithConfig_skipper(t *testing.T) {
229 e := echo.New()

Callers

nothing calls this directly

Calls 5

StringMethod · 0.95
NewContextMethod · 0.80
ToMiddlewareMethod · 0.65
AddMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…