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() :/
This commit is contained in:
Benjamin Dauvergne 2018-03-29 17:00:50 +02:00
parent 52929b1d2f
commit 9a824087cc
4 changed files with 34 additions and 17 deletions

View File

@ -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:

View File

@ -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')

View File

@ -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

View File

@ -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']