def test_sessionclient_request_method( self, mock_from_resp, mock_request): kwargs = { "body": { "volume": { "status": "creating", "imageRef": "username", "attach_status": "detached" }, "authenticated": "True" } } resp = { "text": { "volume": { "status": "creating", "id": "431253c0-e203-4da2-88df-60c756942aaf", "size": 1 } }, "code": 202 } mock_response = utils.TestResponse({ "status_code": 202, "text": six.b(json.dumps(resp)), }) # 'request' method of Adaptor will return 202 response mock_request.return_value = mock_response session_client = cinderclient.client.SessionClient(session=mock.Mock()) response, body = session_client.request(mock.sentinel.url, 'POST', **kwargs) self.assertIsNotNone(session_client._logger) # In this case, from_response method will not get called # because response status_code is < 400 self.assertEqual(202, response.status_code) self.assertFalse(mock_from_resp.called)
def test_sessionclient_request_method_raises_overlimit( self, mock_request): resp = { "overLimitFault": { "message": "This request was rate-limited.", "code": 413 } } mock_response = utils.TestResponse({ "status_code": 413, "text": six.b(json.dumps(resp)), }) # 'request' method of Adaptor will return 413 response mock_request.return_value = mock_response session_client = cinderclient.client.SessionClient( session=mock.Mock()) self.assertRaises(exceptions.OverLimit, session_client.request, mock.sentinel.url, 'GET') self.assertIsNotNone(session_client._logger)
def test_get_server_version(self, mock_request): mock_response = utils.TestResponse({ "status_code": 200, "text": json.dumps(fakes.fake_request_get()) }) mock_request.return_value = mock_response url = "http://192.168.122.127:8776/v3/e5526285ebd741b1819393f772f11fc3" min_version, max_version = cinderclient.client.get_server_version(url) self.assertEqual(min_version, api_versions.APIVersion('3.0')) self.assertEqual(max_version, api_versions.APIVersion('3.16')) url = "https://192.168.122.127:8776/v3/e55285ebd741b1819393f772f11fc3" min_version, max_version = cinderclient.client.get_server_version(url) self.assertEqual(min_version, api_versions.APIVersion('3.0')) self.assertEqual(max_version, api_versions.APIVersion('3.16'))
def test_sessionclient_request_method_raises_badrequest( self, mock_request): kwargs = { "body": { "volume": { "status": "creating", "imageRef": "username", "attach_status": "detached" }, "authenticated": "True" } } resp = { "badRequest": { "message": "Invalid image identifier or unable to access " "requested image.", "code": 400 } } mock_response = utils.TestResponse({ "status_code": 400, "text": six.b(json.dumps(resp)), }) # 'request' method of Adaptor will return 400 response mock_request.return_value = mock_response session_client = cinderclient.client.SessionClient( session=mock.Mock()) # 'from_response' method will raise BadRequest because # resp.status_code is 400 self.assertRaises(exceptions.BadRequest, session_client.request, mock.sentinel.url, 'POST', **kwargs) self.assertIsNotNone(session_client._logger)