"""Tests for B17 Audit-Walk-Wiring (Stufe 1).""" import asyncio from unittest.mock import patch, MagicMock, AsyncMock import pytest from compliance.api.agent_check._b17_wiring import _render, run_b17 _FAKE_WALK = { "walk_id": "abc123def456", "url": "https://example.com/", "started_at": "2026-06-07T10:00:00+00:00", "completed_at": "2026-06-07T10:00:30+00:00", "engine": "playwright/webkit", "viewport": "1280x800", "actions": [ {"timestamp": "2026-06-07T10:00:00+00:00", "action": "goto", "url": "https://example.com/", "status": 200}, {"timestamp": "2026-06-07T10:00:02+00:00", "action": "accept_banner", "result": "clicked", "phrase": "alle akzeptieren"}, {"timestamp": "2026-06-07T10:00:04+00:00", "action": "discover_footer_links", "count": 3, "links": []}, {"timestamp": "2026-06-07T10:00:06+00:00", "action": "navigate", "url": "https://example.com/datenschutz", "anchor_text": "Datenschutz", "status": 200, "title": "Datenschutzerklärung"}, ], "video": { "filename": "video.webm", "size_bytes": 512000, "sha256": "a1b2c3d4e5f67890fedcba0987654321ffffeeeeddddccccbbbbaaaa00001111", }, } class TestRender: def test_renders_walk_id_and_link(self): html = _render(_FAKE_WALK) assert "abc123def456" in html assert "video.webm" in html assert "walk.json" in html def test_includes_sha_prefix(self): html = _render(_FAKE_WALK) # First 12 chars of sha assert "a1b2c3d4e5f6" in html def test_action_table_lists_all_actions(self): html = _render(_FAKE_WALK) # All four actions appear as