Skip to content

Commit 9d95b9f

Browse files
authored
Merge pull request #72 from oslokommune/DP-1944-permission-client-tests
DP-1944 Add unit tests for the permission client
2 parents 01364ee + 4cad277 commit 9d95b9f

3 files changed

Lines changed: 65 additions & 1 deletion

File tree

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## ?.?.?
2+
3+
* Added support for the new [permission API](https://github.com/oslokommune/okdata-permission-api).
4+
15
## 0.7.0
26

37
* `Dataset.update_dataset` now supports partial metadata updates when the

okdata/sdk/permission/client.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,15 @@ def update_permission(
4747
return self.put(url, data, retries=retries).json()
4848

4949
def get_my_permissions(self, retries=0):
50-
"""Return a list of permissions associated with the current user."""
50+
"""Return a dictionary of permissions associated with the current user.
51+
52+
The dictionary is on the form:
53+
54+
{
55+
"resource-name-1": {"scopes": ["scope-1", "scope-2"]},
56+
"resource-name-2": ...
57+
}
58+
"""
5159
url = f"{self.api_url}/my_permissions"
5260
log.info(f"SDK:Listing permissions from: {url}")
5361
return self.get(url, retries=retries).json()

tests/permission/test_client.py

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import re
2+
import json
3+
4+
from okdata.sdk.permission.client import PermissionClient
5+
from okdata.sdk.permission.user_types import User
6+
7+
8+
def test_update_permission(requests_mock):
9+
client = PermissionClient()
10+
matcher = re.compile("permissions/okdata%3Adataset%3Afoo")
11+
res = {
12+
"resource_name": "okdata:dataset:foo",
13+
"description": "Allows reading okdata:dataset:foo",
14+
"scope": "okdata:dataset:read",
15+
"teams": [],
16+
"users": ["janedoe"],
17+
"clients": [],
18+
}
19+
requests_mock.register_uri("PUT", matcher, text=json.dumps(res), status_code=200)
20+
assert (
21+
client.update_permission(
22+
"okdata:dataset:foo", "okdata:dataset:read", add_users=[User("janedoe")]
23+
)
24+
== res
25+
)
26+
27+
28+
def test_get_my_permissions(requests_mock):
29+
client = PermissionClient()
30+
matcher = re.compile("my_permissions")
31+
res = {
32+
"okdata:dataset:foo": {"scopes": ["okdata:dataset:read"]},
33+
}
34+
requests_mock.register_uri("GET", matcher, text=json.dumps(res), status_code=200)
35+
assert client.get_my_permissions() == res
36+
37+
38+
def test_get_permissions(requests_mock):
39+
client = PermissionClient()
40+
matcher = re.compile("permissions/okdata%3Adataset%3Afoo")
41+
res = [
42+
{
43+
"resource_name": "okdata:dataset:foo",
44+
"description": "Allows reading okdata:dataset:foo",
45+
"scope": "okdata:dataset:read",
46+
"teams": [],
47+
"users": ["janedoe"],
48+
"clients": [],
49+
}
50+
]
51+
requests_mock.register_uri("GET", matcher, text=json.dumps(res), status_code=200)
52+
assert client.get_permissions("okdata:dataset:foo") == res

0 commit comments

Comments
 (0)