X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=tests%2Funit%2Ftest_model.py;h=222d881a6b5c16090fe6f3517e045009c9b72dc4;hb=7dd0c1586fa760fbdf8a3195d67596bd6b26b10d;hp=f8cced33de654865673db779e71f47f2f905ba72;hpb=c8d7bcea7e1fd4b174e3be2a29e382df66e88b66;p=osm%2FN2VC.git diff --git a/tests/unit/test_model.py b/tests/unit/test_model.py index f8cced3..222d881 100644 --- a/tests/unit/test_model.py +++ b/tests/unit/test_model.py @@ -1,6 +1,7 @@ import unittest import mock +import asynctest def _make_delta(entity, type_, data=None): @@ -92,3 +93,63 @@ class TestModelState(unittest.TestCase): self.assertFalse(new) self.assertIsInstance(prev, Application) self.assertTrue(prev) + + +def test_get_series(): + from juju.model import Model + model = Model() + entity = { + 'Meta': { + 'supported-series': { + 'SupportedSeries': [ + 'xenial', + 'trusty', + ], + }, + }, + } + assert model._get_series('cs:trusty/ubuntu', entity) == 'trusty' + assert model._get_series('xenial/ubuntu', entity) == 'xenial' + assert model._get_series('~foo/xenial/ubuntu', entity) == 'xenial' + assert model._get_series('~foo/ubuntu', entity) == 'xenial' + assert model._get_series('ubuntu', entity) == 'xenial' + assert model._get_series('cs:ubuntu', entity) == 'xenial' + + +class TestContextManager(asynctest.TestCase): + @asynctest.patch('juju.model.Model.disconnect') + @asynctest.patch('juju.model.Model.connect_current') + async def test_normal_use(self, mock_connect, mock_disconnect): + from juju.model import Model + + async with Model() as model: + self.assertTrue(isinstance(model, Model)) + + self.assertTrue(mock_connect.called) + self.assertTrue(mock_disconnect.called) + + @asynctest.patch('juju.model.Model.disconnect') + @asynctest.patch('juju.model.Model.connect_current') + async def test_exception(self, mock_connect, mock_disconnect): + from juju.model import Model + + class SomeException(Exception): + pass + + with self.assertRaises(SomeException): + async with Model(): + raise SomeException() + + self.assertTrue(mock_connect.called) + self.assertTrue(mock_disconnect.called) + + @asynctest.patch('juju.client.connection.JujuData.current_controller') + async def test_no_current_connection(self, mock_current_controller): + from juju.model import Model + from juju.errors import JujuConnectionError + + mock_current_controller.return_value = "" + + with self.assertRaises(JujuConnectionError): + async with Model(): + pass