Skip to content
Snippets Groups Projects
Verified Commit 0de1ae1f authored by Antoine Lambert's avatar Antoine Lambert
Browse files

Fix typing errors with latest python-keycloak release (v5.3.1)

Latest python-keycloak release updated its typings that trigger
new mypy errors for swh-auth.
parent b8150c15
Branches master
No related tags found
1 merge request!67Fix typing errors with latest python-keycloak release (v5.3.1)
Pipeline #13017 passed
......@@ -2,5 +2,5 @@
# should match https://pypi.python.org/pypi names. For the full spec or
# dependency lines, see https://pip.readthedocs.org/en/1.1/requirements.html
click
python-keycloak >= 4
python-keycloak >= 5.3.1
pyyaml
......@@ -71,11 +71,8 @@ class KeycloakOpenIDConnect:
Returns:
A dictionary filled with OpenID Connect URIS.
"""
try:
return self._keycloak.well_known()
except AttributeError:
# python-keycloak < 1.0.0
return self._keycloak.well_know()
return self._keycloak.well_known()
def authorization_url(self, redirect_uri: str, **extra_params: str) -> str:
"""
......@@ -101,7 +98,7 @@ class KeycloakOpenIDConnect:
return auth_url
def authorization_code(
self, code: str, redirect_uri: str, **extra_params: str
self, code: str, redirect_uri: str, **extra_params
) -> Dict[str, Any]:
"""
Get OpenID Connect authentication tokens using Authorization
......@@ -125,7 +122,7 @@ class KeycloakOpenIDConnect:
)
def login(
self, username: str, password: str, scope: str = "openid", **extra_params: str
self, username: str, password: str, scope: str = "openid", **extra_params
) -> Dict[str, Any]:
"""
Get OpenID Connect authentication tokens using Direct Access Grant flow.
......@@ -240,7 +237,7 @@ def keycloak_error_message(keycloak_error: KeycloakError) -> str:
"""Transform a keycloak exception into an error message."""
try:
# keycloak error wrapped in a JSON document
msg_dict = json.loads(keycloak_error.error_message.decode())
msg_dict = json.loads(keycloak_error.error_message)
error_msg = msg_dict["error"]
error_desc = msg_dict.get("error_description")
if error_desc:
......
......@@ -67,40 +67,42 @@ class KeycloackOpenIDConnectMock(KeycloakOpenIDConnect):
self.user_groups = user_groups
self.realm_permissions = realm_permissions
self.client_permissions = client_permissions
self._keycloak.public_key = lambda: raw_realm_public_key
self._keycloak.well_known = lambda: {
"issuer": f"{self.server_url}realms/{self.realm_name}",
"authorization_endpoint": (
f"{self.server_url}realms/"
f"{self.realm_name}/protocol/"
"openid-connect/auth"
),
"token_endpoint": (
f"{self.server_url}realms/{self.realm_name}/"
"protocol/openid-connect/token"
),
"token_introspection_endpoint": (
f"{self.server_url}realms/"
f"{self.realm_name}/protocol/"
"openid-connect/token/"
"introspect"
),
"userinfo_endpoint": (
f"{self.server_url}realms/{self.realm_name}/"
"protocol/openid-connect/userinfo"
),
"end_session_endpoint": (
f"{self.server_url}realms/"
f"{self.realm_name}/protocol/"
"openid-connect/logout"
),
"jwks_uri": (
f"{self.server_url}realms/{self.realm_name}/"
"protocol/openid-connect/certs"
),
}
# for python-keycloak < 1.0.0:
self._keycloak.well_know = self._keycloak.well_known
setattr(self._keycloak, "public_key", lambda: raw_realm_public_key)
setattr(
self._keycloak,
"well_known",
lambda: {
"issuer": f"{self.server_url}realms/{self.realm_name}",
"authorization_endpoint": (
f"{self.server_url}realms/"
f"{self.realm_name}/protocol/"
"openid-connect/auth"
),
"token_endpoint": (
f"{self.server_url}realms/{self.realm_name}/"
"protocol/openid-connect/token"
),
"token_introspection_endpoint": (
f"{self.server_url}realms/"
f"{self.realm_name}/protocol/"
"openid-connect/token/"
"introspect"
),
"userinfo_endpoint": (
f"{self.server_url}realms/{self.realm_name}/"
"protocol/openid-connect/userinfo"
),
"end_session_endpoint": (
f"{self.server_url}realms/"
f"{self.realm_name}/protocol/"
"openid-connect/logout"
),
"jwks_uri": (
f"{self.server_url}realms/{self.realm_name}/"
"protocol/openid-connect/certs"
),
},
)
self.set_auth_success(auth_success, oidc_profile, user_info)
......@@ -156,7 +158,7 @@ class KeycloackOpenIDConnectMock(KeycloakOpenIDConnect):
"error": "invalid_grant",
"error_description": "Invalid user credentials",
}
error_message = json.dumps(error).encode()
error_message = json.dumps(error)
exception = KeycloakError(error_message=error_message, response_code=401)
self.authorization_code.side_effect = exception
self.authorization_url.side_effect = exception
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment