Skip to content
Merged
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
10 changes: 3 additions & 7 deletions dataconnect/transport/arrow_flight/transport.py
Original file line number Diff line number Diff line change
Expand Up @@ -125,16 +125,12 @@ def __init__(
except Exception as exc:
raise parse_dataconnect_error(exc) from exc

if user_uuid:
self._call_headers.append((b"user-uuid", str(user_uuid).encode("utf-8")))

try:
sdk_version = version("dataconnect-library-python")
except Exception:
sdk_version = "0.1.0"
self._call_headers.append((b"python-sdk-version", sdk_version.encode("utf-8")))

self._call_headers.append((b"sdk-type", b"Python"))
client_info_value = f"Python_SDK;{sdk_version};"
self._call_headers.append((b"x-client-dataconnect", client_info_value.encode("utf-8")))

try:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
Expand All @@ -143,7 +139,7 @@ def __init__(
s.close()
except Exception:
client_ip = "127.0.0.1"
self._call_headers.append((b"client-ip", client_ip.encode("utf-8")))
self._call_headers.append((b"x-client-public-ip", client_ip.encode("utf-8")))

if token:
self._call_headers.append((b"authorization", f"Bearer {token}".encode()))
Expand Down
28 changes: 11 additions & 17 deletions tests/test_logging_headers.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,20 +33,14 @@ def test_connect_injects_all_required_logging_headers(mock_flight_client: MagicM
transport = client._service._transport
headers_dict = dict(transport._call_headers)

# AC-01: User UUID
assert b"user-uuid" in headers_dict
assert headers_dict[b"user-uuid"] == b"enodia-user-uuid-12345"

# AC-02 & AC-03: SDK Version & SDK Type consistency
assert b"python-sdk-version" in headers_dict
assert headers_dict[b"python-sdk-version"] == b"v1.2.3-test"
assert b"sdk-type" in headers_dict
assert headers_dict[b"sdk-type"] == b"Python"
# AC-02 & AC-03: SDK Version & SDK Type consistency combined for Server Middleware
assert b"x-client-dataconnect" in headers_dict
assert headers_dict[b"x-client-dataconnect"] == b"Python_SDK;v1.2.3-test;"

# AC-04: Client IP Address validation
assert b"client-ip" in headers_dict
assert b"x-client-public-ip" in headers_dict
try:
socket.inet_aton(headers_dict[b"client-ip"].decode("utf-8"))
socket.inet_aton(headers_dict[b"x-client-public-ip"].decode("utf-8"))
ip_is_valid = True
except OSError:
ip_is_valid = False
Expand All @@ -73,8 +67,8 @@ def test_sdk_type_remains_python_across_different_sdk_versions(
transport = client._service._transport
headers_dict = dict(transport._call_headers)

assert headers_dict[b"python-sdk-version"] == simulated_version.encode("utf-8")
assert headers_dict[b"sdk-type"] == b"Python"
expected_client_info = f"Python_SDK;{simulated_version};".encode()
assert headers_dict[b"x-client-dataconnect"] == expected_client_info


# ---------------------------------------------------------------------------
Expand All @@ -99,8 +93,8 @@ def test_client_ip_falls_back_to_localhost_on_socket_error(mock_flight_client: M
transport = client._service._transport
headers_dict = dict(transport._call_headers)

assert b"client-ip" in headers_dict
assert headers_dict[b"client-ip"] == b"127.0.0.1"
assert b"x-client-public-ip" in headers_dict
assert headers_dict[b"x-client-public-ip"] == b"127.0.0.1"


@patch("pyarrow.flight.FlightClient")
Expand All @@ -117,5 +111,5 @@ def test_sdk_version_falls_back_on_package_not_found_error(mock_flight_client: M
transport = client._service._transport
headers_dict = dict(transport._call_headers)

assert b"python-sdk-version" in headers_dict
assert headers_dict[b"python-sdk-version"] == b"0.1.0"
assert b"x-client-dataconnect" in headers_dict
assert headers_dict[b"x-client-dataconnect"] == b"Python_SDK;0.1.0;"
Loading