MCPcopy
hub / github.com/labstack/echo / TestRateLimiterWithConfig_beforeFunc

Function TestRateLimiterWithConfig_beforeFunc

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

Source from the content-addressed store, hash-verified

297}
298
299func TestRateLimiterWithConfig_beforeFunc(t *testing.T) {
300 e := echo.New()
301
302 handler := func(c *echo.Context) error {
303 return c.String(http.StatusOK, "test")
304 }
305
306 var beforeRan bool
307 var inMemoryStore = NewRateLimiterMemoryStoreWithConfig(RateLimiterMemoryStoreConfig{Rate: 1, Burst: 3})
308
309 req := httptest.NewRequest(http.MethodGet, "/", nil)
310 req.Header.Add(echo.HeaderXRealIP, "127.0.0.1")
311
312 rec := httptest.NewRecorder()
313
314 c := e.NewContext(req, rec)
315
316 mw, err := RateLimiterConfig{
317 BeforeFunc: func(c *echo.Context) {
318 beforeRan = true
319 },
320 Store: inMemoryStore,
321 IdentifierExtractor: func(ctx *echo.Context) (string, error) {
322 return "127.0.0.1", nil
323 },
324 }.ToMiddleware()
325 assert.NoError(t, err)
326
327 err = mw(handler)(c)
328
329 assert.NoError(t, err)
330 assert.Equal(t, true, beforeRan)
331}
332
333func TestRateLimiterMemoryStore_Allow(t *testing.T) {
334 var inMemoryStore = NewRateLimiterMemoryStoreWithConfig(RateLimiterMemoryStoreConfig{Rate: 1, Burst: 3, ExpiresIn: 2 * time.Second})

Callers

nothing calls this directly

Calls 5

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

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…