← Files Platform Engineering CopilotARCHIVED FILE
tests/test_offline.py
2.32 KB · Nov 11, 2026 · 12:42 UTC
import unittest
from scripts.plan_risk import summarize
from scripts.slo_math import calculate_slo
class OfflineTests(unittest.TestCase):
def test_empty(self):
self.assertFalse(summarize({'resource_changes':[]})['requires_manual_risk_review'])
def test_create(self):
d=summarize({'resource_changes':[{'change':{'actions':['create']}}]})
self.assertEqual(d['actions']['create'],1)
def test_replace_delete_create(self):
d=summarize({'resource_changes':[{'change':{'actions':['delete','create']}}]})
self.assertEqual(d['actions']['replace'],1)
self.assertTrue(d['requires_manual_risk_review'])
def test_replace_create_delete(self):
d=summarize({'resource_changes':[{'change':{'actions':['create','delete']}}]})
self.assertTrue(d['requires_manual_risk_review'])
def test_delete(self):
self.assertTrue(summarize({'resource_changes':[{'change':{'actions':['delete']}}]})['requires_manual_risk_review'])
def test_unknown(self):
self.assertTrue(summarize({'resource_changes':[{'change':{'actions':['update'],'after_unknown':{'id':True}}}]})['requires_manual_risk_review'])
def test_doesnt_leak(self):
d=summarize({'resource_changes':[{'address':'secret','change':{'actions':['update'],'before':{'password':'topsecret'}}}]})
self.assertNotIn('secret',str(d))
def test_invalid_changes(self):
with self.assertRaises(ValueError): summarize({'resource_changes':'wrong'})
def test_missing_actions(self):
with self.assertRaises(ValueError): summarize({'resource_changes':[{'change':{}}]})
def test_slo_pass(self):
self.assertTrue(calculate_slo(10000,5,.999)['met'])
def test_slo_fail(self):
self.assertFalse(calculate_slo(10000,50,.999)['met'])
def test_slo_budget(self):
self.assertAlmostEqual(calculate_slo(10000,8,.999)['remaining_bad_events'],2)
def test_slo_bad_total(self):
with self.assertRaises(ValueError):calculate_slo(0,0,.99)
def test_slo_bad_count(self):
with self.assertRaises(ValueError):calculate_slo(10,11,.99)
def test_slo_bad_objective(self):
with self.assertRaises(ValueError):calculate_slo(10,0,1)
def test_slo_bool_not_valid(self):
with self.assertRaises(ValueError):calculate_slo(True,0,.99)
if __name__=='__main__':unittest.main()
SHA-256: d4660c98d7a52b2444cecd564b5112565308a9e7179f360971135858da48faed