- fix some deprecated warning.
This commit is contained in:
@@ -23,6 +23,9 @@ import websocket as ws
|
|||||||
# Skip test to access the internet.
|
# Skip test to access the internet.
|
||||||
TEST_WITH_INTERNET = False
|
TEST_WITH_INTERNET = False
|
||||||
|
|
||||||
|
# Skip Secure WebSocket test.
|
||||||
|
TEST_SECURE_WS = False
|
||||||
|
|
||||||
TRACABLE = False
|
TRACABLE = False
|
||||||
|
|
||||||
|
|
||||||
@@ -57,8 +60,8 @@ class HeaderSockMock(SockMock):
|
|||||||
def __init__(self, fname):
|
def __init__(self, fname):
|
||||||
SockMock.__init__(self)
|
SockMock.__init__(self)
|
||||||
path = os.path.join(os.path.dirname(__file__), fname)
|
path = os.path.join(os.path.dirname(__file__), fname)
|
||||||
self.add_packet(open(path).read().encode('utf-8'))
|
with open(path, "rb") as f:
|
||||||
|
self.add_packet(f.read())
|
||||||
|
|
||||||
class WebSocketTest(unittest.TestCase):
|
class WebSocketTest(unittest.TestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
@@ -68,96 +71,96 @@ class WebSocketTest(unittest.TestCase):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
def testDefaultTimeout(self):
|
def testDefaultTimeout(self):
|
||||||
self.assertEquals(ws.getdefaulttimeout(), None)
|
self.assertEqual(ws.getdefaulttimeout(), None)
|
||||||
ws.setdefaulttimeout(10)
|
ws.setdefaulttimeout(10)
|
||||||
self.assertEquals(ws.getdefaulttimeout(), 10)
|
self.assertEqual(ws.getdefaulttimeout(), 10)
|
||||||
ws.setdefaulttimeout(None)
|
ws.setdefaulttimeout(None)
|
||||||
|
|
||||||
def testParseUrl(self):
|
def testParseUrl(self):
|
||||||
p = ws._parse_url("ws://www.example.com/r")
|
p = ws._parse_url("ws://www.example.com/r")
|
||||||
self.assertEquals(p[0], "www.example.com")
|
self.assertEqual(p[0], "www.example.com")
|
||||||
self.assertEquals(p[1], 80)
|
self.assertEqual(p[1], 80)
|
||||||
self.assertEquals(p[2], "/r")
|
self.assertEqual(p[2], "/r")
|
||||||
self.assertEquals(p[3], False)
|
self.assertEqual(p[3], False)
|
||||||
|
|
||||||
p = ws._parse_url("ws://www.example.com/r/")
|
p = ws._parse_url("ws://www.example.com/r/")
|
||||||
self.assertEquals(p[0], "www.example.com")
|
self.assertEqual(p[0], "www.example.com")
|
||||||
self.assertEquals(p[1], 80)
|
self.assertEqual(p[1], 80)
|
||||||
self.assertEquals(p[2], "/r/")
|
self.assertEqual(p[2], "/r/")
|
||||||
self.assertEquals(p[3], False)
|
self.assertEqual(p[3], False)
|
||||||
|
|
||||||
p = ws._parse_url("ws://www.example.com/")
|
p = ws._parse_url("ws://www.example.com/")
|
||||||
self.assertEquals(p[0], "www.example.com")
|
self.assertEqual(p[0], "www.example.com")
|
||||||
self.assertEquals(p[1], 80)
|
self.assertEqual(p[1], 80)
|
||||||
self.assertEquals(p[2], "/")
|
self.assertEqual(p[2], "/")
|
||||||
self.assertEquals(p[3], False)
|
self.assertEqual(p[3], False)
|
||||||
|
|
||||||
p = ws._parse_url("ws://www.example.com")
|
p = ws._parse_url("ws://www.example.com")
|
||||||
self.assertEquals(p[0], "www.example.com")
|
self.assertEqual(p[0], "www.example.com")
|
||||||
self.assertEquals(p[1], 80)
|
self.assertEqual(p[1], 80)
|
||||||
self.assertEquals(p[2], "/")
|
self.assertEqual(p[2], "/")
|
||||||
self.assertEquals(p[3], False)
|
self.assertEqual(p[3], False)
|
||||||
|
|
||||||
p = ws._parse_url("ws://www.example.com:8080/r")
|
p = ws._parse_url("ws://www.example.com:8080/r")
|
||||||
self.assertEquals(p[0], "www.example.com")
|
self.assertEqual(p[0], "www.example.com")
|
||||||
self.assertEquals(p[1], 8080)
|
self.assertEqual(p[1], 8080)
|
||||||
self.assertEquals(p[2], "/r")
|
self.assertEqual(p[2], "/r")
|
||||||
self.assertEquals(p[3], False)
|
self.assertEqual(p[3], False)
|
||||||
|
|
||||||
p = ws._parse_url("ws://www.example.com:8080/")
|
p = ws._parse_url("ws://www.example.com:8080/")
|
||||||
self.assertEquals(p[0], "www.example.com")
|
self.assertEqual(p[0], "www.example.com")
|
||||||
self.assertEquals(p[1], 8080)
|
self.assertEqual(p[1], 8080)
|
||||||
self.assertEquals(p[2], "/")
|
self.assertEqual(p[2], "/")
|
||||||
self.assertEquals(p[3], False)
|
self.assertEqual(p[3], False)
|
||||||
|
|
||||||
p = ws._parse_url("ws://www.example.com:8080")
|
p = ws._parse_url("ws://www.example.com:8080")
|
||||||
self.assertEquals(p[0], "www.example.com")
|
self.assertEqual(p[0], "www.example.com")
|
||||||
self.assertEquals(p[1], 8080)
|
self.assertEqual(p[1], 8080)
|
||||||
self.assertEquals(p[2], "/")
|
self.assertEqual(p[2], "/")
|
||||||
self.assertEquals(p[3], False)
|
self.assertEqual(p[3], False)
|
||||||
|
|
||||||
p = ws._parse_url("wss://www.example.com:8080/r")
|
p = ws._parse_url("wss://www.example.com:8080/r")
|
||||||
self.assertEquals(p[0], "www.example.com")
|
self.assertEqual(p[0], "www.example.com")
|
||||||
self.assertEquals(p[1], 8080)
|
self.assertEqual(p[1], 8080)
|
||||||
self.assertEquals(p[2], "/r")
|
self.assertEqual(p[2], "/r")
|
||||||
self.assertEquals(p[3], True)
|
self.assertEqual(p[3], True)
|
||||||
|
|
||||||
p = ws._parse_url("wss://www.example.com:8080/r?key=value")
|
p = ws._parse_url("wss://www.example.com:8080/r?key=value")
|
||||||
self.assertEquals(p[0], "www.example.com")
|
self.assertEqual(p[0], "www.example.com")
|
||||||
self.assertEquals(p[1], 8080)
|
self.assertEqual(p[1], 8080)
|
||||||
self.assertEquals(p[2], "/r?key=value")
|
self.assertEqual(p[2], "/r?key=value")
|
||||||
self.assertEquals(p[3], True)
|
self.assertEqual(p[3], True)
|
||||||
|
|
||||||
self.assertRaises(ValueError, ws._parse_url, "http://www.example.com/r")
|
self.assertRaises(ValueError, ws._parse_url, "http://www.example.com/r")
|
||||||
|
|
||||||
p = ws._parse_url("ws://[2a03:4000:123:83::3]/r")
|
p = ws._parse_url("ws://[2a03:4000:123:83::3]/r")
|
||||||
self.assertEquals(p[0], "2a03:4000:123:83::3")
|
self.assertEqual(p[0], "2a03:4000:123:83::3")
|
||||||
self.assertEquals(p[1], 80)
|
self.assertEqual(p[1], 80)
|
||||||
self.assertEquals(p[2], "/r")
|
self.assertEqual(p[2], "/r")
|
||||||
self.assertEquals(p[3], False)
|
self.assertEqual(p[3], False)
|
||||||
|
|
||||||
p = ws._parse_url("ws://[2a03:4000:123:83::3]:8080/r")
|
p = ws._parse_url("ws://[2a03:4000:123:83::3]:8080/r")
|
||||||
self.assertEquals(p[0], "2a03:4000:123:83::3")
|
self.assertEqual(p[0], "2a03:4000:123:83::3")
|
||||||
self.assertEquals(p[1], 8080)
|
self.assertEqual(p[1], 8080)
|
||||||
self.assertEquals(p[2], "/r")
|
self.assertEqual(p[2], "/r")
|
||||||
self.assertEquals(p[3], False)
|
self.assertEqual(p[3], False)
|
||||||
|
|
||||||
p = ws._parse_url("wss://[2a03:4000:123:83::3]/r")
|
p = ws._parse_url("wss://[2a03:4000:123:83::3]/r")
|
||||||
self.assertEquals(p[0], "2a03:4000:123:83::3")
|
self.assertEqual(p[0], "2a03:4000:123:83::3")
|
||||||
self.assertEquals(p[1], 443)
|
self.assertEqual(p[1], 443)
|
||||||
self.assertEquals(p[2], "/r")
|
self.assertEqual(p[2], "/r")
|
||||||
self.assertEquals(p[3], True)
|
self.assertEqual(p[3], True)
|
||||||
|
|
||||||
p = ws._parse_url("wss://[2a03:4000:123:83::3]:8080/r")
|
p = ws._parse_url("wss://[2a03:4000:123:83::3]:8080/r")
|
||||||
self.assertEquals(p[0], "2a03:4000:123:83::3")
|
self.assertEqual(p[0], "2a03:4000:123:83::3")
|
||||||
self.assertEquals(p[1], 8080)
|
self.assertEqual(p[1], 8080)
|
||||||
self.assertEquals(p[2], "/r")
|
self.assertEqual(p[2], "/r")
|
||||||
self.assertEquals(p[3], True)
|
self.assertEqual(p[3], True)
|
||||||
|
|
||||||
def testWSKey(self):
|
def testWSKey(self):
|
||||||
key = ws._create_sec_websocket_key()
|
key = ws._create_sec_websocket_key()
|
||||||
self.assert_(key != 24)
|
self.assertTrue(key != 24)
|
||||||
self.assert_(six.u("¥n") not in key)
|
self.assertTrue(six.u("¥n") not in key)
|
||||||
|
|
||||||
def testWsUtils(self):
|
def testWsUtils(self):
|
||||||
sock = ws.WebSocket()
|
sock = ws.WebSocket()
|
||||||
@@ -168,32 +171,32 @@ class WebSocketTest(unittest.TestCase):
|
|||||||
"connection": "upgrade",
|
"connection": "upgrade",
|
||||||
"sec-websocket-accept": "Kxep+hNu9n51529fGidYu7a3wO0=",
|
"sec-websocket-accept": "Kxep+hNu9n51529fGidYu7a3wO0=",
|
||||||
}
|
}
|
||||||
self.assertEquals(sock._validate_header(required_header, key), True)
|
self.assertEqual(sock._validate_header(required_header, key), True)
|
||||||
|
|
||||||
header = required_header.copy()
|
header = required_header.copy()
|
||||||
header["upgrade"] = "http"
|
header["upgrade"] = "http"
|
||||||
self.assertEquals(sock._validate_header(header, key), False)
|
self.assertEqual(sock._validate_header(header, key), False)
|
||||||
del header["upgrade"]
|
del header["upgrade"]
|
||||||
self.assertEquals(sock._validate_header(header, key), False)
|
self.assertEqual(sock._validate_header(header, key), False)
|
||||||
|
|
||||||
header = required_header.copy()
|
header = required_header.copy()
|
||||||
header["connection"] = "something"
|
header["connection"] = "something"
|
||||||
self.assertEquals(sock._validate_header(header, key), False)
|
self.assertEqual(sock._validate_header(header, key), False)
|
||||||
del header["connection"]
|
del header["connection"]
|
||||||
self.assertEquals(sock._validate_header(header, key), False)
|
self.assertEqual(sock._validate_header(header, key), False)
|
||||||
|
|
||||||
header = required_header.copy()
|
header = required_header.copy()
|
||||||
header["sec-websocket-accept"] = "something"
|
header["sec-websocket-accept"] = "something"
|
||||||
self.assertEquals(sock._validate_header(header, key), False)
|
self.assertEqual(sock._validate_header(header, key), False)
|
||||||
del header["sec-websocket-accept"]
|
del header["sec-websocket-accept"]
|
||||||
self.assertEquals(sock._validate_header(header, key), False)
|
self.assertEqual(sock._validate_header(header, key), False)
|
||||||
|
|
||||||
def testReadHeader(self):
|
def testReadHeader(self):
|
||||||
sock = ws.WebSocket()
|
sock = ws.WebSocket()
|
||||||
sock.sock = HeaderSockMock("data/header01.txt")
|
sock.sock = HeaderSockMock("data/header01.txt")
|
||||||
status, header = sock._read_headers()
|
status, header = sock._read_headers()
|
||||||
self.assertEquals(status, 101)
|
self.assertEqual(status, 101)
|
||||||
self.assertEquals(header["connection"], "upgrade")
|
self.assertEqual(header["connection"], "upgrade")
|
||||||
|
|
||||||
sock.sock = HeaderSockMock("data/header02.txt")
|
sock.sock = HeaderSockMock("data/header02.txt")
|
||||||
self.assertRaises(ws.WebSocketException, sock._read_headers)
|
self.assertRaises(ws.WebSocketException, sock._read_headers)
|
||||||
@@ -204,13 +207,13 @@ class WebSocketTest(unittest.TestCase):
|
|||||||
sock.set_mask_key(create_mask_key)
|
sock.set_mask_key(create_mask_key)
|
||||||
s = sock.sock = HeaderSockMock("data/header01.txt")
|
s = sock.sock = HeaderSockMock("data/header01.txt")
|
||||||
sock.send("Hello")
|
sock.send("Hello")
|
||||||
self.assertEquals(s.sent[0], six.b("\x81\x85abcd)\x07\x0f\x08\x0e"))
|
self.assertEqual(s.sent[0], six.b("\x81\x85abcd)\x07\x0f\x08\x0e"))
|
||||||
|
|
||||||
sock.send("こんにちは")
|
sock.send("こんにちは")
|
||||||
self.assertEquals(s.sent[1], six.b("\x81\x8fabcd\x82\xe3\xf0\x87\xe3\xf1\x80\xe5\xca\x81\xe2\xc5\x82\xe3\xcc"))
|
self.assertEqual(s.sent[1], six.b("\x81\x8fabcd\x82\xe3\xf0\x87\xe3\xf1\x80\xe5\xca\x81\xe2\xc5\x82\xe3\xcc"))
|
||||||
|
|
||||||
sock.send(u"こんにちは")
|
sock.send(u"こんにちは")
|
||||||
self.assertEquals(s.sent[1], six.b("\x81\x8fabcd\x82\xe3\xf0\x87\xe3\xf1\x80\xe5\xca\x81\xe2\xc5\x82\xe3\xcc"))
|
self.assertEqual(s.sent[1], six.b("\x81\x8fabcd\x82\xe3\xf0\x87\xe3\xf1\x80\xe5\xca\x81\xe2\xc5\x82\xe3\xcc"))
|
||||||
|
|
||||||
def testRecv(self):
|
def testRecv(self):
|
||||||
# TODO: add longer frame data
|
# TODO: add longer frame data
|
||||||
@@ -219,11 +222,11 @@ class WebSocketTest(unittest.TestCase):
|
|||||||
something = six.b("\x81\x8fabcd\x82\xe3\xf0\x87\xe3\xf1\x80\xe5\xca\x81\xe2\xc5\x82\xe3\xcc")
|
something = six.b("\x81\x8fabcd\x82\xe3\xf0\x87\xe3\xf1\x80\xe5\xca\x81\xe2\xc5\x82\xe3\xcc")
|
||||||
s.add_packet(something)
|
s.add_packet(something)
|
||||||
data = sock.recv()
|
data = sock.recv()
|
||||||
self.assertEquals(data, "こんにちは")
|
self.assertEqual(data, "こんにちは")
|
||||||
|
|
||||||
s.add_packet(six.b("\x81\x85abcd)\x07\x0f\x08\x0e"))
|
s.add_packet(six.b("\x81\x85abcd)\x07\x0f\x08\x0e"))
|
||||||
data = sock.recv()
|
data = sock.recv()
|
||||||
self.assertEquals(data, "Hello")
|
self.assertEqual(data, "Hello")
|
||||||
|
|
||||||
def testInternalRecvStrict(self):
|
def testInternalRecvStrict(self):
|
||||||
sock = ws.WebSocket()
|
sock = ws.WebSocket()
|
||||||
@@ -238,7 +241,7 @@ class WebSocketTest(unittest.TestCase):
|
|||||||
with self.assertRaises(SSLError):
|
with self.assertRaises(SSLError):
|
||||||
data = sock._recv_strict(9)
|
data = sock._recv_strict(9)
|
||||||
data = sock._recv_strict(9)
|
data = sock._recv_strict(9)
|
||||||
self.assertEquals(data, six.b("foobarbaz"))
|
self.assertEqual(data, six.b("foobarbaz"))
|
||||||
with self.assertRaises(ws.WebSocketConnectionClosedException):
|
with self.assertRaises(ws.WebSocketConnectionClosedException):
|
||||||
data = sock._recv_strict(1)
|
data = sock._recv_strict(1)
|
||||||
|
|
||||||
@@ -255,7 +258,7 @@ class WebSocketTest(unittest.TestCase):
|
|||||||
with self.assertRaises(ws.WebSocketTimeoutException):
|
with self.assertRaises(ws.WebSocketTimeoutException):
|
||||||
data = sock.recv()
|
data = sock.recv()
|
||||||
data = sock.recv()
|
data = sock.recv()
|
||||||
self.assertEquals(data, "Hello, World!")
|
self.assertEqual(data, "Hello, World!")
|
||||||
with self.assertRaises(ws.WebSocketConnectionClosedException):
|
with self.assertRaises(ws.WebSocketConnectionClosedException):
|
||||||
data = sock.recv()
|
data = sock.recv()
|
||||||
|
|
||||||
@@ -318,37 +321,38 @@ class WebSocketTest(unittest.TestCase):
|
|||||||
@unittest.skipUnless(TEST_WITH_INTERNET, "Internet-requiring tests are disabled")
|
@unittest.skipUnless(TEST_WITH_INTERNET, "Internet-requiring tests are disabled")
|
||||||
def testWebSocket(self):
|
def testWebSocket(self):
|
||||||
s = ws.create_connection("ws://echo.websocket.org/")
|
s = ws.create_connection("ws://echo.websocket.org/")
|
||||||
self.assertNotEquals(s, None)
|
self.assertNotEqual(s, None)
|
||||||
s.send("Hello, World")
|
s.send("Hello, World")
|
||||||
result = s.recv()
|
result = s.recv()
|
||||||
self.assertEquals(result, "Hello, World")
|
self.assertEqual(result, "Hello, World")
|
||||||
|
|
||||||
s.send(u"こにゃにゃちは、世界")
|
s.send(u"こにゃにゃちは、世界")
|
||||||
result = s.recv()
|
result = s.recv()
|
||||||
self.assertEquals(result, "こにゃにゃちは、世界")
|
self.assertEqual(result, "こにゃにゃちは、世界")
|
||||||
s.close()
|
s.close()
|
||||||
|
|
||||||
@unittest.skipUnless(TEST_WITH_INTERNET, "Internet-requiring tests are disabled")
|
@unittest.skipUnless(TEST_WITH_INTERNET, "Internet-requiring tests are disabled")
|
||||||
def testPingPong(self):
|
def testPingPong(self):
|
||||||
s = ws.create_connection("ws://echo.websocket.org/")
|
s = ws.create_connection("ws://echo.websocket.org/")
|
||||||
self.assertNotEquals(s, None)
|
self.assertNotEqual(s, None)
|
||||||
s.ping("Hello")
|
s.ping("Hello")
|
||||||
s.pong("Hi")
|
s.pong("Hi")
|
||||||
s.close()
|
s.close()
|
||||||
|
|
||||||
@unittest.skipUnless(TEST_WITH_INTERNET, "Internet-requiring tests are disabled")
|
@unittest.skipUnless(TEST_WITH_INTERNET, "Internet-requiring tests are disabled")
|
||||||
|
@unittest.skipUnless(TEST_SECURE_WS, "wss://echo.websocket.org doesn't work well.")
|
||||||
def testSecureWebSocket(self):
|
def testSecureWebSocket(self):
|
||||||
if 1:
|
if 1:
|
||||||
import ssl
|
import ssl
|
||||||
s = ws.create_connection("wss://echo.websocket.org/")
|
s = ws.create_connection("wss://echo.websocket.org/")
|
||||||
self.assertNotEquals(s, None)
|
self.assertNotEqual(s, None)
|
||||||
self.assert_(isinstance(s.sock, ssl.SSLSocket))
|
self.assertTrue(isinstance(s.sock, ssl.SSLSocket))
|
||||||
s.send("Hello, World")
|
s.send("Hello, World")
|
||||||
result = s.recv()
|
result = s.recv()
|
||||||
self.assertEquals(result, "Hello, World")
|
self.assertEqual(result, "Hello, World")
|
||||||
s.send(u"こにゃにゃちは、世界")
|
s.send(u"こにゃにゃちは、世界")
|
||||||
result = s.recv()
|
result = s.recv()
|
||||||
self.assertEquals(result, "こにゃにゃちは、世界")
|
self.assertEqual(result, "こにゃにゃちは、世界")
|
||||||
s.close()
|
s.close()
|
||||||
#except:
|
#except:
|
||||||
# pass
|
# pass
|
||||||
@@ -357,17 +361,17 @@ class WebSocketTest(unittest.TestCase):
|
|||||||
def testWebSocketWihtCustomHeader(self):
|
def testWebSocketWihtCustomHeader(self):
|
||||||
s = ws.create_connection("ws://echo.websocket.org/",
|
s = ws.create_connection("ws://echo.websocket.org/",
|
||||||
headers={"User-Agent": "PythonWebsocketClient"})
|
headers={"User-Agent": "PythonWebsocketClient"})
|
||||||
self.assertNotEquals(s, None)
|
self.assertNotEqual(s, None)
|
||||||
s.send("Hello, World")
|
s.send("Hello, World")
|
||||||
result = s.recv()
|
result = s.recv()
|
||||||
self.assertEquals(result, "Hello, World")
|
self.assertEqual(result, "Hello, World")
|
||||||
s.close()
|
s.close()
|
||||||
|
|
||||||
@unittest.skipUnless(TEST_WITH_INTERNET, "Internet-requiring tests are disabled")
|
@unittest.skipUnless(TEST_WITH_INTERNET, "Internet-requiring tests are disabled")
|
||||||
def testAfterClose(self):
|
def testAfterClose(self):
|
||||||
from socket import error
|
from socket import error
|
||||||
s = ws.create_connection("ws://echo.websocket.org/")
|
s = ws.create_connection("ws://echo.websocket.org/")
|
||||||
self.assertNotEquals(s, None)
|
self.assertNotEqual(s, None)
|
||||||
s.close()
|
s.close()
|
||||||
self.assertRaises(error, s.send, "Hello")
|
self.assertRaises(error, s.send, "Hello")
|
||||||
self.assertRaises(error, s.recv)
|
self.assertRaises(error, s.recv)
|
||||||
@@ -377,7 +381,7 @@ class WebSocketTest(unittest.TestCase):
|
|||||||
"""
|
"""
|
||||||
key = ws._create_sec_websocket_key()
|
key = ws._create_sec_websocket_key()
|
||||||
u = uuid.UUID(bytes=base64.b64decode(key))
|
u = uuid.UUID(bytes=base64.b64decode(key))
|
||||||
self.assertEquals(4, u.version)
|
self.assertEqual(4, u.version)
|
||||||
|
|
||||||
|
|
||||||
class WebSocketAppTest(unittest.TestCase):
|
class WebSocketAppTest(unittest.TestCase):
|
||||||
@@ -425,8 +429,8 @@ class WebSocketAppTest(unittest.TestCase):
|
|||||||
self.assertFalse(isinstance(WebSocketAppTest.keep_running_close,
|
self.assertFalse(isinstance(WebSocketAppTest.keep_running_close,
|
||||||
WebSocketAppTest.NotSetYet))
|
WebSocketAppTest.NotSetYet))
|
||||||
|
|
||||||
self.assertEquals(True, WebSocketAppTest.keep_running_open)
|
self.assertEqual(True, WebSocketAppTest.keep_running_open)
|
||||||
self.assertEquals(False, WebSocketAppTest.keep_running_close)
|
self.assertEqual(False, WebSocketAppTest.keep_running_close)
|
||||||
|
|
||||||
@unittest.skipUnless(TEST_WITH_INTERNET, "Internet-requiring tests are disabled")
|
@unittest.skipUnless(TEST_WITH_INTERNET, "Internet-requiring tests are disabled")
|
||||||
def testSockMaskKey(self):
|
def testSockMaskKey(self):
|
||||||
@@ -448,7 +452,7 @@ class WebSocketAppTest(unittest.TestCase):
|
|||||||
app.run_forever()
|
app.run_forever()
|
||||||
|
|
||||||
# Note: We can't use 'is' for comparing the functions directly, need to use 'id'.
|
# Note: We can't use 'is' for comparing the functions directly, need to use 'id'.
|
||||||
self.assertEquals(WebSocketAppTest.get_mask_key_id, id(my_mask_key_func))
|
self.assertEqual(WebSocketAppTest.get_mask_key_id, id(my_mask_key_func))
|
||||||
|
|
||||||
|
|
||||||
class SockOptTest(unittest.TestCase):
|
class SockOptTest(unittest.TestCase):
|
||||||
@@ -456,9 +460,9 @@ class SockOptTest(unittest.TestCase):
|
|||||||
def testSockOpt(self):
|
def testSockOpt(self):
|
||||||
sockopt = ((socket.IPPROTO_TCP, socket.TCP_NODELAY, 1),)
|
sockopt = ((socket.IPPROTO_TCP, socket.TCP_NODELAY, 1),)
|
||||||
s = ws.WebSocket(sockopt=sockopt)
|
s = ws.WebSocket(sockopt=sockopt)
|
||||||
self.assertNotEquals(s.sock.getsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY), 0)
|
self.assertNotEqual(s.sock.getsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY), 0)
|
||||||
s = ws.create_connection("ws://echo.websocket.org", sockopt=sockopt)
|
s = ws.create_connection("ws://echo.websocket.org", sockopt=sockopt)
|
||||||
self.assertNotEquals(s.sock.getsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY), 0)
|
self.assertNotEqual(s.sock.getsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY), 0)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|||||||
@@ -41,13 +41,16 @@ except ImportError:
|
|||||||
HAVE_SSL = False
|
HAVE_SSL = False
|
||||||
|
|
||||||
from six.moves.urllib.parse import urlparse
|
from six.moves.urllib.parse import urlparse
|
||||||
|
if six.PY3:
|
||||||
|
from base64 import encodebytes as base64encode
|
||||||
|
else:
|
||||||
|
from base64 import encodestring as base64encode
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import array
|
import array
|
||||||
import struct
|
import struct
|
||||||
import uuid
|
import uuid
|
||||||
import hashlib
|
import hashlib
|
||||||
import base64
|
|
||||||
import threading
|
import threading
|
||||||
import time
|
import time
|
||||||
import logging
|
import logging
|
||||||
@@ -231,7 +234,7 @@ _MAX_CHAR_BYTE = (1<<8) -1
|
|||||||
|
|
||||||
def _create_sec_websocket_key():
|
def _create_sec_websocket_key():
|
||||||
uid = uuid.uuid4()
|
uid = uuid.uuid4()
|
||||||
return base64.encodestring(uid.bytes).decode('utf-8').strip()
|
return base64encode(uid.bytes).decode('utf-8').strip()
|
||||||
|
|
||||||
|
|
||||||
_HEADERS_TO_CHECK = {
|
_HEADERS_TO_CHECK = {
|
||||||
@@ -373,7 +376,10 @@ class ABNF(object):
|
|||||||
for i in range(len(_d)):
|
for i in range(len(_d)):
|
||||||
_d[i] ^= _m[i % 4]
|
_d[i] ^= _m[i % 4]
|
||||||
|
|
||||||
return _d.tostring()
|
if six.PY3:
|
||||||
|
return _d.tobytes()
|
||||||
|
else:
|
||||||
|
return _d.tostring()
|
||||||
|
|
||||||
|
|
||||||
class WebSocket(object):
|
class WebSocket(object):
|
||||||
@@ -557,7 +563,7 @@ class WebSocket(object):
|
|||||||
result = result.encode('utf-8')
|
result = result.encode('utf-8')
|
||||||
|
|
||||||
value = (key + "258EAFA5-E914-47DA-95CA-C5AB0DC85B11").encode('utf-8')
|
value = (key + "258EAFA5-E914-47DA-95CA-C5AB0DC85B11").encode('utf-8')
|
||||||
hashed = base64.encodestring(hashlib.sha1(value).digest()).strip().lower()
|
hashed = base64encode(hashlib.sha1(value).digest()).strip().lower()
|
||||||
return hashed == result
|
return hashed == result
|
||||||
|
|
||||||
def _read_headers(self):
|
def _read_headers(self):
|
||||||
|
|||||||
Reference in New Issue
Block a user