diff options
author | Aldo Cortesi <aldo@nullcube.com> | 2015-04-24 15:09:21 +1200 |
---|---|---|
committer | Aldo Cortesi <aldo@nullcube.com> | 2015-04-24 15:09:21 +1200 |
commit | f22bc0b4c74776bcc312fed1f4ceede83f869a6e (patch) | |
tree | 7d8b947d9940bb0faa68fe21d924642f6c3d1667 /test/test_websockets.py | |
parent | 3519871f340cb0466fc6935d6e8e3b7822d36c52 (diff) | |
download | mitmproxy-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.py | 49 |
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") |