Skip to content

Commit c6474a0

Browse files
committed
test: add tests for WebSocket token preservation and address handling
1 parent dcf241b commit c6474a0

File tree

1 file changed

+24
-0
lines changed

1 file changed

+24
-0
lines changed

tests/test_browser/test_browser_base.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,24 @@ async def test_connect_with_ws_address_returns_tab_and_sets_handler_ws(mock_brow
219219
assert tab._ws_address == 'ws://localhost:9222/devtools/page/p1'
220220

221221

222+
@pytest.mark.asyncio
223+
async def test_connect_with_ws_address_preserves_token_in_tab_ws(mock_browser):
224+
ws_browser = 'ws://localhost:9222/devtools/browser/abcdef?token=secrettoken'
225+
mock_browser.get_targets = AsyncMock(return_value=[{'type': 'page', 'url': 'https://example', 'targetId': 'p1'}])
226+
mock_browser._get_valid_tab_id = AsyncMock(return_value='p1')
227+
mock_browser._connection_handler._ensure_active_connection = AsyncMock()
228+
229+
tab = await mock_browser.connect(ws_browser)
230+
231+
assert mock_browser._ws_address == ws_browser
232+
assert mock_browser._connection_handler._ws_address == ws_browser
233+
mock_browser._connection_handler._ensure_active_connection.assert_awaited_once()
234+
235+
# Token should be preserved in page-level ws URL
236+
assert isinstance(tab, Tab)
237+
assert tab._ws_address == 'ws://localhost:9222/devtools/page/p1?token=secrettoken'
238+
239+
222240
@pytest.mark.asyncio
223241
async def test_new_tab_uses_ws_base_when_ws_address_present(mock_browser):
224242
# Simulate browser connected via ws
@@ -365,6 +383,12 @@ def test__get_tab_ws_address_raises_when_ws_not_set(mock_browser):
365383
mock_browser._get_tab_ws_address('some-tab')
366384

367385

386+
def test__get_tab_ws_address_preserves_query_and_fragment(mock_browser):
387+
mock_browser._ws_address = 'ws://host:9222/devtools/browser/abc?token=XYZ#frag'
388+
result = mock_browser._get_tab_ws_address('tab1')
389+
assert result == 'ws://host:9222/devtools/page/tab1?token=XYZ#frag'
390+
391+
368392
@pytest.mark.asyncio
369393
async def test_get_window_id(mock_browser):
370394
mock_browser.get_targets = AsyncMock(return_value=[{'targetId': 'target1', 'type': 'page'}])

0 commit comments

Comments
 (0)