dockercloud
This commit is contained in:
parent
86f4a232ff
commit
2d9586a8a1
41 changed files with 2701 additions and 2 deletions
221
tests/test_utils.py
Normal file
221
tests/test_utils.py
Normal file
|
|
@ -0,0 +1,221 @@
|
|||
import unittest
|
||||
|
||||
import unittest.mock as mock
|
||||
|
||||
import dockercloud
|
||||
from dockercloud.api.exceptions import ObjectNotFound, ApiError, NonUniqueIdentifier
|
||||
|
||||
|
||||
class FetchRemoteObjectTestCase(unittest.TestCase):
|
||||
@mock.patch('dockercloud.Container.list')
|
||||
@mock.patch('dockercloud.Container.fetch')
|
||||
def test_fetch_remote_container(self, mock_fetch, mock_list):
|
||||
# test container exist queried with uuid4
|
||||
mock_fetch.return_value = 'returned'
|
||||
self.assertEqual(dockercloud.Utils.fetch_remote_container('7A4CFE51-03BB-42D6-825E-3B533888D8CD', True),
|
||||
'returned')
|
||||
self.assertEqual(dockercloud.Utils.fetch_remote_container('7A4CFE51-03BB-42D6-825E-3B533888D8CD', False),
|
||||
'returned')
|
||||
|
||||
# test container doesn't exist queried with uuid4
|
||||
mock_fetch.side_effect = ObjectNotFound
|
||||
self.assertRaises(ObjectNotFound, dockercloud.Utils.fetch_remote_container,
|
||||
'7A4CFE51-03BB-42D6-825E-3B533888D8CD',
|
||||
True)
|
||||
self.assertIsInstance(dockercloud.Utils.fetch_remote_container('7A4CFE51-03BB-42D6-825E-3B533888D8CD', False),
|
||||
ObjectNotFound)
|
||||
|
||||
# test unique container found queried with short uuid
|
||||
container = dockercloud.Container.create()
|
||||
container.uuid = 'uuid'
|
||||
mock_list.side_effect = [[container], []]
|
||||
mock_fetch.side_effect = [container]
|
||||
self.assertEquals(dockercloud.Utils.fetch_remote_container('shortuuid', True), container)
|
||||
mock_list.side_effect = [[container], []]
|
||||
mock_fetch.side_effect = [container]
|
||||
self.assertEquals(dockercloud.Utils.fetch_remote_container('shortuuid', False), container)
|
||||
|
||||
# test unique container found queried with name
|
||||
mock_list.side_effect = [[], [container]]
|
||||
mock_fetch.side_effect = [container]
|
||||
self.assertEquals(dockercloud.Utils.fetch_remote_container('name', True), container)
|
||||
mock_list.side_effect = [[], [container]]
|
||||
mock_fetch.side_effect = [container]
|
||||
self.assertEquals(dockercloud.Utils.fetch_remote_container('name', False), container)
|
||||
|
||||
# test no container found
|
||||
mock_list.side_effect = [[], []]
|
||||
self.assertRaises(ObjectNotFound, dockercloud.Utils.fetch_remote_container, 'uuid_or_name', True)
|
||||
mock_list.side_effect = [[], []]
|
||||
self.assertIsInstance(dockercloud.Utils.fetch_remote_container('uuid_or_name', False), ObjectNotFound)
|
||||
|
||||
# test multi-container found
|
||||
mock_list.side_effect = [['container1', 'container2'], []]
|
||||
self.assertRaises(NonUniqueIdentifier, dockercloud.Utils.fetch_remote_container, 'uuid_or_name', True)
|
||||
mock_list.side_effect = [['container1', 'container2'], []]
|
||||
self.assertIsInstance(dockercloud.Utils.fetch_remote_container('uuid_or_name', False), NonUniqueIdentifier)
|
||||
mock_list.side_effect = [[], ['container1', 'container2']]
|
||||
self.assertRaises(NonUniqueIdentifier, dockercloud.Utils.fetch_remote_container, 'uuid_or_name', True)
|
||||
mock_list.side_effect = [[], ['container1', 'container2']]
|
||||
self.assertIsInstance(dockercloud.Utils.fetch_remote_container('uuid_or_name', False), NonUniqueIdentifier)
|
||||
|
||||
# test api error
|
||||
mock_list.side_effect = [ApiError, ApiError]
|
||||
self.assertRaises(ApiError, dockercloud.Utils.fetch_remote_container, 'uuid_or_name', True)
|
||||
self.assertRaises(ApiError, dockercloud.Utils.fetch_remote_container, 'uuid_or_name', False)
|
||||
|
||||
@mock.patch('dockercloud.Service.list')
|
||||
@mock.patch('dockercloud.Service.fetch')
|
||||
def test_fetch_remote_service(self, mock_fetch, mock_list):
|
||||
# test cluster exist queried with uuid4
|
||||
mock_fetch.return_value = 'returned'
|
||||
self.assertEqual(dockercloud.Utils.fetch_remote_service('7A4CFE51-03BB-42D6-825E-3B533888D8CD', True),
|
||||
'returned')
|
||||
self.assertEqual(dockercloud.Utils.fetch_remote_service('7A4CFE51-03BB-42D6-825E-3B533888D8CD', False),
|
||||
'returned')
|
||||
|
||||
# test cluster doesn't exist queried with uuid4
|
||||
mock_fetch.side_effect = ObjectNotFound
|
||||
self.assertRaises(ObjectNotFound, dockercloud.Utils.fetch_remote_service,
|
||||
'7A4CFE51-03BB-42D6-825E-3B533888D8CD',
|
||||
True)
|
||||
self.assertIsInstance(dockercloud.Utils.fetch_remote_service('7A4CFE51-03BB-42D6-825E-3B533888D8CD', False),
|
||||
ObjectNotFound)
|
||||
|
||||
# test unique cluster found queried with short uuid
|
||||
service = dockercloud.Service.create()
|
||||
service.uuid = 'uuid'
|
||||
mock_list.side_effect = [[service], []]
|
||||
mock_fetch.side_effect = [service]
|
||||
self.assertEquals(dockercloud.Utils.fetch_remote_service('shortuuid', True), service)
|
||||
mock_list.side_effect = [[service], []]
|
||||
mock_fetch.side_effect = [service]
|
||||
self.assertEquals(dockercloud.Utils.fetch_remote_service('shortuuid', False), service)
|
||||
|
||||
# test unique cluster found queried with name
|
||||
mock_list.side_effect = [[], [service]]
|
||||
mock_fetch.side_effect = [service]
|
||||
self.assertEquals(dockercloud.Utils.fetch_remote_service('name', True), service)
|
||||
mock_list.side_effect = [[], [service]]
|
||||
mock_fetch.side_effect = [service]
|
||||
self.assertEquals(dockercloud.Utils.fetch_remote_service('name', False), service)
|
||||
|
||||
# test no cluster found
|
||||
mock_list.side_effect = [[], []]
|
||||
self.assertRaises(ObjectNotFound, dockercloud.Utils.fetch_remote_service, 'uuid_or_name', True)
|
||||
mock_list.side_effect = [[], []]
|
||||
self.assertIsInstance(dockercloud.Utils.fetch_remote_service('uuid_or_name', False), ObjectNotFound)
|
||||
|
||||
# test multi-cluster found
|
||||
mock_list.side_effect = [['cluster1', 'cluster2'], []]
|
||||
self.assertRaises(NonUniqueIdentifier, dockercloud.Utils.fetch_remote_service, 'uuid_or_name', True)
|
||||
mock_list.side_effect = [['cluster1', 'cluster2'], []]
|
||||
self.assertIsInstance(dockercloud.Utils.fetch_remote_service('uuid_or_name', False), NonUniqueIdentifier)
|
||||
mock_list.side_effect = [[], ['cluster1', 'cluster2']]
|
||||
self.assertRaises(NonUniqueIdentifier, dockercloud.Utils.fetch_remote_service, 'uuid_or_name', True)
|
||||
mock_list.side_effect = [[], ['cluster1', 'cluster2']]
|
||||
self.assertIsInstance(dockercloud.Utils.fetch_remote_service('uuid_or_name', False), NonUniqueIdentifier)
|
||||
|
||||
# test api error
|
||||
mock_list.side_effect = [ApiError, ApiError]
|
||||
self.assertRaises(ApiError, dockercloud.Utils.fetch_remote_service, 'uuid_or_name', True)
|
||||
self.assertRaises(ApiError, dockercloud.Utils.fetch_remote_service, 'uuid_or_name', False)
|
||||
|
||||
@mock.patch('dockercloud.Node.list')
|
||||
@mock.patch('dockercloud.Node.fetch')
|
||||
def test_fetch_remote_node(self, mock_fetch, mock_list):
|
||||
# test node exist queried with uuid4
|
||||
mock_fetch.return_value = 'returned'
|
||||
self.assertEqual(dockercloud.Utils.fetch_remote_node('7A4CFE51-03BB-42D6-825E-3B533888D8CD', True), 'returned')
|
||||
self.assertEqual(dockercloud.Utils.fetch_remote_node('7A4CFE51-03BB-42D6-825E-3B533888D8CD', False), 'returned')
|
||||
|
||||
# test node doesn't exist queried with uuid4
|
||||
mock_fetch.side_effect = ObjectNotFound
|
||||
self.assertRaises(ObjectNotFound, dockercloud.Utils.fetch_remote_node, '7A4CFE51-03BB-42D6-825E-3B533888D8CD',
|
||||
True)
|
||||
self.assertIsInstance(dockercloud.Utils.fetch_remote_node('7A4CFE51-03BB-42D6-825E-3B533888D8CD', False),
|
||||
ObjectNotFound)
|
||||
|
||||
# test unique node found queried with short uuid
|
||||
node = dockercloud.Node.create()
|
||||
node.uuid = 'uuid'
|
||||
mock_list.side_effect = [[node]]
|
||||
mock_fetch.side_effect = [node]
|
||||
self.assertEquals(dockercloud.Utils.fetch_remote_node('uuid', True), node)
|
||||
mock_list.side_effect = [[node]]
|
||||
mock_fetch.side_effect = [node]
|
||||
self.assertEquals(dockercloud.Utils.fetch_remote_node('uuid', False), node)
|
||||
|
||||
# test no node found
|
||||
mock_list.side_effect = [[]]
|
||||
self.assertRaises(ObjectNotFound, dockercloud.Utils.fetch_remote_node, 'uuid', True)
|
||||
mock_list.side_effect = [[]]
|
||||
self.assertIsInstance(dockercloud.Utils.fetch_remote_node('uuid', False), ObjectNotFound)
|
||||
|
||||
# test multi-node found
|
||||
mock_list.side_effect = [['node1', 'node2']]
|
||||
self.assertRaises(NonUniqueIdentifier, dockercloud.Utils.fetch_remote_node, 'uuid', True)
|
||||
mock_list.side_effect = [['node1', 'node2']]
|
||||
self.assertIsInstance(dockercloud.Utils.fetch_remote_node('uuid', False), NonUniqueIdentifier)
|
||||
|
||||
# test api error
|
||||
mock_list.side_effect = [ApiError, ApiError]
|
||||
self.assertRaises(ApiError, dockercloud.Utils.fetch_remote_node, 'uuid', True)
|
||||
self.assertRaises(ApiError, dockercloud.Utils.fetch_remote_node, 'uuid', False)
|
||||
|
||||
@mock.patch('dockercloud.NodeCluster.list')
|
||||
@mock.patch('dockercloud.NodeCluster.fetch')
|
||||
def test_fetch_remote_nodecluster(self, mock_fetch, mock_list):
|
||||
# test nodecluster exist queried with uuid4
|
||||
mock_fetch.return_value = 'returned'
|
||||
self.assertEqual(dockercloud.Utils.fetch_remote_nodecluster('7A4CFE51-03BB-42D6-825E-3B533888D8CD', True),
|
||||
'returned')
|
||||
self.assertEqual(dockercloud.Utils.fetch_remote_nodecluster('7A4CFE51-03BB-42D6-825E-3B533888D8CD', False),
|
||||
'returned')
|
||||
|
||||
# test nodecluster doesn't exist queried with uuid4
|
||||
mock_fetch.side_effect = ObjectNotFound
|
||||
self.assertRaises(ObjectNotFound, dockercloud.Utils.fetch_remote_nodecluster,
|
||||
'7A4CFE51-03BB-42D6-825E-3B533888D8CD',
|
||||
True)
|
||||
self.assertIsInstance(dockercloud.Utils.fetch_remote_nodecluster('7A4CFE51-03BB-42D6-825E-3B533888D8CD', False),
|
||||
ObjectNotFound)
|
||||
|
||||
# test unique nodecluster found queried with short uuid
|
||||
nodecluster = dockercloud.NodeCluster.create()
|
||||
nodecluster.uuid = 'uuid'
|
||||
mock_list.side_effect = [[nodecluster], []]
|
||||
mock_fetch.side_effect = [nodecluster]
|
||||
self.assertEquals(dockercloud.Utils.fetch_remote_nodecluster('shortuuid', True), nodecluster)
|
||||
mock_list.side_effect = [[nodecluster], []]
|
||||
mock_fetch.side_effect = [nodecluster]
|
||||
self.assertEquals(dockercloud.Utils.fetch_remote_nodecluster('shortuuid', False), nodecluster)
|
||||
|
||||
# test unique nodecluster found queried with name
|
||||
mock_list.side_effect = [[], [nodecluster]]
|
||||
mock_fetch.side_effect = [nodecluster]
|
||||
self.assertEquals(dockercloud.Utils.fetch_remote_nodecluster('name', True), nodecluster)
|
||||
mock_list.side_effect = [[], [nodecluster]]
|
||||
mock_fetch.side_effect = [nodecluster]
|
||||
self.assertEquals(dockercloud.Utils.fetch_remote_nodecluster('name', False), nodecluster)
|
||||
|
||||
# test no nodecluster found
|
||||
mock_list.side_effect = [[], []]
|
||||
self.assertRaises(ObjectNotFound, dockercloud.Utils.fetch_remote_nodecluster, 'uuid_or_name', True)
|
||||
mock_list.side_effect = [[], []]
|
||||
self.assertIsInstance(dockercloud.Utils.fetch_remote_nodecluster('uuid_or_name', False), ObjectNotFound)
|
||||
|
||||
# test multi-nodecluster found
|
||||
mock_list.side_effect = [['nodecluster1', 'nodecluster2'], []]
|
||||
self.assertRaises(NonUniqueIdentifier, dockercloud.Utils.fetch_remote_nodecluster, 'uuid_or_name', True)
|
||||
mock_list.side_effect = [['nodecluster1', 'nodecluster2'], []]
|
||||
self.assertIsInstance(dockercloud.Utils.fetch_remote_nodecluster('uuid_or_name', False), NonUniqueIdentifier)
|
||||
mock_list.side_effect = [[], ['nodecluster1', 'nodecluster2']]
|
||||
self.assertRaises(NonUniqueIdentifier, dockercloud.Utils.fetch_remote_nodecluster, 'uuid_or_name', True)
|
||||
mock_list.side_effect = [[], ['nodecluster1', 'nodecluster2']]
|
||||
self.assertIsInstance(dockercloud.Utils.fetch_remote_nodecluster('uuid_or_name', False), NonUniqueIdentifier)
|
||||
|
||||
# test api error
|
||||
mock_list.side_effect = [ApiError, ApiError]
|
||||
self.assertRaises(ApiError, dockercloud.Utils.fetch_remote_nodecluster, 'uuid_or_name', True)
|
||||
self.assertRaises(ApiError, dockercloud.Utils.fetch_remote_nodecluster, 'uuid_or_name', False)
|
||||
Loading…
Add table
Add a link
Reference in a new issue