Skip to content
This repository was archived by the owner on Nov 17, 2022. It is now read-only.

Commit e213f48

Browse files
Merge pull request #67 from cbsinteractive/support-session
Support sessions
2 parents ca570c9 + bb36eeb commit e213f48

File tree

2 files changed

+15
-21
lines changed

2 files changed

+15
-21
lines changed

elemental/client.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ def __init__(self, server_ip, user=None, api_key=None):
3636
self.server_ip = server_ip
3737
self.user = user
3838
self.api_key = api_key
39+
self.session = requests.Session()
3940

4041
def generate_headers(self, url=""):
4142
# Generate headers according to how users create ElementalLive class
@@ -64,7 +65,7 @@ def generate_headers(self, url=""):
6465
def send_request(self, http_method, url, headers, body=""):
6566
# Send request according to different methods
6667
try:
67-
response = requests.request(
68+
response = self.session.request(
6869
method=http_method, url=url, data=body, headers=headers)
6970

7071
except requests.exceptions.RequestException as e:

elemental/client_test.py

Lines changed: 13 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -61,56 +61,49 @@ def test_genterate_header_without_authentication_should_not_contain_user():
6161
assert headers['Content-Type'] == 'application/xml'
6262

6363

64-
@mock.patch('requests.request')
65-
def test_send_request_should_call_request_as_expected(mock_request):
66-
mock_request.return_value = mock_response(status=200)
64+
def test_send_request_should_call_request_as_expected():
6765
client = ElementalLive(ELEMENTAL_ADDRESS, USER, API_KEY)
66+
client.session.request = mock.MagicMock(
67+
return_value=mock_response(status=200))
6868
client.send_request(
6969
'POST', f'{ELEMENTAL_ADDRESS}/live_events', HEADERS, REQUEST_BODY)
7070

71-
request_to_elemental = mock_request.call_args_list[0][1]
71+
request_to_elemental = client.session.request.call_args_list[0][1]
7272
assert request_to_elemental['url'] == f'{ELEMENTAL_ADDRESS}/live_events'
7373
assert request_to_elemental['method'] == 'POST'
7474
assert request_to_elemental['headers']['Accept'] == 'application/xml'
7575
assert request_to_elemental['headers']['Content-Type'] == 'application/xml'
7676

7777

78-
@mock.patch('requests.request')
79-
def test_send_request_should_return_response_on_correct_status_code(
80-
mock_request):
78+
def test_send_request_should_return_response_on_correct_status_code():
8179
response_from_elemental_api = file_fixture('success_response_for_'
8280
'create.xml')
83-
mock_request.return_value = mock_response(
84-
status=201, text=response_from_elemental_api)
85-
8681
client = ElementalLive(ELEMENTAL_ADDRESS, USER, API_KEY)
82+
client.session.request = mock.MagicMock(return_value=mock_response(
83+
status=201, text=response_from_elemental_api))
8784
response = client.send_request(
8885
'POST', f'{ELEMENTAL_ADDRESS}/live_events', HEADERS, REQUEST_BODY)
8986

9087
assert response.text == response_from_elemental_api
9188
assert response.status_code == 201
9289

9390

94-
@mock.patch('requests.request')
95-
def test_send_request_should_raise_InvalidRequest_on_RequestException(
96-
mock_request):
97-
mock_request.side_effect = requests.exceptions.RequestException()
98-
91+
def test_send_request_should_raise_InvalidRequest_on_RequestException():
9992
client = ElementalLive(ELEMENTAL_ADDRESS, USER, API_KEY)
93+
client.session.request = mock.MagicMock(
94+
side_effect=requests.exceptions.RequestException())
10095

10196
with pytest.raises(InvalidRequest):
10297
client.send_request(
10398
'POST', f'{ELEMENTAL_ADDRESS}/live_events', HEADERS, REQUEST_BODY)
10499

105100

106-
@mock.patch('requests.request')
107-
def test_send_request_should_raise_InvalidResponse_on_invalid_status_code(
108-
mock_request):
101+
def test_send_request_should_raise_InvalidResponse_on_invalid_status_code():
109102
response_from_elemental_api = file_fixture('fail_to_create_response.xml')
110-
mock_request.return_value = mock_response(
111-
status=404, text=response_from_elemental_api)
112103

113104
client = ElementalLive(ELEMENTAL_ADDRESS, USER, API_KEY)
105+
client.session.request = mock.MagicMock(return_value=mock_response(
106+
status=404, text=response_from_elemental_api))
114107

115108
with pytest.raises(InvalidResponse) as exc_info:
116109
client.send_request(

0 commit comments

Comments
 (0)