mirror of
https://github.com/MacRimi/ProxMenux.git
synced 2026-11-01 18:32:13 +00:00
55 lines
2.5 KiB
Python
55 lines
2.5 KiB
Python
"""Scanopy keeps its three services as native OCI LXCs, without host networking."""
|
|
|
|
import json
|
|
from pathlib import Path
|
|
import unittest
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
|
|
|
|
class ScanopyRecipeTests(unittest.TestCase):
|
|
def setUp(self):
|
|
self.curated = json.loads((ROOT / "catalog/curated/scanopy.json").read_text(encoding="utf-8"))
|
|
self.generated = json.loads((ROOT / "catalog/apps/scanopy.json").read_text(encoding="utf-8"))
|
|
self.services = {service["name"]: service for service in self.curated["compose_stack"]["services"]}
|
|
|
|
def test_generated_catalog_copy_matches_curated_profile(self):
|
|
self.assertEqual(self.curated, self.generated)
|
|
|
|
def test_the_server_is_the_main_service(self):
|
|
self.assertEqual(set(self.services), {"daemon", "postgres", "server"})
|
|
self.assertEqual(self.curated["compose_stack"]["main_service"], "server")
|
|
self.assertEqual(self.services["server"]["depends_on"], ["daemon", "postgres"])
|
|
|
|
def test_only_postgres_stays_off_the_lan(self):
|
|
self.assertTrue(self.services["daemon"]["frontend_network"])
|
|
self.assertTrue(self.services["server"]["frontend_network"])
|
|
self.assertFalse(self.services["postgres"]["frontend_network"])
|
|
|
|
def test_the_daemon_needs_no_docker_only_settings(self):
|
|
compose = self.services["daemon"]["compose"]
|
|
self.assertNotIn("network_mode", compose)
|
|
self.assertNotIn("privileged", compose)
|
|
self.assertNotIn("docker.sock", json.dumps(compose))
|
|
|
|
def test_the_daemon_stops_with_the_signal_it_handles(self):
|
|
self.assertEqual(self.services["daemon"]["compose"]["stop_signal"], "SIGINT")
|
|
|
|
def test_the_daemon_is_checked_where_it_answers(self):
|
|
self.assertIn("/api/health", json.dumps(self.services["daemon"]["compose"]["healthcheck"]))
|
|
|
|
def test_the_database_password_is_generated_and_shared(self):
|
|
password = "${GENERATED_DB_PASSWORD}"
|
|
self.assertEqual(self.services["postgres"]["compose"]["environment"]["POSTGRES_PASSWORD"], password)
|
|
self.assertIn(password, self.services["server"]["compose"]["environment"]["SCANOPY_DATABASE_URL"])
|
|
secrets = self.curated["compose_stack"]["installer_inputs"]["generated_secrets"]
|
|
self.assertEqual(len(secrets), 1)
|
|
self.assertEqual({binding["service"] for binding in secrets[0]["bindings"]}, {"postgres", "server"})
|
|
|
|
def test_no_password_of_the_test_install_remains(self):
|
|
self.assertNotIn("pmxLab", json.dumps(self.curated))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|