Skip to content
Snippets Groups Projects
test_oauth_access.py 2.2 KiB
Newer Older
  • Learn to ignore specific revisions
  • Dan Braghis's avatar
    Dan Braghis committed
    from django.contrib.auth import get_user_model
    from django.conf import settings
    
    Dan Braghis's avatar
    Dan Braghis committed
    from django.test import TestCase, override_settings
    
    Dan Braghis's avatar
    Dan Braghis committed
    from django.urls import reverse
    
    
    
    Dan Braghis's avatar
    Dan Braghis committed
    class TestOAuthAccess(TestCase):
    
    Dan Braghis's avatar
    Dan Braghis committed
    
        def test_oauth_page_requires_login(self):
            """
            This checks that /account/oauth requires the user to be logged in
            """
            oauth_page = reverse('users:oauth')
    
    Dan Braghis's avatar
    Dan Braghis committed
            response = self.client.get(oauth_page, follow=True)
            self.assertRedirects(response, reverse(
    
                'users:login') + '?next=' + reverse('users:oauth'), status_code=301, target_status_code=200)
    
    Dan Braghis's avatar
    Dan Braghis committed
    
        @override_settings()
        def test_oauth_not_set_up(self):
            del settings.SOCIAL_AUTH_GOOGLE_OAUTH2_WHITELISTED_DOMAINS
    
            self.login()
    
    Dan Braghis's avatar
    Dan Braghis committed
            response = self.client.get(reverse('users:oauth'), follow=True)
    
    Dan Braghis's avatar
    Dan Braghis committed
            self.assertEqual(response.status_code, 403)
    
        def test_oauth_user_email_not_whitelisted(self):
            self.login()
    
    Dan Braghis's avatar
    Dan Braghis committed
            response = self.client.get(reverse('users:oauth'), follow=True)
    
    Dan Braghis's avatar
    Dan Braghis committed
            self.assertEqual(response.status_code, 403)
    
    
    Dan Braghis's avatar
    Dan Braghis committed
        @override_settings(SOCIAL_AUTH_GOOGLE_OAUTH2_WHITELISTED_DOMAINS=['email.com'])
        def test_oauth_whitelisted_user_can_see_link_to_oauth_settings_page(self):
            self.login()
    
            response = self.client.get(reverse('users:account'), follow=True)
            self.assertContains(response, 'Manage OAuth')
    
    
    Dan Braghis's avatar
    Dan Braghis committed
        @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()
    
    
    Dan Braghis's avatar
    Dan Braghis committed
            response = self.client.get(reverse('users:oauth'), follow=True)
    
    Dan Braghis's avatar
    Dan Braghis committed
            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