Skip to content

Commit 55c75e2

Browse files
Fix inheritance order; add tests
1 parent 902569d commit 55c75e2

10 files changed

+104
-1
lines changed

src/snowflake/connector/aio/auth/_workload_identity.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
from ._by_plugin import AuthByPlugin as AuthByPluginAsync
1414

1515

16-
class AuthByWorkloadIdentity(AuthByWorkloadIdentitySync, AuthByPluginAsync):
16+
class AuthByWorkloadIdentity(AuthByPluginAsync, AuthByWorkloadIdentitySync):
1717
"""Plugin to authenticate via workload identity."""
1818

1919
def __init__(

test/unit/aio/test_auth_async.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -330,3 +330,13 @@ async def test_authbyplugin_abc_api():
330330
'password': <Parameter "password: 'str'">, \
331331
'kwargs': <Parameter "**kwargs: 'Any'">})"""
332332
)
333+
334+
335+
def test_mro():
336+
"""Ensure that methods from AuthByPluginAsync override those from AuthByPlugin."""
337+
from snowflake.connector.aio.auth import AuthByPlugin as AuthByPluginAsync
338+
from snowflake.connector.auth import AuthByPlugin as AuthByPluginSync
339+
340+
assert AuthByDefault.mro().index(AuthByPluginAsync) < AuthByDefault.mro().index(
341+
AuthByPluginSync
342+
)

test/unit/aio/test_auth_keypair_async.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,16 @@ async def test_renew_token(mockPrepare):
130130
assert mockPrepare.called
131131

132132

133+
def test_mro():
134+
"""Ensure that methods from AuthByPluginAsync override those from AuthByPlugin."""
135+
from snowflake.connector.aio.auth import AuthByPlugin as AuthByPluginAsync
136+
from snowflake.connector.auth import AuthByPlugin as AuthByPluginSync
137+
138+
assert AuthByKeyPair.mro().index(AuthByPluginAsync) < AuthByKeyPair.mro().index(
139+
AuthByPluginSync
140+
)
141+
142+
133143
def _init_rest(application, post_requset):
134144
connection = mock_connection()
135145
connection.errorhandler = Mock(return_value=None)

test/unit/aio/test_auth_no_auth_async.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,3 +39,14 @@ async def test_auth_no_auth():
3939
assert (
4040
reauth_response == expected_reauth_response
4141
), f'reauthenticate(foo="bar") is expected to return {expected_reauth_response}, but returns {reauth_response}'
42+
43+
44+
def test_mro():
45+
"""Ensure that methods from AuthByPluginAsync override those from AuthByPlugin."""
46+
from snowflake.connector.aio.auth import AuthByPlugin as AuthByPluginAsync
47+
from snowflake.connector.aio.auth._no_auth import AuthNoAuth
48+
from snowflake.connector.auth import AuthByPlugin as AuthByPluginSync
49+
50+
assert AuthNoAuth.mro().index(AuthByPluginAsync) < AuthNoAuth.mro().index(
51+
AuthByPluginSync
52+
)

test/unit/aio/test_auth_oauth_async.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,13 @@ async def test_auth_oauth():
1616
await auth.update_body(body)
1717
assert body["data"]["TOKEN"] == token, body
1818
assert body["data"]["AUTHENTICATOR"] == "OAUTH", body
19+
20+
21+
def test_mro():
22+
"""Ensure that methods from AuthByPluginAsync override those from AuthByPlugin."""
23+
from snowflake.connector.aio.auth import AuthByPlugin as AuthByPluginAsync
24+
from snowflake.connector.auth import AuthByPlugin as AuthByPluginSync
25+
26+
assert AuthByOAuth.mro().index(AuthByPluginAsync) < AuthByOAuth.mro().index(
27+
AuthByPluginSync
28+
)

test/unit/aio/test_auth_okta_async.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -346,3 +346,13 @@ async def post_request(url, headers, body, **kwargs):
346346
connection._rest = rest
347347
rest._post_request = post_request
348348
return rest
349+
350+
351+
def test_mro():
352+
"""Ensure that methods from AuthByPluginAsync override those from AuthByPlugin."""
353+
from snowflake.connector.aio.auth import AuthByPlugin as AuthByPluginAsync
354+
from snowflake.connector.auth import AuthByPlugin as AuthByPluginSync
355+
356+
assert AuthByOkta.mro().index(AuthByPluginAsync) < AuthByOkta.mro().index(
357+
AuthByPluginSync
358+
)

test/unit/aio/test_auth_pat_async.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,3 +70,13 @@ async def mock_post_request(request, url, headers, json_body, **kwargs):
7070
assert isinstance(conn.auth_class, AuthByPAT)
7171

7272
await conn.close()
73+
74+
75+
def test_mro():
76+
"""Ensure that methods from AuthByPluginAsync override those from AuthByPlugin."""
77+
from snowflake.connector.aio.auth import AuthByPlugin as AuthByPluginAsync
78+
from snowflake.connector.auth import AuthByPlugin as AuthByPluginSync
79+
80+
assert AuthByPAT.mro().index(AuthByPluginAsync) < AuthByPAT.mro().index(
81+
AuthByPluginSync
82+
)
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#!/usr/bin/env python
2+
#
3+
# Copyright (c) 2012-2023 Snowflake Computing Inc. All rights reserved.
4+
#
5+
6+
from __future__ import annotations
7+
8+
from snowflake.connector.aio.auth._usrpwdmfa import AuthByUsrPwdMfa
9+
10+
11+
def test_mro():
12+
"""Ensure that methods from AuthByPluginAsync override those from AuthByPlugin."""
13+
from snowflake.connector.aio.auth import AuthByPlugin as AuthByPluginAsync
14+
from snowflake.connector.auth import AuthByPlugin as AuthByPluginSync
15+
16+
assert AuthByUsrPwdMfa.mro().index(AuthByPluginAsync) < AuthByUsrPwdMfa.mro().index(
17+
AuthByPluginSync
18+
)

test/unit/aio/test_auth_webbrowser_async.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -871,3 +871,17 @@ async def test_auth_webbrowser_socket_reuseport_option_not_set_with_no_flag(
871871

872872
assert not rest._connection.errorhandler.called # no error
873873
assert auth.assertion_content == ref_token
874+
875+
876+
def test_mro():
877+
"""Ensure that methods from AuthByPluginAsync override those from AuthByPlugin."""
878+
from snowflake.connector.aio.auth import AuthByPlugin as AuthByPluginAsync
879+
from snowflake.connector.auth import AuthByPlugin as AuthByPluginSync
880+
881+
assert AuthByWebBrowser.mro().index(
882+
AuthByPluginAsync
883+
) < AuthByWebBrowser.mro().index(AuthByPluginSync)
884+
885+
assert AuthByIdToken.mro().index(AuthByPluginAsync) < AuthByIdToken.mro().index(
886+
AuthByPluginSync
887+
)

test/unit/aio/test_auth_workload_identity_async.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -380,3 +380,13 @@ async def test_autodetect_no_provider_raises_error(no_metadata_service):
380380
assert "No workload identity credential was found for 'auto-detect" in str(
381381
excinfo.value
382382
)
383+
384+
385+
def test_mro():
386+
"""Ensure that methods from AuthByPluginAsync override those from AuthByPlugin."""
387+
from snowflake.connector.aio.auth import AuthByPlugin as AuthByPluginAsync
388+
from snowflake.connector.auth import AuthByPlugin as AuthByPluginSync
389+
390+
assert AuthByWorkloadIdentity.mro().index(
391+
AuthByPluginAsync
392+
) < AuthByWorkloadIdentity.mro().index(AuthByPluginSync)

0 commit comments

Comments
 (0)