from __future__ import annotations import sqlite3 import tempfile import unittest from pathlib import Path from agent_call.core import Store from deploy.backup_sqlite import copy_database from deploy.check_mock_config import check from deploy.migrate import migrate class AgentCallDeploymentTests(unittest.TestCase): def test_mock_profile_and_sqlite_backup_restore(self) -> None: self.assertEqual(check("docs/contracts/mock-profile.json"), []) with tempfile.TemporaryDirectory() as directory: source = Path(directory) / "source.sqlite3" backup = Path(directory) / "backup.sqlite3" store = Store(source) with store.tx() as con: con.execute( "INSERT INTO tenants(tenant_id, tenant_key, created_at) VALUES(?,?,?)", ("t", "k", "now"), ) copy_database(str(source), str(backup)) connection = sqlite3.connect(backup) try: row = connection.execute( "SELECT tenant_key FROM tenants WHERE tenant_id='t'" ).fetchone() finally: connection.close() self.assertEqual(row[0], "k") self.assertEqual(migrate(str(source)), 0) if __name__ == "__main__": unittest.main()