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 metadata 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 TestMetadataFunctions(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_set_and_get_name(self): metadata.set_name(self.cur, "AppName") self.assertEqual(metadata.get_name(self.cur), "AppName") log_entry = get_last_log(self.cur).lower() self.assertIn("metadata name", log_entry) self.assertIn("appname", log_entry) def test_set_and_get_comment(self): metadata.set_comment(self.cur, "Test comment") self.assertEqual(metadata.get_comment(self.cur), "Test comment") log_entry = get_last_log(self.cur).lower() self.assertIn("metadata comment", log_entry) def test_set_and_get_keys(self): metadata.set_keys(self.cur, "pubkey123", "privkey456") self.assertEqual(metadata.get_public_key(self.cur), "pubkey123") self.assertEqual(metadata.get_private_key(self.cur), "privkey456") log_entry = get_last_log(self.cur).lower() self.assertIn("metadata keys", log_entry)