feat: add archive client foundation
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
import tempfile
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
from uuid import uuid4
|
||||
|
||||
from archive_clients.state import ClientStore, CommandConflict
|
||||
|
||||
|
||||
class ClientStoreTests(unittest.TestCase):
|
||||
def test_command_acceptance_is_durable_and_content_addressed(self):
|
||||
with tempfile.TemporaryDirectory() as directory:
|
||||
database = Path(directory) / "state.db"
|
||||
store = ClientStore(database)
|
||||
store.initialize()
|
||||
command_id = str(uuid4())
|
||||
first = store.accept_command(command_id, '{"b":2,"a":1}', '{"ok":true}')
|
||||
duplicate = ClientStore(database).accept_command(
|
||||
command_id, '{"a":1,"b":2}', '{"ok":false}'
|
||||
)
|
||||
self.assertFalse(first.duplicate)
|
||||
self.assertTrue(duplicate.duplicate)
|
||||
self.assertEqual(duplicate.acknowledgement_json, '{"ok":true}')
|
||||
with self.assertRaises(CommandConflict):
|
||||
store.accept_command(command_id, '{"a":2}', '{"ok":true}')
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user