(t *testing.T)
| 297 | } |
| 298 | |
| 299 | func 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 | |
| 333 | func TestRateLimiterMemoryStore_Allow(t *testing.T) { |
| 334 | var inMemoryStore = NewRateLimiterMemoryStoreWithConfig(RateLimiterMemoryStoreConfig{Rate: 1, Burst: 3, ExpiresIn: 2 * time.Second}) |
nothing calls this directly
no test coverage detected
searching dependent graphs…