예제 #1
0
def test_invalid_token(channel_with_user, get_current_time):
    sender = channel_with_user
    current_timestamp = get_current_time
    later_timestamp = current_timestamp + 3
    with pytest.raises(AccessError):
        message_sendlater(token_hash(-1), sender['c_id'], "Test Message",
                          later_timestamp)
예제 #2
0
def test_message_1000(channel_with_user, get_current_time):
    sender = channel_with_user
    current_timestamp = get_current_time
    later_timestamp = current_timestamp + 3
    valid_message = "*" * 1000

    # Queue up the message to be sent later
    message_sendlater(sender['token'], sender['c_id'], valid_message,
                      later_timestamp)

    # Check that no messages have been sent yet
    assert not channel_messages(sender['token'], sender['c_id'], 0)['messages']

    # Wait 5 seconds to see if messages have been sent (including buffer time)
    sleep(5)
    messages = channel_messages(sender['token'], sender['c_id'], 0)['messages']
    assert messages == [
        {
            'message_id':
            0,
            'u_id':
            0,
            'message':
            valid_message,
            'time_created':
            later_timestamp,
            'reacts': [{
                'react_id': 0,
                'u_ids': [],
                'is_this_user_reacted': False,
            }],
            'is_pinned':
            False,
        },
    ]
예제 #3
0
def test_invalid_time(channel_with_user, get_current_time):
    sender = channel_with_user
    current_timestamp = get_current_time
    # Set the time as a time in the past
    past_timestamp = current_timestamp - 3
    with pytest.raises(InputError):
        message_sendlater(sender['token'], sender['c_id'], "Test Message",
                          past_timestamp)
예제 #4
0
def test_invalid_message_spaces(channel_with_user, get_current_time):
    sender = channel_with_user
    current_timestamp = get_current_time
    later_timestamp = current_timestamp + 3
    empty_message = "  "
    with pytest.raises(InputError):
        message_sendlater(sender['token'], sender['c_id'], empty_message,
                          later_timestamp)
예제 #5
0
def test_invalid_channel_id(channel_with_user, get_current_time):
    sender = channel_with_user
    current_timestamp = get_current_time
    later_timestamp = current_timestamp + 3
    invalid_c_id = -1
    with pytest.raises(InputError):
        message_sendlater(sender['token'], invalid_c_id, "Test Message",
                          later_timestamp)
예제 #6
0
def test_message_sendtwolater_success(channel_with_user, get_current_time):
    sender = channel_with_user
    current_timestamp = get_current_time
    later_timestamp = current_timestamp + 3

    # Ensure there's no messages in the channel to begin with
    assert not channel_messages(sender['token'], sender['c_id'], 0)['messages']

    # Queue up multiple messages which are the same
    message_sendlater(sender['token'], sender['c_id'], "Test Message",
                      later_timestamp)
    message_sendlater(sender['token'], sender['c_id'], "Test Message",
                      later_timestamp)

    # Check that no messages have been sent yet
    assert not channel_messages(sender['token'], sender['c_id'], 0)['messages']

    # Wait 4 seconds (buffer time) before checking if both messages were sent
    # with distinct message_id
    sleep(4)
    messages = channel_messages(sender['token'], sender['c_id'], 0)['messages']
    print(messages)
    assert messages == [
        {
            'message_id':
            0,
            'u_id':
            0,
            'message':
            'Test Message',
            'time_created':
            later_timestamp,
            'reacts': [{
                'react_id': 0,
                'u_ids': [],
                'is_this_user_reacted': False,
            }],
            'is_pinned':
            False,
        },
        {
            'message_id':
            1,
            'u_id':
            0,
            'message':
            'Test Message',
            'time_created':
            later_timestamp,
            'reacts': [{
                'react_id': 0,
                'u_ids': [],
                'is_this_user_reacted': False,
            }],
            'is_pinned':
            False,
        },
    ]
예제 #7
0
def test_invalid_sender(channel_with_user, get_current_time):
    owner = channel_with_user
    current_timestamp = get_current_time
    later_timestamp = current_timestamp + 3
    # Seperate user who is not in the channel
    auth_register("*****@*****.**", "password", "Firstname",
                  "Lastname")
    invalid_sender = auth_login("*****@*****.**", "password")

    with pytest.raises(AccessError):
        message_sendlater(invalid_sender['token'], owner['c_id'],
                          "Test Message", later_timestamp)
예제 #8
0
def message_sendlater_flask():
    payload = request.get_json()

    token = payload['token']
    channel_id = payload['channel_id']
    message = payload['message']
    time_sent = payload['time_sent']

    return dumps(m.message_sendlater(token, channel_id, message, time_sent))
예제 #9
0
def test_message_sendlater_success(channel_with_user, get_current_time):
    sender = channel_with_user
    current_timestamp = get_current_time
    later_timestamp = current_timestamp + 3
    even_later_timestamp = current_timestamp + 5

    # Ensure there's no messages in the channel to begin with
    assert not channel_messages(sender['token'], sender['c_id'], 0)['messages']

    # Queue up multiple message
    message_sendlater(sender['token'], sender['c_id'], "Test Message 1",
                      later_timestamp)
    message_sendlater(sender['token'], sender['c_id'], "Test Message 2",
                      even_later_timestamp)

    # Check that no messages have been sent yet
    assert not channel_messages(sender['token'], sender['c_id'], 0)['messages']

    # Wait 3 seconds before checking if first message has been sent
    sleep(3)
    messages = channel_messages(sender['token'], sender['c_id'], 0)['messages']

    assert messages == [
        {
            'message_id':
            0,
            'u_id':
            0,
            'message':
            'Test Message 1',
            'time_created':
            later_timestamp,
            'reacts': [{
                'react_id': 0,
                'u_ids': [],
                'is_this_user_reacted': False,
            }],
            'is_pinned':
            False,
        },
    ]
    # Wait another 2 seconds to see if second message has been sent
    sleep(2)
    messages = channel_messages(sender['token'], sender['c_id'], 0)['messages']
    assert messages == [
        {
            'message_id':
            0,
            'u_id':
            0,
            'message':
            'Test Message 1',
            'time_created':
            later_timestamp,
            'reacts': [{
                'react_id': 0,
                'u_ids': [],
                'is_this_user_reacted': False,
            }],
            'is_pinned':
            False,
        },
        {
            'message_id':
            1,
            'u_id':
            0,
            'message':
            'Test Message 2',
            'time_created':
            even_later_timestamp,
            'reacts': [{
                'react_id': 0,
                'u_ids': [],
                'is_this_user_reacted': False,
            }],
            'is_pinned':
            False,
        },
    ]
예제 #10
0
def test_multiple_channels(channel_with_user, get_current_time):
    sender = channel_with_user
    current_timestamp = get_current_time
    later_timestamp = current_timestamp + 3

    # Ensure there's no messages in the channel to begin with
    assert not channel_messages(sender['token'], sender['c_id'], 0)['messages']

    # Send the first message to the first channel
    message_sendlater(sender['token'], sender['c_id'], "Test Message 1",
                      later_timestamp)

    # Check that no messages have been sent yet in first channel
    assert not channel_messages(sender['token'], sender['c_id'], 0)['messages']

    # Create second channel
    public = True
    channel_2 = channels_create(sender['token'], "Channel 2",
                                public)['channel_id']

    # Send the second message in the second channel
    message_sendlater(sender['token'], channel_2, "Test Message 2",
                      later_timestamp)

    # Check that no messages have been sent yet in the second channel
    assert not channel_messages(sender['token'], channel_2, 0)['messages']

    # Wait 5 seconds to see if messages have been sent (additional buffer time)
    sleep(5)
    messages = channel_messages(sender['token'], sender['c_id'], 0)['messages']
    messages2 = channel_messages(sender['token'], channel_2, 0)['messages']
    assert messages == [
        {
            'message_id':
            0,
            'u_id':
            0,
            'message':
            'Test Message 1',
            'time_created':
            later_timestamp,
            'reacts': [{
                'react_id': 0,
                'u_ids': [],
                'is_this_user_reacted': False,
            }],
            'is_pinned':
            False,
        },
    ]

    assert messages2 == [
        {
            'message_id':
            1,
            'u_id':
            0,
            'message':
            'Test Message 2',
            'time_created':
            later_timestamp,
            'reacts': [{
                'react_id': 0,
                'u_ids': [],
                'is_this_user_reacted': False,
            }],
            'is_pinned':
            False,
        },
    ]