async def test_close(): credentials = [Mock(close=Mock(wraps=get_completed_future)) for _ in range(5)] chain = ChainedTokenCredential(*credentials) await chain.close() for credential in credentials: assert credential.close.call_count == 1
async def test_context_manager(): credentials = [Mock(close=Mock(wraps=get_completed_future)) for _ in range(5)] chain = ChainedTokenCredential(*credentials) async with chain: pass for credential in credentials: assert credential.close.call_count == 1
async def test_chain_returns_first_token(): expected_token = Mock() first_credential = Mock(get_token=wrap_in_future(lambda _: expected_token)) second_credential = Mock(get_token=Mock()) aggregate = ChainedTokenCredential(first_credential, second_credential) credential = await aggregate.get_token("scope") assert credential is expected_token assert second_credential.get_token.call_count == 0