proxy.py/tests/http/test_websocket_frame.py

41 lines
1.3 KiB
Python

# -*- coding: utf-8 -*-
"""
proxy.py
~~~~~~~~
⚡⚡⚡ Fast, Lightweight, Programmable Proxy Server in a single Python file.
:copyright: (c) 2013-present by Abhinav Singh and contributors.
:license: BSD, see LICENSE for more details.
"""
import unittest
from proxy.http.websocket import WebsocketFrame, websocketOpcodes
class TestWebsocketFrame(unittest.TestCase):
def test_build_with_mask(self) -> None:
raw = b'\x81\x85\xc6\ti\x8d\xael\x05\xe1\xa9'
frame = WebsocketFrame()
frame.fin = True
frame.opcode = websocketOpcodes.TEXT_FRAME
frame.masked = True
frame.mask = b'\xc6\ti\x8d'
frame.data = b'hello'
self.assertEqual(frame.build(), raw)
def test_parse_with_mask(self) -> None:
raw = b'\x81\x85\xc6\ti\x8d\xael\x05\xe1\xa9'
frame = WebsocketFrame()
frame.parse(raw)
self.assertEqual(frame.fin, True)
self.assertEqual(frame.rsv1, False)
self.assertEqual(frame.rsv2, False)
self.assertEqual(frame.rsv3, False)
self.assertEqual(frame.opcode, 0x1)
self.assertEqual(frame.masked, True)
assert frame.mask is not None
self.assertEqual(frame.mask, b'\xc6\ti\x8d')
self.assertEqual(frame.payload_length, 5)
self.assertEqual(frame.data, b'hello')