
The new client adheres to the standards of the other clients now. It prints out tables, uses ENVVAR's for auth, no longer stores pickled json in a login token, uses openstack common, and moves the cli operations into a v1 module for the future of trove when it has a v2 api. Please note for compatibility, the troveclient.compat module has the old cli. In order to deploy it, amend the setup.cfg to include the compat module. implements blueprint cli-compliance-upgrade Change-Id: Ie69d9dbc75ce90496da316244c97acca1877a327
80 lines
2.5 KiB
Python
80 lines
2.5 KiB
Python
from testtools import TestCase
|
|
from mock import Mock
|
|
from troveclient.v1 import limits
|
|
|
|
|
|
class LimitsTest(TestCase):
|
|
"""
|
|
This class tests the calling code for the Limits API
|
|
"""
|
|
|
|
def setUp(self):
|
|
super(LimitsTest, self).setUp()
|
|
self.limits = limits.Limits(Mock())
|
|
self.limits.api.client = Mock()
|
|
|
|
def tearDown(self):
|
|
super(LimitsTest, self).tearDown()
|
|
|
|
def test_list(self):
|
|
resp = Mock()
|
|
resp.status_code = 200
|
|
body = {"limits":
|
|
[
|
|
{'maxTotalInstances': 55,
|
|
'verb': 'ABSOLUTE',
|
|
'maxTotalVolumes': 100},
|
|
{'regex': '.*',
|
|
'nextAvailable': '2011-07-21T18:17:06Z',
|
|
'uri': '*',
|
|
'value': 10,
|
|
'verb': 'POST',
|
|
'remaining': 2, 'unit': 'MINUTE'},
|
|
{'regex': '.*',
|
|
'nextAvailable': '2011-07-21T18:17:06Z',
|
|
'uri': '*',
|
|
'value': 10,
|
|
'verb': 'PUT',
|
|
'remaining': 2,
|
|
'unit': 'MINUTE'},
|
|
{'regex': '.*',
|
|
'nextAvailable': '2011-07-21T18:17:06Z',
|
|
'uri': '*',
|
|
'value': 10,
|
|
'verb': 'DELETE',
|
|
'remaining': 2,
|
|
'unit': 'MINUTE'},
|
|
{'regex': '.*',
|
|
'nextAvailable': '2011-07-21T18:17:06Z',
|
|
'uri': '*',
|
|
'value': 10,
|
|
'verb': 'GET',
|
|
'remaining': 2, 'unit': 'MINUTE'}]}
|
|
response = (resp, body)
|
|
|
|
mock_get = Mock(return_value=response)
|
|
self.limits.api.client.get = mock_get
|
|
self.assertIsNotNone(self.limits.list())
|
|
mock_get.assert_called_once_with("/limits")
|
|
|
|
def test_list_errors(self):
|
|
status_list = [400, 401, 403, 404, 408, 409, 413, 500, 501]
|
|
for status_code in status_list:
|
|
self._check_error_response(status_code)
|
|
|
|
def _check_error_response(self, status_code):
|
|
RESPONSE_KEY = "limits"
|
|
|
|
resp = Mock()
|
|
resp.status_code = status_code
|
|
body = {RESPONSE_KEY: {
|
|
'absolute': {},
|
|
'rate': [
|
|
{'limit': []
|
|
}]}}
|
|
response = (resp, body)
|
|
|
|
mock_get = Mock(return_value=response)
|
|
self.limits.api.client.get = mock_get
|
|
self.assertRaises(Exception, self.limits.list)
|