예제 #1
0
    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)
예제 #2
0
    def test_profile_data_to_primitive(self):
        data = {'name': 'foo', 'metadata': {'aaa': 'bbb'}}
        sot = profiles.ProfileUpdateRequestBody(**data)
        res = sot.obj_to_primitive()

        self.assertIn('name', res['senlin_object.changes'])
        self.assertIn('metadata', res['senlin_object.changes'])
        self.assertEqual('foo', res['senlin_object.data']['name'])
        self.assertEqual('{"aaa": "bbb"}',
                         res['senlin_object.data']['metadata'])
        self.assertEqual('ProfileUpdateRequestBody', res['senlin_object.name'])
        self.assertEqual('senlin', res['senlin_object.namespace'])
        self.assertEqual('1.0', res['senlin_object.version'])
예제 #3
0
    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'])
예제 #4
0
    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')
예제 #5
0
    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)
예제 #6
0
    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)
예제 #7
0
 def test_profile_update_body(self):
     data = {'name': 'foo', 'metadata': {'aaa': 'bbb'}}
     sot = profiles.ProfileUpdateRequestBody(**data)
     self.assertEqual('foo', sot.name)
     self.assertEqual({'aaa': 'bbb'}, sot.metadata)