Browse Source

chore: add divergence test for uma and conneciton class

pull/566/head
David 11 months ago
parent
commit
b162153f41
  1. 18
      src/keycloak/keycloak_uma.py
  2. 26
      tests/test_connection.py
  3. 14
      tests/test_keycloak_uma.py

18
src/keycloak/keycloak_uma.py

@ -83,6 +83,24 @@ class KeycloakUMA:
"""
return url.format(**{k: quote_plus(v) for k, v in kwargs.items()})
@staticmethod
async def a_format_url(url, **kwargs):
"""Substitute url path parameters.
Given a parameterized url string, returns the string after url encoding and substituting
the given params. For example,
`format_url("https://myserver/{my_resource}/{id}", my_resource="hello world", id="myid")`
would produce `https://myserver/hello+world/myid`.
:param url: url string to format
:type url: str
:param kwargs: dict containing kwargs to substitute
:type kwargs: dict
:return: formatted string
:rtype: str
"""
return url.format(**{k: quote_plus(v) for k, v in kwargs.items()})
@property
def uma_well_known(self):
"""Get the well_known UMA2 config.

26
tests/test_connection.py

@ -39,3 +39,29 @@ def test_bad_connection():
cm.raw_post(path="bad", data={})
with pytest.raises(KeycloakConnectionError):
cm.raw_put(path="bad", data={})
@pytest.mark.asyncio
async def a_test_bad_connection():
"""Test bad connection."""
cm = ConnectionManager(base_url="http://not.real.domain")
with pytest.raises(KeycloakConnectionError):
await cm.a_raw_get(path="bad")
with pytest.raises(KeycloakConnectionError):
await cm.a_raw_delete(path="bad")
with pytest.raises(KeycloakConnectionError):
await cm.a_raw_post(path="bad", data={})
with pytest.raises(KeycloakConnectionError):
await cm.a_raw_put(path="bad", data={})
def test_counter_part():
"""Test that each function has its async counter part."""
con_methods = [
func for func in dir(ConnectionManager) if callable(getattr(ConnectionManager, func))
]
sync_methods = [method for method in con_methods if method.startswith("a_")]
for method in sync_methods:
async_method = method[2:]
assert (async_method in con_methods) is True

14
tests/test_keycloak_uma.py

@ -599,3 +599,17 @@ async def test_a_uma_permission_ticket(uma: KeycloakUMA):
uma.permission_ticket_create(permissions)
await uma.a_resource_set_delete(resource["_id"])
def test_counter_part():
"""Test that each function has its async counter part."""
uma_methods = [func for func in dir(KeycloakUMA) if callable(getattr(KeycloakUMA, func))]
sync_methods = [
method
for method in uma_methods
if not method.startswith("a_") and not method.startswith("_")
]
for method in sync_methods:
async_method = f"a_{method}"
assert (async_method in uma_methods) is True
Loading…
Cancel
Save