Skip to content

Commit a15bac9

Browse files
committed
Remove api_type parameter from authentication strategy constructors
1 parent 2f8e167 commit a15bac9

File tree

3 files changed

+16
-50
lines changed

3 files changed

+16
-50
lines changed

pyoverkiz/auth/factory.py

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ def build_auth_strategy(
4343
session,
4444
server_config,
4545
ssl_context,
46-
server_config.api_type,
4746
)
4847

4948
if server in {
@@ -56,7 +55,6 @@ def build_auth_strategy(
5655
session,
5756
server_config,
5857
ssl_context,
59-
server_config.api_type,
6058
)
6159

6260
if server == Server.NEXITY:
@@ -65,7 +63,6 @@ def build_auth_strategy(
6563
session,
6664
server_config,
6765
ssl_context,
68-
server_config.api_type,
6966
)
7067

7168
if server == Server.REXEL:
@@ -74,35 +71,30 @@ def build_auth_strategy(
7471
session,
7572
server_config,
7673
ssl_context,
77-
server_config.api_type,
7874
)
7975

8076
if server_config.api_type == APIType.LOCAL:
8177
if isinstance(credentials, LocalTokenCredentials):
8278
return LocalTokenAuthStrategy(
83-
credentials, session, server_config, ssl_context, server_config.api_type
79+
credentials, session, server_config, ssl_context
8480
)
8581
return BearerTokenAuthStrategy(
8682
_ensure_token(credentials),
8783
session,
8884
server_config,
8985
ssl_context,
90-
server_config.api_type,
9186
)
9287

9388
if isinstance(credentials, TokenCredentials) and not isinstance(
9489
credentials, LocalTokenCredentials
9590
):
96-
return BearerTokenAuthStrategy(
97-
credentials, session, server_config, ssl_context, server_config.api_type
98-
)
91+
return BearerTokenAuthStrategy(credentials, session, server_config, ssl_context)
9992

10093
return SessionLoginStrategy(
10194
_ensure_username_password(credentials),
10295
session,
10396
server_config,
10497
ssl_context,
105-
server_config.api_type,
10698
)
10799

108100

pyoverkiz/auth/strategies.py

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@
3737
SOMFY_CLIENT_ID,
3838
SOMFY_CLIENT_SECRET,
3939
)
40-
from pyoverkiz.enums import APIType
4140
from pyoverkiz.exceptions import (
4241
BadCredentialsError,
4342
CozyTouchBadCredentialsError,
@@ -59,13 +58,11 @@ def __init__(
5958
session: ClientSession,
6059
server: ServerConfig,
6160
ssl_context: ssl.SSLContext | bool,
62-
api_type: APIType,
6361
) -> None:
6462
"""Store shared auth context for Overkiz API interactions."""
6563
self.session = session
6664
self.server = server
6765
self._ssl = ssl_context
68-
self.api_type = api_type
6966

7067
async def login(self) -> None:
7168
"""Perform authentication; default is a no-op for subclasses to override."""
@@ -93,10 +90,9 @@ def __init__(
9390
session: ClientSession,
9491
server: ServerConfig,
9592
ssl_context: ssl.SSLContext | bool,
96-
api_type: APIType,
9793
) -> None:
9894
"""Create a session-login strategy bound to the given credentials."""
99-
super().__init__(session, server, ssl_context, api_type)
95+
super().__init__(session, server, ssl_context)
10096
self.credentials = credentials
10197

10298
async def login(self) -> None:
@@ -137,10 +133,9 @@ def __init__(
137133
session: ClientSession,
138134
server: ServerConfig,
139135
ssl_context: ssl.SSLContext | bool,
140-
api_type: APIType,
141136
) -> None:
142137
"""Create a Somfy OAuth2 strategy with a fresh auth context."""
143-
super().__init__(session, server, ssl_context, api_type)
138+
super().__init__(session, server, ssl_context)
144139
self.credentials = credentials
145140
self.context = AuthContext()
146141

@@ -301,10 +296,9 @@ def __init__(
301296
session: ClientSession,
302297
server: ServerConfig,
303298
ssl_context: ssl.SSLContext | bool,
304-
api_type: APIType,
305299
) -> None:
306300
"""Create a local-token strategy bound to the given credentials."""
307-
super().__init__(session, server, ssl_context, api_type)
301+
super().__init__(session, server, ssl_context)
308302
self.credentials = credentials
309303

310304
async def login(self) -> None:
@@ -326,10 +320,9 @@ def __init__(
326320
session: ClientSession,
327321
server: ServerConfig,
328322
ssl_context: ssl.SSLContext | bool,
329-
api_type: APIType,
330323
) -> None:
331324
"""Create a Rexel OAuth2 strategy with a fresh auth context."""
332-
super().__init__(session, server, ssl_context, api_type)
325+
super().__init__(session, server, ssl_context)
333326
self.credentials = credentials
334327
self.context = AuthContext()
335328

@@ -411,10 +404,9 @@ def __init__(
411404
session: ClientSession,
412405
server: ServerConfig,
413406
ssl_context: ssl.SSLContext | bool,
414-
api_type: APIType,
415407
) -> None:
416408
"""Create a bearer-token strategy bound to the given credentials."""
417-
super().__init__(session, server, ssl_context, api_type)
409+
super().__init__(session, server, ssl_context)
418410
self.credentials = credentials
419411

420412
def auth_headers(self, path: str | None = None) -> Mapping[str, str]:

tests/test_auth.py

Lines changed: 9 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -370,9 +370,7 @@ async def test_login_success(self):
370370
mock_response.__aexit__ = AsyncMock(return_value=None)
371371
session.post = MagicMock(return_value=mock_response)
372372

373-
strategy = SessionLoginStrategy(
374-
credentials, session, server_config, True, APIType.CLOUD
375-
)
373+
strategy = SessionLoginStrategy(credentials, session, server_config, True)
376374
await strategy.login()
377375

378376
session.post.assert_called_once()
@@ -397,9 +395,7 @@ async def test_login_204_no_content(self):
397395
mock_response.__aexit__ = AsyncMock(return_value=None)
398396
session.post = MagicMock(return_value=mock_response)
399397

400-
strategy = SessionLoginStrategy(
401-
credentials, session, server_config, True, APIType.CLOUD
402-
)
398+
strategy = SessionLoginStrategy(credentials, session, server_config, True)
403399
await strategy.login()
404400

405401
# Should not call json() for 204 response
@@ -418,9 +414,7 @@ async def test_refresh_if_needed_no_refresh(self):
418414
credentials = UsernamePasswordCredentials("user", "pass")
419415
session = AsyncMock(spec=ClientSession)
420416

421-
strategy = SessionLoginStrategy(
422-
credentials, session, server_config, True, APIType.CLOUD
423-
)
417+
strategy = SessionLoginStrategy(credentials, session, server_config, True)
424418
result = await strategy.refresh_if_needed()
425419

426420
assert not result
@@ -437,9 +431,7 @@ def test_auth_headers_no_token(self):
437431
credentials = UsernamePasswordCredentials("user", "pass")
438432
session = AsyncMock(spec=ClientSession)
439433

440-
strategy = SessionLoginStrategy(
441-
credentials, session, server_config, True, APIType.CLOUD
442-
)
434+
strategy = SessionLoginStrategy(credentials, session, server_config, True)
443435
headers = strategy.auth_headers()
444436

445437
assert headers == {}
@@ -461,9 +453,7 @@ async def test_login_no_op(self):
461453
credentials = TokenCredentials("my_bearer_token")
462454
session = AsyncMock(spec=ClientSession)
463455

464-
strategy = BearerTokenAuthStrategy(
465-
credentials, session, server_config, True, APIType.CLOUD
466-
)
456+
strategy = BearerTokenAuthStrategy(credentials, session, server_config, True)
467457
result = await strategy.login()
468458

469459
# Login should be a no-op
@@ -481,9 +471,7 @@ def test_auth_headers_with_token(self):
481471
credentials = TokenCredentials("my_bearer_token")
482472
session = AsyncMock(spec=ClientSession)
483473

484-
strategy = BearerTokenAuthStrategy(
485-
credentials, session, server_config, True, APIType.CLOUD
486-
)
474+
strategy = BearerTokenAuthStrategy(credentials, session, server_config, True)
487475
headers = strategy.auth_headers()
488476

489477
assert headers == {"Authorization": "Bearer my_bearer_token"}
@@ -537,9 +525,7 @@ async def test_login_maps_invalid_credentials_client_error(self):
537525
patch("warrant_lite.WarrantLite", return_value=warrant_instance),
538526
pytest.raises(NexityBadCredentialsError),
539527
):
540-
strategy = NexityAuthStrategy(
541-
credentials, session, server_config, True, APIType.CLOUD
542-
)
528+
strategy = NexityAuthStrategy(credentials, session, server_config, True)
543529
await strategy.login()
544530

545531
@pytest.mark.asyncio
@@ -567,9 +553,7 @@ async def test_login_propagates_non_auth_client_error(self):
567553
patch("warrant_lite.WarrantLite", return_value=warrant_instance),
568554
pytest.raises(ClientError, match="InternalErrorException"),
569555
):
570-
strategy = NexityAuthStrategy(
571-
credentials, session, server_config, True, APIType.CLOUD
572-
)
556+
strategy = NexityAuthStrategy(credentials, session, server_config, True)
573557
await strategy.login()
574558

575559

@@ -598,9 +582,7 @@ async def test_exchange_token_error_response(self):
598582
mock_response.__aexit__ = AsyncMock(return_value=None)
599583
session.post = MagicMock(return_value=mock_response)
600584

601-
strategy = RexelAuthStrategy(
602-
credentials, session, server_config, True, APIType.CLOUD
603-
)
585+
strategy = RexelAuthStrategy(credentials, session, server_config, True)
604586

605587
with pytest.raises(InvalidTokenError, match="bad grant"):
606588
await strategy._exchange_token({"grant_type": "authorization_code"})

0 commit comments

Comments
 (0)