Files
python-magnumclient/magnumclient/tests/osc/unit/v1/test_quotas.py
Sean McGinnis 3eafa2a001 Use unittest.mock instead of third party mock
Now that we no longer support py27, we can use the standard library
unittest.mock module instead of the third party mock lib.

Change-Id: I4a5b1ec999110a50fc904f3ae93e3983efa64f88
Signed-off-by: Sean McGinnis <sean.mcginnis@gmail.com>
2020-04-18 11:58:37 -05:00

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.
from unittest 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)