def test_wait_fails_on_exit_status(self): client = Mock() client.api_version = '1.21' client.wait = Mock(return_value=1) dockerng_inspect_container = Mock(side_effect=[{ 'State': { 'Running': True } }, { 'State': { 'Stopped': True } }]) with patch.object(dockerng_mod, 'inspect_container', dockerng_inspect_container): with patch.dict(dockerng_mod.__context__, {'docker.client': client}): dockerng_mod._clear_context() result = dockerng_mod.wait('foo', fail_on_exit_status=True) self.assertEqual( result, { 'result': False, 'exit_status': 1, 'state': { 'new': 'stopped', 'old': 'running' } })
def test_create_with_labels_error(self, *args): ''' Create container with invalid labels. ''' __salt__ = { 'config.get': Mock(), 'mine.send': Mock(), 'dockerng.version': MagicMock(return_value={}), } host_config = {} client = Mock() client.api_version = '1.19' client.create_host_config.return_value = host_config client.create_container.return_value = {} get_client_mock = MagicMock(return_value=client) with patch.dict(dockerng_mod.__dict__, {'__salt__': __salt__}): with patch.object(dockerng_mod, '_get_client', get_client_mock): with patch.object(dockerng_mod, 'get_client_args', self.client_args_mock): self.assertRaises( SaltInvocationError, dockerng_mod.create, 'image', name='ctn', labels=22, validate_input=True, )
def test_create_with_labels_list(self, *args): ''' Create container with labels list. ''' __salt__ = { 'config.get': Mock(), 'mine.send': Mock(), 'dockerng.version': MagicMock(return_value={}), } host_config = {} client = Mock() client.api_version = '1.19' client.create_host_config.return_value = host_config client.create_container.return_value = {} get_client_mock = MagicMock(return_value=client) with patch.dict(dockerng_mod.__dict__, {'__salt__': __salt__}): with patch.object(dockerng_mod, '_get_client', get_client_mock): with patch.object(dockerng_mod, 'get_client_args', self.client_args_mock): dockerng_mod.create( 'image', name='ctn', labels=['KEY1', 'KEY2'], validate_input=True, ) client.create_container.assert_called_once_with( labels=['KEY1', 'KEY2'], host_config=host_config, image='image', name='ctn', )
def test_wait_fails_on_exit_status_and_already_stopped(self): client = Mock() client.api_version = '1.21' client.wait = Mock(return_value=1) get_client_mock = MagicMock(return_value=client) dockerng_inspect_container = Mock(side_effect=[{ 'State': { 'Stopped': True } }, { 'State': { 'Stopped': True } }]) with patch.object(dockerng_mod, 'inspect_container', dockerng_inspect_container): with patch.object(dockerng_mod, '_get_client', get_client_mock): dockerng_mod._clear_context() result = dockerng_mod.wait('foo', ignore_already_stopped=True, fail_on_exit_status=True) self.assertEqual( result, { 'result': False, 'comment': "Container 'foo' already stopped", 'exit_status': 1, 'state': { 'new': 'stopped', 'old': 'stopped' } })
def test_create_with_labels_dictlist(self, *args): ''' Create container with labels dictlist. ''' __salt__ = { 'config.get': Mock(), 'mine.send': Mock(), } host_config = {} client = Mock() client.api_version = '1.19' client.create_host_config.return_value = host_config client.create_container.return_value = {} with patch.dict(dockerng_mod.__dict__, {'__salt__': __salt__}): with patch.dict(dockerng_mod.__context__, {'docker.client': client}): dockerng_mod.create( 'image', name='ctn', labels=[{'KEY1': 'VALUE1'}, {'KEY2': 'VALUE2'}], validate_input=True, ) client.create_container.assert_called_once_with( labels={'KEY1': 'VALUE1', 'KEY2': 'VALUE2'}, host_config=host_config, image='image', name='ctn', )
def test_create_with_labels_dictlist(self, *args): ''' Create container with labels dictlist. ''' __salt__ = { 'config.get': Mock(), 'mine.send': Mock(), } host_config = {} client = Mock() client.api_version = '1.19' client.create_host_config.return_value = host_config client.create_container.return_value = {} with patch.dict(dockerng_mod.__dict__, {'__salt__': __salt__}): with patch.dict(dockerng_mod.__context__, {'docker.client': client}): dockerng_mod.create( 'image', name='ctn', labels=[{ 'KEY1': 'VALUE1' }, { 'KEY2': 'VALUE2' }], validate_input=True, ) client.create_container.assert_called_once_with( labels={ 'KEY1': 'VALUE1', 'KEY2': 'VALUE2' }, host_config=host_config, image='image', name='ctn', )
def test_wait_success_already_stopped(self): client = Mock() client.api_version = '1.21' client.wait = Mock(return_value=0) dockerng_inspect_container = Mock(side_effect=[ { 'State': { 'Stopped': True } }, { 'State': { 'Stopped': True } }, ]) with patch.object(dockerng_mod, 'inspect_container', dockerng_inspect_container): with patch.dict(dockerng_mod.__context__, {'docker.client': client}): dockerng_mod._clear_context() result = dockerng_mod.wait('foo', ignore_already_stopped=True) self.assertEqual( result, { 'result': True, 'comment': "Container 'foo' already stopped", 'exit_status': 0, 'state': { 'new': 'stopped', 'old': 'stopped' } })
def test_wait_success(self): client = Mock() client.api_version = '1.21' client.wait = Mock(return_value=0) get_client_mock = MagicMock(return_value=client) dockerng_inspect_container = Mock(side_effect=[{ 'State': { 'Running': True } }, { 'State': { 'Stopped': True } }]) with patch.object(dockerng_mod, 'inspect_container', dockerng_inspect_container): with patch.object(dockerng_mod, '_get_client', get_client_mock): dockerng_mod._clear_context() result = dockerng_mod.wait('foo') self.assertEqual( result, { 'result': True, 'exit_status': 0, 'state': { 'new': 'stopped', 'old': 'running' } })
def test_wait_success_absent_container(self): client = Mock() client.api_version = '1.21' dockerng_inspect_container = Mock(side_effect=CommandExecutionError) with patch.object(dockerng_mod, 'inspect_container', dockerng_inspect_container): with patch.dict(dockerng_mod.__context__, {'docker.client': client}): dockerng_mod._clear_context() result = dockerng_mod.wait('foo', ignore_already_stopped=True) self.assertEqual(result, {'result': True, 'comment': "Container 'foo' absent"})
def test_list_volumes(self, *args): ''' test list volumes. ''' __salt__ = { 'config.get': Mock(), 'mine.send': Mock(), } client = Mock() client.api_version = '1.21' with patch.dict(docker_mod.__dict__, {'__salt__': __salt__}): with patch.dict(docker_mod.__context__, {'docker.client': client}): docker_mod.volumes(filters={'dangling': [True]}, ) client.volumes.assert_called_once_with(filters={'dangling': [True]}, )
def test_inspect_volume(self, *args): ''' test inspect volume. ''' __salt__ = { 'config.get': Mock(), 'mine.send': Mock(), } client = Mock() client.api_version = '1.21' with patch.dict(docker_mod.__dict__, {'__salt__': __salt__}): with patch.dict(docker_mod.__context__, {'docker.client': client}): docker_mod.inspect_volume('foo') client.inspect_volume.assert_called_once_with('foo')
def test_remove_network(self, *args): ''' test remove network. ''' __salt__ = { 'config.get': Mock(), 'mine.send': Mock(), } host_config = {} client = Mock() client.api_version = '1.21' with patch.dict(docker_mod.__dict__, {'__salt__': __salt__}): with patch.dict(docker_mod.__context__, {'docker.client': client}): docker_mod.remove_network('foo') client.remove_network.assert_called_once_with('foo')
def test_inspect_volume(self, *args): ''' test inspect volume. ''' __salt__ = { 'config.get': Mock(), 'mine.send': Mock(), } client = Mock() client.api_version = '1.21' get_client_mock = MagicMock(return_value=client) with patch.dict(dockerng_mod.__dict__, {'__salt__': __salt__}): with patch.object(dockerng_mod, '_get_client', get_client_mock): dockerng_mod.inspect_volume('foo') client.inspect_volume.assert_called_once_with('foo')
def test_list_volumes(self, *args): ''' test list volumes. ''' __salt__ = { 'config.get': Mock(), 'mine.send': Mock(), } client = Mock() client.api_version = '1.21' get_client_mock = MagicMock(return_value=client) with patch.dict(dockerng_mod.__dict__, {'__salt__': __salt__}): with patch.object(dockerng_mod, '_get_client', get_client_mock): dockerng_mod.volumes(filters={'dangling': [True]}) client.volumes.assert_called_once_with(filters={'dangling': [True]})
def test_inspect_volume(self, *args): ''' test inspect volume. ''' __salt__ = { 'config.get': Mock(), 'mine.send': Mock(), } client = Mock() client.api_version = '1.21' with patch.dict(dockerng_mod.__dict__, {'__salt__': __salt__}): with patch.dict(dockerng_mod.__context__, {'docker.client': client}): dockerng_mod.inspect_volume('foo') client.inspect_volume.assert_called_once_with('foo')
def test_remove_network(self, *args): ''' test remove network. ''' __salt__ = { 'config.get': Mock(), 'mine.send': Mock(), } host_config = {} client = Mock() client.api_version = '1.21' with patch.dict(dockerng_mod.__dict__, {'__salt__': __salt__}): with patch.dict(dockerng_mod.__context__, {'docker.client': client}): dockerng_mod.remove_network('foo') client.remove_network.assert_called_once_with('foo')
def test_remove_network(self, *args): ''' test remove network. ''' __salt__ = { 'config.get': Mock(), 'mine.send': Mock(), } host_config = {} client = Mock() client.api_version = '1.21' get_client_mock = MagicMock(return_value=client) with patch.dict(dockerng_mod.__dict__, {'__salt__': __salt__}): with patch.object(dockerng_mod, '_get_client', get_client_mock): dockerng_mod.remove_network('foo') client.remove_network.assert_called_once_with('foo')
def test_wait_fails_on_exit_status(self): client = Mock() client.api_version = '1.21' client.wait = Mock(return_value=1) dockerng_inspect_container = Mock(side_effect=[ {'State': {'Running': True}}, {'State': {'Stopped': True}}]) with patch.object(dockerng_mod, 'inspect_container', dockerng_inspect_container): with patch.dict(dockerng_mod.__context__, {'docker.client': client}): dockerng_mod._clear_context() result = dockerng_mod.wait('foo', fail_on_exit_status=True) self.assertEqual(result, {'result': False, 'exit_status': 1, 'state': {'new': 'stopped', 'old': 'running'}})
def test_create_with_arg_cmd(self, *args): ''' When cmd argument is passed check it is renamed to command. ''' __salt__ = { 'config.get': Mock(), 'mine.send': Mock(), } host_config = {} client = Mock() client.api_version = '1.19' client.create_host_config.return_value = host_config client.create_container.return_value = {} with patch.dict(docker_mod.__dict__, {'__salt__': __salt__}): with patch.dict(docker_mod.__context__, {'docker.client': client}): docker_mod.create('image', cmd='ls', name='ctn') client.create_container.assert_called_once_with( command='ls', host_config=host_config, image='image', name='ctn')
def test_disconnect_container_from_network(self, *args): ''' test inspect network. ''' __salt__ = { 'config.get': Mock(), 'mine.send': Mock(), } host_config = {} client = Mock() client.api_version = '1.21' with patch.dict(dockerng_mod.__dict__, {'__salt__': __salt__}): with patch.dict(dockerng_mod.__context__, {'docker.client': client}): dockerng_mod.disconnect_container_from_network( 'container', 'foo') client.disconnect_container_from_network.assert_called_once_with( 'container', 'foo')
def test_images_with_empty_tags(self): """ docker 1.12 reports also images without tags with `null`. """ client = Mock() client.api_version = '1.24' client.images = Mock( return_value=[{'Id': 'sha256:abcde', 'RepoTags': None}, {'Id': 'sha256:abcdef'}, {'Id': 'sha256:abcdefg', 'RepoTags': ['image:latest']}]) with patch.dict(dockerng_mod.__context__, {'docker.client': client}): dockerng_mod._clear_context() result = dockerng_mod.images() self.assertEqual(result, {'sha256:abcdefg': {'RepoTags': ['image:latest']}})
def test_create_send_host_config(self, *args): ''' Check host_config object is passed to create_container. ''' __salt__ = { 'config.get': Mock(), 'mine.send': Mock(), } host_config = {'PublishAllPorts': True} client = Mock() client.api_version = '1.19' client.create_host_config.return_value = host_config client.create_container.return_value = {} with patch.dict(docker_mod.__dict__, {'__salt__': __salt__}): with patch.dict(docker_mod.__context__, {'docker.client': client}): docker_mod.create('image', name='ctn', publish_all_ports=True) client.create_container.assert_called_once_with( host_config=host_config, image='image', name='ctn')
def test_wait_success_already_stopped(self): client = Mock() client.api_version = '1.21' client.wait = Mock(return_value=0) dockerng_inspect_container = Mock(side_effect=[ {'State': {'Stopped': True}}, {'State': {'Stopped': True}}, ]) with patch.object(dockerng_mod, 'inspect_container', dockerng_inspect_container): with patch.dict(dockerng_mod.__context__, {'docker.client': client}): dockerng_mod._clear_context() result = dockerng_mod.wait('foo', ignore_already_stopped=True) self.assertEqual(result, {'result': True, 'comment': "Container 'foo' already stopped", 'exit_status': 0, 'state': {'new': 'stopped', 'old': 'stopped'}})
def test_list_volumes(self, *args): ''' test list volumes. ''' __salt__ = { 'config.get': Mock(), 'mine.send': Mock(), } client = Mock() client.api_version = '1.21' with patch.dict(dockerng_mod.__dict__, {'__salt__': __salt__}): with patch.dict(dockerng_mod.__context__, {'docker.client': client}): dockerng_mod.volumes( filters={'dangling': [True]}, ) client.volumes.assert_called_once_with( filters={'dangling': [True]}, )
def test_list_networks(self, *args): ''' test list networks. ''' __salt__ = { 'config.get': Mock(), 'mine.send': Mock(), } host_config = {} client = Mock() client.api_version = '1.21' with patch.dict(docker_mod.__dict__, {'__salt__': __salt__}): with patch.dict(docker_mod.__context__, {'docker.client': client}): docker_mod.networks( names=['foo'], ids=['01234'], ) client.networks.assert_called_once_with( names=['foo'], ids=['01234'], )
def test_create_network(self, *args): ''' test create network. ''' __salt__ = { 'config.get': Mock(), 'mine.send': Mock(), } host_config = {} client = Mock() client.api_version = '1.21' with patch.dict(dockerng_mod.__dict__, {'__salt__': __salt__}): with patch.dict(dockerng_mod.__context__, {'docker.client': client}): dockerng_mod.create_network( 'foo', driver='bridge', ) client.create_network.assert_called_once_with( 'foo', driver='bridge', )
def test_images_with_empty_tags(self): """ docker 1.12 reports also images without tags with `null`. """ client = Mock() client.api_version = '1.24' client.images = Mock(return_value=[{ 'Id': 'sha256:abcde', 'RepoTags': None }, { 'Id': 'sha256:abcdef' }, { 'Id': 'sha256:abcdefg', 'RepoTags': ['image:latest'] }]) with patch.dict(dockerng_mod.__context__, {'docker.client': client}): dockerng_mod._clear_context() result = dockerng_mod.images() self.assertEqual(result, {'sha256:abcdefg': { 'RepoTags': ['image:latest'] }})
def test_connect_container_to_network(self, *args): ''' test inspect network. ''' __salt__ = { 'config.get': Mock(), 'mine.send': Mock(), } host_config = {} client = Mock() client.api_version = '1.21' context = { 'docker.client': client, 'docker.exec_driver': 'docker-exec' } with patch.dict(docker_mod.__dict__, {'__salt__': __salt__}): with patch.dict(docker_mod.__context__, context): docker_mod.connect_container_to_network('container', 'foo') client.connect_container_to_network.assert_called_once_with( 'container', 'foo', None)
def test_create_send_host_config(self, *args): ''' Check host_config object is passed to create_container. ''' __salt__ = { 'config.get': Mock(), 'mine.send': Mock(), } host_config = {'PublishAllPorts': True} client = Mock() client.api_version = '1.19' client.create_host_config.return_value = host_config client.create_container.return_value = {} with patch.dict(dockerng_mod.__dict__, {'__salt__': __salt__}): with patch.dict(dockerng_mod.__context__, {'docker.client': client}): dockerng_mod.create('image', name='ctn', publish_all_ports=True) client.create_container.assert_called_once_with( host_config=host_config, image='image', name='ctn')
def test_list_networks(self, *args): ''' test list networks. ''' __salt__ = { 'config.get': Mock(), 'mine.send': Mock(), } host_config = {} client = Mock() client.api_version = '1.21' get_client_mock = MagicMock(return_value=client) with patch.dict(dockerng_mod.__dict__, {'__salt__': __salt__}): with patch.object(dockerng_mod, '_get_client', get_client_mock): dockerng_mod.networks( names=['foo'], ids=['01234'], ) client.networks.assert_called_once_with( names=['foo'], ids=['01234'], )
def test_list_networks(self, *args): ''' test list networks. ''' __salt__ = { 'config.get': Mock(), 'mine.send': Mock(), } host_config = {} client = Mock() client.api_version = '1.21' with patch.dict(dockerng_mod.__dict__, {'__salt__': __salt__}): with patch.dict(dockerng_mod.__context__, {'docker.client': client}): dockerng_mod.networks( names=['foo'], ids=['01234'], ) client.networks.assert_called_once_with( names=['foo'], ids=['01234'], )
def test_create_with_labels_error(self, *args): ''' Create container with invalid labels. ''' __salt__ = { 'config.get': Mock(), 'mine.send': Mock(), } host_config = {} client = Mock() client.api_version = '1.19' client.create_host_config.return_value = host_config client.create_container.return_value = {} with patch.dict(docker_mod.__dict__, {'__salt__': __salt__}): with patch.dict(docker_mod.__context__, {'docker.client': client}): self.assertRaises( SaltInvocationError, docker_mod.create, 'image', name='ctn', labels=22, validate_input=True, )
def test_create_with_arg_cmd(self, *args): ''' When cmd argument is passed check it is renamed to command. ''' __salt__ = { 'config.get': Mock(), 'mine.send': Mock(), } host_config = {} client = Mock() client.api_version = '1.19' client.create_host_config.return_value = host_config client.create_container.return_value = {} with patch.dict(dockerng_mod.__dict__, {'__salt__': __salt__}): with patch.dict(dockerng_mod.__context__, {'docker.client': client}): dockerng_mod.create('image', cmd='ls', name='ctn') client.create_container.assert_called_once_with( command='ls', host_config=host_config, image='image', name='ctn')
def test_create_with_labels_error(self, *args): ''' Create container with invalid labels. ''' __salt__ = { 'config.get': Mock(), 'mine.send': Mock(), } host_config = {} client = Mock() client.api_version = '1.19' client.create_host_config.return_value = host_config client.create_container.return_value = {} with patch.dict(dockerng_mod.__dict__, {'__salt__': __salt__}): with patch.dict(dockerng_mod.__context__, {'docker.client': client}): self.assertRaises(SaltInvocationError, dockerng_mod.create, 'image', name='ctn', labels=22, validate_input=True, )
def test_create_volume(self, *args): ''' test create volume. ''' __salt__ = { 'config.get': Mock(), 'mine.send': Mock(), } client = Mock() client.api_version = '1.21' with patch.dict(dockerng_mod.__dict__, {'__salt__': __salt__}): with patch.dict(dockerng_mod.__context__, {'docker.client': client}): dockerng_mod.create_volume( 'foo', driver='bridge', driver_opts={}, ) client.create_volume.assert_called_once_with( 'foo', driver='bridge', driver_opts={}, )