123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197 |
- from django.contrib.auth import get_user_model
- from django.core import mail
- from django.core.urlresolvers import reverse
- from django.test import TestCase
- from misago.users.models import Ban, BAN_USERNAME
- from misago.users.tokens import make_password_change_token
- class SendLinkAPITests(TestCase):
- def setUp(self):
- User = get_user_model()
- self.user = User.objects.create_user('Bob', 'bob@test.com', 'Pass.123')
- self.link = reverse('misago:api:change_password_send_link')
- def test_submit_valid(self):
- """request change password form link api sends reset link mail"""
- response = self.client.post(self.link, data={'email': self.user.email})
- self.assertEqual(response.status_code, 200)
- self.assertIn('Change Bob password', mail.outbox[0].subject)
- def test_submit_invalid(self):
- """request change password form link api errors for invalid email"""
- response = self.client.post(self.link, data={'email': 'fake@mail.com'})
- self.assertEqual(response.status_code, 400)
- self.assertIn('not_found', response.content)
- self.assertTrue(not mail.outbox)
- def test_submit_banned(self):
- """request change password form link api errors for banned users"""
- Ban.objects.create(check_type=BAN_USERNAME,
- banned_value=self.user.username,
- user_message='Nope!')
- response = self.client.post(self.link, data={'email': self.user.email})
- self.assertEqual(response.status_code, 400)
- self.assertIn('Nope!', response.content)
- self.assertTrue(not mail.outbox)
- def test_view_submit_inactive_user(self):
- """request change password form link api errors for inactive users"""
- self.user.requires_activation = 1
- self.user.save()
- response = self.client.post(self.link, data={'email': self.user.email})
- self.assertEqual(response.status_code, 400)
- self.assertIn('inactive_user', response.content)
- self.user.requires_activation = 2
- self.user.save()
- response = self.client.post(self.link, data={'email': self.user.email})
- self.assertEqual(response.status_code, 400)
- self.assertIn('inactive_admin', response.content)
- self.assertTrue(not mail.outbox)
- class ValidateTokenAPITests(TestCase):
- def setUp(self):
- User = get_user_model()
- self.user = User.objects.create_user('Bob', 'bob@test.com', 'Pass.123')
- self.link = reverse(
- 'misago:api:change_password_validate_token',
- kwargs={
- 'user_id': self.user.id,
- 'token': make_password_change_token(self.user)
- })
- def test_submit_valid(self):
- """validate form link api returns success"""
- response = self.client.post(self.link)
- self.assertEqual(response.status_code, 200)
- self.assertIn(self.user.username, response.content)
- def test_submit_invalid_token(self):
- """validate form link api errors for invalid token"""
- response = self.client.post(reverse(
- 'misago:api:change_password_validate_token',
- kwargs={
- 'user_id': self.user.id,
- 'token': 'sadsadsadsdsassdsa'
- }))
- self.assertEqual(response.status_code, 404)
- self.assertIn('Your link is invalid.', response.content)
- def test_submit_invalid_user(self):
- """validate form link api errors for invalid user"""
- response = self.client.post(reverse(
- 'misago:api:change_password_validate_token',
- kwargs={
- 'user_id': 123,
- 'token': 'sadsadsadsdsassdsa'
- }))
- self.assertEqual(response.status_code, 404)
- def test_submit_banned(self):
- """validate form link api errors for banned user"""
- Ban.objects.create(check_type=BAN_USERNAME,
- banned_value=self.user.username,
- user_message='Nope!')
- response = self.client.post(self.link)
- self.assertEqual(response.status_code, 404)
- self.assertIn('Your link has expired.', response.content)
- def test_view_submit_inactive_user(self):
- """validate form link api errors for inactive user"""
- self.user.requires_activation = 1
- self.user.save()
- response = self.client.post(self.link)
- self.assertEqual(response.status_code, 404)
- self.assertIn('Your link has expired.', response.content)
- self.user.requires_activation = 2
- self.user.save()
- response = self.client.post(self.link)
- self.assertEqual(response.status_code, 404)
- self.assertIn('Your link has expired.', response.content)
- class ChangePasswordAPITests(TestCase):
- def setUp(self):
- User = get_user_model()
- self.user = User.objects.create_user('Bob', 'bob@test.com', 'Pass.123')
- self.link = reverse(
- 'misago:api:change_password',
- kwargs={
- 'user_id': self.user.id,
- 'token': make_password_change_token(self.user)
- })
- def test_submit_valid(self):
- """change password api changes user password"""
- response = self.client.post(self.link, data={'password': 'newpass'})
- self.assertEqual(response.status_code, 200)
- user = get_user_model().objects.get(id=self.user.id)
- self.assertTrue(user.check_password('newpass'))
- def test_submit_invalid_empty(self):
- """change password api errors for unvalid password"""
- response = self.client.post(self.link, data={'password': ''})
- self.assertEqual(response.status_code, 400)
- self.assertIn('Valid password must be', response.content)
- def test_submit_invalid_token(self):
- """change password api errors for unvalid token"""
- response = self.client.post(reverse('misago:api:change_password',
- kwargs={
- 'user_id': self.user.id,
- 'token': 'sadsadsadsdsassdsa'
- }),
- data={'password': 'newpass'})
- self.assertEqual(response.status_code, 404)
- self.assertIn('Your link is invalid.', response.content)
- def test_submit_invalid_user(self):
- """validate form link api errors for invalid user"""
- response = self.client.post(reverse('misago:api:change_password',
- kwargs={
- 'user_id': 123,
- 'token': 'sadsadsadsdsassdsa'
- }),
- data={'password': 'newpass'})
- self.assertEqual(response.status_code, 404)
- def test_submit_banned(self):
- """validate form link api errors for banned user"""
- Ban.objects.create(check_type=BAN_USERNAME,
- banned_value=self.user.username,
- user_message='Nope!')
- response = self.client.post(self.link, data={'password': 'newpass'})
- self.assertEqual(response.status_code, 404)
- self.assertIn('Your link has expired.', response.content)
- def test_view_submit_inactive_user(self):
- """validate form link api errors for inactive user"""
- self.user.requires_activation = 1
- self.user.save()
- response = self.client.post(self.link, data={'password': 'newpass'})
- self.assertEqual(response.status_code, 404)
- self.assertIn('Your link has expired.', response.content)
- self.user.requires_activation = 2
- self.user.save()
- response = self.client.post(self.link, data={'password': 'newpass'})
- self.assertEqual(response.status_code, 404)
- self.assertIn('Your link has expired.', response.content)
|