rate_limit: Improve dummy request objects in RateLimitTestCase.

Django always sets request.user to a UserProfile or AnonymousUser
instance, so it's better to mimic that in the tests where we pass a
dummy request objects for rate limiter testing purposes.
This commit is contained in:
Mateusz Mandera
2020-08-21 16:40:40 +02:00
committed by Tim Abbott
parent 699c4e8549
commit 934bdb9651
2 changed files with 6 additions and 2 deletions

View File

@@ -796,6 +796,7 @@ def rate_limit(domain: str='api_by_user') -> Callable[[ViewFuncT], ViewFuncT]:
# TODO: implement per-IP non-authed rate limiting # TODO: implement per-IP non-authed rate limiting
return func(request, *args, **kwargs) return func(request, *args, **kwargs)
assert isinstance(user, UserProfile)
rate_limit_user(request, user, domain) rate_limit_user(request, user, domain)
return func(request, *args, **kwargs) return func(request, *args, **kwargs)

View File

@@ -7,6 +7,7 @@ from unittest import mock
import orjson import orjson
from django.conf import settings from django.conf import settings
from django.contrib.auth.models import AnonymousUser
from django.core.exceptions import ValidationError from django.core.exceptions import ValidationError
from django.http import HttpRequest, HttpResponse from django.http import HttpRequest, HttpResponse
@@ -619,6 +620,7 @@ class RateLimitTestCase(ZulipTestCase):
class Request: class Request:
client = Client() client = Client()
META = {'REMOTE_ADDR': '127.0.0.1'} META = {'REMOTE_ADDR': '127.0.0.1'}
user = AnonymousUser()
req = Request() req = Request()
@@ -641,6 +643,7 @@ class RateLimitTestCase(ZulipTestCase):
class Request: class Request:
client = Client() client = Client()
META = {'REMOTE_ADDR': '3.3.3.3'} META = {'REMOTE_ADDR': '3.3.3.3'}
user = AnonymousUser()
req = Request() req = Request()
@@ -664,7 +667,7 @@ class RateLimitTestCase(ZulipTestCase):
class Request: class Request:
client = Client() client = Client()
META = {'REMOTE_ADDR': '3.3.3.3'} META = {'REMOTE_ADDR': '3.3.3.3'}
user = 'stub' # any non-None value here exercises the correct code path user = self.example_user("hamlet")
req = Request() req = Request()
@@ -687,7 +690,7 @@ class RateLimitTestCase(ZulipTestCase):
class Request: class Request:
client = Client() client = Client()
META = {'REMOTE_ADDR': '3.3.3.3'} META = {'REMOTE_ADDR': '3.3.3.3'}
user = 'stub' # any non-None value here exercises the correct code path user = self.example_user("hamlet")
req = Request() req = Request()