Publish curated Unraid-AppOps-Gateway source from ba66029223865607deddc234e283c11127324eb8

This commit is contained in:
Public Source Publisher committed 2026-10-07 01:56:22 +00:00
1 parent 820244dbb3
commit 8dd4b40252
52 files changed
+11814 -288

No files matched your search

@@ -180,19 +180,70 @@ def test_descriptor_can_select_primary_service_for_multi_service_project():
assert contract is not None
assert contract["applicationId"] == "api"
assert contract["composeProject"] == "api"
assert contract["primaryService"] == "api"
assert contract["serviceNames"] == ["api", "worker"]
assert contract["containers"] == ["api-api-1", "api-worker-1"]
def test_descriptor_cannot_diverge_compose_project_from_application_id():
with pytest.raises(ValueError, match="composeProject must equal applicationId"):
def test_descriptor_separates_application_identity_compose_project_and_primary_service():
descriptor = {
"apiVersion": "itworx.deployment-target/v1",
"applicationId": "quizmonitor",
"composeProject": "quiz-monitor",
"primaryService": "quiz-server",
"composeFile": "docker-compose.yml",
}
service = FakeComposeInspection(
[".itworx", "docker-compose.yml"],
{
".itworx/deployment-target.json": json.dumps(descriptor),
"docker-compose.yml": "services:\n quiz-server:\n image: example/quiz-server:1\n",
},
)
contract = service._compose_contract(
FakeClient(), repository_name="QuizMonitor", revision="d" * 40
)
assert contract == {
"applicationId": "quizmonitor",
"composeFile": "docker-compose.yml",
"composeProject": "quiz-monitor",
"primaryService": "quiz-server",
"containers": ["quiz-monitor-quiz-server-1"],
"serviceNames": ["quiz-server"],
"healthTimeout": 180,
"verifyOciRevision": False,
}
def test_descriptor_rejects_invalid_compose_project_and_missing_primary_service():
with pytest.raises(ValueError, match="composeProject is invalid"):
GiteaProjectAutoRegistration._safe_descriptor(
{
"apiVersion": "itworx.deployment-target/v1",
"applicationId": "api",
"composeProject": "different",
"applicationId": "quizmonitor",
"composeProject": "../quiz-monitor",
"primaryService": "quiz-server",
},
"Example",
"QuizMonitor",
)
service = FakeComposeInspection(
[".itworx", "compose.yml"],
{
".itworx/deployment-target.json": json.dumps({
"apiVersion": "itworx.deployment-target/v1",
"applicationId": "quizmonitor",
"composeProject": "quiz-monitor",
"primaryService": "quiz-server",
}),
"compose.yml": "services:\n web:\n image: example/web:1\n",
},
)
with pytest.raises(ValueError, match="primaryService must name a Compose service"):
service._compose_contract(
FakeClient(), repository_name="QuizMonitor", revision="e" * 40
)
@@ -236,6 +287,39 @@ def test_sync_catalogs_every_repo_but_only_activates_proven_compose_targets():
assert all(item.voice == "blocked" for item in policies)
def test_sync_registers_quizmonitor_identity_without_changing_compose_project_or_service():
registry = FakeTargetRegistry()
contract = {
"applicationId": "quizmonitor",
"composeFile": "docker-compose.yml",
"composeProject": "quiz-monitor",
"primaryService": "quiz-server",
"containers": ["quiz-monitor-quiz-server-1"],
"serviceNames": ["quiz-server"],
"healthTimeout": 180,
"verifyOciRevision": False,
}
service = FakeProjectSync(
[repo("QuizMonitor")],
{"QuizMonitor": contract},
target_registry=registry,
)
with make_session() as session:
result = service.sync(session)
catalog = GiteaProjectAutoRegistration.catalog(session)
assert result["summary"]["registered"] == 1
assert len(registry.calls) == 1
repository, revision, kwargs = registry.calls[0]
assert repository == "jens/quizmonitor"
assert kwargs["compose_project"] == "quiz-monitor"
assert kwargs["containers"] == ["quiz-monitor-quiz-server-1"]
assert catalog["projects"][0]["applicationId"] == "quizmonitor"
assert catalog["projects"][0]["composeProject"] == "quiz-monitor"
assert catalog["projects"][0]["primaryService"] == "quiz-server"
def test_unchanged_catalog_entries_do_not_repeat_registration_work():
registry = FakeTargetRegistry()
repositories = [repo("Deployable")]