From 753fdc30f97f8a6557de69ee06adcf231eeafd44 Mon Sep 17 00:00:00 2001 From: Stephen Finucane Date: Fri, 21 Aug 2015 15:32:12 +0100 Subject: [PATCH] tests/test_user: Add "profile unlink" tests The 'link' view was not being tested. Resolve this with tests for all paths. Acked-by: Damien Lespiau Signed-off-by: Stephen Finucane Signed-off-by: Damien Lespiau --- patchwork/tests/test_user.py | 93 +++++++++++++++++++++++++++++++++--- 1 file changed, 86 insertions(+), 7 deletions(-) diff --git a/patchwork/tests/test_user.py b/patchwork/tests/test_user.py index 0faa970..61a8443 100644 --- a/patchwork/tests/test_user.py +++ b/patchwork/tests/test_user.py @@ -31,15 +31,16 @@ def _confirmation_url(conf): return reverse('patchwork.views.confirm', kwargs = {'key': conf.key}) class TestUser(object): - username = 'testuser' - email = 'test@example.com' - secondary_email = 'test2@example.com' - password = None - def __init__(self): + def __init__(self, username='testuser', email='test@example.com', + secondary_email='test2@example.com'): + self.username = username + self.email = email + self.secondary_email = secondary_email self.password = User.objects.make_random_password() - self.user = User.objects.create_user(self.username, - self.email, self.password) + self.user = User.objects.create_user( + self.username, self.email, self.password) + class UserPersonRequestTest(TestCase): def setUp(self): @@ -193,3 +194,81 @@ class UserPasswordChangeTest(TestCase): response = self.client.get(self.done_url) self.assertContains(response, "Your password has been changed sucessfully") + +class UserUnlinkTest(TestCase): + def setUp(self): + self.form_url = '/user/unlink/{pid}/' + self.done_url = '/user/' + EmailConfirmation.objects.all().delete() + Person.objects.all().delete() + + def testUnlinkPrimaryEmail(self): + user = TestUser() + self.client.login(username=user.username, + password=user.password) + conf = EmailConfirmation(type='userperson', + email=user.email, + user=user.user) + conf.save() + self.client.get(_confirmation_url(conf)) + + person = Person.objects.get(email=user.email) + response = self.client.post(self.form_url.format(pid=str(person.id))) + self.assertRedirects(response, self.done_url) + + person = Person.objects.get(email=user.email) + self.assertEquals(person.user, user.user) + + def testUnlinkSecondaryEmail(self): + user = TestUser() + self.client.login(username=user.username, + password=user.password) + conf = EmailConfirmation(type='userperson', + email=user.secondary_email, + user=user.user) + conf.save() + self.client.get(_confirmation_url(conf)) + + person = Person.objects.get(email=user.secondary_email) + response = self.client.post(self.form_url.format(pid=str(person.id))) + self.assertRedirects(response, self.done_url) + + person = Person.objects.get(email=user.secondary_email) + self.assertEquals(person.user, None) + + def testUnlinkAnotherUser(self): + user = TestUser() + self.client.login(username=user.username, + password=user.password) + + other_user = TestUser('testuser_other', 'test_other@example.com', + 'test_other2@example.com') + conf = EmailConfirmation(type='userperson', + email=other_user.email, + user=other_user.user) + conf.save() + self.client.get(_confirmation_url(conf)) + + person = Person.objects.get(email=other_user.email) + response = self.client.post(self.form_url.format(pid=str(person.id))) + self.assertRedirects(response, self.done_url) + + person = Person.objects.get(email=other_user.email) + self.assertEquals(person.user, None) + + def testUnlinkNonPost(self): + user = TestUser() + self.client.login(username=user.username, + password=user.password) + conf = EmailConfirmation(type='userperson', + email=user.secondary_email, + user=user.user) + conf.save() + self.client.get(_confirmation_url(conf)) + + person = Person.objects.get(email=user.secondary_email) + response = self.client.get(self.form_url.format(pid=str(person.id))) + self.assertRedirects(response, self.done_url) + + person = Person.objects.get(email=user.secondary_email) + self.assertEquals(person.user, user.user) -- 2.39.2