From 1910805860ede783e8cbadeab073e15f163362cd Mon Sep 17 00:00:00 2001 From: Matheus Faria Date: Mon, 16 Nov 2015 18:04:57 -0200 Subject: [PATCH] Testing email validation view --- colab/super_archives/fixtures/test_user.json | 100 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ colab/super_archives/tests/test_email_validation.py | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ colab/super_archives/views.py | 4 ++-- 3 files changed, 173 insertions(+), 2 deletions(-) create mode 100644 colab/super_archives/fixtures/test_user.json create mode 100644 colab/super_archives/tests/test_email_validation.py diff --git a/colab/super_archives/fixtures/test_user.json b/colab/super_archives/fixtures/test_user.json new file mode 100644 index 0000000..44b7014 --- /dev/null +++ b/colab/super_archives/fixtures/test_user.json @@ -0,0 +1,100 @@ +[ + { + "fields": { + "last_name": "Administrator", + "webpage": "", + "twitter": "", + "is_staff": true, + "user_permissions": [], + "date_joined": "2015-01-28T12:34:58.770Z", + "google_talk": "", + "first_name": "Admin", + "is_superuser": true, + "last_login": "2015-01-28T12:35:39.621Z", + "verification_hash": null, + "role": "", + "email": "admin@mail.com", + "username": "admin", + "bio": "", + "needs_update": true, + "is_active": true, + "facebook": "", + "groups": [], + "password": "pbkdf2_sha256$12000$iiKCMnLZnFJw$UTx89LB8oYTiw9UqkcglzFLmIaZtbr+ZzF1cG3vfcyo=", + "institution": "", + "github": "", + "modified": "2015-01-28T12:45:27.375Z" + }, + "model": "accounts.user", + "pk": 1 + }, + { + "fields": { + "last_name": "Norris", + "webpage": "", + "twitter": "", + "is_staff": true, + "user_permissions": [], + "date_joined": "2015-01-28T12:34:58.770Z", + "google_talk": "", + "first_name": "Chuck", + "is_superuser": true, + "last_login": "2015-01-28T12:35:39.621Z", + "verification_hash": null, + "role": "", + "email": "chucknorris@mail.com", + "username": "chucknorris", + "bio": "", + "needs_update": true, + "is_active": true, + "facebook": "", + "groups": [], + "password": "123colab4", + "institution": "", + "github": "", + "modified": "2015-01-28T12:45:27.375Z" + }, + "model": "accounts.user", + "pk": 2 + }, + + { + "fields": { + "last_name": "Norris", + "webpage": "", + "twitter": "", + "is_staff": true, + "user_permissions": [], + "date_joined": "2015-01-28T12:34:58.770Z", + "google_talk": "", + "first_name": "Heisenberg", + "is_superuser": true, + "last_login": "2015-01-28T12:35:39.621Z", + "verification_hash": null, + "role": "", + "email": "heisenberg@mail.com", + "username": "heisenbergnorris", + "bio": "", + "needs_update": true, + "is_active": true, + "facebook": "", + "groups": [], + "password": "pbkdf2_sha256$12000$iiKCMnLZnFJw$UTx89LB8oYTiw9UqkcglzFLmIaZtbr+ZzF1cG3vfcyo=", + "institution": "", + "github": "", + "modified": "2015-01-28T12:45:27.375Z" + }, + "model": "accounts.user", + "pk": 3 + }, + { + "fields": { + "real_name": "Administrator", + "user": 1, + "md5": "edb0e96701c209ab4b50211c856c50c4", + "address": "admin@mail.com" + }, + "model": "super_archives.emailaddress", + "pk": 1 + } +] diff --git a/colab/super_archives/tests/test_email_validation.py b/colab/super_archives/tests/test_email_validation.py new file mode 100644 index 0000000..b7ef5f9 --- /dev/null +++ b/colab/super_archives/tests/test_email_validation.py @@ -0,0 +1,71 @@ +# -*- coding:utf-8 -*- + +from mock import patch + +from colab.accounts.models import User +from django.test import TestCase, Client +from colab.super_archives.models import EmailAddressValidation, EmailAddress + + +class EmailValidationTest(TestCase): + + fixtures = ['test_user.json'] + + def setUp(self): + self.client = Client() + + def authenticate_user(self): + self.client.login(username='chucknorris', password='123colab4') + + @patch('colab.super_archives.views.send_verification_email', + return_value="") + def test_send_verification_email_successfuly(self, + mock_send_verification_email): + user = User.objects.get(username='chucknorris') + + EmailAddressValidation.create(user.email, user) + + email_addr, created = EmailAddress.objects.get_or_create( + address=user.email) + email_addr.user = user + email_addr.save() + + self.authenticate_user() + + response = self.client.post('/archives/manage/email/validate/', + {'user': user.id, 'email': user.email}) + + self.assertEqual(response.status_code, 204) + self.assertTrue(mock_send_verification_email.called) + + @patch('colab.super_archives.views.send_verification_email', + return_value="") + def test_send_verification_email_with_not_verified_email( + self, send_verification_email): + self.authenticate_user() + + user = User.objects.get(username='chucknorris') + + response = self.client.post('/archives/manage/email/validate/', + { + 'user': user.id, + 'email': "email@mail.com", + }) + + self.assertEqual(response.status_code, 404) + self.assertFalse(send_verification_email.called) + + @patch('colab.super_archives.views.send_verification_email', + return_value="") + def test_send_verification_email_with_not_valid_user_id( + self, send_verification_email): + self.authenticate_user() + + user = User.objects.get(username='chucknorris') + + response = self.client.post('/archives/manage/email/validate/', + {'user': len(User.objects.all()) + 1, + 'email': user.email}) + + self.assertEqual(response.status_code, 404) + self.assertFalse(send_verification_email.called) diff --git a/colab/super_archives/views.py b/colab/super_archives/views.py index bdbd487..7c660f2 100644 --- a/colab/super_archives/views.py +++ b/colab/super_archives/views.py @@ -277,14 +277,14 @@ class EmailValidationView(View): try: email = EmailAddressValidation.objects.get(address=email_addr, user_id=user_id) - except http.DoesNotExist: + except EmailAddressValidation.DoesNotExist: raise http.Http404 try: location = reverse('archive_email_view', kwargs={'key': email.validation_key}) verification_url = request.build_absolute_uri(location) - send_verification_email(request, email_addr, email.user, + send_verification_email(email_addr, email.user, email.validation_key, verification_url) except smtplib.SMTPException: logging.exception('Error sending validation email') -- libgit2 0.21.2