From 2c3e26a322501aef73d887fc2346ef7e1610fdff Mon Sep 17 00:00:00 2001 From: Jonathan King Date: Wed, 11 May 2022 16:33:01 -0400 Subject: [PATCH] sso: Add test for RHSSO OAuth service (PROJQUAY-2056) (#1317) - Add test for RHSSOOAuthService class --- oauth/loginmanager.py | 2 +- oauth/services/rhsso.py | 4 +++- oauth/test/test_loginmanager.py | 9 +++++++++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/oauth/loginmanager.py b/oauth/loginmanager.py index 3159916cc..02cfb7863 100644 --- a/oauth/loginmanager.py +++ b/oauth/loginmanager.py @@ -28,7 +28,7 @@ class OAuthLoginManager(object): if custom_service.login_enabled(config): self.services.append(custom_service) else: - prefix = key.rstrip("_LOGIN_CONFIG").lower() + prefix = key[: -len("_LOGIN_CONFIG")].lower() if prefix in PREFIX_BLACKLIST: raise Exception("Cannot use reserved config name %s" % key) if prefix == "rhsso": diff --git a/oauth/services/rhsso.py b/oauth/services/rhsso.py index f1e8b2cf6..29059fae6 100644 --- a/oauth/services/rhsso.py +++ b/oauth/services/rhsso.py @@ -32,7 +32,9 @@ class RHSSOOAuthService(OIDCLoginService): ) logger.debug("Got result from export compliance service: " + result.json()) if result.status_code != 200: - raise OAuthLoginException(str(result.json()["errors"])) + raise OAuthLoginException(str(result.json())) + if result.json()["result"] != "OK": + raise OAuthLoginException(str(result.json()["description"])) except Exception as e: raise OAuthLoginException(str(e)) diff --git a/oauth/test/test_loginmanager.py b/oauth/test/test_loginmanager.py index dbfbbb536..e332e1528 100644 --- a/oauth/test/test_loginmanager.py +++ b/oauth/test/test_loginmanager.py @@ -2,6 +2,7 @@ from oauth.loginmanager import OAuthLoginManager from oauth.services.github import GithubOAuthService from oauth.services.google import GoogleOAuthService from oauth.oidc import OIDCLoginService +from oauth.services.rhsso import RHSSOOAuthService def test_login_manager_github(): @@ -66,3 +67,11 @@ def test_multiple_oidc(): assert len(loginmanager.services) == 2 assert isinstance(loginmanager.services[0], OIDCLoginService) assert isinstance(loginmanager.services[1], OIDCLoginService) + + +def test_rhsso(): + config = {"RHSSO_LOGIN_CONFIG": {}} + + loginmanager = OAuthLoginManager(config) + assert len(loginmanager.services) == 1 + assert isinstance(loginmanager.services[0], RHSSOOAuthService)