import unittest import sys from pathlib import Path import psycopg code_path = Path(__file__).parent.parent / "ca_core" sys.path.insert(0, str(code_path)) import entity DBNAME = "ca" def get_last_log(cursor): cursor.execute("SELECT entry FROM log ORDER BY id DESC LIMIT 1") row = cursor.fetchone() return row["entry"] if row else "" class TestEntityFunctions(unittest.TestCase): @classmethod def setUpClass(cls): cls.conn = psycopg.connect(f"dbname={DBNAME}") cls.cur = cls.conn.cursor(row_factory=psycopg.rows.dict_row) @classmethod def tearDownClass(cls): cls.cur.close() cls.conn.close() def setUp(self): self.conn.rollback() def tearDown(self): self.conn.rollback() def test_insert_creator_and_get(self): creator_id = entity.insert_creator(self.cur, "Creator1", "pubkey1") row = entity.get_entity(self.cur, creator_id) self.assertEqual(row["name"], "Creator1") log_entry = get_last_log(self.cur).lower() self.assertIn("creator entity", log_entry) self.assertIn(str(creator_id), log_entry) def test_enroll_person(self): creator_id = entity.insert_creator(self.cur, "Creator2", "pubkey2") person_id = entity.enroll_person(self.cur, "Person1", "pubkey_person", creator_id) log_entry = get_last_log(self.cur).lower() self.assertIn("enrolled person", log_entry) self.assertIn(str(person_id), log_entry) def test_create_group(self): creator_id = entity.insert_creator(self.cur, "Creator3", "pubkey3") group_id = entity.create_group(self.cur, "Group1", "pubkey_group", creator_id) log_entry = get_last_log(self.cur).lower() self.assertIn("created group", log_entry) self.assertIn(str(group_id), log_entry) def test_set_and_get_symmetrical_key(self): creator_id = entity.insert_creator(self.cur, "CreatorSym", "pubkey_sym") entity.set_symmetrical_key(self.cur, creator_id, "symkey123", creator_id) row = entity.get_entity(self.cur, creator_id) self.assertEqual(row["symmetrical_key"], "symkey123") log_entry = get_last_log(self.cur).lower() self.assertIn("symmetrical_key", log_entry)