From 7c10948cbd8cf73fd0b09f3e2a2058fcb9b327d0 Mon Sep 17 00:00:00 2001 From: Dan Braghis <dan.braghis@torchbox.com> Date: Tue, 16 Jan 2018 16:16:30 +0000 Subject: [PATCH] Add tests --- opentech/apply/users/tests/__init__.py | 0 opentech/apply/users/tests/test_oauth.py | 54 ++++++++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 opentech/apply/users/tests/__init__.py create mode 100644 opentech/apply/users/tests/test_oauth.py diff --git a/opentech/apply/users/tests/__init__.py b/opentech/apply/users/tests/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/opentech/apply/users/tests/test_oauth.py b/opentech/apply/users/tests/test_oauth.py new file mode 100644 index 000000000..d71bc0156 --- /dev/null +++ b/opentech/apply/users/tests/test_oauth.py @@ -0,0 +1,54 @@ +from django.contrib.auth import get_user_model +from django.conf import settings +from django.test import TestCase, modify_settings, override_settings +from django.urls import reverse + + +class TestOAuthAcces(TestCase): + + def test_oauth_page_requires_login(self): + """ + This checks that /account/oauth requires the user to be logged in + """ + oauth_page = reverse('users:oauth') + response = self.client.get(oauth_page) + self.assertRedirects(response, reverse('users:login') + '?next=' + oauth_page) + + @override_settings() + def test_oauth_not_set_up(self): + del settings.SOCIAL_AUTH_GOOGLE_OAUTH2_WHITELISTED_DOMAINS + + self.login() + response = self.client.get(reverse('users:oauth')) + self.assertEqual(response.status_code, 403) + + def test_oauth_user_email_not_whitelisted(self): + self.login() + response = self.client.get(reverse('users:oauth')) + self.assertEqual(response.status_code, 403) + + @override_settings(SOCIAL_AUTH_GOOGLE_OAUTH2_WHITELISTED_DOMAINS=['email.com']) + def test_oauth_whitelisted_user_can_access_oauth_settings_page(self): + """ + Checks that the test user can access the OAuth page as their email is whitelisted + """ + self.login() + + response = self.client.get(reverse('users:account')) + self.assertContains(response, 'Manage OAuth') + + response = self.client.get(reverse('users:oauth')) + self.assertEqual(response.status_code, 200) + self.assertContains(response, 'Google OAuth') + self.assertNotContains(response, 'Disconnect Google OAuth') + + self.assertTemplateUsed(response, 'users/oauth.html') + + def login(self): + user = get_user_model().objects.create_user(username='test', email='test@email.com', password='password') + self.assertTrue( + self.client.login(username='test', password='password') + ) + + return user + -- GitLab