From ca6ce92781f52efdb463398f0ad202e539d7e2b4 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Wed, 20 Mar 2019 13:55:00 +0100 Subject: [PATCH] views: fix discovery URL building (#31581) --- mellon/views.py | 6 ++++-- tests/test_views.py | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/mellon/views.py b/mellon/views.py index babf813..889d40b 100644 --- a/mellon/views.py +++ b/mellon/views.py @@ -348,12 +348,14 @@ class LoginView(ProfileMixin, LogMixin, View): return self.sso_failure(request, login, reason=idp_message, status_codes=status_codes) def request_discovery_service(self, request, is_passive=False): - self_url = request.build_absolute_uri() + '&nodisco=1' + return_url = request.build_absolute_uri() + return_url += '&' if '?' in return_url else '?' + return_url += 'nodisco=1' url = app_settings.DISCOVERY_SERVICE_URL params = { # prevent redirect loops with the discovery service 'entityID': request.build_absolute_uri(reverse('mellon_metadata')), - 'return': self_url, + 'return': return_url, } if is_passive: params['isPassive'] = 'true' diff --git a/tests/test_views.py b/tests/test_views.py index 9292de7..014af86 100644 --- a/tests/test_views.py +++ b/tests/test_views.py @@ -147,7 +147,7 @@ def test_sp_initiated_login_discovery_service_passive(private_settings, client): assert response['Location'].startswith('https://disco?') assert params == {'isPassive': ['true'], 'entityID': ['http://testserver/metadata/'], - 'return': ['http://testserver/login/?nodisco=1']} + 'return': ['http://testserver/login/?passive=1&nodisco=1']} def test_sp_initiated_login_discovery_service_nodisco(private_settings, client):