Skip to content

Commit 2dd3fd8

Browse files
committed
Example of unintuitive behaviour
1 parent 63b4cf4 commit 2dd3fd8

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
import pytest
2+
from httpx import Response
3+
from respx import MockRouter
4+
5+
6+
@pytest.mark.asyncio
7+
async def test_event_based_credential_leak(respx_mock: MockRouter):
8+
from spylib.admin_api import OfflineTokenABC
9+
from spylib.utils.rest import GET
10+
11+
class OfflineToken(OfflineTokenABC):
12+
async def save(self):
13+
raise NotImplementedError()
14+
15+
@classmethod
16+
async def load(cls, store_name: str):
17+
raise NotImplementedError()
18+
19+
store_one = 'store_one'
20+
store_two = 'store_two'
21+
22+
token_one = OfflineToken(
23+
store_name=store_one, access_token=f'secret_token_for_{store_one}', scope=[]
24+
)
25+
token_two = OfflineToken(
26+
store_name=store_two, access_token=f'secret_token_for_{store_two}', scope=[]
27+
)
28+
29+
token_one_headers = []
30+
31+
async def capture_request(request):
32+
token_one_headers.append(request.headers['X-Shopify-Access-Token'])
33+
34+
token_one.client.event_hooks['request'] = [capture_request]
35+
36+
respx_mock.get().mock(
37+
return_value=Response(200, json={}, headers={'X-Shopify-Shop-Api-Call-Limit': '10/20'})
38+
)
39+
40+
await token_two.execute_rest(
41+
request=GET,
42+
endpoint='/test',
43+
)
44+
45+
assert token_one_headers == []

0 commit comments

Comments
 (0)