This commit is contained in:
2026-08-24 08:11:59 -07:00
commit 53df0eed10
275 changed files with 133056 additions and 0 deletions
@@ -0,0 +1,13 @@
class Policy:
def __init__(self, flags=None):
self.flags = dict(flags or {})
self._decision_cache = {}
def set_flag(self, name, enabled):
self.flags[name] = bool(enabled)
def allows(self, user_id, flag):
key = (user_id, flag)
if key not in self._decision_cache:
self._decision_cache[key] = bool(self.flags.get(flag, False))
return self._decision_cache[key]
@@ -0,0 +1,23 @@
import unittest
from policy import Policy
class PolicyTests(unittest.TestCase):
def test_initial_decision_uses_current_flag(self):
self.assertTrue(Policy({"preview": True}).allows("u1", "preview"))
def test_users_have_independent_cache_entries(self):
policy = Policy({"preview": True})
self.assertTrue(policy.allows("u1", "preview"))
self.assertTrue(policy.allows("u2", "preview"))
def test_setting_flag_invalidates_prior_decisions(self):
policy = Policy({"preview": False})
self.assertFalse(policy.allows("u1", "preview"))
policy.set_flag("preview", True)
self.assertTrue(policy.allows("u1", "preview"))
if __name__ == "__main__":
unittest.main()