d3a687f72de011f390758b09775fe81e782b7ac2
[osm/N2VC.git] / tests / integration / test_controller.py
1 import asyncio
2 from concurrent.futures import ThreadPoolExecutor
3 import pytest
4 import uuid
5
6 from .. import base
7 from juju.controller import Controller
8 from juju.errors import JujuAPIError
9
10
11 @base.bootstrapped
12 @pytest.mark.asyncio
13 async def test_add_user(event_loop):
14 async with base.CleanController() as controller:
15 username = 'test{}'.format(uuid.uuid4())
16 await controller.add_user(username)
17 result = await controller.get_user(username)
18 res_ser = result.serialize()['results'][0].serialize()
19 assert res_ser['result'] is not None
20
21
22 @base.bootstrapped
23 @pytest.mark.asyncio
24 async def test_disable_enable_user(event_loop):
25 async with base.CleanController() as controller:
26 username = 'test-disable{}'.format(uuid.uuid4())
27 await controller.add_user(username)
28 await controller.disable_user(username)
29 result = await controller.get_user(username)
30 res_ser = result.serialize()['results'][0].serialize()
31 assert res_ser['result'].serialize()['disabled'] is True
32 await controller.enable_user(username)
33 result = await controller.get_user(username)
34 res_ser = result.serialize()['results'][0].serialize()
35 assert res_ser['result'].serialize()['disabled'] is False
36
37
38 @base.bootstrapped
39 @pytest.mark.asyncio
40 async def test_change_user_password(event_loop):
41 async with base.CleanController() as controller:
42 username = 'test-password{}'.format(uuid.uuid4())
43 await controller.add_user(username)
44 await controller.change_user_password(username, 'password')
45 try:
46 con = await controller.connect(
47 controller.connection.endpoint, username, 'password')
48 result = True
49 except JujuAPIError:
50 result = False
51 assert result is True
52
53
54 @base.bootstrapped
55 @pytest.mark.asyncio
56 async def test_grant(event_loop):
57 async with base.CleanController() as controller:
58 username = 'test-grant{}'.format(uuid.uuid4())
59 await controller.add_user(username)
60 await controller.grant(username, 'superuser')
61 result = await controller.get_user(username)
62 result = result.serialize()['results'][0].serialize()['result'].serialize()
63 assert result['access'] == 'superuser'
64 await controller.grant(username, 'login')
65 result = await controller.get_user(username)
66 result = result.serialize()['results'][0].serialize()['result'].serialize()
67 assert result['access'] == 'login'
68
69
70 @base.bootstrapped
71 @pytest.mark.asyncio
72 async def test_get_models(event_loop):
73 async with base.CleanController() as controller:
74 result = await controller.get_models()
75 assert isinstance(result.serialize()['user-models'], list)