mirror of
https://github.com/zulip/zulip.git
synced 2025-10-23 04:52:12 +00:00
test_helpers: Use care in load_subdomain_token URL parsing.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
committed by
Tim Abbott
parent
b7cf928615
commit
b05b5e72f5
@@ -10,6 +10,7 @@ from dataclasses import dataclass
|
||||
from typing import IO, TYPE_CHECKING, Any, TypeVar, Union, cast
|
||||
from unittest import mock
|
||||
from unittest.mock import patch
|
||||
from urllib.parse import urlsplit
|
||||
|
||||
import boto3.session
|
||||
import fakeldap
|
||||
@@ -19,11 +20,11 @@ from django.conf import settings
|
||||
from django.contrib.auth.models import AnonymousUser
|
||||
from django.contrib.sessions.backends.base import SessionBase
|
||||
from django.db.migrations.state import StateApps
|
||||
from django.http import HttpRequest, HttpResponse, HttpResponseRedirect
|
||||
from django.http import HttpRequest, HttpResponse
|
||||
from django.http.request import QueryDict
|
||||
from django.http.response import HttpResponseBase
|
||||
from django.test import override_settings
|
||||
from django.urls import URLResolver
|
||||
from django.urls import URLResolver, resolve
|
||||
from moto.core.decorator import mock_aws
|
||||
from mypy_boto3_s3.service_resource import Bucket
|
||||
from typing_extensions import ParamSpec, override
|
||||
@@ -45,6 +46,7 @@ from zerver.models.clients import clear_client_cache, get_client
|
||||
from zerver.models.realms import get_realm
|
||||
from zerver.models.streams import get_stream
|
||||
from zerver.tornado.handlers import AsyncDjangoHandler, allocate_handler_id
|
||||
from zerver.views.auth import log_into_subdomain
|
||||
from zilencer.models import RemoteZulipServer
|
||||
from zproject.backends import ExternalAuthDataDict, ExternalAuthResult
|
||||
|
||||
@@ -584,8 +586,10 @@ def write_instrumentation_reports(full_suite: bool, include_webhooks: bool) -> N
|
||||
|
||||
|
||||
def load_subdomain_token(response: Union["TestHttpResponse", HttpResponse]) -> ExternalAuthDataDict:
|
||||
assert isinstance(response, HttpResponseRedirect)
|
||||
token = response.url.rsplit("/", 1)[1]
|
||||
assert response.status_code == 302
|
||||
match = resolve(urlsplit(response["Location"]).path)
|
||||
assert match.func == log_into_subdomain
|
||||
token = match.kwargs["token"]
|
||||
data = ExternalAuthResult(
|
||||
request=mock.MagicMock(), login_token=token, delete_stored_data=False
|
||||
).data_dict
|
||||
|
Reference in New Issue
Block a user