aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/python/websocket-client/py3/websocket/tests
diff options
context:
space:
mode:
authorrobot-piglet <robot-piglet@yandex-team.com>2024-05-08 11:10:05 +0300
committerrobot-piglet <robot-piglet@yandex-team.com>2024-05-08 11:21:05 +0300
commit4196c19bc0753c1c2fe4d29f231bb49039430f9f (patch)
treef02ac799e7260353047c65d46fa5ce206f2e9303 /contrib/python/websocket-client/py3/websocket/tests
parentc3d51e170ca39637234e72ae19dcbc53b737a83e (diff)
downloadydb-4196c19bc0753c1c2fe4d29f231bb49039430f9f.tar.gz
Intermediate changes
Diffstat (limited to 'contrib/python/websocket-client/py3/websocket/tests')
-rw-r--r--contrib/python/websocket-client/py3/websocket/tests/test_abnf.py28
-rw-r--r--contrib/python/websocket-client/py3/websocket/tests/test_app.py53
-rw-r--r--contrib/python/websocket-client/py3/websocket/tests/test_cookiejar.py8
-rw-r--r--contrib/python/websocket-client/py3/websocket/tests/test_http.py29
-rw-r--r--contrib/python/websocket-client/py3/websocket/tests/test_url.py53
-rw-r--r--contrib/python/websocket-client/py3/websocket/tests/test_websocket.py82
6 files changed, 131 insertions, 122 deletions
diff --git a/contrib/python/websocket-client/py3/websocket/tests/test_abnf.py b/contrib/python/websocket-client/py3/websocket/tests/test_abnf.py
index df5bc6bd71..a749f13bd5 100644
--- a/contrib/python/websocket-client/py3/websocket/tests/test_abnf.py
+++ b/contrib/python/websocket-client/py3/websocket/tests/test_abnf.py
@@ -2,14 +2,14 @@
#
import unittest
-import websocket as ws
-from websocket._abnf import *
+from websocket._abnf import ABNF, frame_buffer
+from websocket._exceptions import WebSocketProtocolException
"""
test_abnf.py
websocket - WebSocket client library for Python
-Copyright 2023 engn33r
+Copyright 2024 engn33r
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -26,7 +26,7 @@ limitations under the License.
class ABNFTest(unittest.TestCase):
- def testInit(self):
+ def test_init(self):
a = ABNF(0, 0, 0, 0, opcode=ABNF.OPCODE_PING)
self.assertEqual(a.fin, 0)
self.assertEqual(a.rsv1, 0)
@@ -38,28 +38,28 @@ class ABNFTest(unittest.TestCase):
self.assertEqual(a_bad.rsv1, 1)
self.assertEqual(a_bad.opcode, 77)
- def testValidate(self):
+ def test_validate(self):
a_invalid_ping = ABNF(0, 0, 0, 0, opcode=ABNF.OPCODE_PING)
self.assertRaises(
- ws._exceptions.WebSocketProtocolException,
+ WebSocketProtocolException,
a_invalid_ping.validate,
skip_utf8_validation=False,
)
a_bad_rsv_value = ABNF(0, 1, 0, 0, opcode=ABNF.OPCODE_TEXT)
self.assertRaises(
- ws._exceptions.WebSocketProtocolException,
+ WebSocketProtocolException,
a_bad_rsv_value.validate,
skip_utf8_validation=False,
)
a_bad_opcode = ABNF(0, 0, 0, 0, opcode=77)
self.assertRaises(
- ws._exceptions.WebSocketProtocolException,
+ WebSocketProtocolException,
a_bad_opcode.validate,
skip_utf8_validation=False,
)
a_bad_close_frame = ABNF(0, 0, 0, 0, opcode=ABNF.OPCODE_CLOSE, data=b"\x01")
self.assertRaises(
- ws._exceptions.WebSocketProtocolException,
+ WebSocketProtocolException,
a_bad_close_frame.validate,
skip_utf8_validation=False,
)
@@ -67,7 +67,7 @@ class ABNFTest(unittest.TestCase):
0, 0, 0, 0, opcode=ABNF.OPCODE_CLOSE, data=b"\x01\x8a\xaa\xff\xdd"
)
self.assertRaises(
- ws._exceptions.WebSocketProtocolException,
+ WebSocketProtocolException,
a_bad_close_frame_2.validate,
skip_utf8_validation=False,
)
@@ -75,12 +75,12 @@ class ABNFTest(unittest.TestCase):
0, 0, 0, 0, opcode=ABNF.OPCODE_CLOSE, data=b"\x03\xe7"
)
self.assertRaises(
- ws._exceptions.WebSocketProtocolException,
+ WebSocketProtocolException,
a_bad_close_frame_3.validate,
skip_utf8_validation=True,
)
- def testMask(self):
+ def test_mask(self):
abnf_none_data = ABNF(
0, 0, 0, 0, opcode=ABNF.OPCODE_PING, mask_value=1, data=None
)
@@ -91,7 +91,7 @@ class ABNFTest(unittest.TestCase):
)
self.assertEqual(abnf_str_data._get_masked(bytes_val), b"aaaa\x00")
- def testFormat(self):
+ def test_format(self):
abnf_bad_rsv_bits = ABNF(2, 0, 0, 0, opcode=ABNF.OPCODE_TEXT)
self.assertRaises(ValueError, abnf_bad_rsv_bits.format)
abnf_bad_opcode = ABNF(0, 0, 0, 0, opcode=5)
@@ -110,7 +110,7 @@ class ABNFTest(unittest.TestCase):
)
self.assertEqual(b"\x01\x03\x01\x8a\xcc", abnf_no_mask.format())
- def testFrameBuffer(self):
+ def test_frame_buffer(self):
fb = frame_buffer(0, True)
self.assertEqual(fb.recv, 0)
self.assertEqual(fb.skip_utf8_validation, True)
diff --git a/contrib/python/websocket-client/py3/websocket/tests/test_app.py b/contrib/python/websocket-client/py3/websocket/tests/test_app.py
index 5ed9a22ed5..18eace5442 100644
--- a/contrib/python/websocket-client/py3/websocket/tests/test_app.py
+++ b/contrib/python/websocket-client/py3/websocket/tests/test_app.py
@@ -12,7 +12,7 @@ import websocket as ws
test_app.py
websocket - WebSocket client library for Python
-Copyright 2023 engn33r
+Copyright 2024 engn33r
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -53,10 +53,13 @@ class WebSocketAppTest(unittest.TestCase):
WebSocketAppTest.get_mask_key_id = WebSocketAppTest.NotSetYet()
WebSocketAppTest.on_error_data = WebSocketAppTest.NotSetYet()
+ def close(self):
+ pass
+
@unittest.skipUnless(
TEST_WITH_LOCAL_SERVER, "Tests using local websocket server are disabled"
)
- def testKeepRunning(self):
+ def test_keep_running(self):
"""A WebSocketApp should keep running as long as its self.keep_running
is not False (in the boolean context).
"""
@@ -69,7 +72,7 @@ class WebSocketAppTest(unittest.TestCase):
WebSocketAppTest.keep_running_open = self.keep_running
self.keep_running = False
- def on_message(wsapp, message):
+ def on_message(_, message):
print(message)
self.close()
@@ -87,7 +90,7 @@ class WebSocketAppTest(unittest.TestCase):
# @unittest.skipUnless(TEST_WITH_LOCAL_SERVER, "Tests using local websocket server are disabled")
@unittest.skipUnless(False, "Test disabled for now (requires rel)")
- def testRunForeverDispatcher(self):
+ def test_run_forever_dispatcher(self):
"""A WebSocketApp should keep running as long as its self.keep_running
is not False (in the boolean context).
"""
@@ -98,7 +101,7 @@ class WebSocketAppTest(unittest.TestCase):
self.recv()
self.send("goodbye!")
- def on_message(wsapp, message):
+ def on_message(_, message):
print(message)
self.close()
@@ -115,7 +118,7 @@ class WebSocketAppTest(unittest.TestCase):
@unittest.skipUnless(
TEST_WITH_LOCAL_SERVER, "Tests using local websocket server are disabled"
)
- def testRunForeverTeardownCleanExit(self):
+ def test_run_forever_teardown_clean_exit(self):
"""The WebSocketApp.run_forever() method should return `False` when the application ends gracefully."""
app = ws.WebSocketApp(f"ws://127.0.0.1:{LOCAL_WS_SERVER_PORT}")
threading.Timer(interval=0.2, function=app.close).start()
@@ -123,7 +126,7 @@ class WebSocketAppTest(unittest.TestCase):
self.assertEqual(teardown, False)
@unittest.skipUnless(TEST_WITH_INTERNET, "Internet-requiring tests are disabled")
- def testSockMaskKey(self):
+ def test_sock_mask_key(self):
"""A WebSocketApp should forward the received mask_key function down
to the actual socket.
"""
@@ -140,14 +143,14 @@ class WebSocketAppTest(unittest.TestCase):
self.assertEqual(id(app.get_mask_key), id(my_mask_key_func))
@unittest.skipUnless(TEST_WITH_INTERNET, "Internet-requiring tests are disabled")
- def testInvalidPingIntervalPingTimeout(self):
+ def test_invalid_ping_interval_ping_timeout(self):
"""Test exception handling if ping_interval < ping_timeout"""
- def on_ping(app, msg):
+ def on_ping(app, _):
print("Got a ping!")
app.close()
- def on_pong(app, msg):
+ def on_pong(app, _):
print("Got a pong! No need to respond")
app.close()
@@ -163,14 +166,14 @@ class WebSocketAppTest(unittest.TestCase):
)
@unittest.skipUnless(TEST_WITH_INTERNET, "Internet-requiring tests are disabled")
- def testPingInterval(self):
+ def test_ping_interval(self):
"""Test WebSocketApp proper ping functionality"""
- def on_ping(app, msg):
+ def on_ping(app, _):
print("Got a ping!")
app.close()
- def on_pong(app, msg):
+ def on_pong(app, _):
print("Got a pong! No need to respond")
app.close()
@@ -182,7 +185,7 @@ class WebSocketAppTest(unittest.TestCase):
)
@unittest.skipUnless(TEST_WITH_INTERNET, "Internet-requiring tests are disabled")
- def testOpcodeClose(self):
+ def test_opcode_close(self):
"""Test WebSocketApp close opcode"""
app = ws.WebSocketApp("wss://tsock.us1.twilio.com/v3/wsconnect")
@@ -197,7 +200,7 @@ class WebSocketAppTest(unittest.TestCase):
# app.run_forever(ping_interval=2, ping_timeout=1, ping_payload="Ping payload")
@unittest.skipUnless(TEST_WITH_INTERNET, "Internet-requiring tests are disabled")
- def testBadPingInterval(self):
+ def test_bad_ping_interval(self):
"""A WebSocketApp handling of negative ping_interval"""
app = ws.WebSocketApp("wss://api-pub.bitfinex.com/ws/1")
self.assertRaises(
@@ -208,7 +211,7 @@ class WebSocketAppTest(unittest.TestCase):
)
@unittest.skipUnless(TEST_WITH_INTERNET, "Internet-requiring tests are disabled")
- def testBadPingTimeout(self):
+ def test_bad_ping_timeout(self):
"""A WebSocketApp handling of negative ping_timeout"""
app = ws.WebSocketApp("wss://api-pub.bitfinex.com/ws/1")
self.assertRaises(
@@ -219,7 +222,7 @@ class WebSocketAppTest(unittest.TestCase):
)
@unittest.skipUnless(TEST_WITH_INTERNET, "Internet-requiring tests are disabled")
- def testCloseStatusCode(self):
+ def test_close_status_code(self):
"""Test extraction of close frame status code and close reason in WebSocketApp"""
def on_close(wsapp, close_status_code, close_msg):
@@ -249,7 +252,7 @@ class WebSocketAppTest(unittest.TestCase):
@unittest.skipUnless(
TEST_WITH_LOCAL_SERVER, "Tests using local websocket server are disabled"
)
- def testCallbackFunctionException(self):
+ def test_callback_function_exception(self):
"""Test callback function exception handling"""
exc = None
@@ -264,7 +267,7 @@ class WebSocketAppTest(unittest.TestCase):
nonlocal exc
exc = err
- def on_pong(app, msg):
+ def on_pong(app, _):
app.close()
app = ws.WebSocketApp(
@@ -282,7 +285,7 @@ class WebSocketAppTest(unittest.TestCase):
@unittest.skipUnless(
TEST_WITH_LOCAL_SERVER, "Tests using local websocket server are disabled"
)
- def testCallbackMethodException(self):
+ def test_callback_method_exception(self):
"""Test callback method exception handling"""
class Callbacks:
@@ -297,14 +300,14 @@ class WebSocketAppTest(unittest.TestCase):
)
self.app.run_forever(ping_interval=2, ping_timeout=1)
- def on_open(self, app):
+ def on_open(self, _):
raise RuntimeError("Callback failed")
def on_error(self, app, err):
self.passed_app = app
self.exc = err
- def on_pong(self, app, msg):
+ def on_pong(self, app, _):
app.close()
callbacks = Callbacks()
@@ -316,16 +319,16 @@ class WebSocketAppTest(unittest.TestCase):
@unittest.skipUnless(
TEST_WITH_LOCAL_SERVER, "Tests using local websocket server are disabled"
)
- def testReconnect(self):
+ def test_reconnect(self):
"""Test reconnect"""
pong_count = 0
exc = None
- def on_error(app, err):
+ def on_error(_, err):
nonlocal exc
exc = err
- def on_pong(app, msg):
+ def on_pong(app, _):
nonlocal pong_count
pong_count += 1
if pong_count == 1:
diff --git a/contrib/python/websocket-client/py3/websocket/tests/test_cookiejar.py b/contrib/python/websocket-client/py3/websocket/tests/test_cookiejar.py
index 0de87517d4..67eddb627a 100644
--- a/contrib/python/websocket-client/py3/websocket/tests/test_cookiejar.py
+++ b/contrib/python/websocket-client/py3/websocket/tests/test_cookiejar.py
@@ -6,7 +6,7 @@ from websocket._cookiejar import SimpleCookieJar
test_cookiejar.py
websocket - WebSocket client library for Python
-Copyright 2023 engn33r
+Copyright 2024 engn33r
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -23,7 +23,7 @@ limitations under the License.
class CookieJarTest(unittest.TestCase):
- def testAdd(self):
+ def test_add(self):
cookie_jar = SimpleCookieJar()
cookie_jar.add("")
self.assertFalse(
@@ -67,7 +67,7 @@ class CookieJarTest(unittest.TestCase):
self.assertEqual(cookie_jar.get("xyz"), "e=f")
self.assertEqual(cookie_jar.get("something"), "")
- def testSet(self):
+ def test_set(self):
cookie_jar = SimpleCookieJar()
cookie_jar.set("a=b")
self.assertFalse(
@@ -104,7 +104,7 @@ class CookieJarTest(unittest.TestCase):
self.assertEqual(cookie_jar.get("xyz"), "e=f")
self.assertEqual(cookie_jar.get("something"), "")
- def testGet(self):
+ def test_get(self):
cookie_jar = SimpleCookieJar()
cookie_jar.set("a=b; c=d; domain=abc.com")
self.assertEqual(cookie_jar.get("abc.com"), "a=b; c=d")
diff --git a/contrib/python/websocket-client/py3/websocket/tests/test_http.py b/contrib/python/websocket-client/py3/websocket/tests/test_http.py
index 9df36e43ab..b8b363acc4 100644
--- a/contrib/python/websocket-client/py3/websocket/tests/test_http.py
+++ b/contrib/python/websocket-client/py3/websocket/tests/test_http.py
@@ -7,7 +7,7 @@ import ssl
import unittest
import websocket
-import websocket as ws
+from websocket._exceptions import WebSocketProxyException, WebSocketException
from websocket._http import (
_get_addrinfo_list,
_start_proxied_socket,
@@ -15,13 +15,14 @@ from websocket._http import (
connect,
proxy_info,
read_headers,
+ HAVE_PYTHON_SOCKS,
)
"""
test_http.py
websocket - WebSocket client library for Python
-Copyright 2023 engn33r
+Copyright 2024 engn33r
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -94,20 +95,18 @@ class OptsList:
class HttpTest(unittest.TestCase):
- def testReadHeader(self):
- status, header, status_message = read_headers(
- HeaderSockMock("data/header01.txt")
- )
+ def test_read_header(self):
+ status, header, _ = read_headers(HeaderSockMock("data/header01.txt"))
self.assertEqual(status, 101)
self.assertEqual(header["connection"], "Upgrade")
# header02.txt is intentionally malformed
self.assertRaises(
- ws.WebSocketException, read_headers, HeaderSockMock("data/header02.txt")
+ WebSocketException, read_headers, HeaderSockMock("data/header02.txt")
)
- def testTunnel(self):
+ def test_tunnel(self):
self.assertRaises(
- ws.WebSocketProxyException,
+ WebSocketProxyException,
_tunnel,
HeaderSockMock("data/header01.txt"),
"example.com",
@@ -115,7 +114,7 @@ class HttpTest(unittest.TestCase):
("username", "password"),
)
self.assertRaises(
- ws.WebSocketProxyException,
+ WebSocketProxyException,
_tunnel,
HeaderSockMock("data/header02.txt"),
"example.com",
@@ -124,9 +123,9 @@ class HttpTest(unittest.TestCase):
)
@unittest.skipUnless(TEST_WITH_INTERNET, "Internet-requiring tests are disabled")
- def testConnect(self):
+ def test_connect(self):
# Not currently testing an actual proxy connection, so just check whether proxy errors are raised. This requires internet for a DNS lookup
- if ws._http.HAVE_PYTHON_SOCKS:
+ if HAVE_PYTHON_SOCKS:
# Need this check, otherwise case where python_socks is not installed triggers
# websocket._exceptions.WebSocketException: Python Socks is needed for SOCKS proxying but is not available
self.assertRaises(
@@ -245,7 +244,7 @@ class HttpTest(unittest.TestCase):
@unittest.skipUnless(
TEST_WITH_LOCAL_SERVER, "Tests using local websocket server are disabled"
)
- def testProxyConnect(self):
+ def test_proxy_connect(self):
ws = websocket.WebSocket()
ws.connect(
f"ws://127.0.0.1:{LOCAL_WS_SERVER_PORT}",
@@ -290,7 +289,7 @@ class HttpTest(unittest.TestCase):
# TODO: Test SOCKS4 and SOCK5 proxies with unit tests
@unittest.skipUnless(TEST_WITH_INTERNET, "Internet-requiring tests are disabled")
- def testSSLopt(self):
+ def test_sslopt(self):
ssloptions = {
"check_hostname": False,
"server_hostname": "ServerName",
@@ -316,7 +315,7 @@ class HttpTest(unittest.TestCase):
ws_ssl2.connect("wss://api.bitfinex.com/ws/2")
ws_ssl2.close
- def testProxyInfo(self):
+ def test_proxy_info(self):
self.assertEqual(
proxy_info(
http_proxy_host="127.0.0.1", http_proxy_port="8080", proxy_type="http"
diff --git a/contrib/python/websocket-client/py3/websocket/tests/test_url.py b/contrib/python/websocket-client/py3/websocket/tests/test_url.py
index 792399ebf5..110fdfad70 100644
--- a/contrib/python/websocket-client/py3/websocket/tests/test_url.py
+++ b/contrib/python/websocket-client/py3/websocket/tests/test_url.py
@@ -9,12 +9,13 @@ from websocket._url import (
get_proxy_info,
parse_url,
)
+from websocket._exceptions import WebSocketProxyException
"""
test_url.py
websocket - WebSocket client library for Python
-Copyright 2023 engn33r
+Copyright 2024 engn33r
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -36,7 +37,7 @@ class UrlTest(unittest.TestCase):
self.assertTrue(_is_address_in_network("127.1.0.1", "127.0.0.0/8"))
self.assertFalse(_is_address_in_network("127.1.0.1", "127.0.0.0/24"))
- def testParseUrl(self):
+ def test_parse_url(self):
p = parse_url("ws://www.example.com/r")
self.assertEqual(p[0], "www.example.com")
self.assertEqual(p[1], 80)
@@ -130,9 +131,13 @@ class IsNoProxyHostTest(unittest.TestCase):
elif "no_proxy" in os.environ:
del os.environ["no_proxy"]
- def testMatchAll(self):
+ def test_match_all(self):
self.assertTrue(_is_no_proxy_host("any.websocket.org", ["*"]))
self.assertTrue(_is_no_proxy_host("192.168.0.1", ["*"]))
+ self.assertFalse(_is_no_proxy_host("192.168.0.1", ["192.168.1.1"]))
+ self.assertFalse(
+ _is_no_proxy_host("any.websocket.org", ["other.websocket.org"])
+ )
self.assertTrue(
_is_no_proxy_host("any.websocket.org", ["other.websocket.org", "*"])
)
@@ -142,7 +147,7 @@ class IsNoProxyHostTest(unittest.TestCase):
os.environ["no_proxy"] = "other.websocket.org, *"
self.assertTrue(_is_no_proxy_host("any.websocket.org", None))
- def testIpAddress(self):
+ def test_ip_address(self):
self.assertTrue(_is_no_proxy_host("127.0.0.1", ["127.0.0.1"]))
self.assertFalse(_is_no_proxy_host("127.0.0.2", ["127.0.0.1"]))
self.assertTrue(
@@ -158,7 +163,7 @@ class IsNoProxyHostTest(unittest.TestCase):
self.assertTrue(_is_no_proxy_host("127.0.0.1", None))
self.assertFalse(_is_no_proxy_host("127.0.0.2", None))
- def testIpAddressInRange(self):
+ def test_ip_address_in_range(self):
self.assertTrue(_is_no_proxy_host("127.0.0.1", ["127.0.0.0/8"]))
self.assertTrue(_is_no_proxy_host("127.0.0.2", ["127.0.0.0/8"]))
self.assertFalse(_is_no_proxy_host("127.1.0.1", ["127.0.0.0/24"]))
@@ -168,7 +173,7 @@ class IsNoProxyHostTest(unittest.TestCase):
os.environ["no_proxy"] = "127.0.0.0/24"
self.assertFalse(_is_no_proxy_host("127.1.0.1", None))
- def testHostnameMatch(self):
+ def test_hostname_match(self):
self.assertTrue(_is_no_proxy_host("my.websocket.org", ["my.websocket.org"]))
self.assertTrue(
_is_no_proxy_host(
@@ -182,7 +187,7 @@ class IsNoProxyHostTest(unittest.TestCase):
os.environ["no_proxy"] = "other.websocket.org, my.websocket.org"
self.assertTrue(_is_no_proxy_host("my.websocket.org", None))
- def testHostnameMatchDomain(self):
+ def test_hostname_match_domain(self):
self.assertTrue(_is_no_proxy_host("any.websocket.org", [".websocket.org"]))
self.assertTrue(_is_no_proxy_host("my.other.websocket.org", [".websocket.org"]))
self.assertTrue(
@@ -227,10 +232,13 @@ class ProxyInfoTest(unittest.TestCase):
elif "no_proxy" in os.environ:
del os.environ["no_proxy"]
- def testProxyFromArgs(self):
- self.assertEqual(
- get_proxy_info("echo.websocket.events", False, proxy_host="localhost"),
- ("localhost", 0, None),
+ def test_proxy_from_args(self):
+ self.assertRaises(
+ WebSocketProxyException,
+ get_proxy_info,
+ "echo.websocket.events",
+ False,
+ proxy_host="localhost",
)
self.assertEqual(
get_proxy_info(
@@ -239,10 +247,6 @@ class ProxyInfoTest(unittest.TestCase):
("localhost", 3128, None),
)
self.assertEqual(
- get_proxy_info("echo.websocket.events", True, proxy_host="localhost"),
- ("localhost", 0, None),
- )
- self.assertEqual(
get_proxy_info(
"echo.websocket.events", True, proxy_host="localhost", proxy_port=3128
),
@@ -254,9 +258,10 @@ class ProxyInfoTest(unittest.TestCase):
"echo.websocket.events",
False,
proxy_host="localhost",
+ proxy_port=9001,
proxy_auth=("a", "b"),
),
- ("localhost", 0, ("a", "b")),
+ ("localhost", 9001, ("a", "b")),
)
self.assertEqual(
get_proxy_info(
@@ -273,9 +278,10 @@ class ProxyInfoTest(unittest.TestCase):
"echo.websocket.events",
True,
proxy_host="localhost",
+ proxy_port=8765,
proxy_auth=("a", "b"),
),
- ("localhost", 0, ("a", "b")),
+ ("localhost", 8765, ("a", "b")),
)
self.assertEqual(
get_proxy_info(
@@ -311,7 +317,18 @@ class ProxyInfoTest(unittest.TestCase):
(None, 0, None),
)
- def testProxyFromEnv(self):
+ self.assertEqual(
+ get_proxy_info(
+ "echo.websocket.events",
+ True,
+ proxy_host="localhost",
+ proxy_port=3128,
+ no_proxy=[".websocket.events"],
+ ),
+ (None, 0, None),
+ )
+
+ def test_proxy_from_env(self):
os.environ["http_proxy"] = "http://localhost/"
self.assertEqual(
get_proxy_info("echo.websocket.events", False), ("localhost", None, None)
diff --git a/contrib/python/websocket-client/py3/websocket/tests/test_websocket.py b/contrib/python/websocket-client/py3/websocket/tests/test_websocket.py
index c3d636426b..b665548cda 100644
--- a/contrib/python/websocket-client/py3/websocket/tests/test_websocket.py
+++ b/contrib/python/websocket-client/py3/websocket/tests/test_websocket.py
@@ -7,6 +7,7 @@ import unittest
from base64 import decodebytes as base64decode
import websocket as ws
+from websocket._exceptions import WebSocketBadStatusException, WebSocketAddressException
from websocket._handshake import _create_sec_websocket_key
from websocket._handshake import _validate as _validate_header
from websocket._http import read_headers
@@ -16,7 +17,7 @@ from websocket._utils import validate_utf8
test_websocket.py
websocket - WebSocket client library for Python
-Copyright 2023 engn33r
+Copyright 2024 engn33r
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -33,7 +34,6 @@ limitations under the License.
try:
import ssl
- from ssl import SSLError
except ImportError:
# dummy class of SSLError for ssl none-support environment.
class SSLError(Exception):
@@ -96,24 +96,24 @@ class WebSocketTest(unittest.TestCase):
def tearDown(self):
pass
- def testDefaultTimeout(self):
+ def test_default_timeout(self):
self.assertEqual(ws.getdefaulttimeout(), None)
ws.setdefaulttimeout(10)
self.assertEqual(ws.getdefaulttimeout(), 10)
ws.setdefaulttimeout(None)
- def testWSKey(self):
+ def test_ws_key(self):
key = _create_sec_websocket_key()
self.assertTrue(key != 24)
self.assertTrue("¥n" not in key)
- def testNonce(self):
+ def test_nonce(self):
"""WebSocket key should be a random 16-byte nonce."""
key = _create_sec_websocket_key()
nonce = base64decode(key.encode("utf-8"))
self.assertEqual(16, len(nonce))
- def testWsUtils(self):
+ def test_ws_utils(self):
key = "c6b8hTg4EeGb2gQMztV1/g=="
required_header = {
"upgrade": "websocket",
@@ -158,16 +158,12 @@ class WebSocketTest(unittest.TestCase):
# This case will print out a logging error using the error() function, but that is expected
self.assertEqual(_validate_header(header, key, ["Sub1", "suB2"]), (False, None))
- def testReadHeader(self):
- status, header, status_message = read_headers(
- HeaderSockMock("data/header01.txt")
- )
+ def test_read_header(self):
+ status, header, _ = read_headers(HeaderSockMock("data/header01.txt"))
self.assertEqual(status, 101)
self.assertEqual(header["connection"], "Upgrade")
- status, header, status_message = read_headers(
- HeaderSockMock("data/header03.txt")
- )
+ status, header, _ = read_headers(HeaderSockMock("data/header03.txt"))
self.assertEqual(status, 101)
self.assertEqual(header["connection"], "Upgrade, Keep-Alive")
@@ -176,7 +172,7 @@ class WebSocketTest(unittest.TestCase):
ws.WebSocketException, read_headers, HeaderSockMock("data/header02.txt")
)
- def testSend(self):
+ def test_send(self):
# TODO: add longer frame data
sock = ws.WebSocket()
sock.set_mask_key(create_mask_key)
@@ -195,7 +191,7 @@ class WebSocketTest(unittest.TestCase):
self.assertEqual(sock.send_binary(b"1111111111101"), 19)
- def testRecv(self):
+ def test_recv(self):
# TODO: add longer frame data
sock = ws.WebSocket()
s = sock.sock = SockMock()
@@ -211,7 +207,7 @@ class WebSocketTest(unittest.TestCase):
self.assertEqual(data, "Hello")
@unittest.skipUnless(TEST_WITH_INTERNET, "Internet-requiring tests are disabled")
- def testIter(self):
+ def test_iter(self):
count = 2
s = ws.create_connection("wss://api.bitfinex.com/ws/2")
s.send('{"event": "subscribe", "channel": "ticker"}')
@@ -221,11 +217,11 @@ class WebSocketTest(unittest.TestCase):
break
@unittest.skipUnless(TEST_WITH_INTERNET, "Internet-requiring tests are disabled")
- def testNext(self):
+ def test_next(self):
sock = ws.create_connection("wss://api.bitfinex.com/ws/2")
self.assertEqual(str, type(next(sock)))
- def testInternalRecvStrict(self):
+ def test_internal_recv_strict(self):
sock = ws.WebSocket()
s = sock.sock = SockMock()
s.add_packet(b"foo")
@@ -242,7 +238,7 @@ class WebSocketTest(unittest.TestCase):
with self.assertRaises(ws.WebSocketConnectionClosedException):
sock.frame_buffer.recv_strict(1)
- def testRecvTimeout(self):
+ def test_recv_timeout(self):
sock = ws.WebSocket()
s = sock.sock = SockMock()
s.add_packet(b"\x81")
@@ -259,7 +255,7 @@ class WebSocketTest(unittest.TestCase):
with self.assertRaises(ws.WebSocketConnectionClosedException):
sock.recv()
- def testRecvWithSimpleFragmentation(self):
+ def test_recv_with_simple_fragmentation(self):
sock = ws.WebSocket()
s = sock.sock = SockMock()
# OPCODE=TEXT, FIN=0, MSG="Brevity is "
@@ -271,7 +267,7 @@ class WebSocketTest(unittest.TestCase):
with self.assertRaises(ws.WebSocketConnectionClosedException):
sock.recv()
- def testRecvWithFireEventOfFragmentation(self):
+ def test_recv_with_fire_event_of_fragmentation(self):
sock = ws.WebSocket(fire_cont_frame=True)
s = sock.sock = SockMock()
# OPCODE=TEXT, FIN=0, MSG="Brevity is "
@@ -297,7 +293,7 @@ class WebSocketTest(unittest.TestCase):
with self.assertRaises(ws.WebSocketConnectionClosedException):
sock.recv()
- def testClose(self):
+ def test_close(self):
sock = ws.WebSocket()
sock.connected = True
sock.close
@@ -309,14 +305,14 @@ class WebSocketTest(unittest.TestCase):
sock.recv()
self.assertEqual(sock.connected, False)
- def testRecvContFragmentation(self):
+ def test_recv_cont_fragmentation(self):
sock = ws.WebSocket()
s = sock.sock = SockMock()
# OPCODE=CONT, FIN=1, MSG="the soul of wit"
s.add_packet(b"\x80\x8fabcd\x15\n\x06D\x12\r\x16\x08A\r\x05D\x16\x0b\x17")
self.assertRaises(ws.WebSocketException, sock.recv)
- def testRecvWithProlongedFragmentation(self):
+ def test_recv_with_prolonged_fragmentation(self):
sock = ws.WebSocket()
s = sock.sock = SockMock()
# OPCODE=TEXT, FIN=0, MSG="Once more unto the breach, "
@@ -332,7 +328,7 @@ class WebSocketTest(unittest.TestCase):
with self.assertRaises(ws.WebSocketConnectionClosedException):
sock.recv()
- def testRecvWithFragmentationAndControlFrame(self):
+ def test_recv_with_fragmentation_and_control_frame(self):
sock = ws.WebSocket()
sock.set_mask_key(create_mask_key)
s = sock.sock = SockMock()
@@ -353,7 +349,7 @@ class WebSocketTest(unittest.TestCase):
@unittest.skipUnless(
TEST_WITH_LOCAL_SERVER, "Tests using local websocket server are disabled"
)
- def testWebSocket(self):
+ def test_websocket(self):
s = ws.create_connection(f"ws://127.0.0.1:{LOCAL_WS_SERVER_PORT}")
self.assertNotEqual(s, None)
s.send("Hello, World")
@@ -370,7 +366,7 @@ class WebSocketTest(unittest.TestCase):
@unittest.skipUnless(
TEST_WITH_LOCAL_SERVER, "Tests using local websocket server are disabled"
)
- def testPingPong(self):
+ def test_ping_pong(self):
s = ws.create_connection(f"ws://127.0.0.1:{LOCAL_WS_SERVER_PORT}")
self.assertNotEqual(s, None)
s.ping("Hello")
@@ -378,17 +374,13 @@ class WebSocketTest(unittest.TestCase):
s.close()
@unittest.skipUnless(TEST_WITH_INTERNET, "Internet-requiring tests are disabled")
- def testSupportRedirect(self):
+ def test_support_redirect(self):
s = ws.WebSocket()
- self.assertRaises(
- ws._exceptions.WebSocketBadStatusException, s.connect, "ws://google.com/"
- )
+ self.assertRaises(WebSocketBadStatusException, s.connect, "ws://google.com/")
# Need to find a URL that has a redirect code leading to a websocket
@unittest.skipUnless(TEST_WITH_INTERNET, "Internet-requiring tests are disabled")
- def testSecureWebSocket(self):
- import ssl
-
+ def test_secure_websocket(self):
s = ws.create_connection("wss://api.bitfinex.com/ws/2")
self.assertNotEqual(s, None)
self.assertTrue(isinstance(s.sock, ssl.SSLSocket))
@@ -402,7 +394,7 @@ class WebSocketTest(unittest.TestCase):
@unittest.skipUnless(
TEST_WITH_LOCAL_SERVER, "Tests using local websocket server are disabled"
)
- def testWebSocketWithCustomHeader(self):
+ def test_websocket_with_custom_header(self):
s = ws.create_connection(
f"ws://127.0.0.1:{LOCAL_WS_SERVER_PORT}",
headers={"User-Agent": "PythonWebsocketClient"},
@@ -418,7 +410,7 @@ class WebSocketTest(unittest.TestCase):
@unittest.skipUnless(
TEST_WITH_LOCAL_SERVER, "Tests using local websocket server are disabled"
)
- def testAfterClose(self):
+ def test_after_close(self):
s = ws.create_connection(f"ws://127.0.0.1:{LOCAL_WS_SERVER_PORT}")
self.assertNotEqual(s, None)
s.close()
@@ -430,7 +422,7 @@ class SockOptTest(unittest.TestCase):
@unittest.skipUnless(
TEST_WITH_LOCAL_SERVER, "Tests using local websocket server are disabled"
)
- def testSockOpt(self):
+ def test_sockopt(self):
sockopt = ((socket.IPPROTO_TCP, socket.TCP_NODELAY, 1),)
s = ws.create_connection(
f"ws://127.0.0.1:{LOCAL_WS_SERVER_PORT}", sockopt=sockopt
@@ -442,7 +434,7 @@ class SockOptTest(unittest.TestCase):
class UtilsTest(unittest.TestCase):
- def testUtf8Validator(self):
+ def test_utf8_validator(self):
state = validate_utf8(b"\xf0\x90\x80\x80")
self.assertEqual(state, True)
state = validate_utf8(
@@ -455,7 +447,7 @@ class UtilsTest(unittest.TestCase):
class HandshakeTest(unittest.TestCase):
@unittest.skipUnless(TEST_WITH_INTERNET, "Internet-requiring tests are disabled")
- def test_http_SSL(self):
+ def test_http_ssl(self):
websock1 = ws.WebSocket(
sslopt={"cert_chain": ssl.get_default_verify_paths().capath},
enable_multithread=False,
@@ -467,7 +459,7 @@ class HandshakeTest(unittest.TestCase):
)
@unittest.skipUnless(TEST_WITH_INTERNET, "Internet-requiring tests are disabled")
- def testManualHeaders(self):
+ def test_manual_headers(self):
websock3 = ws.WebSocket(
sslopt={
"ca_certs": ssl.get_default_verify_paths().cafile,
@@ -475,7 +467,7 @@ class HandshakeTest(unittest.TestCase):
}
)
self.assertRaises(
- ws._exceptions.WebSocketBadStatusException,
+ WebSocketBadStatusException,
websock3.connect,
"wss://api.bitfinex.com/ws/2",
cookie="chocolate",
@@ -491,16 +483,14 @@ class HandshakeTest(unittest.TestCase):
},
)
- def testIPv6(self):
+ def test_ipv6(self):
websock2 = ws.WebSocket()
self.assertRaises(ValueError, websock2.connect, "2001:4860:4860::8888")
- def testBadURLs(self):
+ def test_bad_urls(self):
websock3 = ws.WebSocket()
self.assertRaises(ValueError, websock3.connect, "ws//example.com")
- self.assertRaises(
- ws.WebSocketAddressException, websock3.connect, "ws://example"
- )
+ self.assertRaises(WebSocketAddressException, websock3.connect, "ws://example")
self.assertRaises(ValueError, websock3.connect, "example.com")