Commit 1910805860ede783e8cbadeab073e15f163362cd
1 parent
0df355e5
Exists in
master
and in
4 other branches
Testing email validation view
Signed-off-by: Lucas Moura <lucas.moura128@gmail.com> Signed-off-by: Matheus Faria <matheus.sousa.faria@gmail.com>
Showing
3 changed files
with
173 additions
and
2 deletions
Show diff stats
| @@ -0,0 +1,100 @@ | @@ -0,0 +1,100 @@ | ||
| 1 | +[ | ||
| 2 | + { | ||
| 3 | + "fields": { | ||
| 4 | + "last_name": "Administrator", | ||
| 5 | + "webpage": "", | ||
| 6 | + "twitter": "", | ||
| 7 | + "is_staff": true, | ||
| 8 | + "user_permissions": [], | ||
| 9 | + "date_joined": "2015-01-28T12:34:58.770Z", | ||
| 10 | + "google_talk": "", | ||
| 11 | + "first_name": "Admin", | ||
| 12 | + "is_superuser": true, | ||
| 13 | + "last_login": "2015-01-28T12:35:39.621Z", | ||
| 14 | + "verification_hash": null, | ||
| 15 | + "role": "", | ||
| 16 | + "email": "admin@mail.com", | ||
| 17 | + "username": "admin", | ||
| 18 | + "bio": "", | ||
| 19 | + "needs_update": true, | ||
| 20 | + "is_active": true, | ||
| 21 | + "facebook": "", | ||
| 22 | + "groups": [], | ||
| 23 | + "password": "pbkdf2_sha256$12000$iiKCMnLZnFJw$UTx89LB8oYTiw9UqkcglzFLmIaZtbr+ZzF1cG3vfcyo=", | ||
| 24 | + "institution": "", | ||
| 25 | + "github": "", | ||
| 26 | + "modified": "2015-01-28T12:45:27.375Z" | ||
| 27 | + }, | ||
| 28 | + "model": "accounts.user", | ||
| 29 | + "pk": 1 | ||
| 30 | + }, | ||
| 31 | + { | ||
| 32 | + "fields": { | ||
| 33 | + "last_name": "Norris", | ||
| 34 | + "webpage": "", | ||
| 35 | + "twitter": "", | ||
| 36 | + "is_staff": true, | ||
| 37 | + "user_permissions": [], | ||
| 38 | + "date_joined": "2015-01-28T12:34:58.770Z", | ||
| 39 | + "google_talk": "", | ||
| 40 | + "first_name": "Chuck", | ||
| 41 | + "is_superuser": true, | ||
| 42 | + "last_login": "2015-01-28T12:35:39.621Z", | ||
| 43 | + "verification_hash": null, | ||
| 44 | + "role": "", | ||
| 45 | + "email": "chucknorris@mail.com", | ||
| 46 | + "username": "chucknorris", | ||
| 47 | + "bio": "", | ||
| 48 | + "needs_update": true, | ||
| 49 | + "is_active": true, | ||
| 50 | + "facebook": "", | ||
| 51 | + "groups": [], | ||
| 52 | + "password": "123colab4", | ||
| 53 | + "institution": "", | ||
| 54 | + "github": "", | ||
| 55 | + "modified": "2015-01-28T12:45:27.375Z" | ||
| 56 | + }, | ||
| 57 | + "model": "accounts.user", | ||
| 58 | + "pk": 2 | ||
| 59 | + }, | ||
| 60 | + | ||
| 61 | + { | ||
| 62 | + "fields": { | ||
| 63 | + "last_name": "Norris", | ||
| 64 | + "webpage": "", | ||
| 65 | + "twitter": "", | ||
| 66 | + "is_staff": true, | ||
| 67 | + "user_permissions": [], | ||
| 68 | + "date_joined": "2015-01-28T12:34:58.770Z", | ||
| 69 | + "google_talk": "", | ||
| 70 | + "first_name": "Heisenberg", | ||
| 71 | + "is_superuser": true, | ||
| 72 | + "last_login": "2015-01-28T12:35:39.621Z", | ||
| 73 | + "verification_hash": null, | ||
| 74 | + "role": "", | ||
| 75 | + "email": "heisenberg@mail.com", | ||
| 76 | + "username": "heisenbergnorris", | ||
| 77 | + "bio": "", | ||
| 78 | + "needs_update": true, | ||
| 79 | + "is_active": true, | ||
| 80 | + "facebook": "", | ||
| 81 | + "groups": [], | ||
| 82 | + "password": "pbkdf2_sha256$12000$iiKCMnLZnFJw$UTx89LB8oYTiw9UqkcglzFLmIaZtbr+ZzF1cG3vfcyo=", | ||
| 83 | + "institution": "", | ||
| 84 | + "github": "", | ||
| 85 | + "modified": "2015-01-28T12:45:27.375Z" | ||
| 86 | + }, | ||
| 87 | + "model": "accounts.user", | ||
| 88 | + "pk": 3 | ||
| 89 | + }, | ||
| 90 | + { | ||
| 91 | + "fields": { | ||
| 92 | + "real_name": "Administrator", | ||
| 93 | + "user": 1, | ||
| 94 | + "md5": "edb0e96701c209ab4b50211c856c50c4", | ||
| 95 | + "address": "admin@mail.com" | ||
| 96 | + }, | ||
| 97 | + "model": "super_archives.emailaddress", | ||
| 98 | + "pk": 1 | ||
| 99 | + } | ||
| 100 | +] |
| @@ -0,0 +1,71 @@ | @@ -0,0 +1,71 @@ | ||
| 1 | +# -*- coding:utf-8 -*- | ||
| 2 | + | ||
| 3 | +from mock import patch | ||
| 4 | + | ||
| 5 | +from colab.accounts.models import User | ||
| 6 | +from django.test import TestCase, Client | ||
| 7 | +from colab.super_archives.models import EmailAddressValidation, EmailAddress | ||
| 8 | + | ||
| 9 | + | ||
| 10 | +class EmailValidationTest(TestCase): | ||
| 11 | + | ||
| 12 | + fixtures = ['test_user.json'] | ||
| 13 | + | ||
| 14 | + def setUp(self): | ||
| 15 | + self.client = Client() | ||
| 16 | + | ||
| 17 | + def authenticate_user(self): | ||
| 18 | + self.client.login(username='chucknorris', password='123colab4') | ||
| 19 | + | ||
| 20 | + @patch('colab.super_archives.views.send_verification_email', | ||
| 21 | + return_value="") | ||
| 22 | + def test_send_verification_email_successfuly(self, | ||
| 23 | + mock_send_verification_email): | ||
| 24 | + user = User.objects.get(username='chucknorris') | ||
| 25 | + | ||
| 26 | + EmailAddressValidation.create(user.email, user) | ||
| 27 | + | ||
| 28 | + email_addr, created = EmailAddress.objects.get_or_create( | ||
| 29 | + address=user.email) | ||
| 30 | + email_addr.user = user | ||
| 31 | + email_addr.save() | ||
| 32 | + | ||
| 33 | + self.authenticate_user() | ||
| 34 | + | ||
| 35 | + response = self.client.post('/archives/manage/email/validate/', | ||
| 36 | + {'user': user.id, 'email': user.email}) | ||
| 37 | + | ||
| 38 | + self.assertEqual(response.status_code, 204) | ||
| 39 | + self.assertTrue(mock_send_verification_email.called) | ||
| 40 | + | ||
| 41 | + @patch('colab.super_archives.views.send_verification_email', | ||
| 42 | + return_value="") | ||
| 43 | + def test_send_verification_email_with_not_verified_email( | ||
| 44 | + self, send_verification_email): | ||
| 45 | + self.authenticate_user() | ||
| 46 | + | ||
| 47 | + user = User.objects.get(username='chucknorris') | ||
| 48 | + | ||
| 49 | + response = self.client.post('/archives/manage/email/validate/', | ||
| 50 | + { | ||
| 51 | + 'user': user.id, | ||
| 52 | + 'email': "email@mail.com", | ||
| 53 | + }) | ||
| 54 | + | ||
| 55 | + self.assertEqual(response.status_code, 404) | ||
| 56 | + self.assertFalse(send_verification_email.called) | ||
| 57 | + | ||
| 58 | + @patch('colab.super_archives.views.send_verification_email', | ||
| 59 | + return_value="") | ||
| 60 | + def test_send_verification_email_with_not_valid_user_id( | ||
| 61 | + self, send_verification_email): | ||
| 62 | + self.authenticate_user() | ||
| 63 | + | ||
| 64 | + user = User.objects.get(username='chucknorris') | ||
| 65 | + | ||
| 66 | + response = self.client.post('/archives/manage/email/validate/', | ||
| 67 | + {'user': len(User.objects.all()) + 1, | ||
| 68 | + 'email': user.email}) | ||
| 69 | + | ||
| 70 | + self.assertEqual(response.status_code, 404) | ||
| 71 | + self.assertFalse(send_verification_email.called) |
colab/super_archives/views.py
| @@ -277,14 +277,14 @@ class EmailValidationView(View): | @@ -277,14 +277,14 @@ class EmailValidationView(View): | ||
| 277 | try: | 277 | try: |
| 278 | email = EmailAddressValidation.objects.get(address=email_addr, | 278 | email = EmailAddressValidation.objects.get(address=email_addr, |
| 279 | user_id=user_id) | 279 | user_id=user_id) |
| 280 | - except http.DoesNotExist: | 280 | + except EmailAddressValidation.DoesNotExist: |
| 281 | raise http.Http404 | 281 | raise http.Http404 |
| 282 | 282 | ||
| 283 | try: | 283 | try: |
| 284 | location = reverse('archive_email_view', | 284 | location = reverse('archive_email_view', |
| 285 | kwargs={'key': email.validation_key}) | 285 | kwargs={'key': email.validation_key}) |
| 286 | verification_url = request.build_absolute_uri(location) | 286 | verification_url = request.build_absolute_uri(location) |
| 287 | - send_verification_email(request, email_addr, email.user, | 287 | + send_verification_email(email_addr, email.user, |
| 288 | email.validation_key, verification_url) | 288 | email.validation_key, verification_url) |
| 289 | except smtplib.SMTPException: | 289 | except smtplib.SMTPException: |
| 290 | logging.exception('Error sending validation email') | 290 | logging.exception('Error sending validation email') |