2013-02-25 21:18:51 -08:00
|
|
|
from testtools import TestCase
|
|
|
|
from mock import Mock
|
|
|
|
from reddwarfclient import limits
|
|
|
|
|
|
|
|
|
|
|
|
class LimitsTest(TestCase):
|
2013-03-06 15:36:00 -08:00
|
|
|
"""
|
|
|
|
This class tests the calling code for the Limits API
|
|
|
|
"""
|
2013-02-25 21:18:51 -08:00
|
|
|
|
|
|
|
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_index(self):
|
|
|
|
RESPONSE_KEY = "limits"
|
|
|
|
|
|
|
|
resp = Mock()
|
|
|
|
resp.status = 200
|
2013-03-06 15:36:00 -08:00
|
|
|
body = {RESPONSE_KEY: {
|
|
|
|
"absolute": {
|
|
|
|
"maxTotalInstances": 55,
|
|
|
|
"maxTotalVolumes": 100
|
2013-02-25 21:18:51 -08:00
|
|
|
},
|
2013-03-06 15:36:00 -08:00
|
|
|
'rate': [
|
|
|
|
{'limit': [
|
|
|
|
{
|
|
|
|
"next-available": "2013-02-26T00:00:13Z",
|
|
|
|
"remaining": 100,
|
|
|
|
"unit": "MINUTE",
|
|
|
|
"value": 100,
|
|
|
|
"verb": "POST"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"next-available": "2013-02-26T00:00:13Z",
|
|
|
|
"remaining": 100,
|
|
|
|
"unit": "MINUTE",
|
|
|
|
"value": 100,
|
|
|
|
"verb": "PUT"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"next-available": "2013-02-26T00:00:13Z",
|
|
|
|
"remaining": 100,
|
|
|
|
"unit": "MINUTE",
|
|
|
|
"value": 100,
|
|
|
|
"verb": "DELETE"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"next-available": "2013-02-26T00:00:13Z",
|
|
|
|
"remaining": 99,
|
|
|
|
"unit": "MINUTE",
|
|
|
|
"value": 100,
|
|
|
|
"verb": "GET"
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}]}}
|
2013-02-25 21:18:51 -08:00
|
|
|
response = (resp, body)
|
|
|
|
|
|
|
|
mock_get = Mock(return_value=response)
|
|
|
|
self.limits.api.client.get = mock_get
|
|
|
|
self.assertIsNotNone(self.limits.index())
|
|
|
|
mock_get.assert_called_once_with("/limits")
|
|
|
|
|
|
|
|
def test_index_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 = status_code
|
2013-03-06 15:36:00 -08:00
|
|
|
body = {RESPONSE_KEY: {
|
|
|
|
'absolute': {},
|
|
|
|
'rate': [
|
2013-02-25 21:18:51 -08:00
|
|
|
{'limit': []
|
2013-03-06 15:36:00 -08:00
|
|
|
}]}}
|
2013-02-25 21:18:51 -08:00
|
|
|
response = (resp, body)
|
|
|
|
|
|
|
|
mock_get = Mock(return_value=response)
|
|
|
|
self.limits.api.client.get = mock_get
|
|
|
|
self.assertRaises(Exception, self.limits.index)
|