Skip to content

Commit 5a8d60d

Browse files
author
Petter H. Juliussen
authored
Merge pull request #106 from oslokommune/299-update-team-members
T#299 Add method for updating team members
2 parents d2b9454 + 65e161f commit 5a8d60d

File tree

3 files changed

+45
-0
lines changed

3 files changed

+45
-0
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
## ?.?.?
2+
3+
* New method `TeamClient.get_user_by_username` for looking up Keycloak users.
4+
* New method `TeamClient.update_team_members` for adding and/or removing
5+
members to/from a team.
6+
17
## 2.2.1
28

39
* Fixed a bug in `TeamClient.update_team_attribute` when `value` is falsy.

okdata/sdk/team/client.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,3 +67,15 @@ def update_team_attribute(self, team_id, attribute, value):
6767
return self.patch(
6868
url, {"attributes": {attribute: [value] if value else []}}
6969
).json()
70+
71+
def update_team_members(self, team_id, usernames):
72+
"""Update members of a team and return the resulting member list."""
73+
url = "{}/teams/{}/members".format(self.api_url, quote(team_id))
74+
log.info(f"SDK:Updating team members: {url}")
75+
return self.put(url, usernames).json()
76+
77+
def get_user_by_username(self, username):
78+
"""Search Keycloak user by `username`."""
79+
url = "{}/teams/users/{}".format(self.api_url, quote(username))
80+
log.info(f"SDK:Searching user: {url}")
81+
return self.get(url).json()

tests/team/test_client.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,3 +77,30 @@ def test_update_team_attribute(requests_mock):
7777
status_code=200,
7878
)
7979
assert TeamClient().update_team_attribute(team_id, "a", "b") == team
80+
81+
82+
def test_update_team_members(requests_mock):
83+
team_id = "abc"
84+
members = [
85+
{"name": "Foo", "username": "foo"},
86+
{"name": "Bar", "username": "bar"},
87+
]
88+
requests_mock.register_uri(
89+
"PUT",
90+
re.compile(f"teams/{team_id}/members"),
91+
text=json.dumps(members),
92+
status_code=200,
93+
)
94+
assert TeamClient().update_team_members(team_id, ["foo", "bar"]) == members
95+
96+
97+
def test_get_user_by_username(requests_mock):
98+
username = "foo"
99+
member = {"name": "Foo", "username": username}
100+
requests_mock.register_uri(
101+
"GET",
102+
re.compile(f"teams/users/{username}"),
103+
text=json.dumps(member),
104+
status_code=200,
105+
)
106+
assert TeamClient().get_user_by_username("foo") == member

0 commit comments

Comments
 (0)