From 9a824087cccc48ece32fca2b567b69061cec7204 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Thu, 29 Mar 2018 17:00:50 +0200 Subject: [PATCH] utils: fix make_url() use by list_to_pick view (fixes #22888) Return callback to pick view takes an url argument, same name as the first argument to make_url() :/ --- fargo/utils.py | 4 ++-- tests/conftest.py | 19 +++++++++++++++++++ tests/test_oauth2.py | 16 +--------------- tests/test_public.py | 12 ++++++++++++ 4 files changed, 34 insertions(+), 17 deletions(-) diff --git a/fargo/utils.py b/fargo/utils.py index e2566d3..03268b8 100644 --- a/fargo/utils.py +++ b/fargo/utils.py @@ -2,9 +2,9 @@ import urlparse from django.utils.http import urlencode -def make_url(url, **kwargs): +def make_url(__url, **kwargs): request = kwargs.pop('request', None) - parsed = urlparse.urlparse(url) + parsed = urlparse.urlparse(__url) query = urlparse.parse_qs(parsed.query) for key, value in kwargs.iteritems(): if value is not None: diff --git a/tests/conftest.py b/tests/conftest.py index 02c33a7..2df11fa 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,12 +1,17 @@ import logging import pytest import django_webtest + +from django.core.files.base import ContentFile from django.contrib.auth.models import User +from fargo.fargo.models import UserDocument, Document + class WebTestMixin(django_webtest.WebTestMixin): csrf_checks = False + @pytest.fixture def app(request): wtm = WebTestMixin() @@ -80,3 +85,17 @@ def admin_user(db): user = User.objects.create_superuser('admin', email=None, password='admin') return user + +@pytest.fixture +def document(): + with open('tests/test_oauth2.txt', 'rb') as f: + content = ContentFile(f.read(), 'test_oauth2.txt') + + return Document.objects.get_by_file(content) + + +@pytest.fixture +def user_doc(document, john_doe): + return UserDocument.objects.create(user=john_doe, document=document, filename='Baudelaire.txt') + + diff --git a/tests/test_oauth2.py b/tests/test_oauth2.py index 191dd33..6ebac9f 100644 --- a/tests/test_oauth2.py +++ b/tests/test_oauth2.py @@ -4,12 +4,11 @@ import pytest from urllib import quote import urlparse -from django.core.files.base import ContentFile from django.core.urlresolvers import reverse from django.utils.http import urlencode from fargo.oauth2.models import OAuth2Client, OAuth2Authorize, OAuth2TempFile -from fargo.fargo.models import Document, UserDocument +from fargo.fargo.models import UserDocument from test_manager import login @@ -29,19 +28,6 @@ def oauth2_client(): redirect_uris='https://example.net/document https://doc.example.net/ https://example.com') -@pytest.fixture -def document(): - with open('tests/test_oauth2.txt', 'rb') as f: - content = ContentFile(f.read(), 'test_oauth2.txt') - - return Document.objects.get_by_file(content) - - -@pytest.fixture -def user_doc(document, john_doe): - return UserDocument.objects.create(user=john_doe, document=document, filename='Baudelaire.txt') - - def assert_error_redirect(url, error): assert urlparse.urlparse(url).query == 'error=%s' % error diff --git a/tests/test_public.py b/tests/test_public.py index 3e755de..6440cd5 100644 --- a/tests/test_public.py +++ b/tests/test_public.py @@ -4,6 +4,8 @@ from webtest import Upload import pytest import urlparse +from django.core.urlresolvers import reverse + try: import magic except ImportError: @@ -71,3 +73,13 @@ def test_upload_max_document_box_size(app, private_settings, john_doe): response2 = form.submit() assert response2.status_code == 200 assert 'Your document box is full (limit is 4)' in response2.content + + +def test_pick(app, private_settings, john_doe, user_doc): + login(app, user=john_doe) + + return_url = 'http://client.org/callback/' + response = app.get(reverse('list_to_pick') + '?pick=' + return_url) + response = response.forms[0].submit('Pick') + assert response['Location'].startswith(return_url) + assert '?url=' in response['Location'] -- 2.16.3