mirror of
https://github.com/valitydev/salt.git
synced 2024-11-08 09:23:56 +00:00
8cdb9ea54f
This makes the 2.x usage invalid syntax and forces the use of print as a function. This adds the import to the files which I've updated in the last couple of days but forgot to add it.
113 lines
4.0 KiB
Python
113 lines
4.0 KiB
Python
# -*- coding: utf-8 -*-
|
|
'''
|
|
Unit tests for the docker state
|
|
'''
|
|
|
|
# Import Python Libs
|
|
from __future__ import absolute_import, print_function, unicode_literals
|
|
|
|
# Import Salt Testing Libs
|
|
from tests.support.mixins import LoaderModuleMockMixin
|
|
from tests.support.unit import skipIf, TestCase
|
|
from tests.support.mock import (
|
|
MagicMock,
|
|
NO_MOCK,
|
|
NO_MOCK_REASON,
|
|
patch
|
|
)
|
|
|
|
# Import Salt Libs
|
|
import salt.modules.dockermod as docker_mod
|
|
import salt.states.docker_image as docker_state
|
|
|
|
|
|
@skipIf(NO_MOCK, NO_MOCK_REASON)
|
|
class DockerImageTestCase(TestCase, LoaderModuleMockMixin):
|
|
'''
|
|
Test docker_image states
|
|
'''
|
|
def setup_loader_modules(self):
|
|
return {
|
|
docker_mod: {
|
|
'__context__': {'docker.docker_version': ''}
|
|
},
|
|
docker_state: {
|
|
'__opts__': {'test': False}
|
|
}
|
|
}
|
|
|
|
def test_present_already_local(self):
|
|
'''
|
|
According following sls,
|
|
|
|
.. code-block:: yaml
|
|
|
|
image:latest:
|
|
docker_image.present:
|
|
- force: true
|
|
|
|
if ``image:latest`` is already downloaded locally the state
|
|
should not report changes.
|
|
'''
|
|
docker_inspect_image = MagicMock(return_value={'Id': 'abcdefghijkl'})
|
|
docker_pull = MagicMock(
|
|
return_value={'Layers':
|
|
{'Already_Pulled': ['abcdefghijkl'],
|
|
'Pulled': []},
|
|
'Status': 'Image is up to date for image:latest',
|
|
'Time_Elapsed': 1.1})
|
|
docker_list_tags = MagicMock(return_value=['image:latest'])
|
|
docker_resolve_tag = MagicMock(return_value='image:latest')
|
|
__salt__ = {'docker.list_tags': docker_list_tags,
|
|
'docker.pull': docker_pull,
|
|
'docker.inspect_image': docker_inspect_image,
|
|
'docker.resolve_tag': docker_resolve_tag}
|
|
with patch.dict(docker_state.__dict__,
|
|
{'__salt__': __salt__}):
|
|
ret = docker_state.present('image:latest', force=True)
|
|
self.assertEqual(ret,
|
|
{'changes': {},
|
|
'result': True,
|
|
'comment': "Image 'image:latest' was pulled, "
|
|
"but there were no changes",
|
|
'name': 'image:latest',
|
|
})
|
|
|
|
def test_present_and_force(self):
|
|
'''
|
|
According following sls,
|
|
|
|
.. code-block:: yaml
|
|
|
|
image:latest:
|
|
docker_image.present:
|
|
- force: true
|
|
|
|
if ``image:latest`` is not downloaded and force is true
|
|
should pull a new image successfuly.
|
|
'''
|
|
docker_inspect_image = MagicMock(return_value={'Id': '1234567890ab'})
|
|
docker_pull = MagicMock(
|
|
return_value={'Layers':
|
|
{'Pulled': ['abcdefghijkl']},
|
|
'Status': "Image 'image:latest' was pulled",
|
|
'Time_Elapsed': 1.1})
|
|
docker_list_tags = MagicMock(side_effect=[[], ['image:latest']])
|
|
docker_resolve_tag = MagicMock(return_value='image:latest')
|
|
__salt__ = {'docker.list_tags': docker_list_tags,
|
|
'docker.pull': docker_pull,
|
|
'docker.inspect_image': docker_inspect_image,
|
|
'docker.resolve_tag': docker_resolve_tag}
|
|
with patch.dict(docker_state.__dict__,
|
|
{'__salt__': __salt__}):
|
|
ret = docker_state.present('image:latest', force=True)
|
|
self.assertEqual(ret,
|
|
{'changes': {
|
|
'Layers': {'Pulled': ['abcdefghijkl']},
|
|
'Status': "Image 'image:latest' was pulled",
|
|
'Time_Elapsed': 1.1},
|
|
'result': True,
|
|
'comment': "Image 'image:latest' was pulled",
|
|
'name': 'image:latest',
|
|
})
|