X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FN2VC.git;a=blobdiff_plain;f=modules%2Flibjuju%2Ftests%2Fintegration%2Ftest_controller.py;h=9c6f7ac45eb939e735b990e29c800ef4b3697d79;hp=d5593134b35cae20dd2209f892bc6c402ac33607;hb=c3e6c2ec9a1fddfc8e9bd31509b366e633b6d99e;hpb=1a15d1c84fc826fa7996c1c9d221a324edd33432 diff --git a/modules/libjuju/tests/integration/test_controller.py b/modules/libjuju/tests/integration/test_controller.py index d559313..9c6f7ac 100644 --- a/modules/libjuju/tests/integration/test_controller.py +++ b/modules/libjuju/tests/integration/test_controller.py @@ -2,10 +2,13 @@ import asyncio import pytest import uuid -from .. import base -from juju.controller import Controller +from juju.client.connection import Connection from juju.errors import JujuAPIError +import pytest + +from .. import base + @base.bootstrapped @pytest.mark.asyncio @@ -57,14 +60,18 @@ async def test_change_user_password(event_loop): username = 'test-password{}'.format(uuid.uuid4()) user = await controller.add_user(username) await user.set_password('password') + # Check that we can connect with the new password. + new_connection = None try: - new_controller = Controller() - await new_controller.connect( - controller.connection.endpoint, username, 'password') + kwargs = controller.connection().connect_params() + kwargs['username'] = username + kwargs['password'] = 'password' + new_connection = await Connection.connect(**kwargs) except JujuAPIError: raise AssertionError('Unable to connect with new password') finally: - await new_controller.disconnect() + if new_connection: + await new_connection.close() @base.bootstrapped @@ -77,10 +84,10 @@ async def test_grant_revoke(event_loop): assert user.access == 'superuser' fresh = await controller.get_user(username) # fetch fresh copy assert fresh.access == 'superuser' - await user.grant('login') - assert user.access == 'login' + await user.grant('login') # already has 'superuser', so no-op + assert user.access == 'superuser' fresh = await controller.get_user(username) # fetch fresh copy - assert fresh.access == 'login' + assert fresh.access == 'superuser' await user.revoke() assert user.access is '' fresh = await controller.get_user(username) # fetch fresh copy @@ -120,6 +127,11 @@ async def test_get_model(event_loop): await controller.destroy_model(model_name) +async def _wait_for_model(controller, model_name): + while model_name not in await controller.list_models(): + await asyncio.sleep(0.5, loop=controller.loop) + + async def _wait_for_model_gone(controller, model_name): while model_name in await controller.list_models(): await asyncio.sleep(0.5, loop=controller.loop) @@ -132,6 +144,9 @@ async def test_destroy_model_by_name(event_loop): model_name = 'test-{}'.format(uuid.uuid4()) model = await controller.add_model(model_name) await model.disconnect() + await asyncio.wait_for(_wait_for_model(controller, + model_name), + timeout=60) await controller.destroy_model(model_name) await asyncio.wait_for(_wait_for_model_gone(controller, model_name), @@ -146,6 +161,9 @@ async def test_add_destroy_model_by_uuid(event_loop): model = await controller.add_model(model_name) model_uuid = model.info.uuid await model.disconnect() + await asyncio.wait_for(_wait_for_model(controller, + model_name), + timeout=60) await controller.destroy_model(model_uuid) await asyncio.wait_for(_wait_for_model_gone(controller, model_name),