from unittest import mock import pytest from freezegun import freeze_time from app.adapters.auth0 import Auth0Token from app.handlers import RefreshM2MTokenHandler class TestRefreshM2MTokenHandler: @pytest.fixture(scope="class") def handler( self, auth0_client_mock: mock.MagicMock, secrets_manager_mock: mock.MagicMock ) -> RefreshM2MTokenHandler: return RefreshM2MTokenHandler( auth0_client=auth0_client_mock, secrets_manager=secrets_manager_mock, m2m_token_secret_name="m2m_token_secret_name", m2m_token_expiration_secret_name="m2m_token_expiration_secret_name", ) @freeze_time("24-01-01T00:00:00Z") def test_handler( self, handler: RefreshM2MTokenHandler, auth0_client_mock: mock.MagicMock, secrets_manager_mock: mock.MagicMock, ) -> None: auth0_token = Auth0Token( access_token="access_token", expires_in=3600, ) auth0_client_mock.get_token.return_value = auth0_token handler.handle() secrets_manager_mock.update_secret.assert_has_calls( [ mock.call( secret_name=handler.m2m_token_expiration_secret_name, secret_value=auth0_token.expires_at.isoformat(), ), mock.call( secret_name=handler.m2m_token_secret_name, secret_value=auth0_token.access_token, ), ], any_order=True, )