Commit 2c7862fb56005e29249d720a7cb5cd9d8ed2605d

Authored by Alexandre A. Barbosa
2 parents 54a002cc 19108058

Merge pull request #110 from colab/email_validation_fix

Testing email validation view
colab/super_archives/fixtures/test_user.json 0 → 100644
... ... @@ -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 +]
... ...
colab/super_archives/tests/test_email_validation.py 0 → 100644
... ... @@ -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 277 try:
278 278 email = EmailAddressValidation.objects.get(address=email_addr,
279 279 user_id=user_id)
280   - except http.DoesNotExist:
  280 + except EmailAddressValidation.DoesNotExist:
281 281 raise http.Http404
282 282  
283 283 try:
284 284 location = reverse('archive_email_view',
285 285 kwargs={'key': email.validation_key})
286 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 288 email.validation_key, verification_url)
289 289 except smtplib.SMTPException:
290 290 logging.exception('Error sending validation email')
... ...