Skip to content

Commit

Permalink
Issue #1339: Error on login page when trying to go to a next page wit…
Browse files Browse the repository at this point in the history
…h non-ASCII characters in URL
  • Loading branch information
SpaceFox committed Aug 10, 2014
1 parent 402a671 commit be0ca57
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 6 deletions.
13 changes: 13 additions & 0 deletions fixtures/users.yaml
Expand Up @@ -44,6 +44,14 @@
username: user
password: pbkdf2_sha256$10000$w5hhXcOg2pIT$gluvdmTKlbOJDpo9U/C3pWJOmOytbXX2N38j2iplNcM=
is_superuser: False
- model: auth.user
pk: 4
fields:
first_name: ïtrema
last_name: User
username: ïtrema
password: pbkdf2_sha256$12000$FssznaRHkjFK$8GvNM2oqOIHRNNr4G+8s+cbk6LIYXaxGOsI1Hh6cswI=
is_superuser: False
- model: member.Profile
pk: 1
fields:
Expand All @@ -59,3 +67,8 @@
fields:
user: 3
last_ip_address: 192.168.0.1
- model: member.Profile
pk: 4
fields:
user: 4
last_ip_address: 192.168.0.1
14 changes: 14 additions & 0 deletions zds/member/factories.py
@@ -1,3 +1,5 @@
# coding: utf-8

from django.contrib.auth.models import User, Permission
import factory

Expand Down Expand Up @@ -92,3 +94,15 @@ def biography(self):
self.user.username.lower())

sign = 'Please look my flavour'


class NonAsciiUserFactory(UserFactory):
FACTORY_FOR = User

username = factory.Sequence(lambda n: u'ïéàçÊÀ{0}'.format(n))


class NonAsciiProfileFactory(ProfileFactory):
FACTORY_FOR = Profile

user = factory.SubFactory(NonAsciiUserFactory)
15 changes: 12 additions & 3 deletions zds/member/tests/tests_views.py
@@ -1,14 +1,15 @@
# coding: utf-8

import urllib

from django.conf import settings
from django.contrib.auth.models import User
from django.core import mail
from django.core.urlresolvers import reverse
from django.test import TestCase

from zds.member.factories import ProfileFactory, StaffProfileFactory
from zds.member.forms import RegisterForm, ChangeUserForm, \
ChangePasswordForm
from zds.member.factories import ProfileFactory, StaffProfileFactory, NonAsciiProfileFactory
from zds.member.forms import RegisterForm, ChangeUserForm, ChangePasswordForm
from zds.member.models import Profile

from zds.member.models import TokenRegister, Ban
Expand Down Expand Up @@ -197,3 +198,11 @@ def test_sanctions(self):
self.assertEqual(ban.type, 'Ban Temporaire')
self.assertEqual(ban.text, 'Texte de test pour BAN TEMP')
self.assertEquals(len(mail.outbox), 6)

def test_nonascii(self):
user = NonAsciiProfileFactory()
result = self.client.get(reverse('zds.member.views.login_view') + '?next='
+ reverse('zds.member.views.details', args=[user.user.username]),
follow=False)
self.assertEqual(result.status_code, 200)

6 changes: 3 additions & 3 deletions zds/member/views.py
Expand Up @@ -507,7 +507,6 @@ def settings_user(request):
return render_template("member/settings/user.html", c)



def login_view(request):
"""Log in user."""

Expand Down Expand Up @@ -556,8 +555,9 @@ def login_view(request):
messages.error(request,
"Les identifiants fournis ne sont pas valides")
form = LoginForm()
form.helper.form_action = reverse("zds.member.views.login_view") \
+ "?next=" + str(next_page)
form.helper.form_action = reverse("zds.member.views.login_view")
if next_page is not None:
form.helper.form_action += "?next=" + next_page
csrf_tk["error"] = error
csrf_tk["form"] = form
csrf_tk["next_page"] = next_page
Expand Down

0 comments on commit be0ca57

Please sign in to comment.