Merge "Share admin_password unit test between V2 & V2.1"

This commit is contained in:
Jenkins
2015-01-22 01:15:13 +00:00
committed by Gerrit Code Review
2 changed files with 64 additions and 75 deletions

View File

@@ -18,6 +18,7 @@ import webob
from nova.api.openstack.compute.plugins.v3 import admin_password \
as admin_password_v21
from nova.api.openstack.compute import servers
from nova.compute import api as compute_api
from nova import exception
from nova import test
@@ -33,31 +34,37 @@ def fake_set_admin_password(self, context, instance, password=None):
class AdminPasswordTestV21(test.NoDBTestCase):
validiation_error = exception.ValidationError
def setUp(self):
super(AdminPasswordTestV21, self).setUp()
self.stubs.Set(compute_api.API, 'set_admin_password',
fake_set_admin_password)
self.stubs.Set(compute_api.API, 'get', fake_get)
self.controller = admin_password_v21.AdminPasswordController()
self.fake_req = fakes.HTTPRequest.blank('')
def _get_action(self):
return admin_password_v21.AdminPasswordController().change_password
def _check_status(self, expected_status, res, controller_method):
self.assertEqual(expected_status, controller_method.wsgi_code)
def test_change_password(self):
body = {'changePassword': {'adminPass': 'test'}}
self.controller.change_password(self.fake_req, '1', body=body)
self.assertEqual(self.controller.change_password.wsgi_code, 202)
res = self._get_action()(self.fake_req, '1', body=body)
self._check_status(202, res, self._get_action())
def test_change_password_empty_string(self):
body = {'changePassword': {'adminPass': ''}}
self.controller.change_password(self.fake_req, '1', body=body)
self.assertEqual(self.controller.change_password.wsgi_code, 202)
res = self._get_action()(self.fake_req, '1', body=body)
self._check_status(202, res, self._get_action())
@mock.patch('nova.compute.api.API.set_admin_password',
side_effect=NotImplementedError())
def test_change_password_with_non_implement(self, mock_set_admin_password):
body = {'changePassword': {'adminPass': 'test'}}
self.assertRaises(webob.exc.HTTPNotImplemented,
self.controller.change_password,
self._get_action(),
self.fake_req, '1', body=body)
@mock.patch('nova.compute.api.API.get',
@@ -65,13 +72,13 @@ class AdminPasswordTestV21(test.NoDBTestCase):
def test_change_password_with_non_existed_instance(self, mock_get):
body = {'changePassword': {'adminPass': 'test'}}
self.assertRaises(webob.exc.HTTPNotFound,
self.controller.change_password,
self._get_action(),
self.fake_req, '1', body=body)
def test_change_password_with_non_string_password(self):
body = {'changePassword': {'adminPass': 1234}}
self.assertRaises(exception.ValidationError,
self.controller.change_password,
self.assertRaises(self.validiation_error,
self._get_action(),
self.fake_req, '1', body=body)
@mock.patch('nova.compute.api.API.set_admin_password',
@@ -80,17 +87,59 @@ class AdminPasswordTestV21(test.NoDBTestCase):
def test_change_password_failed(self, mock_set_admin_password):
body = {'changePassword': {'adminPass': 'test'}}
self.assertRaises(webob.exc.HTTPConflict,
self.controller.change_password,
self._get_action(),
self.fake_req, '1', body=body)
def test_change_password_without_admin_password(self):
body = {'changPassword': {}}
self.assertRaises(exception.ValidationError,
self.controller.change_password,
self.assertRaises(self.validiation_error,
self._get_action(),
self.fake_req, '1', body=body)
def test_change_password_none(self):
body = {'changePassword': None}
self.assertRaises(exception.ValidationError,
self.controller.change_password,
body = {'changePassword': {'adminPass': None}}
self.assertRaises(self.validiation_error,
self._get_action(),
self.fake_req, '1', body=body)
def test_change_password_adminpass_none(self):
body = {'changePassword': None}
self.assertRaises(self.validiation_error,
self._get_action(),
self.fake_req, '1', body=body)
def test_change_password_bad_request(self):
body = {'changePassword': {'pass': '12345'}}
self.assertRaises(self.validiation_error,
self._get_action(),
self.fake_req, '1', body=body)
def test_server_change_password_pass_disabled(self):
# run with enable_instance_password disabled to verify adminPass
# is missing from response. See lp bug 921814
self.flags(enable_instance_password=False)
body = {'changePassword': {'adminPass': '1234pass'}}
res = self._get_action()(self.fake_req, '1', body=body)
self._check_status(202, res, self._get_action())
class AdminPasswordTestV2(AdminPasswordTestV21):
validiation_error = webob.exc.HTTPBadRequest
def _get_action(self):
class FakeExtManager(object):
def is_loaded(self, ext):
return False
return servers.Controller(ext_mgr=FakeExtManager()).\
_action_change_password
def _check_status(self, expected_status, res, controller_method):
self.assertEqual(expected_status, res.status_int)
def test_change_password_failed(self):
# TODO(eliqiao): need to handle InstancePasswordSetFailed in v2 api
pass
def test_change_password_adminpass_none(self):
# TODO(eliqiao): need to handle adminpass is None in v2 api
pass

View File

@@ -1344,66 +1344,6 @@ class ServerActionsControllerTestV2(ServerActionsControllerTestV21):
location = response.headers['Location']
self.assertEqual('https://glancehost/v2/fake/images/123', location)
# TODO(eliqiao): password cases should be move to test_admin_password
def test_server_change_password(self):
mock_method = MockSetAdminPassword()
self.stubs.Set(compute_api.API, 'set_admin_password', mock_method)
body = {'changePassword': {'adminPass': '1234pass'}}
req = fakes.HTTPRequest.blank(self.url)
self.controller._action_change_password(req, FAKE_UUID, body)
self.assertEqual(mock_method.instance_id, self.uuid)
self.assertEqual(mock_method.password, '1234pass')
def test_server_change_password_pass_disabled(self):
# run with enable_instance_password disabled to verify adminPass
# is missing from response. See lp bug 921814
self.flags(enable_instance_password=False)
mock_method = MockSetAdminPassword()
self.stubs.Set(compute_api.API, 'set_admin_password', mock_method)
body = {'changePassword': {'adminPass': '1234pass'}}
req = fakes.HTTPRequest.blank(self.url)
self.controller._action_change_password(req, FAKE_UUID, body)
self.assertEqual(mock_method.instance_id, self.uuid)
# note,the mock still contains the password.
self.assertEqual(mock_method.password, '1234pass')
def test_server_change_password_not_a_string(self):
body = {'changePassword': {'adminPass': 1234}}
req = fakes.HTTPRequest.blank(self.url)
self.assertRaises(webob.exc.HTTPBadRequest,
self.controller._action_change_password,
req, FAKE_UUID, body)
def test_server_change_password_bad_request(self):
body = {'changePassword': {'pass': '12345'}}
req = fakes.HTTPRequest.blank(self.url)
self.assertRaises(webob.exc.HTTPBadRequest,
self.controller._action_change_password,
req, FAKE_UUID, body)
def test_server_change_password_empty_string(self):
mock_method = MockSetAdminPassword()
self.stubs.Set(compute_api.API, 'set_admin_password', mock_method)
body = {'changePassword': {'adminPass': ''}}
req = fakes.HTTPRequest.blank(self.url)
self.controller._action_change_password(req, FAKE_UUID, body)
self.assertEqual(mock_method.instance_id, self.uuid)
self.assertEqual(mock_method.password, '')
def test_server_change_password_none(self):
body = {'changePassword': {'adminPass': None}}
req = fakes.HTTPRequest.blank(self.url)
self.assertRaises(webob.exc.HTTPBadRequest,
self.controller._action_change_password,
req, FAKE_UUID, body)
def test_rebuild_preserve_ephemeral_is_ignored_when_ext_not_loaded(self):
return_server = fakes.fake_instance_get(image_ref='2',
vm_state=vm_states.ACTIVE,