def test_profile_update(self): data = {'name': 'foo', 'metadata': {'aaa': 'bbb'}} body = profiles.ProfileUpdateRequestBody(**data) request = {'identity': 'pid', 'profile': body} sot = profiles.ProfileUpdateRequest(**request) self.assertEqual('pid', sot.identity) self.assertIsInstance(sot.profile, profiles.ProfileUpdateRequestBody)
def test_request_to_primitive(self): data = {'name': 'foo', 'metadata': {'aaa': 'bbb'}} body = profiles.ProfileUpdateRequestBody(**data) request = {'identity': 'pid', 'profile': body} sot = profiles.ProfileUpdateRequest(**request) res = sot.obj_to_primitive() self.assertIn('identity', res['senlin_object.changes']) self.assertEqual(u'pid', res['senlin_object.data']['identity']) self.assertEqual('ProfileUpdateRequest', res['senlin_object.name']) self.assertEqual('senlin', res['senlin_object.namespace']) self.assertEqual('1.0', res['senlin_object.version'])
def test_profile_update_not_found(self, mock_find): mock_find.side_effect = exc.ResourceNotFound(type='profile', id='Bogus') req_body = vorp.ProfileUpdateRequestBody(name='NEW_NAME') req = vorp.ProfileUpdateRequest(identity='Bogus', profile=req_body) ex = self.assertRaises(rpc.ExpectedException, self.svc.profile_update, self.ctx, req.obj_to_primitive()) self.assertEqual(exc.ResourceNotFound, ex.exc_info[0]) self.assertEqual("The profile 'Bogus' could not be found.", six.text_type(ex.exc_info[1])) mock_find.assert_called_once_with(self.ctx, 'Bogus')
def test_profile_update_name_none(self, mock_find, mock_load): x_obj = mock.Mock() mock_find.return_value = x_obj x_profile = mock.Mock() x_profile.name = 'OLD_NAME' x_profile.to_dict.return_value = {'foo': 'bar'} mock_load.return_value = x_profile params = {'name': None, 'metadata': {'K': 'V'}} req_body = vorp.ProfileUpdateRequestBody(**params) req = vorp.ProfileUpdateRequest(identity='PID', profile=req_body) result = self.svc.profile_update(self.ctx, req.obj_to_primitive()) self.assertEqual({'foo': 'bar'}, result) mock_find.assert_called_once_with(self.ctx, 'PID') mock_load.assert_called_once_with(self.ctx, profile=x_obj) self.assertEqual('OLD_NAME', x_profile.name) self.assertEqual({'K': 'V'}, x_profile.metadata) x_profile.store.assert_called_once_with(self.ctx)
def test_profile_update_no_change(self, mock_find, mock_load): x_obj = mock.Mock() mock_find.return_value = x_obj x_profile = mock.Mock() x_profile.name = 'OLD_NAME' x_profile.to_dict.return_value = {'foo': 'bar'} mock_load.return_value = x_profile req_body = vorp.ProfileUpdateRequestBody(name='OLD_NAME') req = vorp.ProfileUpdateRequest(identity='PID', profile=req_body) ex = self.assertRaises(rpc.ExpectedException, self.svc.profile_update, self.ctx, req.obj_to_primitive()) self.assertEqual(exc.BadRequest, ex.exc_info[0]) self.assertEqual('No property needs an update.', str(ex.exc_info[1])) mock_find.assert_called_once_with(self.ctx, 'PID') mock_load.assert_called_once_with(self.ctx, profile=x_obj) self.assertEqual(0, x_profile.store.call_count) self.assertEqual('OLD_NAME', x_profile.name)