From 5e0ac45a3b5cba79212b0483b8e4a08fc4437383 Mon Sep 17 00:00:00 2001 From: Jelle van der Waa Date: Tue, 12 Sep 2023 20:59:12 +0200 Subject: [PATCH] cockpit: serialize BridgeConfig using __dict__ A Bridgeconfig does not serialise to JSON by default. Closes: #19319 --- src/cockpit/bridge.py | 2 +- test/verify/check-connection | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/cockpit/bridge.py b/src/cockpit/bridge.py index 94cfa3c0733..c2f3175cb45 100644 --- a/src/cockpit/bridge.py +++ b/src/cockpit/bridge.py @@ -280,7 +280,7 @@ def main(*, beipack: bool = False) -> None: print(f'Version: {__version__}\nProtocol: 1') return elif args.bridges: - print(json.dumps(Packages().get_bridge_configs(), indent=2)) + print(json.dumps([config.__dict__ for config in Packages().get_bridge_configs()], indent=2)) return # The privileged bridge doesn't need ssh-agent, but the main one does diff --git a/test/verify/check-connection b/test/verify/check-connection index aaa5896a03b..67ae179cff8 100755 --- a/test/verify/check-connection +++ b/test/verify/check-connection @@ -18,6 +18,7 @@ # along with Cockpit; If not, see . import base64 +import json import os import subprocess import time @@ -1194,6 +1195,16 @@ UnixPath=/run/cockpit/session self.assertRegex(packages, r"(^|\n)base1\s+.*/usr/share/cockpit/base1") self.assertRegex(packages, r"(^|\n)system\s+.*/usr/share/cockpit/systemd") + if self.is_pybridge(): + bridges = json.loads(m.execute("cockpit-bridge --bridges").strip()) + bridge_names = [b['name'] for b in bridges] + self.assertGreater(len(bridges), 0) + self.assertIn('sudo', bridge_names) + + # OStree has no PCP bridge + if not m.ostree_image: + self.assertIn(f'{self.libexecdir}/cockpit-pcp', bridge_names) + @testlib.skipDistroPackage() class TestReverseProxy(testlib.MachineCase):