|
@@ 549-569 (lines=21) @@
|
| 546 |
|
limiter = Limiter(app, key_func=get_remote_address) |
| 547 |
|
|
| 548 |
|
@app.route("/limited") |
| 549 |
|
@limiter.shared_limit("1 per day", "test_scope") |
| 550 |
|
def limited_route(): |
| 551 |
|
return "passed" |
| 552 |
|
|
| 553 |
|
@app.route("/unlimited") |
| 554 |
|
@limiter.shared_limit( |
| 555 |
|
"1 per day", "test_scope", exempt_when=lambda: True |
| 556 |
|
) |
| 557 |
|
def never_limited_route(): |
| 558 |
|
return "should always pass" |
| 559 |
|
|
| 560 |
|
is_exempt = False |
| 561 |
|
|
| 562 |
|
@app.route("/conditional") |
| 563 |
|
@limiter.shared_limit( |
| 564 |
|
"1 per day", "test_scope", exempt_when=lambda: is_exempt |
| 565 |
|
) |
| 566 |
|
def conditionally_limited_route(): |
| 567 |
|
return "conditional" |
| 568 |
|
|
| 569 |
|
with app.test_client() as cli: |
| 570 |
|
self.assertEqual(cli.get("/unlimited").status_code, 200) |
| 571 |
|
self.assertEqual(cli.get("/unlimited").status_code, 200) |
| 572 |
|
|
|
@@ 530-547 (lines=18) @@
|
| 527 |
|
return "conditional" |
| 528 |
|
|
| 529 |
|
with app.test_client() as cli: |
| 530 |
|
self.assertEqual(cli.get("/limited").status_code, 200) |
| 531 |
|
self.assertEqual(cli.get("/limited").status_code, 429) |
| 532 |
|
|
| 533 |
|
self.assertEqual(cli.get("/unlimited").status_code, 200) |
| 534 |
|
self.assertEqual(cli.get("/unlimited").status_code, 200) |
| 535 |
|
|
| 536 |
|
self.assertEqual(cli.get("/conditional").status_code, 200) |
| 537 |
|
self.assertEqual(cli.get("/conditional").status_code, 429) |
| 538 |
|
is_exempt = True |
| 539 |
|
self.assertEqual(cli.get("/conditional").status_code, 200) |
| 540 |
|
is_exempt = False |
| 541 |
|
self.assertEqual(cli.get("/conditional").status_code, 429) |
| 542 |
|
|
| 543 |
|
def test_conditional_shared_limits(self): |
| 544 |
|
"""Test that conditional shared limits work.""" |
| 545 |
|
app = Flask(__name__) |
| 546 |
|
limiter = Limiter(app, key_func=get_remote_address) |
| 547 |
|
|
| 548 |
|
@app.route("/limited") |
| 549 |
|
@limiter.shared_limit("1 per day", "test_scope") |
| 550 |
|
def limited_route(): |