Skip to content

Commit 47eb5c4

Browse files
authored
[MPT-14090] Added Accounts account-users user group endpoints (#91)
Added Accounts account-users user group endpoints https://softwareone.atlassian.net/browse/MPT-14090
2 parents 34064d6 + 3772c2e commit 47eb5c4

File tree

4 files changed

+142
-0
lines changed

4 files changed

+142
-0
lines changed
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
from mpt_api_client.http import AsyncService, Service
2+
from mpt_api_client.http.mixins import (
3+
AsyncCreateMixin,
4+
AsyncDeleteMixin,
5+
AsyncUpdateMixin,
6+
CreateMixin,
7+
DeleteMixin,
8+
UpdateMixin,
9+
)
10+
from mpt_api_client.models import Model
11+
12+
13+
class AccountUserGroup(Model):
14+
"""Account User Group resource."""
15+
16+
17+
class AccountUserGroupsServiceConfig:
18+
"""Account User Groups service configuration."""
19+
20+
_endpoint = "/public/v1/accounts/account-users/{account_user_id}/groups"
21+
_model_class = AccountUserGroup
22+
_collection_key = "data"
23+
24+
25+
class AccountUserGroupsService(
26+
CreateMixin[AccountUserGroup],
27+
DeleteMixin,
28+
UpdateMixin[AccountUserGroup],
29+
Service[AccountUserGroup],
30+
AccountUserGroupsServiceConfig,
31+
):
32+
"""Account User Groups service."""
33+
34+
35+
class AsyncAccountUserGroupsService(
36+
AsyncCreateMixin[AccountUserGroup],
37+
AsyncDeleteMixin,
38+
AsyncUpdateMixin[AccountUserGroup],
39+
AsyncService[AccountUserGroup],
40+
AccountUserGroupsServiceConfig,
41+
):
42+
"""Async Account User Groups service."""

mpt_api_client/resources/accounts/account_users.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@
44
CreateMixin,
55
)
66
from mpt_api_client.models import Model
7+
from mpt_api_client.resources.accounts.account_user_groups import (
8+
AccountUserGroupsService,
9+
AsyncAccountUserGroupsService,
10+
)
711
from mpt_api_client.resources.accounts.mixins import (
812
AsyncInvitableMixin,
913
InvitableMixin,
@@ -30,6 +34,13 @@ class AccountUsersService(
3034
):
3135
"""Account Users Service."""
3236

37+
def groups(self, account_user_id: str) -> AccountUserGroupsService:
38+
"""Return account user groups service."""
39+
return AccountUserGroupsService(
40+
http_client=self.http_client,
41+
endpoint_params={"account_user_id": account_user_id},
42+
)
43+
3344

3445
class AsyncAccountUsersService(
3546
AsyncCreateMixin[AccountUser],
@@ -38,3 +49,10 @@ class AsyncAccountUsersService(
3849
AccountUsersServiceConfig,
3950
):
4051
"""Asynchronous Account Users Service."""
52+
53+
def groups(self, account_user_id: str) -> AsyncAccountUserGroupsService:
54+
"""Return account user groups service."""
55+
return AsyncAccountUserGroupsService(
56+
http_client=self.http_client,
57+
endpoint_params={"account_user_id": account_user_id},
58+
)
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
import pytest
2+
3+
from mpt_api_client.resources.accounts.account_user_groups import (
4+
AccountUserGroupsService,
5+
AsyncAccountUserGroupsService,
6+
)
7+
8+
9+
@pytest.fixture
10+
def account_user_groups_service(http_client):
11+
return AccountUserGroupsService(
12+
http_client=http_client,
13+
endpoint_params={"account_user_id": "ACC-0000-0001"},
14+
)
15+
16+
17+
@pytest.fixture
18+
def async_account_user_groups_service(async_http_client):
19+
return AsyncAccountUserGroupsService(
20+
http_client=async_http_client,
21+
endpoint_params={"account_user_id": "ACC-0000-0001"},
22+
)
23+
24+
25+
def test_endpoint(account_user_groups_service):
26+
assert account_user_groups_service.endpoint == (
27+
"/public/v1/accounts/account-users/ACC-0000-0001/groups"
28+
)
29+
30+
31+
def test_async_endpoint(async_account_user_groups_service):
32+
assert async_account_user_groups_service.endpoint == (
33+
"/public/v1/accounts/account-users/ACC-0000-0001/groups"
34+
)
35+
36+
37+
@pytest.mark.parametrize(
38+
"method",
39+
["create", "update", "delete"],
40+
)
41+
def test_mixins_present(account_user_groups_service, method):
42+
assert hasattr(account_user_groups_service, method)
43+
44+
45+
@pytest.mark.parametrize(
46+
"method",
47+
["create", "update", "delete"],
48+
)
49+
def test_async_mixins_present(async_account_user_groups_service, method):
50+
assert hasattr(async_account_user_groups_service, method)

tests/resources/accounts/test_account_users.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
import pytest
22

3+
from mpt_api_client.resources.accounts.account_user_groups import (
4+
AccountUserGroupsService,
5+
AsyncAccountUserGroupsService,
6+
)
37
from mpt_api_client.resources.accounts.account_users import (
48
AccountUsersService,
59
AsyncAccountUsersService,
@@ -30,3 +34,31 @@ def test_methods_present(account_users_service, method):
3034
)
3135
def test_async_methods_present(async_account_users_service, method):
3236
assert hasattr(async_account_users_service, method)
37+
38+
39+
@pytest.mark.parametrize(
40+
("service_method", "expected_service_class"),
41+
[
42+
("groups", AccountUserGroupsService),
43+
],
44+
)
45+
def test_property_services(account_users_service, service_method, expected_service_class):
46+
service = getattr(account_users_service, service_method)("ACC-0000-0001")
47+
48+
assert isinstance(service, expected_service_class)
49+
assert service.endpoint_params == {"account_user_id": "ACC-0000-0001"}
50+
51+
52+
@pytest.mark.parametrize(
53+
("service_method", "expected_service_class"),
54+
[
55+
("groups", AsyncAccountUserGroupsService),
56+
],
57+
)
58+
def test_async_property_services(
59+
async_account_users_service, service_method, expected_service_class
60+
):
61+
service = getattr(async_account_users_service, service_method)("ACC-0000-0001")
62+
63+
assert isinstance(service, expected_service_class)
64+
assert service.endpoint_params == {"account_user_id": "ACC-0000-0001"}

0 commit comments

Comments
 (0)