from l4d2web.services.global_map_sources import ( GlobalMapManifestItem, parse_cedapug_custom_html, parse_l4d2center_csv, ) def test_parse_l4d2center_csv_semicolon_manifest(): raw = """Name;Size;md5;Download link carriedoff.vpk;128660532;0380e12c57156574e17a96da1252cf21;https://l4d2center.com/maps/servers/carriedoff.7z """ items = parse_l4d2center_csv(raw) assert items == [ GlobalMapManifestItem( item_key="carriedoff.vpk", display_name="carriedoff.vpk", download_url="https://l4d2center.com/maps/servers/carriedoff.7z", expected_vpk_name="carriedoff.vpk", expected_size=128660532, expected_md5="0380e12c57156574e17a96da1252cf21", ) ] def test_parse_l4d2center_rejects_missing_header(): try: parse_l4d2center_csv("bad,data\n") except ValueError as exc: assert "Name;Size;md5;Download link" in str(exc) else: raise AssertionError("bad header must fail") def test_parse_cedapug_custom_html_extracts_relative_zip_links(): html = """ """ items = parse_cedapug_custom_html(html) assert items == [ GlobalMapManifestItem( item_key="FatalFreight.zip", display_name="Fatal Freight", download_url="https://cedapug.com/maps/FatalFreight.zip", expected_vpk_name="", expected_size=None, expected_md5="", ) ] def test_parse_cedapug_custom_html_rejects_missing_data(): try: parse_cedapug_custom_html("") except ValueError as exc: assert "renderCustomMapDownloads" in str(exc) else: raise AssertionError("missing embedded data must fail")