user-engine/tests/test_custody_bootstrap.py

34 lines
1.7 KiB
Python
Raw Permalink Normal View History

import hashlib
import json
import unittest
import test_custody_adapter as adapter_fixtures
CANON = adapter_fixtures.CANON
from user_engine.custody_bootstrap import initialize_baseline
@unittest.skipUnless(CANON.exists(), "optional sibling fixtures absent")
class CustodyBootstrapTests(unittest.TestCase):
def setUp(self):
self.fixture = adapter_fixtures.CustodyAdapterTests()
self.fixture.setUp()
self.fixture.adapter.clock = lambda: self.fixture.now
self.digest = hashlib.sha256(json.dumps(self.fixture.document, sort_keys=True, separators=(",", ":"), ensure_ascii=True).encode()).hexdigest()
def test_authenticated_receipt_match_initializes_once(self):
self.assertTrue(initialize_baseline(self.fixture.adapter, expected_sha256=self.digest))
self.assertFalse(initialize_baseline(self.fixture.adapter, expected_sha256=self.digest))
self.assertEqual(self.fixture.reads, 1)
def test_wrong_receipt_and_failure_do_not_seed_baseline(self):
self.assertFalse(initialize_baseline(self.fixture.adapter, expected_sha256="0" * 64))
self.fixture.failure = True
self.assertFalse(initialize_baseline(self.fixture.adapter, expected_sha256=self.digest))
self.assertIsNone(self.fixture.baselines.value)
def test_empty_approved_document_initializes_no_grant(self):
self.fixture.document["entries"] = []
digest = hashlib.sha256(json.dumps(self.fixture.document, sort_keys=True, separators=(",", ":"), ensure_ascii=True).encode()).hexdigest()
self.assertTrue(initialize_baseline(self.fixture.adapter, expected_sha256=digest))
self.assertIsNone(self.fixture.observe())