def test_change_non_author_non_dreams_owner_channel_owner( reg_user, create_channel): clear_v2() # new user reg_user( 0 ) # Create first user, who is a dreams owner (for testing purposes, we want non-dreams-owners) new_user = reg_user(1) user_token = new_user['token'] new_user_2 = reg_user(2) # new channel channel_id = create_channel(user_token)['channel_id'] channel_join_v2(new_user_2['token'], channel_id) # new message message_id = message_send_v2(new_user_2['token'], channel_id, "Hi Britney!")['message_id'] message = "Hello World!" message_edit_v2(user_token, message_id, message) messages = channel_messages_v2(user_token, channel_id, 0)['messages'] for msg in messages: if msg['message_id'] == message_id: assert msg['message'] == "Hello World!"
def test_different_permissions_edit(): clear_v1() user_1 = auth_register_v2('*****@*****.**', 'aaaaaa', 'a', 'a') user_2 = auth_register_v2('*****@*****.**', 'bbbbbb', 'b', 'b') user_3 = auth_register_v2('*****@*****.**', 'cccccc', 'c', 'c') channel_1 = channels_create_v2(user_1['token'], 'Channel 1', True) channel_invite_v2(user_1['token'], channel_1['channel_id'], user_2['auth_user_id']) channel_invite_v2(user_1['token'], channel_1['channel_id'], user_3['auth_user_id']) msg1 = message_send_v2(user_2['token'], channel_1['channel_id'], 'Hello World!') assert channel_messages_v2(user_1['token'], channel_1['channel_id'], 0)['messages'][0]['message'] == "Hello World!" assert message_edit_v2(user_1['token'], msg1['message_id'], 'Goodbye World!') == {} assert channel_messages_v2(user_1['token'], channel_1['channel_id'], 0)['messages'][0]['message'] == "Goodbye World!" assert message_edit_v2(user_2['token'], msg1['message_id'], 'Hello Again World!') == {} assert channel_messages_v2( user_1['token'], channel_1['channel_id'], 0)['messages'][0]['message'] == "Hello Again World!" assert len( channel_messages_v2(user_1['token'], channel_1['channel_id'], 0)['messages']) == 1 with pytest.raises(AccessError): message_edit_v2(user_3['token'], msg1['message_id'], 'Goodbye Again!') assert channel_messages_v2( user_1['token'], channel_1['channel_id'], 0)['messages'][0]['message'] == "Hello Again World!"
def message_edit(): parameters = request.get_json() token = parameters['token'] message_id = parameters['message_id'] message = parameters['message'] message_edit_v2(token, message_id, message) return dumps({})
def test_different_permissions_edit_remove(): clear_v1() user_1 = auth_register_v2('*****@*****.**', 'aaaaaa', 'a', 'a') user_2 = auth_register_v2('*****@*****.**', 'bbbbbb', 'b', 'b') user_3 = auth_register_v2('*****@*****.**', 'cccccc', 'c', 'c') channel_1 = channels_create_v2(user_1['token'], 'Channel 1', True) channel_invite_v2(user_1['token'], channel_1['channel_id'], user_2['auth_user_id']) channel_invite_v2(user_1['token'], channel_1['channel_id'], user_3['auth_user_id']) msg1 = message_send_v2(user_2['token'], channel_1['channel_id'], 'First Message') msg2 = message_send_v2(user_2['token'], channel_1['channel_id'], 'Second Message') assert len( channel_messages_v2(user_1['token'], channel_1['channel_id'], 0)['messages']) == 2 assert message_edit_v2(user_1['token'], msg1['message_id'], '') == {} assert len( channel_messages_v2(user_1['token'], channel_1['channel_id'], 0)['messages']) == 1 assert channel_messages_v2(user_1['token'], channel_1['channel_id'], 0)['messages'][0]['message'] == "Second Message" assert message_edit_v2(user_2['token'], msg2['message_id'], '') == {} msg3 = message_send_v2(user_2['token'], channel_1['channel_id'], 'Third Message') assert channel_messages_v2(user_1['token'], channel_1['channel_id'], 0)['messages'][0]['message'] == "Third Message" with pytest.raises(AccessError): message_edit_v2(user_3['token'], msg3['message_id'], '') with pytest.raises(AccessError): message_remove_v1(user_3['token'], msg3['message_id']) assert channel_messages_v2(user_1['token'], channel_1['channel_id'], 0)['messages'][0]['message'] == "Third Message"
def test_message_edit_message_id_not_exist(): # InputError should be raised if message_id not found clear_v1() user = auth_register_v2('*****@*****.**', 'password542', 'Fred', 'Moe') channel = channels_create_v2(user['token'], 'Title', True) message_send_v2(user['token'], channel['channel_id'], 'yo') with pytest.raises(InputError): message_edit_v2(user['token'], 2, 'fake msg')
def test_message_edit_invalid_token(): # AccessError raised when invalid token is passed clear_v1() user = auth_register_v2('*****@*****.**', 'passwod298372', 'Ming', 'Lee') channel = channels_create_v2(user['token'], 'TITLE', True) msg = message_send_v2(user['token'], channel['channel_id'], 'test') with pytest.raises(AccessError): message_edit_v2('invalid_token', msg['message_id'], 'no')
def test_edit_from_dm(): clear_v1() user_1 = auth_register_v2('*****@*****.**', 'aaaaaa', 'a', 'a') user_2 = auth_register_v2('*****@*****.**', 'bbbbbb', 'b', 'b') dm_1 = dm_create_v1(user_1['token'], [user_2['auth_user_id']]) msg_1 = message_senddm_v1(user_1['token'], dm_1['dm_id'], 'Sliding in') message_edit_v2(user_1['token'], msg_1['message_id'], 'Beep beep lettuce') assert dm_messages_v1(user_1['token'], dm_1['dm_id'], 0)['messages'][0]['message'] == 'Beep beep lettuce'
def test_message_edit_message_too_long(): # InputError should be raised if edited message is more than 100 characters clear_v1() user = auth_register_v2('*****@*****.**', 'pasword24323132', 'Melon', 'Fruit') channel = channels_create_v2(user['token'], 'Insert Title Here', True) msg_sent = message_send_v2(user['token'], channel['channel_id'], 'testing123') with pytest.raises(InputError): message_edit_v2(user['token'], msg_sent['message_id'], 'A' * 1001)
def test_deleted_delete(): clear_v1() user_1 = auth_register_v2('*****@*****.**', 'aaaaaa', 'a', 'a') channel_1 = channels_create_v2(user_1['token'], 'Channel 1', True) msg1 = message_send_v2(user_1['token'], channel_1['channel_id'], 'Hello World!') assert message_remove_v1(user_1['token'], msg1['message_id']) == {} with pytest.raises(AccessError): message_remove_v1(user_1['token'], msg1['message_id']) with pytest.raises(AccessError): message_edit_v2(user_1['token'], msg1['message_id'], '')
def test_tag_edit(): clear_v1() user1 = auth_register_v2("*****@*****.**", "finalpassword", "Eric", "Zheng") user2 = auth_register_v2("*****@*****.**", "validpassword", "Josh", "Hatton") channel1 = channels_create_v2(user1['token'], 'Channel 1', True) channel_join_v2(user2['token'], channel1['channel_id']) msg1str = "Hi friend" msg1 = message_send_v2(user1['token'], channel1['channel_id'], msg1str) assert len(notifications_get_v1(user2['token'])['notifications']) == 0 message_edit_v2(user1['token'], msg1['message_id'], "@joshhatton") assert len(notifications_get_v1(user2['token'])['notifications']) == 1
def test_edit_other_users_message(): clear_v1() user_1 = auth_register_v2('*****@*****.**', 'aaaaaa', 'a', 'a') channel_1 = channels_create_v2(user_1['token'], 'Channel 1', True) user_2 = auth_register_v2('*****@*****.**', 'aaaaaa', 'a', 'a') channel_invite_v2(user_1['token'], channel_1['channel_id'], user_2['auth_user_id']) msg1 = message_send_v2(user_1['token'], channel_1['channel_id'], 'Hey!') msg2 = message_send_v2(user_2['token'], channel_1['channel_id'], 'Hello!') with pytest.raises(AccessError): message_edit_v2(user_1['token'], msg2['message_id'], 'He is stealing') message_edit_v2(user_2['token'], msg1['message_id'], 'I did not say this')
def test_message_edit_empty_msg_removed(): # If edited message is an empty string, remove the message clear_v1() user = auth_register_v2('*****@*****.**', 'pasword24323132', 'Reynold', 'Food') channel = channels_create_v2(user['token'], 'Food channel', True) message_send_v2(user['token'], channel['channel_id'], 'random message to dilute') msg_sent = message_send_v2(user['token'], channel['channel_id'], 'tastes like poo') message_edit_v2(user['token'], msg_sent['message_id'], '') msg_list = channel_messages_v2(user['token'], channel['channel_id'], 0) assert msg_list['messages'][0]["message"] == "random message to dilute"
def test_invalid_token(reg_user, create_channel): clear_v2() message = "Hello World!" # new user new_user = reg_user(0) user_token = new_user['token'] # new channel channel_id = create_channel(user_token)['channel_id'] # new message message_id = message_send_v2(user_token, channel_id, message)['message_id'] with pytest.raises(AccessError): message_edit_v2("invalid_token", message_id, message)
def test_remove_from_dm(): clear_v1() user_1 = auth_register_v2('*****@*****.**', 'aaaaaa', 'a', 'a') user_2 = auth_register_v2('*****@*****.**', 'bbbbbb', 'b', 'b') dm_1 = dm_create_v1(user_1['token'], [user_2['auth_user_id']]) msg_1 = message_senddm_v1(user_1['token'], dm_1['dm_id'], 'Sliding in') message_remove_v1(user_1['token'], msg_1['message_id']) assert len(dm_messages_v1(user_1['token'], dm_1['dm_id'], 0)['messages']) == 0 msg_2 = message_senddm_v1(user_1['token'], dm_1['dm_id'], 'Pls dont block me') message_edit_v2(user_1['token'], msg_2['message_id'], '') assert len(dm_messages_v1(user_1['token'], dm_1['dm_id'], 0)['messages']) == 0
def test_non_string_message(reg_user, create_channel): clear_v2() message = "Hello World!" # new user new_user = reg_user(0) user_token = new_user['token'] # new channel channel_id = create_channel(user_token)['channel_id'] # new message message_id = message_send_v2(user_token, channel_id, message)['message_id'] with pytest.raises(InputError): message_edit_v2(user_token, message_id, 123923)
def test_too_long(reg_user, create_channel): clear_v2() # new user new_user = reg_user(0) user_token = new_user['token'] # new channel channel_id = create_channel(user_token)['channel_id'] # new message message_id = message_send_v2(user_token, channel_id, "test")['message_id'] message = "a" * 1001 with pytest.raises(InputError): message_edit_v2(user_token, message_id, message)
def message_edit(): info = request.get_json() token = info["token"] message_id = info["message_id"] message = info["message"] message_edit = message_edit_v2(token, message_id, message) return dumps(message_edit)
def message_edit(): data = request.get_json() token = data['token'] message_id = data['message_id'] message = data['message'] output = message_edit_v2(token, message_id, message) return dumps(output)
def test_delected_message(reg_user, create_channel): clear_v2() message = "Hello World!" # new user new_user = reg_user(0) user_token = new_user['token'] # new channel channel_id = create_channel(user_token)['channel_id'] # new message message_id = message_send_v2(user_token, channel_id, message)['message_id'] # delected message_remove_v1(user_token, message_id) with pytest.raises(InputError): message_edit_v2(user_token, message_id, message)
def test_delete(reg_user, create_channel): clear_v2() message = "Hello World!" # new user new_user = reg_user(0) user_token = new_user['token'] # new channel channel_id = create_channel(user_token)['channel_id'] # new message message_id = message_send_v2(user_token, channel_id, message)['message_id'] message_edit_v2(user_token, message_id, "") messages = channel_messages_v2(user_token, channel_id, 0)['messages'] assert not len(messages)
def test_message_edit_owner_edit(): # Owner of a channel successfully removes another member's message clear_v1() owner = auth_register_v2('*****@*****.**', 'password232312', 'David', 'Johns') user = auth_register_v2('*****@*****.**', 'pasword23232', 'Plebian', 'Jones') channel = channels_create_v2(owner['token'], 'Boss Channel', True) # User joins channel channel_join_v2(user['token'], channel['channel_id']) # User sends message msg_sent = message_send_v2(user['token'], channel['channel_id'], 'this owner sux') # Owner deletes user's message message_edit_v2(owner['token'], msg_sent['message_id'], 'jk lol') msg_list = channel_messages_v2(owner['token'], channel['channel_id'], 0) assert msg_list['messages'][0]['message_id'] == msg_sent['message_id'] assert msg_list['messages'][0]['u_id'] == user['auth_user_id'] assert msg_list['messages'][0]['message'] == 'jk lol'
def test_message_edit_not_sent_from_sender_or_owner(): # AccessError should be raised message_edit is called from someone # not the message sender or channel owner or Dreams owner clear_v1() user = auth_register_v2('*****@*****.**', 'password542', 'Frank', 'Lin') user_2 = auth_register_v2('*****@*****.**', 'password5342', 'Matt', 'Hew') dm_group = dm_create_v1(user['token'], [user_2['auth_user_id']]) msg_sent = message_senddm_v1(user['token'], dm_group['dm_id'], 'testing123') with pytest.raises(AccessError): message_edit_v2(user_2['token'], msg_sent['message_id'], 'cantchange') ch = channels_create_v2(user['token'], "name", True) channel_join_v2(user_2["token"], ch["channel_id"]) msg = message_send_v2(user["token"], ch["channel_id"], "Im a message") with pytest.raises(AccessError): message_edit_v2(user_2['token'], msg['message_id'], 'cantchange')
def test_message_edit_simple_case_dm(): # Test a normal case for DM clear_v1() user = auth_register_v2('*****@*****.**', 'password542', 'Tommy', 'Son') user_2 = auth_register_v2('*****@*****.**', 'password5342', 'Josh', 'Dann') dm_group = dm_create_v1(user['token'], [user_2['auth_user_id']]) message_senddm_v1(user["token"], dm_group['dm_id'], 'message to dilute the history') msg_sent = message_senddm_v1(user['token'], dm_group['dm_id'], 'hey!') message_edit_v2(user['token'], msg_sent['message_id'], 'sike bye!') dm_msg_list = dm_messages_v1(user['token'], dm_group['dm_id'], 0) # message = { # 'message_id' = 1 # 'u_id' = 1 # 'message' = 'sike bye!' # } assert dm_msg_list['messages'][0]['message_id'] == msg_sent['message_id'] assert dm_msg_list['messages'][0]['u_id'] == user['auth_user_id'] assert dm_msg_list['messages'][0]['message'] == 'sike bye!'
def test_not_owner(reg_user, create_channel): clear_v2() message = "Hello World!" # new user new_user = reg_user(0) user_token = new_user['token'] # new channel channel_id = create_channel(user_token)['channel_id'] # new message message_id = message_send_v2(user_token, channel_id, message)['message_id'] another_user = auth_register_v2("*****@*****.**", "goodpass123", "Stress", "Puppy") another_token = another_user['token'] with pytest.raises(AccessError): message_edit_v2(another_token, message_id, message)
def test_change(reg_user, create_channel): clear_v2() # new user new_user = reg_user(0) user_token = new_user['token'] # new channel channel_id = create_channel(user_token)['channel_id'] # new message message_id = message_send_v2(user_token, channel_id, "Hi Britney!")['message_id'] message = "Hello World!" message_edit_v2(user_token, message_id, message) messages = channel_messages_v2(user_token, channel_id, 0)['messages'] for msg in messages: if msg['message_id'] == message_id: assert msg['message'] == "Hello World!"
def test_message_edit_stat(): clear_v1() result1 = auth_register_v2('*****@*****.**', 'password', 'comp', 'student') channel1 = channels_create_v2(result1['token'], "The party channel 1", True) message1 = message_send_v2(result1['token'], channel1['channel_id'], 'Hello, how are you?') message2 = message_send_v2(result1['token'], channel1['channel_id'], 'Hello, how are you?') message_edit_v2(result1['token'], message1['message_id'], 'Hi Im user 1') message_edit_v2(result1['token'], message2['message_id'], '') output = user_stats(result1['token']) dreams = users_stats(result1['token']) assert len(output['user_stats']) == 4 assert output['user_stats']['channels_joined'][-1]['num_channels_joined'] == 1 assert output['user_stats']['dms_joined'][-1]['num_dms_joined'] == 0 assert output['user_stats']['messages_sent'][-1]['num_messages_sent'] == 2 assert output['user_stats']['involvement_rate'] == 3/2 assert len(dreams['dreams_stats']) == 4 assert dreams['dreams_stats']['channels_exist'][-1]['num_channels_exist'] == 1 assert dreams['dreams_stats']['dms_exist'][-1]['num_dms_exist'] == 0 assert dreams['dreams_stats']['messages_exist'][-1]['num_messages_exist'] == 1 assert dreams['dreams_stats']['utilization_rate'] == 1
def test_long_edit(): clear_v1() user_1 = auth_register_v2('*****@*****.**', 'aaaaaa', 'a', 'a') channel_1 = channels_create_v2(user_1['token'], 'Channel 1', True) msg1 = message_send_v2(user_1['token'], channel_1['channel_id'], 'Hello World!') with pytest.raises(InputError): message_edit_v2(user_1['token'], msg1['message_id'], 'a' * 1001) message_edit_v2(user_1['token'], msg1['message_id'], 'b' * 1001) message_edit_v2(user_1['token'], msg1['message_id'], 'c' * 1001)
def test_message_edit_v2(user_setup, channel_setup, dm_setup, message_setup): message_edit_v2(make_token(3), 0, "sender changed") assert channel_messages_v2(make_token(3), 0, 0) == { "messages": [ { "message_id": 9, "u_id": 2, "message": "9", "time_created": create_timestamp(), "channel_id": 0, "dm_id": -1, 'reacts': [{ 'react_id': 1, 'u_ids': [], 'is_this_user_reacted': False }], 'is_pinned': False }, { "message_id": 8, "u_id": 2, "message": "8", "time_created": create_timestamp(), "channel_id": 0, "dm_id": -1, 'reacts': [{ 'react_id': 1, 'u_ids': [], 'is_this_user_reacted': False }], 'is_pinned': False }, { "message_id": 7, "u_id": 2, "message": "7", "time_created": create_timestamp(), "channel_id": 0, "dm_id": -1, 'reacts': [{ 'react_id': 1, 'u_ids': [], 'is_this_user_reacted': False }], 'is_pinned': False }, { "message_id": 6, "u_id": 2, "message": "6", "time_created": create_timestamp(), "channel_id": 0, "dm_id": -1, 'reacts': [{ 'react_id': 1, 'u_ids': [], 'is_this_user_reacted': False }], 'is_pinned': False }, { "message_id": 5, "u_id": 2, "message": "5", "time_created": create_timestamp(), "channel_id": 0, "dm_id": -1, 'reacts': [{ 'react_id': 1, 'u_ids': [], 'is_this_user_reacted': False }], 'is_pinned': False }, { "message_id": 4, "u_id": 2, "message": "4", "time_created": create_timestamp(), "channel_id": 0, "dm_id": -1, 'reacts': [{ 'react_id': 1, 'u_ids': [], 'is_this_user_reacted': False }], 'is_pinned': False }, { "message_id": 3, "u_id": 2, "message": "3", "time_created": create_timestamp(), "channel_id": 0, "dm_id": -1, 'reacts': [{ 'react_id': 1, 'u_ids': [], 'is_this_user_reacted': False }], 'is_pinned': False }, { "message_id": 2, "u_id": 3, "message": "2", "time_created": create_timestamp(), "channel_id": 0, "dm_id": -1, 'reacts': [{ 'react_id': 1, 'u_ids': [], 'is_this_user_reacted': False }], 'is_pinned': False }, { "message_id": 0, "u_id": 3, "message": "sender changed", "time_created": create_timestamp(), "channel_id": 0, "dm_id": -1, 'reacts': [{ 'react_id': 1, 'u_ids': [], 'is_this_user_reacted': False }], 'is_pinned': False }, ], "start": 0, "end": -1, }
def test_message_edit_v2_errors(user_setup, channel_setup, dm_setup, message_setup): # Test 1: # invalid token with pytest.raises(AccessError): message_edit_v2(make_token(414345), 0, "invalid token error") # Test 2: # authorised user did not send this message and is not owner of channel/Dreams with pytest.raises(AccessError): message_edit_v2(make_token(1), 0, "user didnt send this msg error") # "Authorised User is not the owner of this channel and did not send this message" with pytest.raises(AccessError): message_edit_v2(make_token(2), 10, "user didnt send this msg error") # "Authorised User is not an owner of Dreams and did not send this message" # Test 3: # message too long with pytest.raises(InputError): message_edit_v2(make_token(2), 2, "1" * 1000 + "too many chars error") # "Message is longer than the 1000 character limit" # testing to remove a message and then try edit that removed message message_edit_v2(make_token(2), 9, '') with pytest.raises(InputError): message_edit_v2(make_token(2), 9, "deleted msg error") with pytest.raises(InputError): message_edit_v2(make_token(2), 1000, "non-existent msg error")