Release v0.1.8
This commit is contained in:
@@ -2520,9 +2520,11 @@ finally:
|
||||
"pathlib.Path(os.environ['GOVOPLAN_DATABASE_BACKUP_METADATA']).write_text(json.dumps({"
|
||||
"'snapshot': 'external', "
|
||||
"'pgtools_url': os.environ.get('GOVOPLAN_DATABASE_URL_PGTOOLS')"
|
||||
"}), encoding='utf-8')"
|
||||
"}), encoding='utf-8'); "
|
||||
"print(os.environ.get('GOVOPLAN_DATABASE_URL'))"
|
||||
)
|
||||
backup_command = f"{sys.executable} -c {shlex.quote(backup_script)}"
|
||||
database_url = "postgresql+psycopg://govoplan:db-secret@db.example.invalid/govoplan"
|
||||
|
||||
with database.session() as session:
|
||||
save_maintenance_mode(session, MaintenanceMode(enabled=True))
|
||||
@@ -2540,7 +2542,7 @@ finally:
|
||||
available=available_module_manifests(),
|
||||
current_enabled=("tenancy", "access"),
|
||||
desired_enabled=("tenancy", "access"),
|
||||
database_url="postgresql+psycopg://db.example.invalid/govoplan",
|
||||
database_url=database_url,
|
||||
runtime_dir=root / "installer",
|
||||
migrate_database=True,
|
||||
database_backup_command=backup_command,
|
||||
@@ -2548,11 +2550,16 @@ finally:
|
||||
dry_run=True,
|
||||
)
|
||||
|
||||
record = json.loads(result.record_path.read_text(encoding="utf-8"))
|
||||
record_text = result.record_path.read_text(encoding="utf-8")
|
||||
self.assertNotIn("db-secret", record_text)
|
||||
record = json.loads(record_text)
|
||||
database_backup = record["snapshot"]["database_backup"]
|
||||
self.assertEqual("external", database_backup["type"])
|
||||
self.assertEqual("postgresql+psycopg://govoplan:***@db.example.invalid/govoplan", database_backup["database_url"])
|
||||
self.assertEqual("external", database_backup["metadata"]["snapshot"])
|
||||
self.assertEqual("postgresql://db.example.invalid/govoplan", database_backup["metadata"]["pgtools_url"])
|
||||
self.assertEqual("postgresql://govoplan:***@db.example.invalid/govoplan", database_backup["metadata"]["pgtools_url"])
|
||||
self.assertEqual("postgresql+psycopg://govoplan:***@db.example.invalid/govoplan", database_backup["stdout"].strip())
|
||||
self.assertEqual(database_url, (result.record_path.parent / database_backup["database_url_secret"]).read_text(encoding="utf-8"))
|
||||
self.assertEqual("backup", (result.record_path.parent / "database.external.backup").read_text(encoding="utf-8"))
|
||||
|
||||
def test_module_installer_external_database_restore_check_runs_before_migrations(self) -> None:
|
||||
@@ -2613,14 +2620,17 @@ finally:
|
||||
"os.environ.get('GOVOPLAN_DATABASE_URL', ''), encoding='utf-8')"
|
||||
)
|
||||
restore_command = f"{sys.executable} -c {shlex.quote(restore_script)}"
|
||||
database_url = "postgresql://restore-user:restore-secret@db.example.invalid/govoplan"
|
||||
(run_dir / "database.external.backup").write_text("backup", encoding="utf-8")
|
||||
(run_dir / "database-url.secret").write_text(database_url, encoding="utf-8")
|
||||
(run_dir / "record.json").write_text(json.dumps({
|
||||
"run_id": run_id,
|
||||
"plan": [],
|
||||
"snapshot": {
|
||||
"database_backup": {
|
||||
"type": "external",
|
||||
"database_url": "postgresql://db.example.invalid/govoplan",
|
||||
"database_url": "postgresql://restore-user:***@db.example.invalid/govoplan",
|
||||
"database_url_secret": "database-url.secret",
|
||||
"backup_path": "database.external.backup",
|
||||
"metadata_path": "database-backup-metadata.json",
|
||||
"restore_command": restore_command,
|
||||
@@ -2631,8 +2641,9 @@ finally:
|
||||
result = rollback_module_install_run(run_id=run_id, runtime_dir=runtime_dir, npm_bin="npm")
|
||||
|
||||
self.assertEqual("rolled-back", result.status)
|
||||
self.assertEqual("postgresql://db.example.invalid/govoplan", (run_dir / "restore.marker").read_text(encoding="utf-8"))
|
||||
self.assertEqual(database_url, (run_dir / "restore.marker").read_text(encoding="utf-8"))
|
||||
record = json.loads((run_dir / "record.json").read_text(encoding="utf-8"))
|
||||
self.assertNotIn("restore-secret", json.dumps(record))
|
||||
self.assertTrue(record["rollback_database_restore"]["restored"])
|
||||
|
||||
def test_module_installer_request_queue_round_trips(self) -> None:
|
||||
@@ -2987,14 +2998,14 @@ finally:
|
||||
result = subprocess.run(
|
||||
[
|
||||
sys.executable,
|
||||
"scripts/generate-release-catalog.py",
|
||||
str(Path(__file__).resolve().parents[2] / "govoplan" / "tools" / "generate-release-catalog.py"),
|
||||
"--version",
|
||||
"0.1.7",
|
||||
"--catalog-output",
|
||||
str(catalog_path),
|
||||
],
|
||||
cwd=str(Path(__file__).resolve().parents[1]),
|
||||
env=os.environ.copy(),
|
||||
env={**os.environ.copy(), "GOVOPLAN_CORE_ROOT": str(Path(__file__).resolve().parents[1])},
|
||||
text=True,
|
||||
capture_output=True,
|
||||
check=False,
|
||||
|
||||
Reference in New Issue
Block a user