class QuotaControllerTest(trove_testtools.TestCase): def setUp(self): super(QuotaControllerTest, self).setUp() context = MagicMock() context.is_admin = True req = MagicMock() req.environ = MagicMock() req.environ.get = MagicMock(return_value=context) self.req = req self.controller = QuotaController() def tearDown(self): super(QuotaControllerTest, self).tearDown() def test_update_unknown_resource(self): body = {"quotas": {"unknown_resource": 5}} self.assertRaises( exception.QuotaResourceUnknown, self.controller.update, self.req, body, FAKE_TENANT1, FAKE_TENANT2 ) def test_update_resource_no_value(self): quota = MagicMock(spec=Quota) with patch.object(DatabaseModelBase, "find_by", return_value=quota): body = {"quotas": {"instances": None}} result = self.controller.update(self.req, body, FAKE_TENANT1, FAKE_TENANT2) self.assertEqual(0, quota.save.call_count) self.assertEqual(200, result.status) def test_update_resource_instance(self): instance_quota = MagicMock(spec=Quota) with patch.object(DatabaseModelBase, "find_by", return_value=instance_quota): body = {"quotas": {"instances": 2}} result = self.controller.update(self.req, body, FAKE_TENANT1, FAKE_TENANT2) self.assertEqual(1, instance_quota.save.call_count) self.assertTrue("instances" in result._data["quotas"]) self.assertEqual(200, result.status) self.assertEqual(2, result._data["quotas"]["instances"]) @skipIf(not CONF.trove_volume_support, "Volume support is not enabled") def test_update_resource_volume(self): instance_quota = MagicMock(spec=Quota) volume_quota = MagicMock(spec=Quota) def side_effect_func(*args, **kwargs): return instance_quota if kwargs["resource"] == "instances" else volume_quota with patch.object(DatabaseModelBase, "find_by", side_effect=side_effect_func): body = {"quotas": {"instances": None, "volumes": 10}} result = self.controller.update(self.req, body, FAKE_TENANT1, FAKE_TENANT2) self.assertEqual(0, instance_quota.save.call_count) self.assertFalse("instances" in result._data["quotas"]) self.assertEqual(1, volume_quota.save.call_count) self.assertEqual(200, result.status) self.assertEqual(10, result._data["quotas"]["volumes"])
class QuotaControllerTest(testtools.TestCase): def setUp(self): super(QuotaControllerTest, self).setUp() context = mock() context.is_admin = True req = mock() req.environ = mock() when(req.environ).get(any()).thenReturn(context) self.req = req self.controller = QuotaController() def tearDown(self): super(QuotaControllerTest, self).tearDown() unstub() def test_update_unknown_resource(self): body = {'quotas': {'unknown_resource': 5}} self.assertRaises(exception.QuotaResourceUnknown, self.controller.update, self.req, body, FAKE_TENANT1, FAKE_TENANT2) def test_update_resource_no_value(self): quota = mock(Quota) when(DatabaseModelBase).find_by(tenant_id=FAKE_TENANT2, resource='instances').thenReturn(quota) body = {'quotas': {'instances': None}} result = self.controller.update(self.req, body, FAKE_TENANT1, FAKE_TENANT2) verify(quota, never).save() self.assertEquals(200, result.status) def test_update_resource_instance(self): instance_quota = mock(Quota) when(DatabaseModelBase).find_by( tenant_id=FAKE_TENANT2, resource='instances').thenReturn(instance_quota) body = {'quotas': {'instances': 2}} result = self.controller.update(self.req, body, FAKE_TENANT1, FAKE_TENANT2) verify(instance_quota, times=1).save() self.assertTrue('instances' in result._data['quotas']) self.assertEquals(200, result.status) self.assertEquals(2, result._data['quotas']['instances']) @testtools.skipIf(not CONF.trove_volume_support, 'Volume support is not enabled') def test_update_resource_volume(self): instance_quota = mock(Quota) when(DatabaseModelBase).find_by( tenant_id=FAKE_TENANT2, resource='instances').thenReturn(instance_quota) volume_quota = mock(Quota) when(DatabaseModelBase).find_by( tenant_id=FAKE_TENANT2, resource='volumes').thenReturn(volume_quota) body = {'quotas': {'instances': None, 'volumes': 10}} result = self.controller.update(self.req, body, FAKE_TENANT1, FAKE_TENANT2) verify(instance_quota, never).save() self.assertFalse('instances' in result._data['quotas']) verify(volume_quota, times=1).save() self.assertEquals(200, result.status) self.assertEquals(10, result._data['quotas']['volumes'])
class QuotaControllerTest(testtools.TestCase): def setUp(self): super(QuotaControllerTest, self).setUp() context = MagicMock() context.is_admin = True req = MagicMock() req.environ = MagicMock() req.environ.get = MagicMock(return_value=context) self.req = req self.controller = QuotaController() def tearDown(self): super(QuotaControllerTest, self).tearDown() def test_update_unknown_resource(self): body = {'quotas': {'unknown_resource': 5}} self.assertRaises(exception.QuotaResourceUnknown, self.controller.update, self.req, body, FAKE_TENANT1, FAKE_TENANT2) def test_update_resource_no_value(self): quota = MagicMock(spec=Quota) with patch.object(DatabaseModelBase, 'find_by', return_value=quota): body = {'quotas': {'instances': None}} result = self.controller.update(self.req, body, FAKE_TENANT1, FAKE_TENANT2) self.assertEqual(quota.save.call_count, 0) self.assertEqual(200, result.status) def test_update_resource_instance(self): instance_quota = MagicMock(spec=Quota) with patch.object(DatabaseModelBase, 'find_by', return_value=instance_quota): body = {'quotas': {'instances': 2}} result = self.controller.update(self.req, body, FAKE_TENANT1, FAKE_TENANT2) self.assertEqual(instance_quota.save.call_count, 1) self.assertTrue('instances' in result._data['quotas']) self.assertEqual(200, result.status) self.assertEqual(2, result._data['quotas']['instances']) @testtools.skipIf(not CONF.trove_volume_support, 'Volume support is not enabled') def test_update_resource_volume(self): instance_quota = MagicMock(spec=Quota) volume_quota = MagicMock(spec=Quota) def side_effect_func(*args, **kwargs): return (instance_quota if kwargs['resource'] == 'instances' else volume_quota) with patch.object(DatabaseModelBase, 'find_by', side_effect=side_effect_func): body = {'quotas': {'instances': None, 'volumes': 10}} result = self.controller.update(self.req, body, FAKE_TENANT1, FAKE_TENANT2) self.assertEqual(instance_quota.save.call_count, 0) self.assertFalse('instances' in result._data['quotas']) self.assertEqual(volume_quota.save.call_count, 1) self.assertEqual(200, result.status) self.assertEqual(10, result._data['quotas']['volumes'])