|
|
@ -22,7 +22,32 @@ import re |
|
|
|
import pytest |
|
|
|
|
|
|
|
from keycloak.exceptions import KeycloakPermissionFormatError, PermissionDefinitionError |
|
|
|
from keycloak.uma_permissions import Resource, Scope, build_permission_param |
|
|
|
from keycloak.uma_permissions import ( |
|
|
|
Resource, |
|
|
|
Scope, |
|
|
|
build_permission_param, |
|
|
|
UMAPermission, |
|
|
|
AuthStatus, |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
def test_uma_permission_obj(): |
|
|
|
"""Test generic UMA permission.""" |
|
|
|
with pytest.raises(PermissionDefinitionError): |
|
|
|
UMAPermission(permission="bad") |
|
|
|
|
|
|
|
p1 = UMAPermission(permission=Resource("Resource")) |
|
|
|
assert p1.resource == "Resource" |
|
|
|
assert p1.scope == "" |
|
|
|
assert repr(p1) == "Resource" |
|
|
|
assert str(p1) == "Resource" |
|
|
|
|
|
|
|
p2 = UMAPermission(permission=Scope("Scope")) |
|
|
|
assert p2.resource == "" |
|
|
|
assert p2.scope == "Scope" |
|
|
|
assert repr(p2) == "#Scope" |
|
|
|
assert str(p2) == "#Scope" |
|
|
|
assert {p1, p1} != {p2, p2} |
|
|
|
|
|
|
|
|
|
|
|
def test_resource_with_scope_obj(): |
|
|
@ -174,3 +199,14 @@ def test_build_permission_misbuilt_dict_non_iterable(): |
|
|
|
with pytest.raises(KeycloakPermissionFormatError) as err: |
|
|
|
build_permission_param({"res1": 5}) |
|
|
|
assert err.match(re.escape("misbuilt permission {'res1': 5}")) |
|
|
|
|
|
|
|
|
|
|
|
def test_auth_status_bool(): |
|
|
|
"""Test bool method of AuthStatus.""" |
|
|
|
assert not bool(AuthStatus(is_logged_in=True, is_authorized=False, missing_permissions="")) |
|
|
|
assert bool(AuthStatus(is_logged_in=True, is_authorized=True, missing_permissions="")) |
|
|
|
|
|
|
|
|
|
|
|
def test_build_permission_without_scopes(): |
|
|
|
"""Test build permission param with scopes.""" |
|
|
|
assert build_permission_param(permissions={"Resource": None}) == {"Resource"} |