""" Regressionstests fuer die serverseitig gesetzte Content-Security-Policy (app/main.py: script-src 'self'; style-src 'self'; kein 'unsafe-inline', kein Nonce/Hash). Hintergrund/Bug: templates/login.html, templates/terminal.html und templates/rdp.html enthielten frueher Inline-style="..."-Attribute sowie ein Inline--Snippet. Chrome (und andere CSP-konforme Browser) blockieren *jede* Aenderung des style-Attributs -- auch per element.style.xyz = ... aus externem JS gesetzte -- sowie jedes -Bloecke inkl. ihrer Attribute und ihres # Inhalts, um zwischen externen (", re.IGNORECASE | re.DOTALL) def _assert_no_inline_style(html: str, page: str) -> None: match = _INLINE_STYLE_ATTR_RE.search(html) assert match is None, ( f"{page}: gefundenes Inline-style-Attribut verletzt die CSP " f"(style-src 'self', kein 'unsafe-inline'): {html[match.start():match.start()+60]!r}" if match else "" ) def _assert_no_inline_script(html: str, page: str) -> None: for attrs, body in _SCRIPT_TAG_RE.findall(html): has_src = re.search(r"\bsrc\s*=", attrs, re.IGNORECASE) is not None if not has_src and body.strip(): pytest.fail( f"{page}: