Isolate tenant readback cache and prepare verified runtime release
Some checks failed
CI Smoke / host-smoke (push) Successful in 1s
CI Smoke / container-smoke (push) Successful in 2s
Build and Publish Container Image / build-and-push (push) Successful in 1m33s
Account journey acceptance / journeys (push) Failing after 7s

Assistant: codex
Assistant-Model: gpt-6.1-sol
Assistant-Session: 01a126e1-76f8-7643-8cf3-e93336539ade
This commit is contained in:
tegwick 2026-10-11 01:58:45 +02:00
parent c460e2b0df
commit 1bb7cacc98
10 changed files with 188 additions and 13 deletions

View file

@ -3,6 +3,7 @@ import json
import os
import tempfile
import unittest
from dataclasses import replace
from datetime import UTC, datetime, timedelta
from unittest.mock import patch
from urllib.error import HTTPError, URLError
@ -159,6 +160,21 @@ class ReaderTests(unittest.TestCase):
reader.rows(_actor("alice"), "s1")
self.assertEqual(len(readback.reads), 3)
def test_tenant_switch_cannot_reuse_another_tenants_allow(self):
readback = _FakeReadback([
ReadbackResult("informed-decision", "allow", NOW + timedelta(seconds=30), "decision:1"),
])
reader = self._reader(readback)
actor = _actor()
self.assertEqual(reader.rows(actor, "s1")[0].status, "available")
readback.results = [ReadbackResult("informed-decision", "deny")]
other_tenant = replace(actor, tenant="tenant-b")
self.assertEqual(reader.rows(other_tenant, "s1")[0].status, "denied")
self.assertEqual(len(readback.reads), 2)
reader.forget("s1")
reader.rows(actor, "s1")
self.assertEqual(len(readback.reads), 3)
def test_read_failure_is_unchecked_and_not_reused(self):
readback = _FakeReadback([], fail_read=True)
reader = self._reader(readback)