python-dockercloud/tests/test_http.py
2016-01-26 18:45:04 +01:00

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')