mirror of https://github.com/zulip/zulip.git
refactor: Integrate POSTRequestMock into HostRequestMock.
Minimized code duplication by integrating POSTRequestMock into HostRequestMock and then updating the required files with HostRequestMock. Fixes part of #1211.
This commit is contained in:
parent
4bbfac8aa9
commit
d4c0578560
|
@ -315,41 +315,34 @@ class DummyHandler(AsyncDjangoHandler):
|
|||
allocate_handler_id(self)
|
||||
|
||||
|
||||
class POSTRequestMock:
|
||||
method = "POST"
|
||||
|
||||
def __init__(self, post_data: Dict[str, Any], user_profile: Optional[UserProfile]) -> None:
|
||||
self.GET: Dict[str, Any] = {}
|
||||
|
||||
# Convert any integer parameters passed into strings, even
|
||||
# though of course the HTTP API would do so. Ideally, we'd
|
||||
# get rid of this abstraction entirely and just use the HTTP
|
||||
# API directly, but while it exists, we need this code.
|
||||
self.POST: Dict[str, str] = {}
|
||||
for key in post_data:
|
||||
self.POST[key] = str(post_data[key])
|
||||
|
||||
self.user = user_profile
|
||||
self._tornado_handler = DummyHandler()
|
||||
self._log_data: Dict[str, Any] = {}
|
||||
self.META = {"PATH_INFO": "test"}
|
||||
self.path = ""
|
||||
|
||||
|
||||
class HostRequestMock:
|
||||
"""A mock request object where get_host() works. Useful for testing
|
||||
routes that use Zulip's subdomains feature"""
|
||||
|
||||
def __init__(
|
||||
self, user_profile: Optional[UserProfile] = None, host: str = settings.EXTERNAL_HOST
|
||||
self,
|
||||
post_data: Dict[str, Any] = {},
|
||||
user_profile: Optional[UserProfile] = None,
|
||||
host: str = settings.EXTERNAL_HOST,
|
||||
) -> None:
|
||||
self.host = host
|
||||
self.GET: Dict[str, Any] = {}
|
||||
self.method = ""
|
||||
|
||||
# Convert any integer parameters passed into strings, even
|
||||
# though of course the HTTP API would do so. Ideally, we'd
|
||||
# get rid of this abstraction entirely and just use the HTTP
|
||||
# API directly, but while it exists, we need this code
|
||||
self.POST: Dict[str, Any] = {}
|
||||
for key in post_data:
|
||||
self.POST[key] = str(post_data[key])
|
||||
self.method = "POST"
|
||||
|
||||
self._tornado_handler = DummyHandler()
|
||||
self._log_data: Dict[str, Any] = {}
|
||||
self.META = {"PATH_INFO": "test"}
|
||||
self.path = ""
|
||||
self.user = user_profile
|
||||
self.method = ""
|
||||
self.body = ""
|
||||
self.content_type = ""
|
||||
|
||||
|
@ -403,8 +396,8 @@ def instrument_url(f: UrlFuncT) -> UrlFuncT:
|
|||
else:
|
||||
extra_info = ""
|
||||
|
||||
if isinstance(info, POSTRequestMock):
|
||||
info = "<POSTRequestMock>"
|
||||
if isinstance(info, HostRequestMock):
|
||||
info = "<HostRequestMock>"
|
||||
elif isinstance(info, bytes):
|
||||
info = "<bytes>"
|
||||
elif isinstance(info, dict):
|
||||
|
|
|
@ -7,7 +7,7 @@ from django.http import HttpRequest, HttpResponse
|
|||
|
||||
from zerver.lib.actions import do_change_subscription_property, do_mute_topic
|
||||
from zerver.lib.test_classes import ZulipTestCase
|
||||
from zerver.lib.test_helpers import POSTRequestMock, mock_queue_publish
|
||||
from zerver.lib.test_helpers import HostRequestMock, mock_queue_publish
|
||||
from zerver.models import Recipient, Stream, Subscription, UserProfile, get_stream
|
||||
from zerver.tornado.event_queue import (
|
||||
ClientDescriptor,
|
||||
|
@ -288,7 +288,7 @@ class MissedMessageNotificationsTest(ZulipTestCase):
|
|||
user_profile: UserProfile,
|
||||
post_data: Dict[str, Any],
|
||||
) -> HttpResponse:
|
||||
request = POSTRequestMock(post_data, user_profile)
|
||||
request = HostRequestMock(post_data, user_profile)
|
||||
return view_func(request, user_profile)
|
||||
|
||||
def test_stream_watchers(self) -> None:
|
||||
|
|
|
@ -9,7 +9,7 @@ from django.http import HttpRequest, HttpResponse
|
|||
from zerver.lib.actions import check_send_message, do_change_user_role, do_set_realm_property
|
||||
from zerver.lib.events import fetch_initial_state_data, get_raw_user_data
|
||||
from zerver.lib.test_classes import ZulipTestCase
|
||||
from zerver.lib.test_helpers import POSTRequestMock, queries_captured, stub_event_queue_user_events
|
||||
from zerver.lib.test_helpers import HostRequestMock, queries_captured, stub_event_queue_user_events
|
||||
from zerver.lib.users import get_api_key
|
||||
from zerver.models import (
|
||||
Realm,
|
||||
|
@ -145,13 +145,13 @@ class EventsEndpointTest(ZulipTestCase):
|
|||
),
|
||||
).decode(),
|
||||
)
|
||||
req = POSTRequestMock(post_data, user_profile=None)
|
||||
req = HostRequestMock(post_data, user_profile=None)
|
||||
req.META["REMOTE_ADDR"] = "127.0.0.1"
|
||||
result = self.client_post_request("/notify_tornado", req)
|
||||
self.assert_json_error(result, "Access denied", status_code=403)
|
||||
|
||||
post_data["secret"] = settings.SHARED_SECRET
|
||||
req = POSTRequestMock(post_data, user_profile=None)
|
||||
req = HostRequestMock(post_data, user_profile=None)
|
||||
req.META["REMOTE_ADDR"] = "127.0.0.1"
|
||||
result = self.client_post_request("/notify_tornado", req)
|
||||
self.assert_json_success(result)
|
||||
|
@ -164,7 +164,7 @@ class GetEventsTest(ZulipTestCase):
|
|||
user_profile: UserProfile,
|
||||
post_data: Dict[str, Any],
|
||||
) -> HttpResponse:
|
||||
request = POSTRequestMock(post_data, user_profile)
|
||||
request = HostRequestMock(post_data, user_profile)
|
||||
return view_func(request, user_profile)
|
||||
|
||||
def test_get_events(self) -> None:
|
||||
|
|
|
@ -33,7 +33,7 @@ from zerver.lib.request import JsonableError
|
|||
from zerver.lib.sqlalchemy_utils import get_sqlalchemy_connection
|
||||
from zerver.lib.streams import StreamDict, create_streams_if_needed, get_public_streams_queryset
|
||||
from zerver.lib.test_classes import ZulipTestCase
|
||||
from zerver.lib.test_helpers import POSTRequestMock, get_user_messages, queries_captured
|
||||
from zerver.lib.test_helpers import HostRequestMock, get_user_messages, queries_captured
|
||||
from zerver.lib.topic import MATCH_TOPIC, TOPIC_NAME
|
||||
from zerver.lib.topic_mutes import set_topic_mutes
|
||||
from zerver.lib.types import DisplayRecipientT
|
||||
|
@ -2927,7 +2927,7 @@ class GetOldMessagesTest(ZulipTestCase):
|
|||
self, query_params: Dict[str, object], expected: str
|
||||
) -> None:
|
||||
user_profile = self.example_user("hamlet")
|
||||
request = POSTRequestMock(query_params, user_profile)
|
||||
request = HostRequestMock(query_params, user_profile)
|
||||
with queries_captured() as queries:
|
||||
get_messages_backend(request, user_profile)
|
||||
|
||||
|
@ -2986,7 +2986,7 @@ class GetOldMessagesTest(ZulipTestCase):
|
|||
num_after=10,
|
||||
narrow='[["stream", "England"]]',
|
||||
)
|
||||
request = POSTRequestMock(query_params, user_profile)
|
||||
request = HostRequestMock(query_params, user_profile)
|
||||
|
||||
payload = get_messages_backend(request, user_profile)
|
||||
result = orjson.loads(payload.content)
|
||||
|
@ -3023,7 +3023,7 @@ class GetOldMessagesTest(ZulipTestCase):
|
|||
num_after=10,
|
||||
narrow="[]",
|
||||
)
|
||||
request = POSTRequestMock(query_params, user_profile)
|
||||
request = HostRequestMock(query_params, user_profile)
|
||||
|
||||
payload = get_messages_backend(request, user_profile)
|
||||
result = orjson.loads(payload.content)
|
||||
|
@ -3036,7 +3036,7 @@ class GetOldMessagesTest(ZulipTestCase):
|
|||
num_after=10,
|
||||
narrow="[]",
|
||||
)
|
||||
request = POSTRequestMock(query_params, user_profile)
|
||||
request = HostRequestMock(query_params, user_profile)
|
||||
|
||||
payload = get_messages_backend(request, user_profile)
|
||||
result = orjson.loads(payload.content)
|
||||
|
@ -3050,7 +3050,7 @@ class GetOldMessagesTest(ZulipTestCase):
|
|||
num_after=10,
|
||||
narrow="[]",
|
||||
)
|
||||
request = POSTRequestMock(query_params, user_profile)
|
||||
request = HostRequestMock(query_params, user_profile)
|
||||
|
||||
payload = get_messages_backend(request, user_profile)
|
||||
result = orjson.loads(payload.content)
|
||||
|
@ -3064,7 +3064,7 @@ class GetOldMessagesTest(ZulipTestCase):
|
|||
num_after=10,
|
||||
narrow="[]",
|
||||
)
|
||||
request = POSTRequestMock(query_params, user_profile)
|
||||
request = HostRequestMock(query_params, user_profile)
|
||||
|
||||
payload = get_messages_backend(request, user_profile)
|
||||
result = orjson.loads(payload.content)
|
||||
|
@ -3078,7 +3078,7 @@ class GetOldMessagesTest(ZulipTestCase):
|
|||
num_after=10,
|
||||
narrow="[]",
|
||||
)
|
||||
request = POSTRequestMock(query_params, user_profile)
|
||||
request = HostRequestMock(query_params, user_profile)
|
||||
|
||||
payload = get_messages_backend(request, user_profile)
|
||||
result = orjson.loads(payload.content)
|
||||
|
@ -3106,7 +3106,7 @@ class GetOldMessagesTest(ZulipTestCase):
|
|||
num_after=10,
|
||||
narrow="[]",
|
||||
)
|
||||
request = POSTRequestMock(query_params, user_profile)
|
||||
request = HostRequestMock(query_params, user_profile)
|
||||
|
||||
with queries_captured() as all_queries:
|
||||
get_messages_backend(request, user_profile)
|
||||
|
@ -3151,7 +3151,7 @@ class GetOldMessagesTest(ZulipTestCase):
|
|||
num_after=10,
|
||||
narrow="[]",
|
||||
)
|
||||
request = POSTRequestMock(query_params, user_profile)
|
||||
request = HostRequestMock(query_params, user_profile)
|
||||
|
||||
first_visible_message_id = first_unread_message_id + 2
|
||||
with first_visible_id_as(first_visible_message_id):
|
||||
|
@ -3177,7 +3177,7 @@ class GetOldMessagesTest(ZulipTestCase):
|
|||
num_after=10,
|
||||
narrow="[]",
|
||||
)
|
||||
request = POSTRequestMock(query_params, user_profile)
|
||||
request = HostRequestMock(query_params, user_profile)
|
||||
|
||||
with queries_captured() as all_queries:
|
||||
get_messages_backend(request, user_profile)
|
||||
|
@ -3229,7 +3229,7 @@ class GetOldMessagesTest(ZulipTestCase):
|
|||
num_after=0,
|
||||
narrow='[["stream", "Scotland"]]',
|
||||
)
|
||||
request = POSTRequestMock(query_params, user_profile)
|
||||
request = HostRequestMock(query_params, user_profile)
|
||||
|
||||
with queries_captured() as all_queries:
|
||||
get_messages_backend(request, user_profile)
|
||||
|
|
Loading…
Reference in New Issue