first commit

This commit is contained in:
Mateusz Gruszczyński committed 2026-10-30 12:59:58 +01:00
commit 0efaae1715
27 files changed
+1455

No files matched your search

+34
View File
@@ -0,0 +1,34 @@
import importlib.util
import os
import tempfile
from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
os.environ.setdefault("REPOSITORY_URL", "https://repo.example.test")
spec = importlib.util.spec_from_file_location("dashboard_app", ROOT / "dashboard/app.py")
app = importlib.util.module_from_spec(spec)
spec.loader.exec_module(app)
def test_package_filename_parsing():
assert app.parse_package(Path("rustbox_0.0.5-1_amd64.deb"), "deb") == ("rustbox", "0.0.5-1", "amd64")
assert app.parse_package(Path("rustbox-0.0.5-1.x86_64.rpm"), "rpm") == ("rustbox", "0.0.5-1", "x86_64")
def test_catalog_reads_linux_snapshot():
with tempfile.TemporaryDirectory() as tmp:
root = Path(tmp)
rel = root / "releases/one"
(rel / "apt/pool/main/r/rustbox").mkdir(parents=True)
(rel / "rpm/x86_64").mkdir(parents=True)
(rel / "suse/x86_64").mkdir(parents=True)
(rel / "LINUX-BUILD-INFO.txt").write_text("app_version=0.0.5\npackage_release=1\nbuilt_at=2026-10-30T12:00:00Z\nsource_commit=abc\npackaging_revision=1\n")
(rel / "SUSE-BUILD-INFO.txt").write_text("app_version=0.0.5\npackage_release=1\nbuilt_at=2026-10-30T12:00:00Z\nsource_commit=abc\npackaging_revision=1\n")
(rel / "apt/pool/main/r/rustbox/rustbox_0.0.5-1_amd64.deb").write_bytes(b"deb")
(rel / "rpm/x86_64/rustbox-0.0.5-1.x86_64.rpm").write_bytes(b"rpm")
(rel / "suse/x86_64/rustbox-0.0.5-1.x86_64.rpm").write_bytes(b"rpm")
(root / "current").symlink_to("releases/one")
catalog = app.generate_catalog(root)
assert catalog["ready"] is True
assert catalog["builds"]["linux"]["app_version"] == "0.0.5"
assert len(catalog["packages"]) == 3
+59
View File
@@ -0,0 +1,59 @@
from pathlib import Path
import tomllib
ROOT = Path(__file__).resolve().parents[1]
def test_packaged_config_matches_linux_layout():
config = tomllib.loads((ROOT / "packaging/rustbox.toml").read_text())
assert config["host"] == "0.0.0.0"
assert config["data_dir"] == "/var/lib/rustbox"
assert config["log_dir"] == "/var/log/rustbox"
assert config["default_interface_skin"] == "apple-mail"
assert config["max_attachment_size_mb"] == 50
assert config["max_message_size_mb"] == 100
def test_systemd_hardening_and_paths():
unit = (ROOT / "packaging/rustbox.service").read_text()
for needle in (
"User=rustbox",
"Group=rustbox",
"WorkingDirectory=/var/lib/rustbox",
"ExecStart=/usr/local/bin/rustbox",
"StateDirectory=rustbox",
"LogsDirectory=rustbox",
"ProtectSystem=strict",
"ProtectHome=true",
"NoNewPrivileges=true",
"StandardOutput=null",
):
assert needle in unit
def test_logrotate_keeps_seven_daily_rotations():
data = (ROOT / "packaging/rustbox.logrotate").read_text()
assert "/var/log/rustbox/rustbox.log" in data
assert "daily" in data
assert "rotate 7" in data
assert "create 0600 rustbox rustbox" in data
def test_package_runtime_dependencies_are_explicit():
script = (ROOT / "scripts/prepare-package.sh").read_text()
for needle in (
"- gnupg",
"- libssl3 | libssl3t64",
"- gnupg2",
"- openssl-libs",
"- gpg2",
"- libopenssl3",
):
assert needle in script
def test_docker_context_excludes_secrets_and_state():
data = (ROOT / ".dockerignore").read_text().splitlines()
assert ".env" in data
assert "gpg/" in data
assert "data/" in data