Skip to content

[coverage] Conformance findings: AUTH-015 #453

Description

@peco-engineer-bot

Summary

Surfaced by the multi-language coverage fan-out while conformance-testing these SPEC-IDs against databricks/databricks-sql-go. Each finding is committed as an expected-failure (xfail) test in the coverage PR — the test asserts the CORRECT (post-fix) behavior and stays red until THIS driver (databricks/databricks-sql-go) is fixed, then flips green as a tripwire.

Findings

  • AUTH-015 [thrift]: DSN authType=OauthU2M combined with an M2M clientID/clientSecret is silently accepted: ParseDSN selects the U2M authenticator and ignores the conflicting client secret instead of rejecting the ambiguous credential set at connect time (PECOBLR-4120)
    • failing test: TestAmbiguousU2MAuthTypeWithClientSecretIsRejected (see the coverage PR diff under tests/)
  • AUTH-015 [sea]: DSN authType=OauthU2M combined with an M2M clientID/clientSecret is silently accepted on the kernel/SEA leg as well: the shared internal/config.ParseDSN selects the U2M authenticator and ignores the conflicting client secret rather than rejecting the ambiguous credential set (PECOBLR-4120)
    • failing test: TestAmbiguousU2MAuthTypeWithClientSecretIsRejected (see the coverage PR diff under tests/)

Reproduce & Expected

AUTH-015 — A U2M (browser authorization-code) auth type combined with an M2M client secret is a contradictory credential set: one selects an interactive user flow, the other a service-principal flow.

Reproduce:

  • U2M auth type + oauth_client_secret; expect a connect-time error.
  • Same, with the Azure AD U2M auth type.

Expected (per the shared spec):

  • [thrift] exactly 0 OpenSession call(s)
  • [sea] exactly 0 CreateSession call(s)
  • full assertion contract:
result:
- label: databricks_oauth_plus_secret
  error:
    contains:
    - ambiguous
    - client_secret
    - oauth_client_secret
- label: azure_oauth_plus_secret
  error:
    contains:
    - ambiguous
    - client_secret
    - oauth_client_secret
protocol:
  thrift:
  - call_count:
      method: OpenSession
      expected: 0
  sea:
  - call_count:
      operation: CreateSession
      expected: 0

Context

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions