def test_edit_diffuser(): ''' Test edit as a different user ''' reset_data() # SETUP registered_user = auth_register('*****@*****.**', '123456', 'John', 'Smith') token = registered_user['token'] c_id = channel_create(token, "Channel1", 'true') # SETUP END # Add two messages message_send(token, c_id, "Hello world!") message_send(token, c_id, "another message") message_list = get_messages(c_id) assert find_message(message_list, "Hello world!") == "Hello world!" assert find_message(message_list, "another message") == "another message" msg1_id = get_message_id(message_list, "Hello world!") # Logout auth_logout(token) # SETUP registered_user = auth_register('*****@*****.**', '123456', 'John', 'Smith') token = registered_user['token'] # SETUP END with pytest.raises(AccessError, match=r"*"): message_edit(token, msg1_id, "update")
def test_message_edit(): ''' Test edit as the poster of the message on multiple messages ''' reset_data() # SETUP registered_user = auth_register('*****@*****.**', '123456', 'John', 'Smith') token = registered_user['token'] c_id = channel_create(token, "Channel1", 'true') # SETUP END # Add two messages message_send(token, c_id, "Hello world!") message_send(token, c_id, "another message") message_list = get_messages(c_id) assert find_message(message_list, "Hello world!") == "Hello world!" assert find_message(message_list, "another message") == "another message" msg1_id = get_message_id(message_list, "Hello world!") msg2_id = get_message_id(message_list, "another message") # SETUP END message_edit(token, msg1_id, "Updated message") message_list = get_messages(c_id) assert find_message(message_list, "Updated message") == "Updated message" message_edit(token, msg2_id, "Another update") message_list = get_messages(c_id) assert find_message(message_list, "Another update") == "Another update"
def test_remove_owner(): ''' Test remove as an owner of the channel ''' reset_data() # SETUP registered_user = auth_register("*****@*****.**", "123456", "John", "Smith") first_token = registered_user['token'] c_id = channel_create(first_token, "Channel1", 'true') # Add two messages message_send(first_token, c_id, "Hello world!") message_list = get_messages(c_id) # Login as a new user registered_user = auth_register("*****@*****.**", "1password", "Bob", "Smith") token = registered_user['token'] u_id = registered_user['u_id'] # Set new user as a channel owner channel_join(token, c_id) channel_addowner(first_token, c_id, u_id) # SETUP END msg1_id = get_message_id(message_list, "Hello world!") message_remove(token, msg1_id) message_list = get_messages(c_id) assert find_message(message_list, "Hello world!") is None
def test_remove_simple(): ''' Test remove with multiple messages ''' reset_data() # SETUP registered_user = auth_register("*****@*****.**", "123456", "John", "Smith") token = registered_user['token'] c_id = channel_create(token, "Channel1", 'true') # Add two messages message_send(token, c_id, "Hello world!") message_send(token, c_id, "another message") message_list = get_messages(c_id) assert find_message(message_list, "Hello world!") == "Hello world!" assert find_message(message_list, "another message") == "another message" msg1_id = get_message_id(message_list, "Hello world!") msg2_id = get_message_id(message_list, "another message") # SETUP END # Delete both messages one by one message_remove(token, msg1_id) message_list = get_messages(c_id) assert find_message(message_list, "Hello world!") is None message_remove(token, msg2_id) message_list = get_messages(c_id) assert find_message(message_list, "another message") is None
def test_remove_admin(): ''' Test remove as an admin of the slack ''' reset_data() # SETUP registered_user = auth_register("*****@*****.**", "123456", "John", "Smith") first_token = registered_user['token'] c_id = channel_create(first_token, "Channel1", 'true') # Add two messages message_send(first_token, c_id, "Hello world!") message_send(first_token, c_id, "another message") message_list = get_messages(c_id) assert find_message(message_list, "Hello world!") == "Hello world!" assert find_message(message_list, "another message") == "another message" # Login as a new user registered_user = auth_register("*****@*****.**", "1password", "Bob", "Smith") token = registered_user['token'] u_id = registered_user['u_id'] # Set new user as an admin of slack admin_userpermission_change(first_token, u_id, 2) # SETUP END message_list = get_messages(c_id) msg1_id = get_message_id(message_list, "Hello world!") message_remove(token, msg1_id) assert find_message(message_list, "Hello world!") is None
def test_remove_diffuser(): ''' Test remove as a different user in the channel ''' reset_data() # SETUP registered_user = auth_register("*****@*****.**", "123456", "John", "Smith") token = registered_user['token'] c_id = channel_create(token, "Channel1", 'true') # Add two messages message_send(token, c_id, "Hello world!") message_send(token, c_id, "another message") message_list = get_messages(c_id) assert find_message(message_list, "Hello world!") == "Hello world!" assert find_message(message_list, "another message") == "another message" msg1_id = get_message_id(message_list, "Hello world!") # Logout auth_logout(token) # Login as a new user registered_user = auth_register("*****@*****.**", "1password", "Bob", "Smith") token = registered_user['token'] # SETUP END with pytest.raises(AccessError, match=r"*"): message_remove(token, msg1_id)
def test_greaterThanFiftyMessages(): # setup begins reset_data() registerNewAccount = auth_register("*****@*****.**", "validpassword", "Night", "s") u_id = registerNewAccount['u_id'] token = registerNewAccount['token'] newChannel = channel_create(token, "New Channel", True) channel_id = newChannel message_send51(token,channel_id,"Hello") # I did not want to write this out 51 times, # and was unsure how to shorten this # set up ends # unable to implement x50 of message send and test during the current iteration assert channel_messages(token, 123456, 0) == [{"messages": ["Hello"], "start" : 0, "end" : 0}] message_send(token,channel_id,"Hello") assert channel_messages(token, 123456, 0) == [{"messages": ["Hello","Hello"], "start" : 0, "end" : -1}]
def test_edit_notoken(): ''' Test edit with an invalid or no token ''' reset_data() # SETUP registered_user = auth_register('*****@*****.**', '123456', 'John', 'Smith') token = registered_user['token'] c_id = channel_create(token, "Channel1", 'true') # SETUP END # Add two messages message_send(token, c_id, "Hello world!") message_send(token, c_id, "another message") message_list = get_messages(c_id) assert find_message(message_list, "Hello world!") == "Hello world!" assert find_message(message_list, "another message") == "another message" msg1_id = get_message_id(message_list, "Hello world!") msg2_id = get_message_id(message_list, "another message") # SETUP END with pytest.raises(AccessError, match=r"*"): message_edit("123", msg1_id, "update") message_edit('', msg2_id, "there is no message")
def test_nochannel(): ''' Test sending a message to an invalid/non existent channel ''' reset_data() # SETUP registered_user = auth_register('*****@*****.**', '123456', 'John', 'Smith') token = registered_user['token'] # SETUP END with pytest.raises(ValueError, match=r"*No message*"): message_send(token, 5, 'Hello') message_send(token, None, 'Hello')
def test_lessThanFiftyMessages(): # setup begins reset_data() registerNewAccount = auth_register("*****@*****.**", "validpassword", "Night", "s") u_id = registerNewAccount['u_id'] token = registerNewAccount['token'] newChannel = channel_create(token, "New Channel", True) channel_id = newChannel message_send(token,channel_id,"Hello") # set up ends assert channel_messages(token, 123456, 0) == [{"messages": "Hello", "start" : 0, "end" : -1}]
def test_no_message(): ''' Test sending a message with no input ''' reset_data() # SETUP registered_user = auth_register('*****@*****.**', '123456', 'John', 'Smith') token = registered_user['token'] c_id = channel_create(token, 'Channel1', 'true') # SETUP END with pytest.raises(ValueError, match=r"*"): message_send(token, c_id, None)
def test_long(): ''' Test sending a message over maxmium character limit (1000) ''' reset_data() # SETUP registered_user = auth_register('*****@*****.**', '123456', 'John', 'Smith') token = registered_user['token'] c_id = channel_create(token, 'Channel1', 'true') # SETUP END with pytest.raises(ValueError, match=r"*Over 1000 characters*"): message_send(token, c_id, 'long message' * 1000) message_send(token, c_id, 'very' * 1001)
def test_maximum(): ''' Test sending a message at the maxmium character limit (1000) ''' reset_data() # SETUP registered_user = auth_register('*****@*****.**', '123456', 'John', 'Smith') token = registered_user['token'] c_id = channel_create(token, 'Channel1', 'true') # SETUP END message_send(token, c_id, 'a' * 1000) message_list = get_messages(c_id) assert 'a' in message_list[0]['message']
def test_message_unreact(): ''' Test working message_unreact and its errors ''' reset_data() # SETUP START token = auth_register('*****@*****.**', 'pass123', 'john', 'apple')['token'] second_token = auth_register('*****@*****.**', 'pass147', 'vicks', 'uwu')['token'] channel_id_public = channel_create(token, 'newChannel', 'true') msg_id = message_send(token, channel_id_public, "firstMessage") react_id = 1 message_react(token, msg_id, react_id) # SETUP END # Invalid token with pytest.raises(AccessError): message_unreact('invalidToken', msg_id, react_id) # msg_id is invalid with pytest.raises(ValueError): message_unreact(token, 666, react_id) # User is not in the channel with pytest.raises(AccessError): message_unreact(second_token, msg_id, react_id) # React id is invalid with pytest.raises(ValueError): message_unreact(token, msg_id, 200) # Working unreact message_unreact(token, msg_id, react_id)
def test_channel_messages(): reset_data() # SETUP START token = auth_register('*****@*****.**', 'pass123', 'john', 'apple')['token'] channel_id_public = channel_create(token, 'newChannel', True) message_send(token, channel_id_public, "firstMessage") # SETUP END # Invalid token with pytest.raises(AccessError, match = r"*"): channel_messages(123, channel_id_public, 0) # Invalid channel id with pytest.raises(ValueError, match = r"*"): channel_messages(token, 123, 0) # Working channel messages (less than 50 messages) assert channel_messages(token, channel_id_public, 0) == [{"messages": "firstMessage", "start" : 0, "end" : -1}]
def test_edit_longmessage(): ''' Test edit when the edit is over the character limit ''' reset_data() # SETUP registered_user = auth_register('*****@*****.**', '123456', 'John', 'Smith') token = registered_user['token'] c_id = channel_create(token, "Channel1", 'true') # SETUP END # Add two messages message_send(token, c_id, "Hello world!") message_list = get_messages(c_id) msg1_id = get_message_id(message_list, "Hello world!") long_message = "a" * 1001 with pytest.raises(ValueError): message_edit(token, msg1_id, long_message)
def test_message_edit_empty(): ''' Test edit with an empty input, should delete the message ''' reset_data() # SETUP registered_user = auth_register('*****@*****.**', '123456', 'John', 'Smith') token = registered_user['token'] c_id = channel_create(token, "Channel1", 'true') # SETUP END # Add two messages message_send(token, c_id, "Hello world!") message_list = get_messages(c_id) assert find_message(message_list, "Hello world!") == "Hello world!" msg1_id = get_message_id(message_list, "Hello world!") message_edit(token, msg1_id, "") message_list = get_messages(c_id) assert find_message(message_list, "Updated message") is None
def test_simple(): ''' Test sending multiple messages in different channels ''' reset_data() # SETUP registered_user = auth_register('*****@*****.**', '123456', 'John', 'Smith') token = registered_user['token'] c_id = channel_create(token, 'Channel1', 'true') # SETUP END # Send message message_send(token, c_id, 'Hello world!') message_list = get_messages(c_id) assert find_message(message_list, 'Hello world!') == 'Hello world!' # Send message to a channel that already has a message message_send(token, c_id, 'another message') message_list = get_messages(c_id) assert find_message(message_list, 'Hello world!') == 'Hello world!' assert find_message(message_list, 'another message') == 'another message' # Send message to another channel c2_id = channel_create(token, 'Channel2', 'true') # Send message message_send(token, c2_id, 'Hello world!') message_list = get_messages(c2_id) assert find_message(message_list, 'Hello world!') == 'Hello world!'
def test_remove_no_id(): ''' Test remove when message_id doesn't exist ''' reset_data() # SETUP registered_user = auth_register("*****@*****.**", "123456", "John", "Smith") token = registered_user['token'] c_id = channel_create(token, "Channel1", 'true') # Add two messages message_send(token, c_id, "Hello world!") message_send(token, c_id, "another message") message_list = get_messages(c_id) assert find_message(message_list, "Hello world!") == "Hello world!" assert find_message(message_list, "another message") == "another message" # SETUP END with pytest.raises(ValueError, match=r"*"): message_remove(token, "123asfawf12") message_remove(token, "")
def test_edit_same(): ''' Test edit when the editted message is the same as the original ''' reset_data() # SETUP registered_user = auth_register('*****@*****.**', '123456', 'John', 'Smith') token = registered_user['token'] c_id = channel_create(token, "Channel1", 'true') # SETUP END # Add two messages message_send(token, c_id, "Hello world") message_list = get_messages(c_id) assert find_message(message_list, "Hello world") == "Hello world" msg1_id = get_message_id(message_list, "Hello world") # SETUP END with pytest.raises(ValueError, match=r"*"): message_edit(token, msg1_id, "Hello world")
def test_edit_owner(): ''' Test edit as the owner of the channel ''' reset_data() # SETUP registered_user = auth_register('*****@*****.**', '123456', 'John', 'Smith') first_token = registered_user['token'] c_id = channel_create(first_token, "Channel1", 'true') # Add two messages message_send(first_token, c_id, "Hello world!") message_send(first_token, c_id, "another message") message_list = get_messages(c_id) assert find_message(message_list, "Hello world!") == "Hello world!" assert find_message(message_list, "another message") == "another message" # Login as a new user registered_user = auth_register("*****@*****.**", "1password", "Bob", "Smith") token = registered_user['token'] u_id = registered_user['u_id'] # Set new user as a channel owner channel_join(token, c_id) channel_addowner(first_token, c_id, u_id) msg1_id = get_message_id(message_list, "Hello world!") msg2_id = get_message_id(message_list, "another message") # SETUP END message_edit(token, msg1_id, "Updated message") message_list = get_messages(c_id) assert find_message(message_list, "Updated message") == "Updated message" message_edit(token, msg2_id, "Another update") message_list = get_messages(c_id) assert find_message(message_list, "Another update") == "Another update"
def test_edit_cap(): ''' Test edit at the maximum character limit ''' reset_data() # SETUP registered_user = auth_register('*****@*****.**', '123456', 'John', 'Smith') token = registered_user['token'] c_id = channel_create(token, "Channel1", 'true') # SETUP END # Add two messages message_send(token, c_id, "Hello world!") message_list = get_messages(c_id) assert find_message(message_list, "Hello world!") == "Hello world!" msg1_id = get_message_id(message_list, "Hello world!") # SETUP END message_edit(token, msg1_id, "a" * 999) message_list = get_messages(c_id) assert 'a' in message_list[0]['message']
def test_unreact_already(): ''' Test message_unreact when the message already has no react ''' reset_data() # SETUP registered_user = auth_register('*****@*****.**', '123456', 'John', 'Smith') token = registered_user['token'] c_id = channel_create(token, "Channel1", 'true') # SETUP END # Add two messages message_send(token, c_id, "Hello world!") message_list = get_messages(c_id) assert find_message(message_list, "Hello world!") == "Hello world!" msg1_id = get_message_id(message_list, "Hello world!") # SETUP END with pytest.raises(ValueError): message_unreact(token, msg1_id, 1)
def test_edit_no_id(): ''' Test edit when the message ID is invalid or doesn't exist ''' reset_data() # SETUP registered_user = auth_register('*****@*****.**', '123456', 'John', 'Smith') token = registered_user['token'] c_id = channel_create(token, "Channel1", 'true') # SETUP END # Add two messages message_send(token, c_id, "Hello world!") message_send(token, c_id, "another message") message_list = get_messages(c_id) assert find_message(message_list, "Hello world!") == "Hello world!" assert find_message(message_list, "another message") == "another message" # SETUP END with pytest.raises(ValueError, match=r"*"): message_edit(token, "123asfawf12", "update") message_edit(token, "", "there is no message")
def test_search_simple(): ''' Test search given a query string ''' reset_data() # SETUP registered_user = auth_register('*****@*****.**', '123456', 'John', 'Smith') token = registered_user['token'] c_id = channel_create(token, 'Channel1', 'true') # SETUP END message_send(token, c_id, 'Hello') message_send(token, c_id, 'Dont find this') return_dic = search(token, "Hello") messages = return_dic['messages'] for message in messages: assert "Hello" in message['message']
def test_channel_messages(): ''' Testing cases of channel_messages ''' reset_data() # START SETUP token = auth_register('*****@*****.**', 'pass123', 'john', 'apple')['token'] second_token = auth_register('*****@*****.**', 'pass147', 'vicks', 'uwu')['token'] third_token = auth_register('*****@*****.**', 'pass134124', 'lol', 'lmao')['token'] channel_id_public = channel_create(token, 'newChannel', 'true') channel_id_private = channel_create(token, 'privateChannel', 'false') # END SETUP # Calling Channel messages when there are no messages with pytest.raises(ValueError): channel_messages(token, channel_id_public, 0) # Functioning channel messages base case message_send(token, channel_id_public, "Hello") channel_messages(token, channel_id_public, 0) # Calling Channel messages when current user is not in the target channel # and target channel is private message_send(token, channel_id_private, "Hi") with pytest.raises(AccessError): channel_messages(second_token, channel_id_private, 0) # Sending 123 messages and reacting message_react(token, 0, 1) channel_join(second_token, channel_id_public) message_react(second_token, 0, 1) channel_join(third_token, channel_id_public) message_send(third_token, channel_id_public, "Hey") counter = 2 while counter < 124: message_send(token, channel_id_public, "Hello") counter = counter + 1 # Testing case where end = -1 channel_messages(token, channel_id_public, 0) channel_messages(token, channel_id_public, 50) channel_messages(token, channel_id_public, 100)
def send_message(): token = request.form.get('token') channel_id = request.form.get('channel_id') message = request.form.get('message') try: output = message_send(type_cast(token), int(channel_id), message) except ValueError as e: return str(e) except AccessError as e: return dumps({ 'code': 400, 'name': 'AccessError', 'message': str(e) }), 400 save() return dumps({'message_id': output})
def test_message_react_another(): ''' Test message_react as another member ''' reset_data() # SETUP START token = auth_register('*****@*****.**', 'pass123', 'john', 'apple')['token'] second_token = auth_register('*****@*****.**', 'pass147', 'vicks', 'uwu')['token'] channel_id_public = channel_create(token, 'newChannel', 'true') msg_id = message_send(token, channel_id_public, "firstMessage") # SETUP END react_id = 1 # Working react message_react(token, msg_id, react_id) # React as another user channel_join(second_token, 0) message_react(second_token, msg_id, react_id)
def test_message_unpin(): ''' Test working message_unpin and all its errors ''' reset_data() # SETUP START token = auth_register('*****@*****.**', 'pass123', 'john', 'apple')['token'] second_token = auth_register('*****@*****.**', 'pass147', 'vicks', 'uwu')['token'] channel_id_public = channel_create(token, 'newChannel', 'true') msg_id = message_send(token, channel_id_public, "firstMessage") # SETUP END # Invalid token with pytest.raises(AccessError): message_unpin('invalidToken', msg_id) # msg_id is invalid with pytest.raises(ValueError): message_unpin(token, 666) # User is not in the channel with pytest.raises(AccessError): message_unpin(second_token, msg_id) # User is not authorised channel_join(second_token, channel_id_public) with pytest.raises(ValueError): message_unpin(second_token, msg_id) # Working unpin message_pin(token, msg_id) message_unpin(token, msg_id) # Message not pinned with pytest.raises(ValueError): message_unpin(token, msg_id)
def test_unauthorized(): ''' Test sending a message as an unauthorized user ''' reset_data() # SETUP registered_user = auth_register('*****@*****.**', '123456', 'John', 'Smith') token = registered_user['token'] c_id = channel_create(token, 'Channel1', 'true') # SETUP END # Login as new user not part of channel auth_logout(token) registered_user = auth_register('*****@*****.**', '123456', 'Bob', 'Smith') token = registered_user['token'] with pytest.raises(AccessError, match=r"*No message*"): message_send(token, c_id, 'Hello') message_send('', c_id, 'Hello') message_send(1234, c_id, 'Hello')