Skip to content

Commit 8ca7389

Browse files
tpellissierclaude
andcommitted
Guard __enter__ against re-entry on closed client
Add _check_closed() call at the top of __enter__ so that attempting to use a closed client as a context manager raises RuntimeError instead of silently creating a new session. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent e1a8ebc commit 8ca7389

2 files changed

Lines changed: 8 additions & 0 deletions

File tree

src/PowerPlatform/Dataverse/client.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,10 @@ def __enter__(self) -> DataverseClient:
145145
146146
:return: The client instance.
147147
:rtype: DataverseClient
148+
149+
:raises RuntimeError: If the client has been closed.
148150
"""
151+
self._check_closed()
149152
if self._session is None:
150153
self._session = requests.Session()
151154
return self

tests/unit/test_context_manager.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,11 @@ def test_flush_cache_raises_after_close(self):
224224
with self.assertRaises(RuntimeError):
225225
self.client.flush_cache("picklist")
226226

227+
def test_enter_raises_after_close(self):
228+
"""__enter__ should raise RuntimeError on a closed client."""
229+
with self.assertRaises(RuntimeError):
230+
self.client.__enter__()
231+
227232
def test_error_message_is_clear(self):
228233
"""The RuntimeError message should clearly state the client is closed."""
229234
with self.assertRaises(RuntimeError) as ctx:

0 commit comments

Comments
 (0)