Beispiel #1
0
def test_decompress_broken():
    frames = [Frame(1, b'hello', fin=0), Frame(0, b' world!', fin=1)]

    def decompress(frames):
        raise ValueError('broken')

    with pytest.raises(CriticalProtocolError):
        Message.decompress_frames(frames, decompress)
Beispiel #2
0
def test_build_control_messages(opcode, message_class, attrname):
    frames = [
        Frame(opcode)
    ]

    msg = Message.build(frames)

    assert isinstance(msg, message_class)
    # check if the message passes is_{type} attribute test
    assert getattr(msg, attrname) is True
    # also, check if the message doesn't pass any other is_{type} attribute
    # test
    props = filter(
        lambda prop: prop != attrname and prop.startswith('is_'),
        dir(msg)
    )

    for prop in props:
        assert getattr(msg, prop) is False

    # let's check the repr as well
    if opcode not in (Opcode.TEXT, Opcode.CLOSE):
        assert repr(msg) == "<message %s %s>" % (
            Opcode.to_str(opcode), repr(b'')
        )
def test_compression():
    data = [b'Hello ', b'World!', b'foo', b'bar', b'baz']
    deflate = Deflate(15, 8, True, True)
    for raw in data:
        compressed_data = deflate.compress(raw)
        frames = [Frame(1, compressed_data, fin=1)]
        assert deflate.decompress(frames) == raw
def test_prohibit_masked_frames():
    parser = ClientFrameParser()
    frame = Frame(1, b'hello')
    with pytest.raises(ProtocolError):
        parser.on_frame(frame)
Beispiel #5
0
def test_repr_for_text():
    msg = Message.build([Frame(Opcode.TEXT)])
    assert repr(msg) == "<message TEXT %s>" % repr(u'')
Beispiel #6
0
def test_build_regular_message():
    msg = Message.build([Frame(Opcode.CONTINUATION)])
    assert isinstance(msg, Message)
def test_masking_key():
    frame_bytes = Frame.build(Opcode.TEXT,
                              b'Hello, World',
                              masking_key=b'\xaa\xf7\x7f\x00')
    expected = b'\x81\x8c\xaa\xf7\x7f\x00\xe2\x92\x13l\xc5\xdb_W\xc5\x85\x13d'
    assert frame_bytes == expected
def test_validate_frame(init_params, expected_error):
    with pytest.raises(ProtocolError) as e:
        Frame(**init_params)

    assert str(e.value) == expected_error
def test_calling_build_close_payload_requires_status():
    assert Frame.build_close_payload(None) == b''
Beispiel #10
0
 def inner(opcode=Opcode.TEXT, payload=b'', fin=1):
     return Frame(opcode, payload, fin=fin)