|
| 1 | +from unittest.mock import MagicMock, patch |
| 2 | + |
| 3 | +from ably.transport.websockettransport import WebSocketTransport |
| 4 | +from ably.types.options import Options |
| 5 | + |
| 6 | + |
| 7 | +def _connect_url(host='example.com', **option_kwargs): |
| 8 | + connection_manager = MagicMock() |
| 9 | + connection_manager.options = Options(auth_token='foo', **option_kwargs) |
| 10 | + transport = WebSocketTransport(connection_manager, host, {'format': 'json'}) |
| 11 | + with patch.object(transport, 'ws_connect', MagicMock()) as mock_ws_connect: |
| 12 | + with patch('ably.transport.websockettransport.asyncio.create_task') as mock_create_task: |
| 13 | + mock_create_task.return_value = MagicMock() |
| 14 | + transport.connect() |
| 15 | + return mock_ws_connect.call_args[0][0] |
| 16 | + |
| 17 | + |
| 18 | +# TO3d, TO3o |
| 19 | +def test_websocket_url_uses_wss_and_tls_port_when_tls_enabled(): |
| 20 | + url = _connect_url(tls=True, tls_port=9999) |
| 21 | + assert url == 'wss://example.com:9999?format=json' |
| 22 | + |
| 23 | + |
| 24 | +# TO3d, TO3n |
| 25 | +def test_websocket_url_uses_ws_and_port_when_tls_disabled(): |
| 26 | + url = _connect_url(tls=False, port=9998) |
| 27 | + assert url == 'ws://example.com:9998?format=json' |
| 28 | + |
| 29 | + |
| 30 | +# TO3d, TO3o |
| 31 | +def test_websocket_url_defaults_to_wss_and_443(): |
| 32 | + url = _connect_url() |
| 33 | + assert url == 'wss://example.com:443?format=json' |
| 34 | + |
| 35 | + |
| 36 | +# TO3d, TO3n |
| 37 | +def test_websocket_url_defaults_to_ws_and_80_when_tls_disabled(): |
| 38 | + url = _connect_url(tls=False) |
| 39 | + assert url == 'ws://example.com:80?format=json' |
0 commit comments