Projet

Général

Profil

0001-include-query-string-in-password-change-uri-20750.patch

Josué Kouka, 18 décembre 2017 18:17

Télécharger (2,91 ko)

Voir les différences:

Subject: [PATCH] include query string in password change uri (#20750)

 mandayejs/mandaye/views.py |  6 +++---
 tests/test_mandayejs.py    | 16 +++++++++++++---
 2 files changed, 16 insertions(+), 6 deletions(-)
mandayejs/mandaye/views.py
17 17
from __future__ import absolute_import
18 18

  
19 19
import logging
20
from urlparse import urlparse
20
import urlparse
21 21

  
22 22
from django.contrib.auth.models import User
23 23
from django.contrib.auth.decorators import login_required
......
172 172
        messages.error(request, _('invalid response from server'))
173 173
        url = resolve_url('associate')
174 174
    elif result.get('result') == 'redirect':
175
        url = urlparse(result.get('url', '/'))
176
        url = url.path
175
        url = urlparse.urlsplit(result.get('url', '/'))
176
        url = urlparse.urlunsplit((None, None, url.path, url.query, url.fragment))
177 177
    else:
178 178
        credentials.linked = True
179 179
        credentials.save()
tests/test_mandayejs.py
333 333
    assert cred.locators['birth_date'] == '1995-06-11'
334 334

  
335 335

  
336
@pytest.fixture(params=[
337
    {'url1': 'http://mydomain.com/update_password.aspx'},
338
    {'url2': 'http://mydomain.com/index?path=change_pass'}])
339
def redirect_url(request):
340
    return request.param
341

  
342

  
336 343
@mock.patch('mandayejs.mandaye.utils.subprocess.Popen')
337 344
@mock.patch('mandayejs.applications.Test.SITE_LOCATORS', MOCKED_SITE_LOCATORS)
338
def test_post_login_do(mocked_popen, user_john):
345
def test_password_redirection(mocked_popen, user_john, redirect_url):
339 346
    expected_output = {
340 347
        "result": "redirect",
341 348
        "reason": "password change required",
342
        "url": "http://mydomain.com/update_password.aspx"
349
        "url": redirect_url.get('url1') or redirect_url.get('url2')
343 350
    }
344 351
    expected_output = '<mandayejs>%s</mandayejs>' % json.dumps(expected_output)
345 352
    mocked_popen.return_value = MockedPopen(expected_output=(expected_output, None))
......
353 360
    request = request.get(reverse('post-login-do'))
354 361
    request.user = user_john
355 362
    response = post_login_do(request)
356
    assert 'window.top.location = "/update_password.aspx"' in response.content
363
    if 'url1' in redirect_url:
364
        assert 'window.top.location = "/update_password.aspx"' in response.content
365
    else:
366
        assert 'window.top.location = "/index?path=change_pass"' in response.content
357 367

  
358 368

  
359 369
@mock.patch('mandayejs.mandaye.utils.subprocess.Popen')
360
-