From fd3525c4c86e57f9b04e2392933f1fa4eb7b8d00 Mon Sep 17 00:00:00 2001 From: Oliver Falk Date: Wed, 9 May 2018 14:21:46 +0200 Subject: [PATCH] More test --- ivatar/ivataraccount/test_views.py | 141 ++++++++++++++++++++++++++++- 1 file changed, 138 insertions(+), 3 deletions(-) diff --git a/ivatar/ivataraccount/test_views.py b/ivatar/ivataraccount/test_views.py index 18f9e36..cde7362 100644 --- a/ivatar/ivataraccount/test_views.py +++ b/ivatar/ivataraccount/test_views.py @@ -7,12 +7,34 @@ import django os.environ['DJANGO_SETTINGS_MODULE'] = 'ivatar.settings' django.setup() +from ivatar import settings + +from django.contrib.auth.models import User + from ivatar.utils import random_string class Tester(TestCase): client = Client() + user = None username = random_string() password = random_string() + email = '%s@%s.%s' % (username, random_string(), random_string(2)) + + def login(self): + ''' + Login as user + ''' + self.client.login(username=self.username, password=self.password) + + def setUp(self): + ''' + Prepare for tests. + - Create user + ''' + self.user = User.objects.create_user( + username=self.username, + password=self.password, + ) def test_new_user(self): """ @@ -30,22 +52,135 @@ class Tester(TestCase): follow=True, ) self.assertEqual(response.status_code, 200, 'unable to create user?') + self.login() + response = self.client.get(reverse('profile')) self.assertEqual(response.context[0]['user'].username, self.username) def test_set_password(self): """ Change the user password """ + self.login() response = self.client.get(reverse('password_set')) self.assertEqual(response.status_code, 200, 'no 200 ok?') - url = reverse('password_set') self.password = random_string() response = self.client.post( - url, { + reverse('password_set'), { 'password1': self.password, 'password2': self.password, }, follow=True, ) self.assertEqual(response.status_code, 200, 'cannot change password?') - self.assertEqual(response.context[0]['user'].is_anonymous, True) + self.assertEqual(response.context[0]['user'].is_anonymous, False) + + def test_add_email(self): + """ + Add e-mail address + """ + self.login() + response = self.client.get(reverse('add_email')) + self.assertEqual(response.status_code, 200, 'no 200 ok?') + # Avoid sending out mails + settings.EMAIL_BACKEND = 'django.core.mail.backends.dummy.EmailBackend' + response = self.client.post( + reverse('add_email'), { + 'email': self.email, + }, + follow=True, + ) + self.assertEqual(response.status_code, 200, 'cannot add email?') + self.assertEqual(len(response.context[0]['messages']), 1, + 'there must not be more or less than ONE (1) message') + self.assertEqual(str(list(response.context[0]['messages'])[0]), + 'Address added successfully', 'unable to add mail address?') + + def test_confirm_email(self): + ''' + Confirm unconfirmed email + ''' + self.login() + # Avoid sending out mails + settings.EMAIL_BACKEND = 'django.core.mail.backends.dummy.EmailBackend' + response = self.client.post( + reverse('add_email'), { + 'email': self.email, + }, + follow=True, + ) + verification_key = self.user.unconfirmedemail_set.first().verification_key + url = reverse('confirm_email', args=[verification_key]) + response = self.client.get(url) + self.assertEqual(response.status_code, 200, 'unable to confirm mail address?') + + self.assertEqual(self.user.unconfirmedemail_set.count(), 0, + 'there must not be any unconfirmed address, after confirming it') + self.assertEqual(self.user.confirmedemail_set.count(), 1, + 'there must not be more or less than ONE (1) confirmed address!') + + def test_remove_confirmed_email(self): + ''' + Remove confirmed email + ''' + self.login() + # Avoid sending out mails + settings.EMAIL_BACKEND = 'django.core.mail.backends.dummy.EmailBackend' + response = self.client.post( + reverse('add_email'), { + 'email': self.email, + }, + ) # Create test address + verification_key = self.user.unconfirmedemail_set.first().verification_key + url = reverse('confirm_email', args=[verification_key]) + self.client.get(url) # Confirm + url = reverse('remove_confirmed_email', args=[self.user.confirmedemail_set.first().id]) + response = self.client.post(url, follow=True) + self.assertEqual(response.status_code, 200, 'unable to remove confirmed address?') + self.assertEqual(str(list(response.context[0]['messages'])[0]), + 'Address removed', 'Removing confirmed mail does not work?') + + def test_remove_unconfirmed_email(self): + ''' + Remove unconfirmed email + ''' + self.login() + # Avoid sending out mails + settings.EMAIL_BACKEND = 'django.core.mail.backends.dummy.EmailBackend' + response = self.client.post( + reverse('add_email'), { + 'email': self.email, + }, + ) # Create test address + url = reverse('remove_unconfirmed_email', args=[self.user.unconfirmedemail_set.first().id]) + response = self.client.post(url, follow=True) + self.assertEqual(response.status_code, 200, 'unable to remove unconfirmed address?') + # Take care, since we do not fetch any page now, the message we need to check is the + # _second_ (aka [1], since first is [0]) + self.assertEqual(str(list(response.context[0]['messages'])[1]), + 'Address removed', 'Removing unconfirmed mail does not work?') + + def test_gravatar_photo_import(self): + ''' + import photo from Gravatar (with known mail address) + ''' + self.login() + # Avoid sending out mails + settings.EMAIL_BACKEND = 'django.core.mail.backends.dummy.EmailBackend' + response = self.client.post( + reverse('add_email'), { + 'email': 'oliver@linux-kernel.at', # Whohu, static :-[ + }, + ) # Create test address + verification_key = self.user.unconfirmedemail_set.first().verification_key + url = reverse('confirm_email', args=[verification_key]) + self.client.get(url) # Confirm + + url = reverse('import_photo', args=[self.user.confirmedemail_set.first().id]) + response = self.client.post(url, { + 'photo_Gravatar': 1, + }, + follow=True + ) + self.assertEqual(response.status_code, 200, 'unable to import photo from Gravatar?') + self.assertEqual(str(list(response.context[0]['messages'])[0]), + 'Image successfully imported', 'Importing gravatar photo did not work?')