import unittest
import mock
+
import asynctest
+from juju.client.jujudata import FileJujuData
+
def _make_delta(entity, type_, data=None):
from juju.client.client import Delta
from juju.model import Model
from juju.application import Application
- loop = mock.MagicMock()
- model = Model(loop=loop)
+ model = Model()
+ model._connector = mock.MagicMock()
delta = _make_delta('application', 'add', dict(name='foo'))
# test add
class TestContextManager(asynctest.TestCase):
@asynctest.patch('juju.model.Model.disconnect')
- @asynctest.patch('juju.model.Model.connect_current')
+ @asynctest.patch('juju.model.Model.connect')
async def test_normal_use(self, mock_connect, mock_disconnect):
from juju.model import Model
self.assertTrue(mock_disconnect.called)
@asynctest.patch('juju.model.Model.disconnect')
- @asynctest.patch('juju.model.Model.connect_current')
+ @asynctest.patch('juju.model.Model.connect')
async def test_exception(self, mock_connect, mock_disconnect):
from juju.model import Model
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):
+ async def test_no_current_connection(self):
from juju.model import Model
from juju.errors import JujuConnectionError
- mock_current_controller.return_value = ""
+ class NoControllerJujuData(FileJujuData):
+ def current_controller(self):
+ return ""
with self.assertRaises(JujuConnectionError):
- async with Model():
+ async with Model(jujudata=NoControllerJujuData()):
pass
+
+
+class TestModelConnect(asynctest.TestCase):
+ @asynctest.patch('juju.client.connector.Connector.connect_model')
+ @asynctest.patch('juju.model.Model._after_connect')
+ async def test_model_connect_no_args(self, mock_after_connect, mock_connect_model):
+ from juju.model import Model
+ m = Model()
+ await m.connect()
+ mock_connect_model.assert_called_once_with(None)
+
+ @asynctest.patch('juju.client.connector.Connector.connect_model')
+ @asynctest.patch('juju.model.Model._after_connect')
+ async def test_model_connect_with_model_name(self, mock_after_connect, mock_connect_model):
+ from juju.model import Model
+ m = Model()
+ await m.connect(model_name='foo')
+ mock_connect_model.assert_called_once_with('foo')
+
+ @asynctest.patch('juju.client.connector.Connector.connect_model')
+ @asynctest.patch('juju.model.Model._after_connect')
+ async def test_model_connect_with_endpoint_but_no_uuid(
+ self,
+ mock_after_connect,
+ mock_connect_model,
+ ):
+ from juju.model import Model
+ m = Model()
+ with self.assertRaises(ValueError):
+ await m.connect(endpoint='0.1.2.3:4566')
+ self.assertEqual(mock_connect_model.call_count, 0)
+
+ @asynctest.patch('juju.client.connector.Connector.connect')
+ @asynctest.patch('juju.model.Model._after_connect')
+ async def test_model_connect_with_endpoint_and_uuid(
+ self,
+ mock_after_connect,
+ mock_connect,
+ ):
+ from juju.model import Model
+ m = Model()
+ await m.connect(endpoint='0.1.2.3:4566', uuid='some-uuid')
+ mock_connect.assert_called_once_with(endpoint='0.1.2.3:4566', uuid='some-uuid')