def test_check_for_fields_in_custom_user_model(self): from django.contrib.auth import get_user_model with wiki_override_settings(WIKI_ACCOUNT_HANDLING=False, AUTH_USER_MODEL="testdata.VeryCustomUser"): errors = registry.run_checks( tags=[Tags.fields_in_custom_user_model]) self.assertEqual(errors, []) with wiki_override_settings(WIKI_ACCOUNT_HANDLING=True, AUTH_USER_MODEL="testdata.VeryCustomUser"): errors = registry.run_checks( tags=[Tags.fields_in_custom_user_model]) expected_errors = [ Error( "%s.%s.%s refers to a field that is not of type %s" % ( get_user_model().__module__, get_user_model().__name__, field_fetcher, required_field_type, ), hint= "If you have your own login/logout views, turn off settings.WIKI_ACCOUNT_HANDLING", obj=get_user_model(), id="wiki.%s" % error_code, ) for check_function_name, field_fetcher, required_field_type, error_code in FIELDS_IN_CUSTOM_USER_MODEL ] self.assertEqual(errors, expected_errors) with wiki_override_settings(WIKI_ACCOUNT_HANDLING=True): errors = registry.run_checks( tags=[Tags.fields_in_custom_user_model]) self.assertEqual(errors, [])
def test_required_installed_apps(self): for app in REQUIRED_INSTALLED_APPS: with self.settings(INSTALLED_APPS=_remove(settings.INSTALLED_APPS, app[0])): errors = registry.run_checks(tags=[Tags.required_installed_apps]) expected_errors = [ Error("needs %s in INSTALLED_APPS" % app[1], id="wiki.%s" % app[2],) ] self.assertEqual(errors, expected_errors)
def test_required_installed_apps(self): for app in REQUIRED_INSTALLED_APPS: with self.settings(INSTALLED_APPS=_remove(settings.INSTALLED_APPS, app[0])): errors = registry.run_checks(tags=[Tags.required_installed_apps]) expected_errors = [ Error( 'needs %s in INSTALLED_APPS' % app[1], id='wiki.%s' % app[2], ) ] self.assertEqual(errors, expected_errors)
def test_check_for_fields_in_custom_user_model(self): from django.contrib.auth import get_user_model with wiki_override_settings(WIKI_ACCOUNT_HANDLING=False, AUTH_USER_MODEL='testdata.VeryCustomUser'): errors = registry.run_checks(tags=[Tags.fields_in_custom_user_model]) self.assertEqual(errors, []) with wiki_override_settings(WIKI_ACCOUNT_HANDLING=True, AUTH_USER_MODEL='testdata.VeryCustomUser'): errors = registry.run_checks(tags=[Tags.fields_in_custom_user_model]) expected_errors = [ Error( '%s.%s.%s refers to a field that is not of type %s' % ( get_user_model().__module__, get_user_model().__name__, field_fetcher, required_field_type), hint='If you have your own login/logout views, turn off settings.WIKI_ACCOUNT_HANDLING', obj=get_user_model(), id='wiki.%s' % error_code, ) for check_function_name, field_fetcher, required_field_type, error_code in FIELDS_IN_CUSTOM_USER_MODEL] self.assertEqual(errors, expected_errors) with wiki_override_settings(WIKI_ACCOUNT_HANDLING=True): errors = registry.run_checks(tags=[Tags.fields_in_custom_user_model]) self.assertEqual(errors, [])
def test_required_installed_apps(self): for app in REQUIRED_INSTALLED_APPS: with self.modify_settings(INSTALLED_APPS={'remove': [app[0]]}): errors = registry.run_checks( tags=[Tags.required_installed_apps]) expected_errors = [ Error( 'needs %s in INSTALLED_APPS' % app[1], id='wiki.%s' % app[2], ) ] self.assertEqual(errors, expected_errors)
def test_run_checks_all_things_that_can_go_wrong(settings): settings.CDN_URL = "http://cdn.example.com" settings.APP_SERVER_URL = "http://app.example.com" settings.OIDC_REMOTE_AUTH_HEADER = "Y_HTTP_HEADER" settings.OIDC_LOGOUT_URL = None settings.USE_OIDC = True errors = run_checks() assert errors != [] error_ids = [x.id for x in errors] assert checks.ERROR_MISCONFIGURED_CDN_URL_SLASH in error_ids assert checks.ERROR_MISCONFIGURED_CDN_URL_HTTPS in error_ids assert checks.ERROR_MISCONFIGURED_APP_SERVER_URL_SLASH in error_ids assert checks.ERROR_MISCONFIGURED_APP_SERVER_URL_HTTPS in error_ids assert checks.ERROR_MISCONFIGURED_OIDC_LOGOUT_URL in error_ids assert checks.WARNING_MISCONFIGURED_OIDC_REMOTE_AUTH_HEADER_PREFIX in error_ids
def test_required_context_processors(self): for context_processor in REQUIRED_CONTEXT_PROCESSORS: TEMPLATES = copy.deepcopy(settings.TEMPLATES) TEMPLATES[0]["OPTIONS"]["context_processors"] = [ cp for cp in TEMPLATES[0]["OPTIONS"]["context_processors"] if cp != context_processor[0] ] with self.settings(TEMPLATES=TEMPLATES): errors = registry.run_checks(tags=[Tags.context_processors]) expected_errors = [ Error( "needs %s in TEMPLATES[*]['OPTIONS']['context_processors']" % context_processor[0], id="wiki.%s" % context_processor[1], ) ] self.assertEqual(errors, expected_errors)
def test_required_context_processors(self): for context_processor in REQUIRED_CONTEXT_PROCESSORS: TEMPLATES = copy.deepcopy(settings.TEMPLATES) TEMPLATES[0]['OPTIONS']['context_processors'] = [ cp for cp in TEMPLATES[0]['OPTIONS']['context_processors'] if cp != context_processor[0] ] with self.settings(TEMPLATES=TEMPLATES): errors = registry.run_checks(tags=[Tags.context_processors]) expected_errors = [ Error( "needs %s in TEMPLATE['OPTIONS']['context_processors']" % context_processor[0], id='wiki.%s' % context_processor[1], ) ] self.assertEqual(errors, expected_errors)
def test_run_checks_happy_path(): errors = run_checks() assert errors == []