mirror of
https://github.com/zulip/zulip.git
synced 2025-11-03 13:33:24 +00:00
auth: Move ConfigErrorTest from test_docs to test_auth_backends.
There was some duplicated code to test config error pages for different auths which could be handled with less duplicated code by adding those functions to `SocialAuthBase`. Also moving the other tests makes it easier to access tests related to a backend auth when they are in the same file.
This commit is contained in:
@@ -798,6 +798,37 @@ class SocialAuthBase(DesktopFlowTestingLib, ZulipTestCase):
|
|||||||
self.assertEqual(result.status_code, 302)
|
self.assertEqual(result.status_code, 302)
|
||||||
self.assertEqual(result.url, self.CONFIG_ERROR_URL)
|
self.assertEqual(result.url, self.CONFIG_ERROR_URL)
|
||||||
|
|
||||||
|
def test_config_error_development(self) -> None:
|
||||||
|
if hasattr(self, 'CLIENT_KEY_SETTING') and hasattr(self, 'CLIENT_SECRET_SETTING'):
|
||||||
|
with self.settings(**{self.CLIENT_KEY_SETTING: None}):
|
||||||
|
result = self.client_get(self.LOGIN_URL)
|
||||||
|
self.assertEqual(result.status_code, 302)
|
||||||
|
self.assertEqual(result.url, self.CONFIG_ERROR_URL)
|
||||||
|
result = self.client_get(result.url)
|
||||||
|
self.assert_in_success_response([self.CLIENT_KEY_SETTING.lower()], result)
|
||||||
|
self.assert_in_success_response([self.CLIENT_SECRET_SETTING.lower()], result)
|
||||||
|
self.assert_in_success_response(["zproject/dev-secrets.conf"], result)
|
||||||
|
self.assert_not_in_success_response([self.CLIENT_KEY_SETTING], result)
|
||||||
|
self.assert_not_in_success_response(["zproject/dev_settings.py"], result)
|
||||||
|
self.assert_not_in_success_response(["/etc/zulip/settings.py"], result)
|
||||||
|
self.assert_not_in_success_response(["/etc/zulip/zulip-secrets.conf"], result)
|
||||||
|
|
||||||
|
@override_settings(DEVELOPMENT=False)
|
||||||
|
def test_config_error_production(self) -> None:
|
||||||
|
if hasattr(self, 'CLIENT_KEY_SETTING') and hasattr(self, 'CLIENT_SECRET_SETTING'):
|
||||||
|
with self.settings(**{self.CLIENT_KEY_SETTING: None}):
|
||||||
|
result = self.client_get(self.LOGIN_URL)
|
||||||
|
self.assertEqual(result.status_code, 302)
|
||||||
|
self.assertEqual(result.url, self.CONFIG_ERROR_URL)
|
||||||
|
result = self.client_get(result.url)
|
||||||
|
self.assert_in_success_response([self.CLIENT_KEY_SETTING], result)
|
||||||
|
self.assert_in_success_response(["/etc/zulip/settings.py"], result)
|
||||||
|
self.assert_in_success_response([self.CLIENT_SECRET_SETTING.lower()], result)
|
||||||
|
self.assert_in_success_response(["/etc/zulip/zulip-secrets.conf"], result)
|
||||||
|
self.assert_not_in_success_response([self.CLIENT_KEY_SETTING.lower()], result)
|
||||||
|
self.assert_not_in_success_response(["zproject/dev_settings.py"], result)
|
||||||
|
self.assert_not_in_success_response(["zproject/dev-secrets.conf"], result)
|
||||||
|
|
||||||
def test_social_auth_success(self) -> None:
|
def test_social_auth_success(self) -> None:
|
||||||
account_data_dict = self.get_account_data_dict(email=self.email, name=self.name)
|
account_data_dict = self.get_account_data_dict(email=self.email, name=self.name)
|
||||||
result = self.social_auth_test(account_data_dict,
|
result = self.social_auth_test(account_data_dict,
|
||||||
@@ -1399,6 +1430,13 @@ class SAMLAuthBackendTest(SocialAuthBase):
|
|||||||
self.assertEqual(result.status_code, 302)
|
self.assertEqual(result.status_code, 302)
|
||||||
self.assertEqual(result.url, self.CONFIG_ERROR_URL)
|
self.assertEqual(result.url, self.CONFIG_ERROR_URL)
|
||||||
|
|
||||||
|
def test_config_error_page(self) -> None:
|
||||||
|
result = self.client_get("/accounts/login/social/saml")
|
||||||
|
self.assertEqual(result.status_code, 302)
|
||||||
|
self.assertEqual(result.url, '/config-error/saml')
|
||||||
|
result = self.client_get(result.url)
|
||||||
|
self.assert_in_success_response(["SAML authentication"], result)
|
||||||
|
|
||||||
def test_saml_auth_works_without_private_public_keys(self) -> None:
|
def test_saml_auth_works_without_private_public_keys(self) -> None:
|
||||||
with self.settings(SOCIAL_AUTH_SAML_SP_PUBLIC_CERT='', SOCIAL_AUTH_SAML_SP_PRIVATE_KEY=''):
|
with self.settings(SOCIAL_AUTH_SAML_SP_PUBLIC_CERT='', SOCIAL_AUTH_SAML_SP_PRIVATE_KEY=''):
|
||||||
self.test_social_auth_success()
|
self.test_social_auth_success()
|
||||||
@@ -1562,6 +1600,7 @@ class GitHubAuthBackendTest(SocialAuthBase):
|
|||||||
|
|
||||||
BACKEND_CLASS = GitHubAuthBackend
|
BACKEND_CLASS = GitHubAuthBackend
|
||||||
CLIENT_KEY_SETTING = "SOCIAL_AUTH_GITHUB_KEY"
|
CLIENT_KEY_SETTING = "SOCIAL_AUTH_GITHUB_KEY"
|
||||||
|
CLIENT_SECRET_SETTING = "SOCIAL_AUTH_GITHUB_SECRET"
|
||||||
LOGIN_URL = "/accounts/login/social/github"
|
LOGIN_URL = "/accounts/login/social/github"
|
||||||
SIGNUP_URL = "/accounts/register/social/github"
|
SIGNUP_URL = "/accounts/register/social/github"
|
||||||
AUTHORIZATION_URL = "https://github.com/login/oauth/authorize"
|
AUTHORIZATION_URL = "https://github.com/login/oauth/authorize"
|
||||||
@@ -1777,6 +1816,7 @@ class GitLabAuthBackendTest(SocialAuthBase):
|
|||||||
|
|
||||||
BACKEND_CLASS = GitLabAuthBackend
|
BACKEND_CLASS = GitLabAuthBackend
|
||||||
CLIENT_KEY_SETTING = "SOCIAL_AUTH_GITLAB_KEY"
|
CLIENT_KEY_SETTING = "SOCIAL_AUTH_GITLAB_KEY"
|
||||||
|
CLIENT_SECRET_SETTING = "SOCIAL_AUTH_GITLAB_SECRET"
|
||||||
LOGIN_URL = "/accounts/login/social/gitlab"
|
LOGIN_URL = "/accounts/login/social/gitlab"
|
||||||
SIGNUP_URL = "/accounts/register/social/gitlab"
|
SIGNUP_URL = "/accounts/register/social/gitlab"
|
||||||
AUTHORIZATION_URL = "https://gitlab.com/oauth/authorize"
|
AUTHORIZATION_URL = "https://gitlab.com/oauth/authorize"
|
||||||
@@ -1797,6 +1837,7 @@ class GoogleAuthBackendTest(SocialAuthBase):
|
|||||||
|
|
||||||
BACKEND_CLASS = GoogleAuthBackend
|
BACKEND_CLASS = GoogleAuthBackend
|
||||||
CLIENT_KEY_SETTING = "SOCIAL_AUTH_GOOGLE_KEY"
|
CLIENT_KEY_SETTING = "SOCIAL_AUTH_GOOGLE_KEY"
|
||||||
|
CLIENT_SECRET_SETTING = "SOCIAL_AUTH_GOOGLE_SECRET"
|
||||||
LOGIN_URL = "/accounts/login/social/google"
|
LOGIN_URL = "/accounts/login/social/google"
|
||||||
SIGNUP_URL = "/accounts/register/social/google"
|
SIGNUP_URL = "/accounts/register/social/google"
|
||||||
AUTHORIZATION_URL = "https://accounts.google.com/o/oauth2/auth"
|
AUTHORIZATION_URL = "https://accounts.google.com/o/oauth2/auth"
|
||||||
@@ -2473,6 +2514,11 @@ class TestDevAuthBackend(ZulipTestCase):
|
|||||||
response = self.client_post('/accounts/login/local/', data)
|
response = self.client_post('/accounts/login/local/', data)
|
||||||
self.assertRedirects(response, reverse('dev_not_supported'))
|
self.assertRedirects(response, reverse('dev_not_supported'))
|
||||||
|
|
||||||
|
def test_dev_direct_production_config_error(self) -> None:
|
||||||
|
result = self.client_get("/config-error/dev")
|
||||||
|
self.assertEqual(result.status_code, 200)
|
||||||
|
self.assert_in_success_response(["DevAuthBackend"], result)
|
||||||
|
|
||||||
def test_login_failure_due_to_nonexistent_user(self) -> None:
|
def test_login_failure_due_to_nonexistent_user(self) -> None:
|
||||||
email = 'nonexisting@zulip.com'
|
email = 'nonexisting@zulip.com'
|
||||||
data = {'direct_email': email}
|
data = {'direct_email': email}
|
||||||
|
|||||||
@@ -353,114 +353,12 @@ class AboutPageTest(ZulipTestCase):
|
|||||||
expected_result = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
|
expected_result = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
|
||||||
self.assertEqual(split_by(flat_list, 3, None), expected_result)
|
self.assertEqual(split_by(flat_list, 3, None), expected_result)
|
||||||
|
|
||||||
class ConfigErrorTest(ZulipTestCase):
|
class SmtpConfigErrorTest(ZulipTestCase):
|
||||||
@override_settings(SOCIAL_AUTH_GOOGLE_KEY=None)
|
|
||||||
def test_google(self) -> None:
|
|
||||||
result = self.client_get("/accounts/login/social/google")
|
|
||||||
self.assertEqual(result.status_code, 302)
|
|
||||||
self.assertEqual(result.url, '/config-error/google')
|
|
||||||
result = self.client_get(result.url)
|
|
||||||
self.assert_in_success_response(["social_auth_google_key"], result)
|
|
||||||
self.assert_in_success_response(["social_auth_google_secret"], result)
|
|
||||||
self.assert_in_success_response(["zproject/dev-secrets.conf"], result)
|
|
||||||
self.assert_not_in_success_response(["SOCIAL_AUTH_GOOGLE_KEY"], result)
|
|
||||||
self.assert_not_in_success_response(["zproject/dev_settings.py"], result)
|
|
||||||
self.assert_not_in_success_response(["/etc/zulip/settings.py"], result)
|
|
||||||
self.assert_not_in_success_response(["/etc/zulip/zulip-secrets.conf"], result)
|
|
||||||
|
|
||||||
@override_settings(SOCIAL_AUTH_GOOGLE_KEY=None)
|
|
||||||
@override_settings(DEVELOPMENT=False)
|
|
||||||
def test_google_production_error(self) -> None:
|
|
||||||
result = self.client_get("/accounts/login/social/google")
|
|
||||||
self.assertEqual(result.status_code, 302)
|
|
||||||
self.assertEqual(result.url, '/config-error/google')
|
|
||||||
result = self.client_get(result.url)
|
|
||||||
self.assert_in_success_response(["SOCIAL_AUTH_GOOGLE_KEY"], result)
|
|
||||||
self.assert_in_success_response(["/etc/zulip/settings.py"], result)
|
|
||||||
self.assert_in_success_response(["social_auth_google_secret"], result)
|
|
||||||
self.assert_in_success_response(["/etc/zulip/zulip-secrets.conf"], result)
|
|
||||||
self.assert_not_in_success_response(["social_auth_google_key"], result)
|
|
||||||
self.assert_not_in_success_response(["zproject/dev_settings.py"], result)
|
|
||||||
self.assert_not_in_success_response(["zproject/dev-secrets.conf"], result)
|
|
||||||
|
|
||||||
@override_settings(SOCIAL_AUTH_GITHUB_KEY=None)
|
|
||||||
def test_github(self) -> None:
|
|
||||||
result = self.client_get("/accounts/login/social/github")
|
|
||||||
self.assertEqual(result.status_code, 302)
|
|
||||||
self.assertEqual(result.url, '/config-error/github')
|
|
||||||
result = self.client_get(result.url)
|
|
||||||
self.assert_in_success_response(["social_auth_github_key"], result)
|
|
||||||
self.assert_in_success_response(["social_auth_github_secret"], result)
|
|
||||||
self.assert_in_success_response(["zproject/dev-secrets.conf"], result)
|
|
||||||
self.assert_not_in_success_response(["SOCIAL_AUTH_GITHUB_KEY"], result)
|
|
||||||
self.assert_not_in_success_response(["zproject/dev_settings.py"], result)
|
|
||||||
self.assert_not_in_success_response(["/etc/zulip/settings.py"], result)
|
|
||||||
self.assert_not_in_success_response(["/etc/zulip/zulip-secrets.conf"], result)
|
|
||||||
|
|
||||||
@override_settings(SOCIAL_AUTH_GITHUB_KEY=None)
|
|
||||||
@override_settings(DEVELOPMENT=False)
|
|
||||||
def test_github_production_error(self) -> None:
|
|
||||||
"""Test the !DEVELOPMENT code path of config-error."""
|
|
||||||
result = self.client_get("/accounts/login/social/github")
|
|
||||||
self.assertEqual(result.status_code, 302)
|
|
||||||
self.assertEqual(result.url, '/config-error/github')
|
|
||||||
result = self.client_get(result.url)
|
|
||||||
self.assert_in_success_response(["SOCIAL_AUTH_GITHUB_KEY"], result)
|
|
||||||
self.assert_in_success_response(["/etc/zulip/settings.py"], result)
|
|
||||||
self.assert_in_success_response(["social_auth_github_secret"], result)
|
|
||||||
self.assert_in_success_response(["/etc/zulip/zulip-secrets.conf"], result)
|
|
||||||
self.assert_not_in_success_response(["social_auth_github_key"], result)
|
|
||||||
self.assert_not_in_success_response(["zproject/dev_settings.py"], result)
|
|
||||||
self.assert_not_in_success_response(["zproject/dev-secrets.conf"], result)
|
|
||||||
|
|
||||||
@override_settings(SOCIAL_AUTH_GITLAB_KEY=None)
|
|
||||||
def test_gitlab(self) -> None:
|
|
||||||
result = self.client_get("/accounts/login/social/gitlab")
|
|
||||||
self.assertEqual(result.status_code, 302)
|
|
||||||
self.assertEqual(result.url, '/config-error/gitlab')
|
|
||||||
result = self.client_get(result.url)
|
|
||||||
self.assert_in_success_response(["social_auth_gitlab_key"], result)
|
|
||||||
self.assert_in_success_response(["social_auth_gitlab_secret"], result)
|
|
||||||
self.assert_in_success_response(["zproject/dev-secrets.conf"], result)
|
|
||||||
self.assert_not_in_success_response(["SOCIAL_AUTH_GITLAB_KEY"], result)
|
|
||||||
self.assert_not_in_success_response(["zproject/dev_settings.py"], result)
|
|
||||||
self.assert_not_in_success_response(["/etc/zulip/settings.py"], result)
|
|
||||||
self.assert_not_in_success_response(["/etc/zulip/zulip-secrets.conf"], result)
|
|
||||||
|
|
||||||
@override_settings(SOCIAL_AUTH_GITLAB_KEY=None)
|
|
||||||
@override_settings(DEVELOPMENT=False)
|
|
||||||
def test_gitlab_production_error(self) -> None:
|
|
||||||
"""Test the !DEVELOPMENT code path of config-error."""
|
|
||||||
result = self.client_get("/accounts/login/social/gitlab")
|
|
||||||
self.assertEqual(result.status_code, 302)
|
|
||||||
self.assertEqual(result.url, '/config-error/gitlab')
|
|
||||||
result = self.client_get(result.url)
|
|
||||||
self.assert_in_success_response(["SOCIAL_AUTH_GITLAB_KEY"], result)
|
|
||||||
self.assert_in_success_response(["/etc/zulip/settings.py"], result)
|
|
||||||
self.assert_in_success_response(["social_auth_gitlab_secret"], result)
|
|
||||||
self.assert_in_success_response(["/etc/zulip/zulip-secrets.conf"], result)
|
|
||||||
self.assert_not_in_success_response(["social_auth_gitlab_key"], result)
|
|
||||||
self.assert_not_in_success_response(["zproject/dev_settings.py"], result)
|
|
||||||
self.assert_not_in_success_response(["zproject/dev-secrets.conf"], result)
|
|
||||||
|
|
||||||
@override_settings(SOCIAL_AUTH_SAML_ENABLED_IDPS=None)
|
|
||||||
def test_saml_error(self) -> None:
|
|
||||||
result = self.client_get("/accounts/login/social/saml")
|
|
||||||
self.assertEqual(result.status_code, 302)
|
|
||||||
self.assertEqual(result.url, '/config-error/saml')
|
|
||||||
result = self.client_get(result.url)
|
|
||||||
self.assert_in_success_response(["SAML authentication"], result)
|
|
||||||
|
|
||||||
def test_smtp_error(self) -> None:
|
def test_smtp_error(self) -> None:
|
||||||
result = self.client_get("/config-error/smtp")
|
result = self.client_get("/config-error/smtp")
|
||||||
self.assertEqual(result.status_code, 200)
|
self.assertEqual(result.status_code, 200)
|
||||||
self.assert_in_success_response(["email configuration"], result)
|
self.assert_in_success_response(["email configuration"], result)
|
||||||
|
|
||||||
def test_dev_direct_production_error(self) -> None:
|
|
||||||
result = self.client_get("/config-error/dev")
|
|
||||||
self.assertEqual(result.status_code, 200)
|
|
||||||
self.assert_in_success_response(["DevAuthBackend"], result)
|
|
||||||
|
|
||||||
class PlansPageTest(ZulipTestCase):
|
class PlansPageTest(ZulipTestCase):
|
||||||
def test_plans_auth(self) -> None:
|
def test_plans_auth(self) -> None:
|
||||||
# Test root domain
|
# Test root domain
|
||||||
|
|||||||
Reference in New Issue
Block a user