misc: allow all views to receive template_base/context_hook kwargs (#38610)

This commit is contained in:
Frédéric Péters 2019-12-18 09:39:48 +01:00
parent fcb38fbf83
commit 7802e85d52
2 changed files with 18 additions and 2 deletions

View File

@ -495,7 +495,7 @@ login = transaction.non_atomic_requests(csrf_exempt(LoginView.as_view()))
class LogoutView(ProfileMixin, LogMixin, View):
def get(self, request):
def get(self, request, *args, **kwargs):
if 'SAMLRequest' in request.GET:
return self.idp_logout(request)
elif 'SAMLResponse' in request.GET:
@ -581,6 +581,6 @@ class LogoutView(ProfileMixin, LogMixin, View):
logout = LogoutView.as_view()
def metadata(request):
def metadata(request, **kwargs):
metadata = utils.create_metadata(request)
return HttpResponse(metadata, content_type='text/xml')

View File

@ -192,6 +192,8 @@ def test_sso_slo(db, app, idp, caplog, sp_settings):
assert 'created new user' in caplog.text
assert 'logged in using SAML' in caplog.text
assert urlparse.urlparse(response['Location']).path == '/whatever/'
response = app.get(reverse('mellon_logout'))
assert urlparse.urlparse(response['Location']).path == '/singleLogout'
def test_sso(db, app, idp, caplog, sp_settings):
@ -224,6 +226,7 @@ def test_sso_request_denied(db, app, idp, caplog, sp_settings):
@pytest.mark.urls('urls_tests_template_base')
def test_template_base(db, app, idp, caplog, sp_settings):
response = app.get(reverse('mellon_metadata'))
response = app.get(reverse('mellon_login'))
url, body, relay_state = idp.process_authn_request_redirect(
response['Location'],
@ -232,9 +235,16 @@ def test_template_base(db, app, idp, caplog, sp_settings):
response = app.post(reverse('mellon_login'), params={'SAMLResponse': body, 'RelayState': relay_state})
assert 'Theme is ok' in response.text
response = app.get(reverse('mellon_login'))
url, body, relay_state = idp.process_authn_request_redirect(response['Location'])
response = app.post(reverse('mellon_login'), params={'SAMLResponse': body, 'RelayState': relay_state})
response = app.get(reverse('mellon_logout'))
assert urlparse.urlparse(response['Location']).path == '/singleLogout'
@pytest.mark.urls('urls_tests_template_hook')
def test_template_hook(db, app, idp, caplog, sp_settings):
response = app.get(reverse('mellon_metadata'))
response = app.get(reverse('mellon_login'))
url, body, relay_state = idp.process_authn_request_redirect(
response['Location'],
@ -244,6 +254,12 @@ def test_template_hook(db, app, idp, caplog, sp_settings):
assert 'Theme is ok' in response.text
assert 'HOOK' in response.text
response = app.get(reverse('mellon_login'))
url, body, relay_state = idp.process_authn_request_redirect(response['Location'])
response = app.post(reverse('mellon_login'), params={'SAMLResponse': body, 'RelayState': relay_state})
response = app.get(reverse('mellon_logout'))
assert urlparse.urlparse(response['Location']).path == '/singleLogout'
def test_no_template_base(db, app, idp, caplog, sp_settings):
response = app.get(reverse('mellon_login'))