33 lines
1.4 KiB
Python
33 lines
1.4 KiB
Python
from __future__ import absolute_import
|
|
|
|
import unittest
|
|
|
|
import requests
|
|
import unittest.mock as mock
|
|
|
|
import dockercloud
|
|
from dockercloud.api.base import send_request
|
|
from .fake_api import fake_resp
|
|
|
|
|
|
class SendRequestTestCase(unittest.TestCase):
|
|
@mock.patch('dockercloud.api.http.Request', return_value=requests.Request('GET', 'http://fake.com'))
|
|
@mock.patch.object(dockercloud.api.http.Session, 'send')
|
|
def test_http_send_request(self, mock_send, mock_Request):
|
|
json_obj = {'key': 'value'}
|
|
mock_send.return_value = fake_resp(lambda: (None, json_obj))
|
|
self.assertRaises(dockercloud.ApiError, send_request, 'METHOD', 'path', data='data')
|
|
headers = {'Content-Type': 'application/json', 'User-Agent': 'python-dockercloud/%s' % dockercloud.__version__}
|
|
headers.update(dockercloud.auth.get_auth_header())
|
|
|
|
mock_send.return_value = fake_resp(lambda: (200, json_obj))
|
|
self.assertEqual(json_obj, send_request('METHOD', 'path'))
|
|
|
|
mock_send.return_value = fake_resp(lambda: (204, json_obj))
|
|
self.assertIsNone(send_request('METHOD', 'path'))
|
|
|
|
mock_send.return_value = fake_resp(lambda: (401, json_obj))
|
|
self.assertRaises(dockercloud.AuthError, send_request, 'METHOD', 'path')
|
|
|
|
mock_send.return_value = fake_resp(lambda: (500, json_obj))
|
|
self.assertRaises(dockercloud.ApiError, send_request, 'METHOD', 'path')
|