14 |
14 |
from django.contrib.auth import get_user_model
|
15 |
15 |
from django.contrib.contenttypes.models import ContentType
|
16 |
16 |
from django.utils.translation import ugettext as _
|
|
17 |
from django.utils.six.moves.urllib.parse import quote, unquote
|
17 |
18 |
|
18 |
19 |
from rest_framework import test
|
19 |
20 |
from rest_framework import status
|
... | ... | |
141 |
142 |
request = rf.get('/coin', data={'next': '..'})
|
142 |
143 |
request2 = rf.get('/coin', data={'next': '..', 'token': 'xxx'})
|
143 |
144 |
response = redirect(request, '/boob/', keep_params=True)
|
144 |
|
self.assertEqualsURL(response['Location'], '/boob/?next=..')
|
|
145 |
self.assertEqualsURL(unquote(response['Location']), '/boob/?next=..')
|
145 |
146 |
response = redirect(request, '/boob/', keep_params=True,
|
146 |
147 |
exclude=['next'])
|
147 |
|
self.assertEqualsURL(response['Location'], '/boob/')
|
|
148 |
self.assertEqualsURL(unquote(response['Location']), '/boob/')
|
148 |
149 |
response = redirect(request2, '/boob/', keep_params=True)
|
149 |
|
self.assertEqualsURL(response['Location'], '/boob/?token=xxx&next=..')
|
|
150 |
self.assertEqualsURL(unquote(response['Location']), '/boob/?token=xxx&next=..')
|
150 |
151 |
response = redirect(request, '/boob/', keep_params=True,
|
151 |
152 |
exclude=['token'])
|
152 |
|
self.assertEqualsURL(response['Location'], '/boob/?next=..')
|
|
153 |
self.assertEqualsURL(unquote(response['Location']), '/boob/?next=..')
|
153 |
154 |
response = redirect(request, '/boob/', keep_params=True,
|
154 |
155 |
include=['next'])
|
155 |
|
self.assertEqualsURL(response['Location'], '/boob/?next=..')
|
|
156 |
self.assertEqualsURL(unquote(response['Location']), '/boob/?next=..')
|
156 |
157 |
response = redirect(request, '/boob/', keep_params=True,
|
157 |
158 |
include=['next'], params={'token': 'uuu'})
|
158 |
|
self.assertEqualsURL(response['Location'], '/boob/?token=uuu&next=..')
|
|
159 |
self.assertEqualsURL(unquote(response['Location']), '/boob/?token=uuu&next=..')
|
159 |
160 |
|
160 |
161 |
def test_redirect_to_login(self):
|
161 |
162 |
from authentic2.utils import redirect_to_login
|
... | ... | |
163 |
164 |
rf = RequestFactory()
|
164 |
165 |
request = rf.get('/coin', data={'next': '..'})
|
165 |
166 |
response = redirect_to_login(request)
|
166 |
|
self.assertEqualsURL(response['Location'], '/login/?next=..')
|
|
167 |
self.assertEqualsURL(response['Location'], quote('/login/?next=..'))
|
167 |
168 |
|
168 |
169 |
def test_continue_to_next_url(self):
|
169 |
170 |
from authentic2.utils import continue_to_next_url
|
... | ... | |
171 |
172 |
rf = RequestFactory()
|
172 |
173 |
request = rf.get('/coin', data={'next': '/zob/', 'nonce': 'xxx'})
|
173 |
174 |
response = continue_to_next_url(request)
|
174 |
|
self.assertEqualsURL(response['Location'], '/zob/?nonce=xxx')
|
|
175 |
self.assertEqualsURL(response['Location'], quote('/zob/?nonce=xxx'))
|
175 |
176 |
|
176 |
177 |
def test_login_require(self):
|
177 |
178 |
from authentic2.utils import login_require
|
... | ... | |
179 |
180 |
rf = RequestFactory()
|
180 |
181 |
request = rf.get('/coin', data={'next': '/zob/', 'nonce': 'xxx'})
|
181 |
182 |
response = login_require(request)
|
182 |
|
self.assertEqualsURL(response['Location'].split('?', 1)[0], '/login/')
|
|
183 |
self.assertEqualsURL(unquote(response['Location']).split('?', 1)[0], '/login/')
|
183 |
184 |
self.assertEqualsURL(
|
184 |
|
urlparse.parse_qs(
|
185 |
|
response['Location'].split('?', 1)[1])['next'][0],
|
186 |
|
'/coin?nonce=xxx&next=/zob/')
|
|
185 |
list(urlparse.parse_qs(unquote(response['Location'])).values())[0][0],
|
|
186 |
'/coin?nonce=xxx&next=%2Fzob%2F')
|
187 |
187 |
|
188 |
188 |
|
189 |
189 |
class ValidatorsTest(TestCase):
|
... | ... | |
493 |
493 |
activation_url = get_link_from_mail(mail.outbox[-1])
|
494 |
494 |
response = client.get(activation_url)
|
495 |
495 |
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
496 |
|
assert utils.make_url(return_url, params={'token': token}) in response.content
|
|
496 |
assert utils.make_url(return_url, params={'token': token}) in response.content.decode('utf-8')
|
497 |
497 |
self.assertEqual(User.objects.count(), user_count + 1)
|
498 |
498 |
response = client.get(reverse('auth_homepage'))
|
499 |
499 |
self.assertContains(response, username)
|
... | ... | |
620 |
620 |
activation_url = get_link_from_mail(activation_mail1)
|
621 |
621 |
response = client.get(activation_url)
|
622 |
622 |
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
623 |
|
assert utils.make_url(return_url, params={'token': token}) in response.content
|
|
623 |
assert utils.make_url(return_url, params={'token': token}) in response.content.decode('utf-8')
|
624 |
624 |
self.assertEqual(User.objects.count(), user_count + 1)
|
625 |
625 |
response = client.get(reverse('auth_homepage'))
|
626 |
626 |
self.assertContains(response, username)
|
... | ... | |
744 |
744 |
activation_url = get_link_from_mail(activation_mail1)
|
745 |
745 |
response = client.get(activation_url)
|
746 |
746 |
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
747 |
|
assert utils.make_url(return_url, params={'token': token}) in response.content
|
|
747 |
assert utils.make_url(return_url, params={'token': token}) in response.content.decode('utf-8')
|
748 |
748 |
self.assertEqual(User.objects.count(), user_count + 1)
|
749 |
749 |
response = client.get(reverse('auth_homepage'))
|
750 |
750 |
self.assertContains(response, username)
|
751 |
|
-
|