"""matrix-synapse — INSTALL overlay (Phase 1d, DG4): override + extend-by-composition. Reuses the generic "really serving" assertion, then ADDS the recipe-specific checks: the synapse client API answers 200 over real HTTPS through the gateway, and the client-API version document is real synapse JSON (proves the app, not just a proxy 200). The base recipe has no browser UI (element-web is an addon), so the functional assertion is the JSON client API, not Playwright. Assertion-only on the shared deployment.""" import json import os import sys sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "..", "runner")) from harness import generic, lifecycle # noqa: E402 def test_serving_and_client_api(live_app, meta): # extend-by-composition: reuse the generic "really serving" assertion first ... generic.assert_serving(live_app, meta) # ... then the recipe-specific assertions. # The synapse client API answers 200 over real HTTPS through the gateway (nginx -> synapse). status = lifecycle.http_get(live_app, "/_matrix/client/versions") assert status == 200, f"expected 200 from {live_app}/_matrix/client/versions, got {status}" # The client-API version document is real synapse JSON (proves the app, not just a proxy 200). body = lifecycle.http_body(live_app, "/_matrix/client/versions") doc = json.loads(body) assert ( isinstance(doc.get("versions"), list) and doc["versions"] ), "no matrix client versions advertised"