| 70 | result = yield {"method": "Runtime.evaluate", "params": {}} |
| 71 | return result |
| 72 | |
| 73 | |
| 74 | class BrowserCaptchaPersonalTests(unittest.IsolatedAsyncioTestCase): |
| 75 | def setUp(self): |
| 76 | self.service = BrowserCaptchaService() |
| 77 | |
| 78 | def test_authenticated_proxy_url_is_preserved_for_flow_requests(self): |
| 79 | proxy_url = _compose_proxy_url( |
| 80 | "http", "proxy.example.com", "8080", "user", "password" |
| 81 | ) |
| 82 | |
| 83 | self.assertEqual(proxy_url, "http://user:password@proxy.example.com:8080") |
| 84 | self.assertEqual( |
| 85 | _redact_proxy_url(proxy_url), |
| 86 | "http://***:***@proxy.example.com:8080", |
| 87 | ) |
| 88 | |
| 89 | @staticmethod |
| 90 | def _make_remote_object_result(token: str): |
| 91 | return types.SimpleNamespace( |
| 92 | type_="object", |
| 93 | value=None, |
| 94 | deep_serialized_value=types.SimpleNamespace( |
| 95 | type_="object", |
| 96 | value=[ |
| 97 | ["ok", {"type": "boolean", "value": True}], |
| 98 | ["token", {"type": "string", "value": token}], |
| 99 | ], |
| 100 | ), |
| 101 | ) |
| 102 | |
| 103 | async def test_tab_evaluate_normalizes_deep_serialized_remote_object(self): |
| 104 | tab = _FakeTab(self._make_remote_object_result("token-123")) |
| 105 | |
| 106 | result = await self.service._tab_evaluate( |
| 107 | tab, |
| 108 | "ignored", |
| 109 | label="unit_test_tab_evaluate", |
| 110 | await_promise=True, |
| 111 | return_by_value=True, |
| 112 | ) |
| 113 | |
| 114 | self.assertEqual(result, {"ok": True, "token": "token-123"}) |
| 115 | |
| 116 | async def test_execute_recaptcha_on_tab_accepts_remote_object_success_result(self): |
| 117 | tab = _FakeTab(self._make_remote_object_result("token-xyz")) |
| 118 | |
| 119 | token = await self.service._execute_recaptcha_on_tab( |
| 120 | tab, action="IMAGE_GENERATION" |
| 121 | ) |
| 122 | |
| 123 | self.assertEqual(token, "token-xyz") |
| 124 | |
| 125 | async def test_create_resident_tab_returns_none_when_browser_missing(self): |
| 126 | self.service.browser = None |
| 127 | |
| 128 | resident_info = await self.service._create_resident_tab( |
| 129 | "slot-1", project_id="project-1" |
nothing calls this directly
no outgoing calls
no test coverage detected