redirect to right domain name when password update required (#14816)

This commit is contained in:
Josue Kouka 2017-01-30 17:18:27 +01:00
parent ecb03255f8
commit 2d3498730c
2 changed files with 28 additions and 1 deletions

View File

@ -17,6 +17,7 @@
from __future__ import absolute_import
import logging
from urlparse import urlparse
from django.contrib.auth.models import User
from django.contrib.auth.decorators import login_required
@ -159,7 +160,8 @@ def post_login_do(request, *args, **kwargs):
messages.error(request, _('server took too long to respond'))
url = resolve_url('associate')
elif result.get('result') == 'redirect':
url = result.get('url', '/')
url = urlparse(result.get('url', '/'))
url = url.path
else:
credentials.linked = True
credentials.save()

View File

@ -9,10 +9,13 @@ from django.conf import settings
from django.core.management import call_command
from django.http.request import HttpRequest, QueryDict
from django.forms.fields import DateField
from django.test.client import RequestFactory
from django.core.urlresolvers import reverse
from mandayejs.mandaye.models import UserCredentials
from mandayejs.mandaye.utils import exec_phantom
from mandayejs.mandaye.forms import FormFactory
from mandayejs.mandaye.views import post_login_do
from utils import create_user, create_credentials, get_uuid, get_user
@ -315,3 +318,25 @@ def test_credentials_json_encoding(user_john):
assert cred.locators['login'] == 'johnny'
assert cred.locators['birth_date'] == '1995-06-11'
@mock.patch('mandayejs.mandaye.utils.subprocess.Popen')
@mock.patch('mandayejs.applications.Test.SITE_LOCATORS', MOCKED_SITE_LOCATORS)
def test_post_login_do(mocked_popen, user_john):
expected_output = {
"result": "redirect",
"reason": "password change required",
"url": "http://mydomain.com/update_password.aspx"
}
mocked_popen.return_value = MockedPopen(expected_output=(json.dumps(expected_output), None))
UserCredentials.objects.create(user=user_john,
locators={
'login': 'johnny', 'password': 'jumper',
'birth_date': '1995-06-11'})
request = RequestFactory()
request = request.get(reverse('post-login-do'))
request.user = user_john
response = post_login_do(request)
'window.top.location = "/update_password.aspx"' in response.content