Skip to content

Commit a93d349

Browse files
committed
Make invalidate() a no-op for now
1 parent 6a89682 commit a93d349

5 files changed

Lines changed: 4 additions & 70 deletions

File tree

packages/aws-credentials-http/src/aws_credentials_http/resolvers.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,7 @@ async def get_identity(
8282
return self._credentials
8383

8484
async def invalidate(self) -> None:
85-
"""Discard cached credentials so the next resolution re-queries the endpoint."""
86-
self._credentials = None
85+
"""No-op until the rejected identity is passed in to expire selectively."""
8786

8887
async def _resolve_uri_from_env(self) -> URI:
8988
if self.ENV_VAR in os.environ:

packages/aws-credentials-imds/src/aws_credentials_imds/resolvers.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,5 +68,4 @@ async def get_identity(
6868
return self._credentials
6969

7070
async def invalidate(self) -> None:
71-
"""Discard cached credentials so the next resolution re-queries IMDS."""
72-
self._credentials = None
71+
"""No-op until the rejected identity is passed in to expire selectively."""

packages/aws-credentials-imds/tests/unit/test_resolvers.py

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -104,29 +104,6 @@ async def test_resolver_refreshes_expired_credentials() -> None:
104104
assert imds_client.get.await_count == 4
105105

106106

107-
async def test_resolver_invalidate_forces_refresh() -> None:
108-
http_client = AsyncMock()
109-
config = IMDSConfig()
110-
imds_client = AsyncMock()
111-
resolver = IMDSCredentialsResolver(http_client, config)
112-
resolver._imds_client = imds_client
113-
114-
future = (datetime.now(UTC) + timedelta(minutes=10)).strftime(ISO8601)
115-
imds_client.get.side_effect = [
116-
"test-profile",
117-
json.dumps({**_CREDS, "Expiration": future}),
118-
"test-profile",
119-
json.dumps({**_CREDS, "Expiration": future}),
120-
]
121-
122-
await resolver.get_identity(properties={})
123-
await resolver.invalidate()
124-
await resolver.get_identity(properties={})
125-
126-
# Both the profile lookup and the credential fetch run again after invalidate
127-
assert imds_client.get.await_count == 4
128-
129-
130107
async def test_resolver_requires_access_key_and_secret() -> None:
131108
http_client = AsyncMock()
132109
config = IMDSConfig()

packages/aws-credentials-sts/src/aws_credentials_sts/resolvers.py

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -125,10 +125,7 @@ async def get_identity(
125125
return self._credentials
126126

127127
async def invalidate(self) -> None:
128-
"""Discard assumed credentials and invalidate the source resolver."""
129-
async with self._refresh_lock:
130-
self._credentials = None
131-
await self._source_resolver.invalidate()
128+
"""No-op until the rejected identity is passed in to expire selectively."""
132129

133130
async def _assume_role(self) -> AWSCredentialsIdentity:
134131
from aws_sdk_sts.client import AsyncSTSClient
@@ -215,9 +212,7 @@ async def get_identity(
215212
return await self._delegate.get_identity(properties=properties)
216213

217214
async def invalidate(self) -> None:
218-
"""Invalidate assumed credentials if resolution has been initialized."""
219-
if self._delegate is not None:
220-
await self._delegate.invalidate()
215+
"""No-op until the rejected identity is passed in to expire selectively."""
221216

222217
async def _create_assume_role_resolver(
223218
self,

packages/aws-credentials-sts/tests/unit/test_resolvers.py

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -293,27 +293,6 @@ async def test_role_session_name_stable_across_refreshes() -> None:
293293
assert first.args[0].role_session_name == second.args[0].role_session_name
294294

295295

296-
async def test_invalidate_clears_cache_and_source() -> None:
297-
source_resolver = AsyncMock()
298-
resolver = AssumeRoleCredentialsResolver(
299-
source_resolver=source_resolver, role_arn=ROLE_ARN
300-
)
301-
sts_client = _mock_sts_client(
302-
resolver,
303-
_valid_output(access_key_id="test-access-key-1"),
304-
_valid_output(access_key_id="test-access-key-2"),
305-
)
306-
307-
identity_one = await resolver.get_identity(properties={})
308-
await resolver.invalidate()
309-
identity_two = await resolver.get_identity(properties={})
310-
311-
assert identity_one.access_key_id == "test-access-key-1"
312-
assert identity_two.access_key_id == "test-access-key-2"
313-
assert sts_client.assume_role.call_count == 2
314-
source_resolver.invalidate.assert_awaited_once()
315-
316-
317296
# ---------------------------------------------------------------------------
318297
# ProfileAssumeRoleCredentialsResolver
319298
# ---------------------------------------------------------------------------
@@ -840,18 +819,3 @@ async def test_get_identity_creates_and_reuses_delegate(
840819
assert delegate.get_identity.await_count == 2
841820

842821

843-
async def test_invalidate_delegates_when_initialized(
844-
merged_config: Callable[..., MergedConfig],
845-
) -> None:
846-
config_file = merged_config(
847-
{"role": {"role_arn": ROLE_ARN, "source_profile": "base"}}
848-
)
849-
resolver = ProfileAssumeRoleCredentialsResolver(
850-
profile_name="role", config_file=config_file
851-
)
852-
delegate = AsyncMock()
853-
resolver._delegate = delegate
854-
855-
await resolver.invalidate()
856-
857-
delegate.invalidate.assert_awaited_once()

0 commit comments

Comments
 (0)