tests/e2e: fix tests to work without docker network_mode host (#8035)
* tests/e2e: start fixing tests to work without docker network_mode host Signed-off-by: Jens Langhammer <jens@goauthentik.io> * migrate saml and oauth source Signed-off-by: Jens Langhammer <jens@goauthentik.io> * update deps (mainly to update lxml which was causing a segfault on macos) Signed-off-by: Jens Langhammer <jens@goauthentik.io> * migrate saml source Signed-off-by: Jens Langhammer <jens@goauthentik.io> * format Signed-off-by: Jens Langhammer <jens@goauthentik.io> * fix sentry env in testing Signed-off-by: Jens Langhammer <jens@goauthentik.io> * make oauth types name and slug make more sense Signed-off-by: Jens Langhammer <jens@goauthentik.io> * migrate ldap Signed-off-by: Jens Langhammer <jens@goauthentik.io> * make tests run with --keepdb? partially? Signed-off-by: Jens Langhammer <jens@goauthentik.io> * migrate radius Signed-off-by: Jens Langhammer <jens@goauthentik.io> * fix proxy provider first half Signed-off-by: Jens Langhammer <jens@goauthentik.io> * install libxml2-dev to work around seg fault? Signed-off-by: Jens Langhammer <jens@goauthentik.io> * actually that doesn't change anything since use latest libxml2 Signed-off-by: Jens Langhammer <jens@goauthentik.io> * format Signed-off-by: Jens Langhammer <jens@goauthentik.io> * refactor did not refactor the code Signed-off-by: Jens Langhammer <jens@goauthentik.io> --------- Signed-off-by: Jens Langhammer <jens@goauthentik.io>
This commit is contained in:
@ -40,10 +40,9 @@ class PytestTestRunner(DiscoverRunner): # pragma: no cover
|
||||
f"ghcr.io/goauthentik/dev-%(type)s:{get_docker_tag()}",
|
||||
)
|
||||
CONFIG.set("error_reporting.sample_rate", 0)
|
||||
sentry_init(
|
||||
environment="testing",
|
||||
send_default_pii=True,
|
||||
)
|
||||
CONFIG.set("error_reporting.environment", "testing")
|
||||
CONFIG.set("error_reporting.send_pii", True)
|
||||
sentry_init()
|
||||
|
||||
@classmethod
|
||||
def add_arguments(cls, parser: ArgumentParser):
|
||||
|
||||
@ -99,7 +99,9 @@ class OAuthSourceSerializer(SourceSerializer):
|
||||
]:
|
||||
if getattr(provider_type, url, None) is None:
|
||||
if url not in attrs:
|
||||
raise ValidationError(f"{url} is required for provider {provider_type.name}")
|
||||
raise ValidationError(
|
||||
f"{url} is required for provider {provider_type.verbose_name}"
|
||||
)
|
||||
return attrs
|
||||
|
||||
class Meta:
|
||||
|
||||
@ -104,8 +104,8 @@ class AppleType(SourceType):
|
||||
|
||||
callback_view = AppleOAuth2Callback
|
||||
redirect_view = AppleOAuthRedirect
|
||||
name = "Apple"
|
||||
slug = "apple"
|
||||
verbose_name = "Apple"
|
||||
name = "apple"
|
||||
|
||||
authorization_url = "https://appleid.apple.com/auth/authorize"
|
||||
access_token_url = "https://appleid.apple.com/auth/token" # nosec
|
||||
|
||||
@ -43,8 +43,8 @@ class AzureADType(SourceType):
|
||||
|
||||
callback_view = AzureADOAuthCallback
|
||||
redirect_view = AzureADOAuthRedirect
|
||||
name = "Azure AD"
|
||||
slug = "azuread"
|
||||
verbose_name = "Azure AD"
|
||||
name = "azuread"
|
||||
|
||||
urls_customizable = True
|
||||
|
||||
|
||||
@ -36,8 +36,8 @@ class DiscordType(SourceType):
|
||||
|
||||
callback_view = DiscordOAuth2Callback
|
||||
redirect_view = DiscordOAuthRedirect
|
||||
name = "Discord"
|
||||
slug = "discord"
|
||||
verbose_name = "Discord"
|
||||
name = "discord"
|
||||
|
||||
authorization_url = "https://discord.com/api/oauth2/authorize"
|
||||
access_token_url = "https://discord.com/api/oauth2/token" # nosec
|
||||
|
||||
@ -48,8 +48,8 @@ class FacebookType(SourceType):
|
||||
|
||||
callback_view = FacebookOAuth2Callback
|
||||
redirect_view = FacebookOAuthRedirect
|
||||
name = "Facebook"
|
||||
slug = "facebook"
|
||||
verbose_name = "Facebook"
|
||||
name = "facebook"
|
||||
|
||||
authorization_url = "https://www.facebook.com/v7.0/dialog/oauth"
|
||||
access_token_url = "https://graph.facebook.com/v7.0/oauth/access_token" # nosec
|
||||
|
||||
@ -68,8 +68,8 @@ class GitHubType(SourceType):
|
||||
|
||||
callback_view = GitHubOAuth2Callback
|
||||
redirect_view = GitHubOAuthRedirect
|
||||
name = "GitHub"
|
||||
slug = "github"
|
||||
verbose_name = "GitHub"
|
||||
name = "github"
|
||||
|
||||
urls_customizable = True
|
||||
|
||||
|
||||
@ -34,8 +34,8 @@ class GoogleType(SourceType):
|
||||
|
||||
callback_view = GoogleOAuth2Callback
|
||||
redirect_view = GoogleOAuthRedirect
|
||||
name = "Google"
|
||||
slug = "google"
|
||||
verbose_name = "Google"
|
||||
name = "google"
|
||||
|
||||
authorization_url = "https://accounts.google.com/o/oauth2/auth"
|
||||
access_token_url = "https://oauth2.googleapis.com/token" # nosec
|
||||
|
||||
@ -63,7 +63,7 @@ class MailcowType(SourceType):
|
||||
|
||||
callback_view = MailcowOAuth2Callback
|
||||
redirect_view = MailcowOAuthRedirect
|
||||
name = "Mailcow"
|
||||
slug = "mailcow"
|
||||
verbose_name = "Mailcow"
|
||||
name = "mailcow"
|
||||
|
||||
urls_customizable = True
|
||||
|
||||
@ -42,7 +42,7 @@ class OpenIDConnectType(SourceType):
|
||||
|
||||
callback_view = OpenIDConnectOAuth2Callback
|
||||
redirect_view = OpenIDConnectOAuthRedirect
|
||||
name = "OpenID Connect"
|
||||
slug = "openidconnect"
|
||||
verbose_name = "OpenID Connect"
|
||||
name = "openidconnect"
|
||||
|
||||
urls_customizable = True
|
||||
|
||||
@ -42,7 +42,7 @@ class OktaType(SourceType):
|
||||
|
||||
callback_view = OktaOAuth2Callback
|
||||
redirect_view = OktaOAuthRedirect
|
||||
name = "Okta"
|
||||
slug = "okta"
|
||||
verbose_name = "Okta"
|
||||
name = "okta"
|
||||
|
||||
urls_customizable = True
|
||||
|
||||
@ -43,8 +43,8 @@ class PatreonType(SourceType):
|
||||
|
||||
callback_view = PatreonOAuthCallback
|
||||
redirect_view = PatreonOAuthRedirect
|
||||
name = "Patreon"
|
||||
slug = "patreon"
|
||||
verbose_name = "Patreon"
|
||||
name = "patreon"
|
||||
|
||||
authorization_url = "https://www.patreon.com/oauth2/authorize"
|
||||
access_token_url = "https://www.patreon.com/api/oauth2/token" # nosec
|
||||
|
||||
@ -51,8 +51,8 @@ class RedditType(SourceType):
|
||||
|
||||
callback_view = RedditOAuth2Callback
|
||||
redirect_view = RedditOAuthRedirect
|
||||
name = "Reddit"
|
||||
slug = "reddit"
|
||||
verbose_name = "Reddit"
|
||||
name = "reddit"
|
||||
|
||||
authorization_url = "https://www.reddit.com/api/v1/authorize"
|
||||
access_token_url = "https://www.reddit.com/api/v1/access_token" # nosec
|
||||
|
||||
@ -28,7 +28,7 @@ class SourceType:
|
||||
callback_view = OAuthCallback
|
||||
redirect_view = OAuthRedirect
|
||||
name: str = "default"
|
||||
slug: str = "default"
|
||||
verbose_name: str = "Default source type"
|
||||
|
||||
urls_customizable = False
|
||||
|
||||
@ -41,7 +41,7 @@ class SourceType:
|
||||
|
||||
def icon_url(self) -> str:
|
||||
"""Get Icon URL for login"""
|
||||
return static(f"authentik/sources/{self.slug}.svg")
|
||||
return static(f"authentik/sources/{self.name}.svg")
|
||||
|
||||
def login_challenge(self, source: OAuthSource, request: HttpRequest) -> Challenge:
|
||||
"""Allow types to return custom challenges"""
|
||||
@ -77,20 +77,20 @@ class SourceTypeRegistry:
|
||||
|
||||
def get_name_tuple(self):
|
||||
"""Get list of tuples of all registered names"""
|
||||
return [(x.slug, x.name) for x in self.__sources]
|
||||
return [(x.name, x.verbose_name) for x in self.__sources]
|
||||
|
||||
def find_type(self, type_name: str) -> Type[SourceType]:
|
||||
"""Find type based on source"""
|
||||
found_type = None
|
||||
for src_type in self.__sources:
|
||||
if src_type.slug == type_name:
|
||||
if src_type.name == type_name:
|
||||
return src_type
|
||||
if not found_type:
|
||||
found_type = SourceType
|
||||
LOGGER.warning(
|
||||
"no matching type found, using default",
|
||||
wanted=type_name,
|
||||
have=[x.slug for x in self.__sources],
|
||||
have=[x.name for x in self.__sources],
|
||||
)
|
||||
return found_type
|
||||
|
||||
|
||||
@ -49,8 +49,8 @@ class TwitchType(SourceType):
|
||||
|
||||
callback_view = TwitchOAuth2Callback
|
||||
redirect_view = TwitchOAuthRedirect
|
||||
name = "Twitch"
|
||||
slug = "twitch"
|
||||
verbose_name = "Twitch"
|
||||
name = "twitch"
|
||||
|
||||
authorization_url = "https://id.twitch.tv/oauth2/authorize"
|
||||
access_token_url = "https://id.twitch.tv/oauth2/token" # nosec
|
||||
|
||||
@ -66,8 +66,8 @@ class TwitterType(SourceType):
|
||||
|
||||
callback_view = TwitterOAuthCallback
|
||||
redirect_view = TwitterOAuthRedirect
|
||||
name = "Twitter"
|
||||
slug = "twitter"
|
||||
verbose_name = "Twitter"
|
||||
name = "twitter"
|
||||
|
||||
authorization_url = "https://twitter.com/i/oauth2/authorize"
|
||||
access_token_url = "https://api.twitter.com/2/oauth2/token" # nosec
|
||||
|
||||
Reference in New Issue
Block a user