Skip to content

Commit 44b7055

Browse files
committed
Add end-to-end telemetry test for federated PAT through Connection
Sets the mocked Session's auth_provider to a real TokenFederationProvider wrapping AccessTokenAuthProvider, then asserts the captured DriverConnectionParameters reports auth_mech=PAT. This catches regressions in the wiring at client.py:383-384 (e.g., wrong provider passed to TelemetryHelper) that the helper-only tests would miss. Co-authored-by: Isaac
1 parent e5d0820 commit 44b7055

1 file changed

Lines changed: 32 additions & 0 deletions

File tree

tests/unit/test_telemetry.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -870,6 +870,38 @@ def test_connection_populates_arrow_and_performance_params(self, mock_setup_pool
870870
assert driver_params.async_poll_interval_millis == 2000
871871
assert driver_params.support_many_parameters is True
872872

873+
def test_federated_pat_populates_telemetry_as_pat(self, mock_setup_pools, mock_session):
874+
"""End-to-end: a TokenFederationProvider wrapping a PAT should report mech=PAT in the captured telemetry payload."""
875+
federated_pat = TokenFederationProvider(
876+
hostname="workspace.databricks.com",
877+
external_provider=AccessTokenAuthProvider("token"),
878+
http_client=MagicMock(),
879+
)
880+
mock_session_instance = MagicMock()
881+
mock_session_instance.guid_hex = "test-session-fed-pat"
882+
mock_session_instance.auth_provider = federated_pat
883+
mock_session_instance.is_open = False
884+
mock_session_instance.use_sea = False
885+
mock_session_instance.port = 443
886+
mock_session_instance.host = "workspace.databricks.com"
887+
mock_session.return_value = mock_session_instance
888+
889+
with patch(
890+
"databricks.sql.telemetry.telemetry_client.TelemetryClient.export_initial_telemetry_log"
891+
) as mock_export:
892+
sql.connect(
893+
server_hostname="workspace.databricks.com",
894+
http_path="/sql/1.0/warehouses/test",
895+
access_token="test-token",
896+
enable_telemetry=True,
897+
force_enable_telemetry=True,
898+
)
899+
900+
mock_export.assert_called_once()
901+
driver_params = mock_export.call_args.kwargs.get("driver_connection_params")
902+
assert driver_params.auth_mech == AuthMech.PAT
903+
assert driver_params.auth_flow is None
904+
873905
def test_cf_proxy_fields_default_to_false_none(self, mock_setup_pools, mock_session):
874906
"""Test that CloudFlare proxy fields default to False/None (not yet supported)."""
875907
mock_session_instance = MagicMock()

0 commit comments

Comments
 (0)