Skip to content

Commit f369ad1

Browse files
committed
Update session headers instead of overwriting
1 parent 6493d02 commit f369ad1

3 files changed

Lines changed: 44 additions & 20 deletions

File tree

‎gql/transport/requests.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ def connect(self):
124124
self.session = requests.Session()
125125

126126
if self.headers:
127-
self.session.headers = CaseInsensitiveDict(self.headers)
127+
self.session.headers.update(self.headers)
128128

129129
# If we specified some retries, we provide a predefined retry-logic
130130
if self.retries > 0:

‎tests/test_aiohttp.py‎

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -87,16 +87,6 @@ async def handler(request):
8787
assert transport.response_headers["dummy"] == "test1234"
8888

8989

90-
@pytest.mark.asyncio
91-
async def test_aio_http_transport_session():
92-
from gql.transport.aiohttp import AIOHTTPTransport
93-
94-
transport = AIOHTTPTransport("url", headers={"test": "header"})
95-
await transport.connect()
96-
assert transport.session
97-
assert transport.headers == transport.session.headers
98-
99-
10090
@pytest.mark.asyncio
10191
async def test_aiohttp_request_extensions(aiohttp_server):
10292
from aiohttp import web
@@ -1928,3 +1918,25 @@ async def handler(request):
19281918
await session.execute("qmlsdkfj")
19291919

19301920
assert "request should be a GraphQLRequest object" in str(exc_info.value)
1921+
1922+
1923+
@pytest.mark.asyncio
1924+
async def test_aiohttp_save_headers_in_session():
1925+
"""Regression test for issue #613"""
1926+
from gql.transport.aiohttp import AIOHTTPTransport
1927+
1928+
transport = AIOHTTPTransport("url", headers={"test": "header"})
1929+
await transport.connect()
1930+
assert transport.session
1931+
assert transport.session.headers["test"] == "header"
1932+
1933+
transport2 = AIOHTTPTransport("url")
1934+
await transport2.connect()
1935+
assert transport2.session
1936+
1937+
del transport.session.headers["test"]
1938+
1939+
assert transport.session.headers == transport2.session.headers
1940+
1941+
await transport.close()
1942+
await transport2.close()

‎tests/test_requests.py‎

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -41,15 +41,6 @@
4141
)
4242

4343

44-
def test_requests_http_transport_session():
45-
from gql.transport.requests import RequestsHTTPTransport
46-
47-
transport = RequestsHTTPTransport("url", headers={"test": "header"})
48-
transport.connect()
49-
assert transport.session
50-
assert transport.headers == transport.session.headers
51-
52-
5344
@pytest.mark.aiohttp
5445
@pytest.mark.asyncio
5546
async def test_requests_query(aiohttp_server, run_sync_test):
@@ -1281,3 +1272,24 @@ def test_code():
12811272
assert pi == Decimal("3.141592653589793238462643383279502884197")
12821273

12831274
await run_sync_test(server, test_code)
1275+
1276+
1277+
def test_requests_save_headers_in_session():
1278+
"""Regression test for issue #613"""
1279+
from gql.transport.requests import RequestsHTTPTransport
1280+
1281+
transport = RequestsHTTPTransport("url", headers={"test": "header"})
1282+
transport.connect()
1283+
assert transport.session
1284+
assert transport.session.headers["test"] == "header"
1285+
1286+
transport2 = RequestsHTTPTransport("url")
1287+
transport2.connect()
1288+
assert transport2.session
1289+
1290+
del transport.session.headers["test"]
1291+
1292+
assert transport.session.headers == transport2.session.headers
1293+
1294+
transport.close()
1295+
transport2.close()

0 commit comments

Comments
 (0)