#!/usr/bin/python3## Copyright (C) 2026 Red Hat, Inc.# SPDX-License-Identifier: LGPL-2.1-or-laterfrom anacondalib import INSTALLER_VM_MEMORY_MB, VirtInstallMachineCasefrom testlib import Error, test_main # pylint: disable=import-errorclass TestRemoteAuth(VirtInstallMachineCase):provision = {"machine1": {"remote_pin": "test1234","memory_mb": INSTALLER_VM_MEMORY_MB,},}def testBasic(self):"""Description:Boot with ``inst.webui.remote inst.webui.remote.pin=test1234``and verify that PIN authentication is required over HTTPS.Expected results:- Plain HTTP on port 80 is not reachable- The login page is shown over HTTPS- Wrong PIN is rejected with an error- Correct PIN grants access to the installer"""b = self.browserwebui_path = "/cockpit/@localhost/anaconda-webui/index.html"# HTTP should not be reachable — cockpit-ws is bound to localhost# TODO: better to redirect from http to httpsfor url_path in [webui_path, "/"]:with self.assertRaises(Error) as err:b.open(url_path, tls=False)self.assertIn("net::ERR_", str(err.exception))# Opening at "/" should work (using webui_path should work too, but that's given)b.open("/", tls=True)# Login page should be visibleb.wait_visible("#pin-input")# Wrong password should be rejectedb.set_input_text("#pin-input", "wrongpin")b.click("button[type=submit]")b.wait_in_text(".pf-m-error", "Invalid PIN")# Correct password should grant accessb.set_input_text("#pin-input", "test1234")b.click("button[type=submit]")# After login redirect, the installer loads at the root pathb.wait_js_cond(f'window.location.pathname === "{webui_path}"')if __name__ == "__main__":test_main()