Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 13 additions & 4 deletions pyswagger/contrib/client/requests.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,19 +10,29 @@ class Client(BaseClient):

__schemes__ = set(['http', 'https'])

def __init__(self, auth=None, send_opt=None):
def set_session(self, session):
""" set the requests.Session used by the client

:param session requests.Session: instance of Session client should use
"""
if not isinstance(session, Session):
raise TypeError("session is not an instance of requests.Session")
self.__s = session

def __init__(self, auth=None, send_opt=None, session=None):
""" constructor

:param auth pyswagger.SwaggerAuth: auth info used when requesting
:param send_opt dict: options used in requests.send, ex verify=False
:param session requests.Session: optional, set the client Session
"""
super(Client, self).__init__(auth)
if send_opt is None:
send_opt = {}

self.__s = Session()
self.__send_opt = send_opt

self.set_session(session or Session())

def request(self, req_and_resp, opt=None, headers=None):
"""
"""
Expand Down Expand Up @@ -75,4 +85,3 @@ def append(name, obj):
)

return resp

38 changes: 38 additions & 0 deletions pyswagger/tests/contrib/client/test_requests.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import json
import six
import os
import requests


app = App._create_(get_test_data_folder(version='1.2', which='wordnik'))
Expand Down Expand Up @@ -264,3 +265,40 @@ def test_custom_headers_multiple_values_to_one_key(self):
)
self.assertEqual(httpretty.last_request().headers['X-TEST-HEADER'], 'bbb')


@httpretty.activate
class SessionTestCase(unittest.TestCase):
""" test case for custom session """

def test_init_with_session(self):
session = requests.Session()
session.headers = {'X-TEST-HEADER': 'aaa'}
session_client = Client(session=session)

httpretty.register_uri(
httpretty.PUT,
'http://petstore.swagger.wordnik.com/api/pet',
status=200
)

session_client.request(app.op['updatePet'](body=pet_QQQ))

self.assertEqual(httpretty.last_request().headers['X-TEST-HEADER'], 'aaa')

def test_set_session(self):
session = requests.Session()
session.headers = {'X-TEST-HEADER': 'aaa'}
default_client = Client()
session_client = Client(session=session)

httpretty.register_uri(
httpretty.PUT,
'http://petstore.swagger.wordnik.com/api/pet',
status=200
)

session_client.request(app.op['updatePet'](body=pet_QQQ))
self.assertEqual(httpretty.last_request().headers['X-TEST-HEADER'], 'aaa')

default_client.request(app.op['updatePet'](body=pet_QQQ))
self.assertFalse('X-TEST-HEADER' in httpretty.last_request().headers)