from mywhoosh_garmin_sync.mywhoosh import ( _looks_like_challenge_text, _looks_like_challenge_url, _looks_like_cookie_accept_label, _source_ref, _storage_restore_script, ) def test_cookie_accept_label_matching(): assert _looks_like_cookie_accept_label("Accept") assert _looks_like_cookie_accept_label("Accept all cookies") assert _looks_like_cookie_accept_label("Allow all") assert _looks_like_cookie_accept_label("I agree") assert _looks_like_cookie_accept_label("Got it") assert not _looks_like_cookie_accept_label("Reject all") assert not _looks_like_cookie_accept_label("Download app") def test_challenge_text_matching(): assert _looks_like_challenge_text("I'm not a robot") assert _looks_like_challenge_text("Verify you are human") assert _looks_like_challenge_text("iframe title recaptcha") assert _looks_like_challenge_text("Cloudflare security check") assert not _looks_like_challenge_text("Welcome to your activities") def test_challenge_url_matching_does_not_flag_plain_login(): assert _looks_like_challenge_url("https://example.test/cdn-cgi/challenge-platform") assert _looks_like_challenge_url("https://example.test/verify") assert not _looks_like_challenge_url("https://event.mywhoosh.com/login/") assert not _looks_like_challenge_url("https://event.mywhoosh.com/user/activities") def test_source_ref_prefers_href_then_row_text(): assert _source_ref("https://example.test/a.fit", "Download", 0, "Ride A") == _source_ref( "https://example.test/a.fit", "Download", 99, "Ride B" ) assert _source_ref(None, "", 0, "Ride A") != _source_ref(None, "", 1, "Ride B") def test_storage_restore_script_contains_session_storage(): script = _storage_restore_script( [ { "origin": "https://event.mywhoosh.com", "localStorage": [{"name": "token", "value": "local"}], "sessionStorage": [{"name": "session-token", "value": "session"}], } ] ) assert "https://event.mywhoosh.com" in script assert "localStorage" in script assert "sessionStorage" in script