aboutsummaryrefslogtreecommitdiffstats
path: root/test/test_websockets.py
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@nullcube.com>2015-04-24 15:09:21 +1200
committerAldo Cortesi <aldo@nullcube.com>2015-04-24 15:09:21 +1200
commitf22bc0b4c74776bcc312fed1f4ceede83f869a6e (patch)
tree7d8b947d9940bb0faa68fe21d924642f6c3d1667 /test/test_websockets.py
parent3519871f340cb0466fc6935d6e8e3b7822d36c52 (diff)
downloadmitmproxy-f22bc0b4c74776bcc312fed1f4ceede83f869a6e.tar.gz
mitmproxy-f22bc0b4c74776bcc312fed1f4ceede83f869a6e.tar.bz2
mitmproxy-f22bc0b4c74776bcc312fed1f4ceede83f869a6e.zip
websocket: interface refactoring
- Separate out FrameHeader. We need to deal with this separately in many circumstances. - Simpler equality scheme. - Bits are now specified by truthiness - we don't care about the integer value. This means lots of validation is not needed any more.
Diffstat (limited to 'test/test_websockets.py')
-rw-r--r--test/test_websockets.py49
1 files changed, 42 insertions, 7 deletions
diff --git a/test/test_websockets.py b/test/test_websockets.py
index bf8ec5cd..06876e0b 100644
--- a/test/test_websockets.py
+++ b/test/test_websockets.py
@@ -1,10 +1,9 @@
-from netlib import tcp, test, websockets, http
+import cStringIO
import os
-from nose.tools import raises
+from nose.tools import raises
-def test_frame_header_bytes():
- assert websockets.frame_header_bytes()
+from netlib import tcp, test, websockets, http
class WebSocketsEchoHandler(tcp.BaseHandler):
@@ -119,12 +118,12 @@ class TestWebSockets(test.ServerTestBase):
assert frame.is_valid()
frame = f()
- frame.fin = 2
+ frame.header.fin = 2
assert not frame.is_valid()
frame = f()
- frame.mask_bit = 1
- frame.masking_key = "foobbarboo"
+ frame.header.mask_bit = 1
+ frame.header.masking_key = "foobbarboo"
assert not frame.is_valid()
def test_serialization_bijection(self):
@@ -181,3 +180,39 @@ class TestBadHandshake(test.ServerTestBase):
client = WebSocketsClient(("127.0.0.1", self.port))
client.connect()
client.send_message("hello")
+
+
+class TestFrameHeader:
+ def test_roundtrip(self):
+ def round(*args, **kwargs):
+ f = websockets.FrameHeader(*args, **kwargs)
+ bytes = f.to_bytes()
+ f2 = websockets.FrameHeader.from_file(cStringIO.StringIO(bytes))
+ assert f == f2
+ round()
+ round(fin=1)
+ round(rsv1=1)
+ round(rsv2=1)
+ round(rsv3=1)
+ round(payload_length=1)
+ round(payload_length=100)
+ round(payload_length=1000)
+ round(payload_length=10000)
+ round(opcode=websockets.OPCODE.PING)
+ round(masking_key="test")
+
+ def test_funky(self):
+ f = websockets.FrameHeader(masking_key="test", mask=False)
+ bytes = f.to_bytes()
+ f2 = websockets.FrameHeader.from_file(cStringIO.StringIO(bytes))
+ assert not f2.mask
+
+
+class TestFrame:
+ def test_roundtrip(self):
+ def round(*args, **kwargs):
+ f = websockets.Frame(*args, **kwargs)
+ bytes = f.to_bytes()
+ f2 = websockets.Frame.from_file(cStringIO.StringIO(bytes))
+ assert f == f2
+ round("test")