python-magnumclient/magnumclient/tests/osc/unit/v1/test_quotas.py

316 lines
9.8 KiB
Python

# Copyright 2015 NEC Corporation. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import mock
from magnumclient.osc.v1 import quotas as osc_quotas
from magnumclient.tests.osc.unit.v1 import fakes as magnum_fakes
class TestQuotas(magnum_fakes.TestMagnumClientOSCV1):
def setUp(self):
super(TestQuotas, self).setUp()
self.quotas_mock = self.app.client_manager.container_infra.quotas
class TestQuotasCreate(TestQuotas):
def setUp(self):
super(TestQuotasCreate, self).setUp()
attr = dict()
attr['name'] = 'fake-quota'
attr['project_id'] = 'abc'
attr['resource'] = 'Cluster'
self._quota = magnum_fakes.FakeQuota.create_one_quota(attr)
self._default_args = {
'project_id': 'abc',
'resource': 'Cluster',
'hard_limit': 1
}
self.quotas_mock.create = mock.Mock()
self.quotas_mock.create.return_value = self._quota
self.cmd = osc_quotas.CreateQuotas(self.app, None)
self.data = tuple(map(lambda x: getattr(self._quota, x),
osc_quotas.QUOTA_ATTRIBUTES))
def test_quotas_create(self):
arglist = [
'--project-id', 'abc',
'--resource', 'Cluster'
]
verifylist = [
('project_id', 'abc'),
('resource', 'Cluster')
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
self.cmd.take_action(parsed_args)
self.quotas_mock.create.assert_called_with(**self._default_args)
def test_quotas_create_with_hardlimit(self):
arglist = [
'--project-id', 'abc',
'--resource', 'Cluster',
'--hard-limit', '10'
]
verifylist = [
('project_id', 'abc'),
('resource', 'Cluster'),
('hard_limit', 10)
]
self._default_args['hard_limit'] = 10
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
self.cmd.take_action(parsed_args)
self.quotas_mock.create.assert_called_with(**self._default_args)
def test_quotas_create_wrong_projectid(self):
arglist = ['abcd']
verifylist = [
('project_id', 'abcd')
]
self.assertRaises(magnum_fakes.MagnumParseException,
self.check_parser, self.cmd, arglist, verifylist)
def test_quotas_create_missing_args(self):
arglist = []
verifylist = []
self.assertRaises(magnum_fakes.MagnumParseException,
self.check_parser, self.cmd, arglist, verifylist)
def test_quotas_create_with_wrong_args(self):
arglist = [
'--project-id', 'abc',
'--resources', 'Cluster', # Misspelling 'resources'
'--hard-limit', '10'
]
verifylist = []
self.assertRaises(magnum_fakes.MagnumParseException,
self.check_parser, self.cmd, arglist, verifylist)
class TestQuotasDelete(TestQuotas):
def setUp(self):
super(TestQuotasDelete, self).setUp()
self.quotas_mock.delete = mock.Mock()
self.quotas_mock.delete.return_value = None
self.cmd = osc_quotas.DeleteQuotas(self.app, None)
def test_quotas_delete(self):
arglist = [
'--project-id', 'abc',
'--resource', 'Cluster'
]
verifylist = [
('project_id', 'abc'),
('resource', 'Cluster')
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
self.cmd.take_action(parsed_args)
self.quotas_mock.delete.assert_called_with('abc', 'Cluster')
def test_quotas_delete_no_project_id(self):
arglist = [
'--resource', 'Cluster'
]
verifylist = [
('resource', 'Cluster')
]
self.assertRaises(magnum_fakes.MagnumParseException,
self.check_parser, self.cmd, arglist, verifylist)
def test_quotas_delete_no_resource(self):
arglist = [
'--project-id', 'abc',
]
verifylist = [
('project_id', 'abc')
]
self.assertRaises(magnum_fakes.MagnumParseException,
self.check_parser, self.cmd, arglist, verifylist)
def test_quotas_delete_missing_args(self):
arglist = []
verifylist = []
self.assertRaises(magnum_fakes.MagnumParseException,
self.check_parser, self.cmd, arglist, verifylist)
def test_quotas_delete_wrong_args(self):
arglist = [
'--project-ids', 'abc', # Misspelling 'ids' instead of 'id'
'--resource', 'Cluster'
]
verifylist = []
self.assertRaises(magnum_fakes.MagnumParseException,
self.check_parser, self.cmd, arglist, verifylist)
class TestQuotasShow(TestQuotas):
def setUp(self):
super(TestQuotasShow, self).setUp()
attr = dict()
attr['name'] = 'fake-quota'
attr['project_id'] = 'abc'
attr['resource'] = 'Cluster'
self._quota = magnum_fakes.FakeQuota.create_one_quota(attr)
self._default_args = {
'project_id': 'abc',
'resource': 'Cluster',
}
self.quotas_mock.get = mock.Mock()
self.quotas_mock.get.return_value = self._quota
self.cmd = osc_quotas.ShowQuotas(self.app, None)
self.data = tuple(map(lambda x: getattr(self._quota, x),
osc_quotas.QUOTA_ATTRIBUTES))
def test_quotas_show(self):
arglist = [
'--project-id', 'abc',
'--resource', 'Cluster'
]
verifylist = [
('project_id', 'abc'),
('resource', 'Cluster')
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
self.cmd.take_action(parsed_args)
self.quotas_mock.get.assert_called_with('abc', 'Cluster')
def test_quotas_show_missing_args(self):
arglist = []
verifylist = []
self.assertRaises(magnum_fakes.MagnumParseException,
self.check_parser, self.cmd, arglist, verifylist)
class TestQuotasUpdate(TestQuotas):
def setUp(self):
super(TestQuotasUpdate, self).setUp()
attr = dict()
attr['name'] = 'fake-quota'
attr['project_id'] = 'abc'
attr['resource'] = 'Cluster'
self._quota = magnum_fakes.FakeQuota.create_one_quota(attr)
self._default_args = {
'project_id': 'abc',
'resource': 'Cluster',
'hard_limit': 10
}
self.quotas_mock.update = mock.Mock()
self.quotas_mock.update.return_value = self._quota
self.cmd = osc_quotas.UpdateQuotas(self.app, None)
def test_quotas_update(self):
arglist = [
'--project-id', 'abc',
'--resource', 'Cluster',
'--hard-limit', '10'
]
verifylist = [
('project_id', 'abc'),
('resource', 'Cluster'),
('hard_limit', 10)
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
self.cmd.take_action(parsed_args)
self.quotas_mock.update.assert_called_with('abc', 'Cluster',
self._default_args)
def test_quotas_update_missing_args(self):
arglist = ['abcd']
verifylist = [
('project_id', 'abcd')
]
self.assertRaises(magnum_fakes.MagnumParseException,
self.check_parser, self.cmd, arglist, verifylist)
def test_quotas_update_wrong_args(self):
arglist = [
'--project-id', 'abc',
'--resource', 'Cluster',
'--hard-limits', '10' # Misspelling 'hard-limits'
]
verifylist = [
('project_id', 'abc'),
('resource', 'Cluster'),
('hard_limit', 10)
]
self.assertRaises(magnum_fakes.MagnumParseException,
self.check_parser, self.cmd, arglist, verifylist)
class TestQuotasList(TestQuotas):
def setUp(self):
super(TestQuotasList, self).setUp()
attr = dict()
attr['name'] = 'fake-quota'
attr['project_id'] = 'abc'
attr['resource'] = 'Cluster'
self._quota = magnum_fakes.FakeQuota.create_one_quota(attr)
self.quotas_mock.list = mock.Mock()
self.quotas_mock.list.return_value = [self._quota]
self.cmd = osc_quotas.ListQuotas(self.app, None)
def test_quotas_list_with_no_options(self):
arglist = [
]
verifylist = [
('limit', None),
('sort_key', None),
('sort_dir', None),
('marker', None),
('all_tenants', False)
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
self.cmd.take_action(parsed_args)
self.quotas_mock.list.assert_called_with(
limit=None,
sort_dir=None,
sort_key=None,
marker=None,
all_tenants=False
)
def test_quotas_list_wrong_args(self):
arglist = ['--wrong']
verifylist = [
('wrong')
]
self.assertRaises(magnum_fakes.MagnumParseException,
self.check_parser, self.cmd, arglist, verifylist)