From 8486af9e2622984b57a9048a2fb0e04aeb05ce9f Mon Sep 17 00:00:00 2001 From: Todd Dembrey <todd.dembrey@torchbox.com> Date: Wed, 18 Jul 2018 17:32:21 +0100 Subject: [PATCH] Add tests to cover the new profile usecases --- opentech/apply/users/tests/factories.py | 5 ++++ opentech/apply/users/tests/test_views.py | 37 ++++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 opentech/apply/users/tests/test_views.py diff --git a/opentech/apply/users/tests/factories.py b/opentech/apply/users/tests/factories.py index e0aa38ba2..bbeead335 100644 --- a/opentech/apply/users/tests/factories.py +++ b/opentech/apply/users/tests/factories.py @@ -20,6 +20,7 @@ class UserFactory(factory.DjangoModelFactory): email = factory.Sequence('email{}@email.com'.format) full_name = factory.Faker('name') + password = factory.PostGenerationMethodCall('set_password', 'defaultpassword') @factory.post_generation def groups(self, create, extracted, **kwargs): @@ -32,6 +33,10 @@ class UserFactory(factory.DjangoModelFactory): self.groups.add(groups) +class OAuthUserFactory(UserFactory): + password = factory.PostGenerationMethodCall('set_unusable_password') + + class AdminFactory(UserFactory): is_admin = True diff --git a/opentech/apply/users/tests/test_views.py b/opentech/apply/users/tests/test_views.py new file mode 100644 index 000000000..c0531535e --- /dev/null +++ b/opentech/apply/users/tests/test_views.py @@ -0,0 +1,37 @@ +from django.test import TestCase +from django.urls import reverse + +from .factories import OAuthUserFactory, UserFactory + + +class TestProfileView(TestCase): + def setUp(self): + self.user = UserFactory() + self.url = reverse('users:account') + + def test_cant_acces_if_not_logged_in(self): + response = self.client.get(self.url) + self.assertRedirects(response, reverse('users:login') + '?next=' + self.url) + + def test_includes_change_password(self): + self.client.force_login(self.user) + response = self.client.get(self.url) + self.assertContains(response, reverse('users:password_change')) + + def test_doesnt_includes_change_password_for_oauth(self): + self.client.force_login(OAuthUserFactory()) + response = self.client.get(self.url) + self.assertNotContains(response, reverse('users:password_change')) + + def test_email_unique(self): + other_user = UserFactory() + self.client.post(self.url, data={'email': other_user.email}) + self.user.refresh_from_db() + self.assertNotEqual(self.user.email, other_user.email) + + def test_can_change_email(self): + new_email = 'me@another.com' + self.client.force_login(self.user) + self.client.post(self.url, data={'email': new_email}) + self.user.refresh_from_db() + self.assertEqual(self.user.email, new_email) -- GitLab