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)
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, }, ]
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)
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)
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)
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, }, ]
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)
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))
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, }, ]
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, }, ]