summaryrefslogtreecommitdiff
path: root/openstackclient/tests
diff options
context:
space:
mode:
Diffstat (limited to 'openstackclient/tests')
-rw-r--r--openstackclient/tests/compute/v2/fakes.py14
-rw-r--r--openstackclient/tests/compute/v2/test_server.py135
-rw-r--r--openstackclient/tests/utils.py8
3 files changed, 157 insertions, 0 deletions
diff --git a/openstackclient/tests/compute/v2/fakes.py b/openstackclient/tests/compute/v2/fakes.py
index cef5ee90..9a7964db 100644
--- a/openstackclient/tests/compute/v2/fakes.py
+++ b/openstackclient/tests/compute/v2/fakes.py
@@ -47,6 +47,18 @@ EXTENSION = {
'links': extension_links,
}
+flavor_id = 'm1.large'
+flavor_name = 'Large'
+flavor_ram = 8192
+flavor_vcpus = 4
+
+FLAVOR = {
+ 'id': flavor_id,
+ 'name': flavor_name,
+ 'ram': flavor_ram,
+ 'vcpus': flavor_vcpus,
+}
+
class FakeComputev2Client(object):
def __init__(self, **kwargs):
@@ -56,6 +68,8 @@ class FakeComputev2Client(object):
self.servers.resource_class = fakes.FakeResource(None, {})
self.extensions = mock.Mock()
self.extensions.resource_class = fakes.FakeResource(None, {})
+ self.flavors = mock.Mock()
+ self.flavors.resource_class = fakes.FakeResource(None, {})
self.auth_token = kwargs['token']
self.management_url = kwargs['endpoint']
diff --git a/openstackclient/tests/compute/v2/test_server.py b/openstackclient/tests/compute/v2/test_server.py
index efe4c58b..a98cd156 100644
--- a/openstackclient/tests/compute/v2/test_server.py
+++ b/openstackclient/tests/compute/v2/test_server.py
@@ -30,6 +30,10 @@ class TestServer(compute_fakes.TestComputev2):
self.servers_mock = self.app.client_manager.compute.servers
self.servers_mock.reset_mock()
+ # Get a shortcut to the FlavorManager Mock
+ self.flavors_mock = self.app.client_manager.compute.flavors
+ self.flavors_mock.reset_mock()
+
# Get a shortcut to the ImageManager Mock
self.images_mock = self.app.client_manager.image.images
self.images_mock.reset_mock()
@@ -148,3 +152,134 @@ class TestServerImageCreate(TestServer):
image_fakes.image_owner,
)
self.assertEqual(data, datalist)
+
+
+class TestServerResize(TestServer):
+
+ def setUp(self):
+ super(TestServerResize, self).setUp()
+
+ # This is the return value for utils.find_resource()
+ self.servers_get_return_value = fakes.FakeResource(
+ None,
+ copy.deepcopy(compute_fakes.SERVER),
+ loaded=True,
+ )
+ self.servers_mock.get.return_value = self.servers_get_return_value
+
+ self.servers_mock.resize.return_value = None
+ self.servers_mock.confirm_resize.return_value = None
+ self.servers_mock.revert_resize.return_value = None
+
+ # This is the return value for utils.find_resource()
+ self.flavors_get_return_value = fakes.FakeResource(
+ None,
+ copy.deepcopy(compute_fakes.FLAVOR),
+ loaded=True,
+ )
+ self.flavors_mock.get.return_value = self.flavors_get_return_value
+
+ # Get the command object to test
+ self.cmd = server.ResizeServer(self.app, None)
+
+ def test_server_resize_no_options(self):
+ arglist = [
+ compute_fakes.server_id,
+ ]
+ verifylist = [
+ ('verify', False),
+ ('revert', False),
+ ('server', compute_fakes.server_id),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ # DisplayCommandBase.take_action() returns two tuples
+ self.cmd.take_action(parsed_args)
+
+ self.servers_mock.get.assert_called_with(
+ compute_fakes.server_id,
+ )
+
+ self.assertNotCalled(self.servers_mock.resize)
+ self.assertNotCalled(self.servers_mock.confirm_resize)
+ self.assertNotCalled(self.servers_mock.revert_resize)
+
+ def test_server_resize(self):
+ arglist = [
+ '--flavor', compute_fakes.flavor_id,
+ compute_fakes.server_id,
+ ]
+ verifylist = [
+ ('flavor', compute_fakes.flavor_id),
+ ('verify', False),
+ ('revert', False),
+ ('server', compute_fakes.server_id),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ # DisplayCommandBase.take_action() returns two tuples
+ self.cmd.take_action(parsed_args)
+
+ self.servers_mock.get.assert_called_with(
+ compute_fakes.server_id,
+ )
+ self.flavors_mock.get.assert_called_with(
+ compute_fakes.flavor_id,
+ )
+
+ self.servers_mock.resize.assert_called_with(
+ self.servers_get_return_value,
+ self.flavors_get_return_value,
+ )
+ self.assertNotCalled(self.servers_mock.confirm_resize)
+ self.assertNotCalled(self.servers_mock.revert_resize)
+
+ def test_server_resize_confirm(self):
+ arglist = [
+ '--verify',
+ compute_fakes.server_id,
+ ]
+ verifylist = [
+ ('verify', True),
+ ('revert', False),
+ ('server', compute_fakes.server_id),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ # DisplayCommandBase.take_action() returns two tuples
+ self.cmd.take_action(parsed_args)
+
+ self.servers_mock.get.assert_called_with(
+ compute_fakes.server_id,
+ )
+
+ self.assertNotCalled(self.servers_mock.resize)
+ self.servers_mock.confirm_resize.assert_called_with(
+ self.servers_get_return_value,
+ )
+ self.assertNotCalled(self.servers_mock.revert_resize)
+
+ def test_server_resize_revert(self):
+ arglist = [
+ '--revert',
+ compute_fakes.server_id,
+ ]
+ verifylist = [
+ ('verify', False),
+ ('revert', True),
+ ('server', compute_fakes.server_id),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ # DisplayCommandBase.take_action() returns two tuples
+ self.cmd.take_action(parsed_args)
+
+ self.servers_mock.get.assert_called_with(
+ compute_fakes.server_id,
+ )
+
+ self.assertNotCalled(self.servers_mock.resize)
+ self.assertNotCalled(self.servers_mock.confirm_resize)
+ self.servers_mock.revert_resize.assert_called_with(
+ self.servers_get_return_value,
+ )
diff --git a/openstackclient/tests/utils.py b/openstackclient/tests/utils.py
index 307abd7b..38d47250 100644
--- a/openstackclient/tests/utils.py
+++ b/openstackclient/tests/utils.py
@@ -37,6 +37,14 @@ class TestCase(testtools.TestCase):
stderr = self.useFixture(fixtures.StringStream("stderr")).stream
self.useFixture(fixtures.MonkeyPatch("sys.stderr", stderr))
+ def assertNotCalled(self, m, msg=None):
+ """Assert a function was not called"""
+
+ if m.called:
+ if not msg:
+ msg = 'method %s should not have been called' % m
+ self.fail(msg)
+
# 2.6 doesn't have the assert dict equals so make sure that it exists
if tuple(sys.version_info)[0:2] < (2, 7):