예제 #1
0
def test_deliver_order():
    server = Server(host=None)
    setup_server(server)
    server.users[2].logout()

    # first send from u2 to u3
    conn = server.connections[1]
    server._process_send(
        conn,
        [server.users[1].username, server.users[2].username, 'test message!'])
    server._process_send(conn, [
        server.users[1].username, server.users[2].username,
        'another test message'
    ])

    # then login as u3 and get all the messages
    conn = server.connections[2]
    server.users[2].login(conn)

    assert len(server.users[2].undelivered_messages) == 2

    server._process_deliver(conn, None)

    wp = WireProtocol()
    wp.parse_incoming_bytes(conn.send_buffer)
    assert wp.command == CMD.SEND
    assert wp.data_buffer == b'u2|||u3|||test message!'

    remaining_bytes = wp.tmp_buffer
    wp.reset_buffers()
    wp.parse_incoming_bytes(remaining_bytes)
    assert wp.command == CMD.SEND
    assert wp.data_buffer == b'u2|||u3|||another test message'
예제 #2
0
def test_send_immediately():
    server = Server(host=None)
    setup_server(server)

    conn = server.connections[1]
    server._process_send(
        conn,
        [server.users[1].username, server.users[2].username, 'test message'])
    assert conn.send_buffer[-22:] == b'u2|||u3|||test message'
    assert server.users[2].connection.send_buffer[
        -22:] == b'u2|||u3|||test message'
예제 #3
0
def test_send_notexists():
    server = Server(host=None)
    setup_server(server)

    conn = server.connections[1]
    server._process_send(
        conn, [server.users[1].username, 'asdfasdfadf', 'test message'])

    wp = WireProtocol()
    wp.parse_incoming_bytes(conn.send_buffer)
    assert wp.command == CMD.RESPONSE  # indicates error
예제 #4
0
def test_send_notlogged():
    server = Server(host=None)
    setup_server(server)

    conn = Connection('newconn', None)
    server._process_send(
        conn,
        [server.users[1].username, server.users[2].username, 'test message'])

    wp = WireProtocol()
    wp.parse_incoming_bytes(conn.send_buffer)
    assert wp.command == CMD.RESPONSE  # indicates error
예제 #5
0
def test_send_later():
    server = Server(host=None)
    setup_server(server)
    server.users[2].logout()

    conn = server.connections[1]
    server._process_send(
        conn,
        [server.users[1].username, server.users[2].username, 'test message'])
    assert conn.send_buffer[
        -22:] == b'u2|||u3|||test message'  # should still send to the sender
    assert len(server.users[2].undelivered_messages) == 1
    assert server.users[2].undelivered_messages[0] == [
        server.users[1].username, server.users[2].username, 'test message'
    ]