|
| 1 | +import pytest |
| 2 | +import requests |
| 3 | + |
| 4 | +from socketdev import socketdev |
| 5 | +from socketdev.version import __version__ |
| 6 | + |
| 7 | + |
| 8 | +@pytest.mark.parametrize("method", ["GET", "POST"]) |
| 9 | +@pytest.mark.parametrize( |
| 10 | + "user_agent", |
| 11 | + [ |
| 12 | + None, |
| 13 | + "SocketPythonCLI/2.11.7", |
| 14 | + "socket-python-cli/2.11.7", |
| 15 | + "socket-basics/3.4.1", |
| 16 | + "custom-client/1.0.0", |
| 17 | + "", |
| 18 | + ], |
| 19 | +) |
| 20 | +def test_prepared_requests_use_sdk_identity_or_explicit_caller( |
| 21 | + monkeypatch, method, user_agent |
| 22 | +): |
| 23 | + captured = [] |
| 24 | + |
| 25 | + def send(session, request, **kwargs): |
| 26 | + captured.append(request) |
| 27 | + response = requests.Response() |
| 28 | + response.status_code = 200 |
| 29 | + response._content = b"{}" |
| 30 | + return response |
| 31 | + |
| 32 | + monkeypatch.setattr(requests.sessions.Session, "send", send) |
| 33 | + sdk = socketdev(token="synthetic-test-token", user_agent=user_agent) |
| 34 | + files = [("manifest", ("package.json", b"{}"))] if method == "POST" else None |
| 35 | + |
| 36 | + sdk.api.do_request("organizations", method=method, files=files) |
| 37 | + |
| 38 | + assert len(captured) == 1 |
| 39 | + expected = user_agent if user_agent is not None else f"socket-sdk-python/{__version__}" |
| 40 | + assert captured[0].headers["User-Agent"] == expected |
| 41 | + assert captured[0].headers["Authorization"].startswith("Basic ") |
| 42 | + if files: |
| 43 | + assert captured[0].headers["Content-Type"].startswith("multipart/form-data;") |
| 44 | + |
| 45 | + |
| 46 | +def test_endpoint_wrappers_share_the_sdk_identity(monkeypatch): |
| 47 | + captured = [] |
| 48 | + |
| 49 | + def send(session, request, **kwargs): |
| 50 | + captured.append(request) |
| 51 | + response = requests.Response() |
| 52 | + response.status_code = 200 |
| 53 | + response._content = b"{}" |
| 54 | + return response |
| 55 | + |
| 56 | + monkeypatch.setattr(requests.sessions.Session, "send", send) |
| 57 | + sdk = socketdev(token="synthetic-test-token") |
| 58 | + |
| 59 | + sdk.org.get() |
| 60 | + sdk.basics.get_config("test-org") |
| 61 | + |
| 62 | + assert len(captured) == 2 |
| 63 | + assert all( |
| 64 | + request.headers["User-Agent"] == f"socket-sdk-python/{__version__}" |
| 65 | + for request in captured |
| 66 | + ) |
0 commit comments