Skip to content

Commit b3ab1ee

Browse files
authored
Merge pull request #164 from Gituser010/PR
admin/api/accounts/{id}/users done
2 parents d0c6bf7 + 07aa09a commit b3ab1ee

File tree

5 files changed

+115
-3
lines changed

5 files changed

+115
-3
lines changed

tests/integration/conftest.py

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
Proxy, Backend, Metric, MappingRule,
1414
BackendMappingRule, BackendUsage,
1515
ActiveDoc, Webhooks, InvoiceState,
16-
ApplicationKey, ApplicationPlans)
16+
ApplicationKey, ApplicationPlans, AccountUser, AccountUsers)
1717

1818
load_dotenv()
1919

@@ -109,6 +109,11 @@ def update_account_params():
109109
return dict(org_name=name)
110110

111111

112+
@pytest.fixture(scope='module')
113+
def account_get_plan_params():
114+
return dict(name="Default")
115+
116+
112117
@pytest.fixture(scope='module')
113118
def account_params():
114119
suffix = get_suffix()
@@ -123,6 +128,26 @@ def account(account_params, api):
123128
cleanup(entity)
124129

125130

131+
@pytest.fixture(scope='module')
132+
def account_user_update_params():
133+
suffix = get_suffix()
134+
name = f"test-update-{suffix}"
135+
return dict(username=name, email=f"{name}@email.com")
136+
137+
138+
@pytest.fixture(scope='module')
139+
def account_user_params():
140+
suffix = get_suffix()
141+
name = f"test-{suffix}"
142+
return dict(username=name, email=f"{name}@email.com")
143+
144+
145+
@pytest.fixture(scope='module')
146+
def account_user(account,account_user_params) -> AccountUser:
147+
user = account.users.create(account_user_params)
148+
yield user
149+
cleanup(user)
150+
126151
@pytest.fixture(scope='module')
127152
def application_plan_params() -> dict:
128153
suffix = get_suffix()
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
from tests.integration import asserts
2+
from tests.integration.conftest import account
3+
4+
5+
def test_account_user_can_be_created(account_user, account_user_params):
6+
asserts.assert_resource(account_user)
7+
asserts.assert_resource_params(account_user, account_user_params)
8+
9+
10+
def test_account_users_list(api,account, account_user):
11+
users = account.users.list()
12+
assert len(users) > 1
13+
14+
15+
def test_account_users_get_by_id(account, account_user, account_user_params):
16+
account_user = account.users.read(account_user['id'])
17+
asserts.assert_resource(account_user)
18+
asserts.assert_resource_params(account_user, account_user_params)
19+
20+
21+
def test_account_user_can_be_updated(account_user, account_user_update_params):
22+
updated_user = account_user.update(account_user_update_params)
23+
asserts.assert_resource(updated_user)
24+
asserts.assert_resource_params(updated_user, account_user_update_params)
25+
26+
27+
def test_account_user_change_status(account_user):
28+
assert account_user['state'] == 'pending'
29+
updated_account_user = account_user.activate()
30+
assert updated_account_user['state'] == 'active'
31+
32+
updated_account_user = account_user.suspend()
33+
assert updated_account_user['state'] == 'suspended'
34+
35+
updated_account_user = account_user.un_suspend()
36+
assert updated_account_user['state'] == 'active'
37+
38+
39+
def test_account_user_change_role(account_user):
40+
assert account_user['role'] == 'member'
41+
42+
updated_account_user = account_user.set_as_admin()
43+
assert updated_account_user['role'] == 'admin'
44+
45+
updated_account_user = account_user.set_as_member()
46+
assert updated_account_user['role'] == 'member'

tests/integration/test_integration_accounts.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,23 @@ def test_account_can_be_read_by_name(api, account, account_params):
2424
asserts.assert_resource_params(read, account_params, ['org_name'])
2525

2626

27+
def test_account_can_be_find_by_name(api, account_user, account_params):
28+
account2 = api.accounts.find(dict(username=account_user['username']))
29+
asserts.assert_resource(account2)
30+
asserts.assert_resource_params(account2, account_params, ['org_name'])
31+
32+
2733
def test_account_update(api,account, update_account_params):
2834
updated_account = account.update(params=update_account_params)
2935
asserts.assert_resource(updated_account)
3036
asserts.assert_resource_params(updated_account, update_account_params)
3137

3238

39+
def test_get_account_plan(account, account_get_plan_params):
40+
plan = account.get_account_plan()
41+
asserts.assert_resource(plan)
42+
asserts.assert_resource_params(plan,account_get_plan_params, ['name'])
43+
44+
3345
def test_users_list(api, account):
3446
assert len(account.users.list()) >= 1

threescale_api/defaults.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -516,6 +516,16 @@ def suspend(self, **kwargs) -> 'DefaultUserResource':
516516
"""
517517
return self.set_state(state='suspend', **kwargs)
518518

519+
def un_suspend(self, **kwargs) -> 'DefaultUserResource':
520+
"""Un suspends the user
521+
Args:
522+
**kwargs:
523+
Optional arguments
524+
Returns(DefaultUserResource): User instance
525+
526+
"""
527+
return self.set_state(state='unsuspend', **kwargs)
528+
519529
def resume(self, **kwargs):
520530
"""Resumes the user
521531
Args:
@@ -541,7 +551,7 @@ def set_as_admin(self, **kwargs):
541551
Returns(DefaultUserResource): User instance
542552
543553
"""
544-
return self.set_state(state='set_as_admin', **kwargs)
554+
return self.set_state(state='admin', **kwargs)
545555

546556
def set_as_member(self, **kwargs):
547557
"""Demotes the user to s member
@@ -550,4 +560,4 @@ def set_as_member(self, **kwargs):
550560
Returns(DefaultUserResource): User instance
551561
552562
"""
553-
return self.set_state(state='set_as_member', **kwargs)
563+
return self.set_state(state='member', **kwargs)

threescale_api/resources.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,19 @@ def create(self, params: dict = None, **kwargs) -> 'Account':
188188
"""
189189
return self.signup(params=params, **kwargs)
190190

191+
def find(self, params: dict, **kwargs) -> 'Account':
192+
"""Find an account
193+
Args:
194+
params(dict): Parameters to used to find account (name, email, etc)
195+
**kwargs: Optional args
196+
Returns(Account): Account instance
197+
"""
198+
log.info("[FIND] Find accout: paramas:%s, kwarfs=%s", params, kwargs)
199+
find_url = self.url + "/find"
200+
response = self.rest.get(path=find_url, json=params, **kwargs)
201+
instance = self._create_instance(response=response)
202+
return instance
203+
191204
def signup(self, params: dict, **kwargs) -> 'Account':
192205
"""Sign Up for an account
193206
Args:
@@ -1470,6 +1483,12 @@ def credit_card_delete(self, params: dict = None, **kwargs):
14701483
response = self.client.rest.delete(url=url, json=params, **kwargs)
14711484
return response
14721485

1486+
def get_account_plan(self, params: dict = None, **kwargs):
1487+
account_plans = AccountPlans(self, ApplicationPlan)
1488+
url = self.url + "/plan"
1489+
response = self.client.rest.get(url=url, json=params, **kwargs)
1490+
return account_plans._create_instance(response=response)
1491+
14731492

14741493
class UserPermissions(DefaultResource):
14751494
pass

0 commit comments

Comments
 (0)