Changeset View
Changeset View
Standalone View
Standalone View
swh/web/tests/auth/test_views.py
# Copyright (C) 2020 The Software Heritage developers | # Copyright (C) 2020 The Software Heritage developers | ||||
# See the AUTHORS file at the top-level directory of this distribution | # See the AUTHORS file at the top-level directory of this distribution | ||||
# License: GNU Affero General Public License version 3, or any later version | # License: GNU Affero General Public License version 3, or any later version | ||||
# See top-level LICENSE file for more information | # See top-level LICENSE file for more information | ||||
from urllib.parse import urljoin, urlparse | from urllib.parse import urljoin, urlparse | ||||
import uuid | import uuid | ||||
from django.conf import settings | |||||
from django.http import QueryDict | from django.http import QueryDict | ||||
from django.contrib.auth.models import AnonymousUser, User | from django.contrib.auth.models import AnonymousUser, User | ||||
import pytest | import pytest | ||||
from swh.web.auth.models import OIDCUser | from swh.web.auth.models import OIDCUser | ||||
from swh.web.auth.utils import OIDC_SWH_WEB_CLIENT_ID | |||||
from swh.web.common.utils import reverse | from swh.web.common.utils import reverse | ||||
from swh.web.tests.django_asserts import assert_template_used, assert_contains | from swh.web.tests.django_asserts import assert_template_used, assert_contains | ||||
from . import sample_data | from . import sample_data | ||||
from .keycloak_mock import mock_keycloak | from .keycloak_mock import mock_keycloak | ||||
@pytest.mark.django_db | @pytest.mark.django_db | ||||
Show All 18 Lines | def test_oidc_login_views_success(client, mocker): | ||||
parsed_url = urlparse(response['location']) | parsed_url = urlparse(response['location']) | ||||
authorization_url = kc_oidc_mock.well_known()['authorization_endpoint'] | authorization_url = kc_oidc_mock.well_known()['authorization_endpoint'] | ||||
query_dict = QueryDict(parsed_url.query) | query_dict = QueryDict(parsed_url.query) | ||||
# check redirect url is valid | # check redirect url is valid | ||||
assert urljoin(response['location'], parsed_url.path) == authorization_url | assert urljoin(response['location'], parsed_url.path) == authorization_url | ||||
assert 'client_id' in query_dict | assert 'client_id' in query_dict | ||||
assert query_dict['client_id'] == settings.OIDC_SWH_WEB_CLIENT_ID | assert query_dict['client_id'] == OIDC_SWH_WEB_CLIENT_ID | ||||
assert 'response_type' in query_dict | assert 'response_type' in query_dict | ||||
assert query_dict['response_type'] == 'code' | assert query_dict['response_type'] == 'code' | ||||
assert 'redirect_uri' in query_dict | assert 'redirect_uri' in query_dict | ||||
assert query_dict['redirect_uri'] == reverse('oidc-login-complete', | assert query_dict['redirect_uri'] == reverse('oidc-login-complete', | ||||
request=request) | request=request) | ||||
assert 'code_challenge_method' in query_dict | assert 'code_challenge_method' in query_dict | ||||
assert query_dict['code_challenge_method'] == 'S256' | assert query_dict['code_challenge_method'] == 'S256' | ||||
assert 'scope' in query_dict | assert 'scope' in query_dict | ||||
▲ Show 20 Lines • Show All 217 Lines • Show Last 20 Lines |