def test_message_edit_stat(): clear_v1() result1 = auth_register_v2('*****@*****.**', 'password', 'comp', 'student').json() channel1 = channels_create_v2(result1['token'], "The party channel 1", True).json() message1 = message_send_v2(result1['token'], channel1['channel_id'], 'Hello, how are you?').json() message2 = message_send_v2(result1['token'], channel1['channel_id'], 'Hello, how are you?').json() message_edit_v2(result1['token'], message1['message_id'], 'Hi Im user 1') message_edit_v2(result1['token'], message2['message_id'], '') #message_remove_v1(result1['token'], message2['message_id']) output = user_stats(result1['token']).json() dreams = users_stats(result1['token']).json() 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_assorted_notifications(): clear_v1() user1 = auth_register_v2("*****@*****.**", "finalpassword", "Eric", "Zheng").json() user2 = auth_register_v2("*****@*****.**", "validpassword", "Josh", "Hatton").json() channel1 = channels_create_v2(user1['token'], 'Channel 1', True).json() channel_invite_v2(user1['token'], channel1['channel_id'], user2['auth_user_id']) msg1str = "Welcome to the channel @joshhatton" msg1 = message_send_v2(user1['token'], channel1['channel_id'], msg1str).json() message_react_v1(user2['token'], msg1['message_id'], 1) msg2str = "Thanks for having me @ericzheng" msg2 = message_send_v2(user2['token'], channel1['channel_id'], msg2str).json() message_react_v1(user1['token'], msg2['message_id'], 1) assert notifications_get_v1(user1['token']).json() == { 'notifications': [{ 'channel_id': channel1['channel_id'], 'dm_id': -1, 'notification_message': f"joshhatton tagged you in Channel 1: {msg2str[0:20]}" }, { 'channel_id': channel1['channel_id'], 'dm_id': -1, 'notification_message': "joshhatton reacted to your message in Channel 1" }] } assert notifications_get_v1(user2['token']).json() == { 'notifications': [ { 'channel_id': channel1['channel_id'], 'dm_id': -1, 'notification_message': "ericzheng reacted to your message in Channel 1" }, { 'channel_id': channel1['channel_id'], 'dm_id': -1, 'notification_message': f"ericzheng tagged you in Channel 1: {msg1str[0:20]}" }, { 'channel_id': channel1['channel_id'], 'dm_id': -1, 'notification_message': "ericzheng added you to Channel 1" }, ] }
def test_two_tags(): clear_v1() user1 = auth_register_v2("*****@*****.**", "finalpassword", "Eric", "Zheng").json() user2 = auth_register_v2("*****@*****.**", "validpassword", "Josh", "Hatton").json() channel1 = channels_create_v2(user1['token'], 'Channel 1', True).json() channel_join_v2(user2['token'], channel1['channel_id']) msg1str = "@ericzheng @joshhatton" message_send_v2(user1['token'], channel1['channel_id'], msg1str) assert notifications_get_v1(user1['token']).json() == { 'notifications': [{ 'channel_id': channel1['channel_id'], 'dm_id': -1, 'notification_message': f"ericzheng tagged you in Channel 1: {msg1str[0:20]}" }] } assert notifications_get_v1(user2['token']).json() == { 'notifications': [{ 'channel_id': channel1['channel_id'], 'dm_id': -1, 'notification_message': f"ericzheng tagged you in Channel 1: {msg1str[0:20]}" }] }
def test_success_over_fifty_msgs_channel(create_input): for i in range(0, 110): message_send_v2(create_input[0][0]["token"], create_input[1][0]["channel_id"], f"First channel extra message {i}.") result = search_v2(create_input[0][1]["token"], "First").json() assert type(result) == dict assert len(result["messages"]) == 110
def create_input(): clear_v1() users = [ auth_register_v2("*****@*****.**", "validpassword", "Josh", "Hatton").json(), auth_register_v2("*****@*****.**", "anotherpassword", "Bunny", "Dong").json(), auth_register_v2("*****@*****.**", "password3", "Jordan", "Milch").json(), auth_register_v2("*****@*****.**", "4thpassword", "Dean", "Zworestine").json(), auth_register_v2("*****@*****.**", "finalpassword", "Eric", "Zheng").json(), ] channels = [ channels_create_v2(users[0]["token"], "First Channel", True).json()['channel_id'], channels_create_v2(users[1]["token"], "Second Channel", False).json()['channel_id'] ] dms = [ dm_create_v1(users[0]['token'], [users[2]['auth_user_id']]).json()['dm_id'], dm_create_v1(users[1]['token'], [users[3]['auth_user_id'], users[4]['auth_user_id'] ]).json()['dm_id'] ] # Send 5 messages to First Channel channel_1_messages = [] for i in range(0, 5): channel_1_messages.append( message_send_v2( users[0]["token"], channels[0], f"First channel message {i}.").json()['message_id']) # Send 5 messages to Second Channel for i in range(0, 5): message_send_v2(users[1]["token"], channels[1], f"Second channel message {i}.") # Send 5 messages to First DM dm_1_messages = [] for i in range(0, 5): dm_1_messages.append( message_senddm_v1(users[0]["token"], dms[0], f"First dm message {i}.").json()['message_id']) # Send 5 messages to Second DM for i in range(0, 5): message_senddm_v1(users[1]["token"], dms[1], f"Second dm message {i}.") return [users, channels, dms, channel_1_messages, dm_1_messages]
def test_mixed_decrement(): clear_v1() result1 = auth_register_v2('*****@*****.**', 'password', 'comp', 'student').json() result2 = auth_register_v2('*****@*****.**', 'password', 'comp', 'student').json() channel1 = channels_create_v2(result1['token'], "The party channel 1", True).json()['channel_id'] message1 = message_send_v2(result1['token'], channel1, 'hello how are you').json()['message_id'] message_remove_v1(result1['token'], message1) channel_join_v2(result2['token'], channel1) channel_leave_v1(result2['token'], channel1) output = user_stats(result1['token']).json() assert output['user_stats']['channels_joined'][-1][ 'num_channels_joined'] == 1 assert output['user_stats']['messages_sent'][-1]['num_messages_sent'] == 1 output1 = user_stats(result2['token']).json() assert output1['user_stats']['channels_joined'][-1][ 'num_channels_joined'] == 0 dreams = users_stats(result1['token']).json() assert dreams['dreams_stats']['channels_exist'][-1][ 'num_channels_exist'] == 1 assert dreams['dreams_stats']['messages_exist'][-1][ 'num_messages_exist'] == 0
def test_mixed_harder(): clear_v1() result1 = auth_register_v2('*****@*****.**', 'password', 'comp', 'student').json() result2 = auth_register_v2('*****@*****.**', 'password', 'comp', 'student').json() channel1 = channels_create_v2(result1['token'], "The party channel 1", True).json()['channel_id'] message_send_v2(result1['token'], channel1, 'hello how are you') dm_create_v1(result1['token'], [result2['auth_user_id']]) output = user_stats(result1['token']).json() 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'] == 1 assert output['user_stats']['messages_sent'][-1]['num_messages_sent'] == 1 assert output['user_stats']['involvement_rate'] == 1 channels_create_v2(result1['token'], "The party channel 2", True) channel3 = channels_create_v2(result2['token'], "The party channel 3", True).json()['channel_id'] channel_addowner_v1(result2['token'], channel3, result1['auth_user_id']) message_send_v2(result2['token'], channel3, 'hello how are you') output1 = user_stats(result1['token']).json() output2 = user_stats(result2['token']).json() assert len(output1['user_stats']) == 4 assert output1['user_stats']['channels_joined'][-1][ 'num_channels_joined'] == 3 assert output1['user_stats']['dms_joined'][-1]['num_dms_joined'] == 1 assert output1['user_stats']['messages_sent'][-1]['num_messages_sent'] == 1 assert output1['user_stats']['involvement_rate'] == 5 / 6 assert len(output2['user_stats']) == 4 assert output2['user_stats']['channels_joined'][-1][ 'num_channels_joined'] == 1 assert output2['user_stats']['dms_joined'][-1]['num_dms_joined'] == 1 assert output2['user_stats']['messages_sent'][-1]['num_messages_sent'] == 1 assert output2['user_stats']['involvement_rate'] == 3 / 6 dreams = users_stats(result1['token']).json() assert len(dreams['dreams_stats']) == 4 assert dreams['dreams_stats']['channels_exist'][-1][ 'num_channels_exist'] == 3 assert dreams['dreams_stats']['dms_exist'][-1]['num_dms_exist'] == 1 assert dreams['dreams_stats']['messages_exist'][-1][ 'num_messages_exist'] == 2 assert dreams['dreams_stats']['utilization_rate'] == 1
def test_invalid_token(): """ Tests return of expected output when given a token that doesn't exist, or if the user is not in the channel/dm. """ clear_v1() # Token doesnt exist user_1 = auth_register_v2('*****@*****.**', 'happydays1', 'Eric', 'Zheng').json() assert notifications_get_v1(user_1['token'] + 'bug').status_code == ACCESS_ERROR # User not in channel user_2 = auth_register_v2('*****@*****.**', 'happydays2', 'Josh', 'Hatton').json() channel_1 = channels_create_v2(user_1['token'], 'Channel 1', True).json() user_2_handle = user_profile_v2(user_1['token'], user_2['auth_user_id']).json() message_send_v2(user_1['token'], channel_1['channel_id'], f"Hi @{user_2_handle['user']['handle_str']}") assert notifications_get_v1(user_2['token']).json() == { 'notifications': [] } # User not in dm dm_1 = dm_create_v1(user_1['token'], [user_2['auth_user_id']]).json() user_3 = auth_register_v2('*****@*****.**', 'hihihi!!!', 'Bunny', 'Dong').json() user_3_handle = user_profile_v2(user_1['token'], user_3['auth_user_id']).json() message_senddm_v1(user_1['token'], dm_1['dm_id'], f"Hello @{user_3_handle['user']['handle_str']}") assert notifications_get_v1(user_3['token']).json() == { 'notifications': [] }
def test_simple_tag(): clear_v1() user_1 = auth_register_v2("*****@*****.**", "finalpassword", "Eric", "Zheng").json() user_2 = auth_register_v2("*****@*****.**", "validpassword", "Josh", "Hatton").json() message_1 = "@ericzheng, how are you doing today?" channel_1 = channels_create_v2(user_1['token'], 'Channel 1', True).json() channel_join_v2(user_2['token'], channel_1['channel_id']) message_send_v2(user_2['token'], channel_1['channel_id'], message_1) assert notifications_get_v1(user_1['token']).json() == { 'notifications': [{ 'channel_id': channel_1['channel_id'], 'dm_id': -1, 'notification_message': f"joshhatton tagged you in Channel 1: {message_1[0:20]}" }] }
def test_mixed_success(create_input): current_time = int(time.time()) message_send_v2(create_input[0][0]["token"], create_input[1][0]["channel_id"], "This is the first normal message") assert len( channel_messages_v2(create_input[0][0]["token"], create_input[1][0]["channel_id"], 0).json()["messages"]) == 1 msg = message_sendlater_v1(create_input[0][1]["token"], create_input[1][0]["channel_id"], "Hey there, I'm from the past!", current_time + 2).json() assert type(msg) == dict assert type(msg["message_id"]) == int message_send_v2(create_input[0][2]["token"], create_input[1][0]["channel_id"], "This is the second normal message") # Make sure delayed message has not been sent yet msgs = channel_messages_v2(create_input[0][1]["token"], create_input[1][0]["channel_id"], 0).json()["messages"] assert len(msgs) == 2 # Wait 2.5 seconds and check again; delayed message should be there time.sleep(2.5) msgs = channel_messages_v2(create_input[0][1]["token"], create_input[1][0]["channel_id"], 0).json()["messages"] assert len(msgs) == 3 assert msgs[0]["message"] == "Hey there, I'm from the past!" assert msgs[0]["time_created"] == current_time + 2 assert msgs[1]["message"] == "This is the second normal message" assert msgs[1]["time_created"] == current_time assert msgs[2]["message"] == "This is the first normal message" assert msgs[2]["time_created"] == current_time
def test_single_react_notification(): clear_v1() user1 = auth_register_v2("*****@*****.**", "finalpassword", "Eric", "Zheng").json() user2 = auth_register_v2("*****@*****.**", "validpassword", "Josh", "Hatton").json() channel1 = channels_create_v2(user1['token'], 'Channel 1', True).json() channel_join_v2(user2['token'], channel1['channel_id']) msg1 = message_send_v2(user1['token'], channel1['channel_id'], "1 like = 1 prayer").json() message_react_v1(user2['token'], msg1['message_id'], 1) assert notifications_get_v1(user1['token']).json() == { 'notifications': [{ 'channel_id': channel1['channel_id'], 'dm_id': -1, 'notification_message': "joshhatton reacted to your message in Channel 1" }] }
def create_input(): clear_v1() data_test_users = [ auth_register_v2("*****@*****.**", "validpassword", "Josh", "Hatton").json(), auth_register_v2("*****@*****.**", "anotherpassword", "Bunny", "Dong").json(), auth_register_v2("*****@*****.**", "password3", "Jordan", "Milch").json(), auth_register_v2("*****@*****.**", "4thpassword", "Dean", "Zworestine").json(), auth_register_v2("*****@*****.**", "finalpassword", "Eric", "Zheng").json(), ] data_test_channels = [ channels_create_v2(data_test_users[0]["token"], "First Channel", True).json(), channels_create_v2(data_test_users[1]["token"], "Second Channel", True).json(), channels_create_v2(data_test_users[2]["token"], "Third Channel", False).json(), ] # Send 10 messages to First Channel for i in range(0, 10): message_send_v2(data_test_users[0]["token"], data_test_channels[0]["channel_id"], f"First channel message {i}.") # Send 55 messages to Second Channel for i in range(0, 55): message_send_v2(data_test_users[1]["token"], data_test_channels[1]["channel_id"], f"Second channel message {i}.") # Send 120 messages to Third Channel for i in range(0, 120): message_send_v2(data_test_users[2]["token"], data_test_channels[2]["channel_id"], f"Third channel message {i}.") return [data_test_users, data_test_channels]
def create_input(): clear_v1() data_test_users = [ auth_register_v2("*****@*****.**", "finalpassword", "Eric", "Zheng").json(), auth_register_v2("*****@*****.**", "validpassword", "Josh", "Hatton").json(), auth_register_v2("*****@*****.**", "anotherpassword", "Bunny", "Dong").json(), auth_register_v2("*****@*****.**", "password3", "Jordan", "Milch").json(), auth_register_v2("*****@*****.**", "4thpassword", "Dean", "Zworestine").json(), ] data_test_channels = [ channels_create_v2(data_test_users[0]["token"], "Channel 1", True).json(), channels_create_v2(data_test_users[1]["token"], "Private", False).json(), ] # User1, User3, User 4 in channel 1 # User2, User 5 in channel 2 channel_join_v2(data_test_users[2]["token"], data_test_channels[0]["channel_id"]) channel_join_v2(data_test_users[3]["token"], data_test_channels[0]["channel_id"]) channel_invite_v2(data_test_users[1]["token"], data_test_channels[1]["channel_id"], data_test_users[4]["auth_user_id"]) # User 1, user3, user4 sends a message to channel 1 # User2, user5 sends a message to channel 2 data_test_channel_messages = [ message_send_v2( data_test_users[0]["token"], data_test_channels[0]["channel_id"], "Look, I was gonna go easy on you \ Not to hurt your feelings \ But I'm only going to get this one chance \ Something's wrong, I can feel it", ).json(), message_send_v2( data_test_users[1]["token"], data_test_channels[1]["channel_id"], "Can we pretend that airplanes in the night \ sky are like shootin' stars \ I could really use a wish right now, wish right \ now, wish right now Can we pretend that \ airplanes in the night sky are like shootin'", ).json(), message_send_v2( data_test_users[2]["token"], data_test_channels[0]["channel_id"], "All I want is nothing more \ To hear you knocking at my door \ 'Cause if I could see your face once more \ I could die a happy man I'm sure", ).json(), message_send_v2( data_test_users[3]["token"], data_test_channels[0]["channel_id"], "I've been staring at the edge of the water \ 'Long as I can remember \ Never really knowing why", ).json(), message_send_v2( data_test_users[4]["token"], data_test_channels[1]["channel_id"], "I am so so so so so sick of writing these tests \ someone please send help i am so tired lol.", ).json(), ] # user 1 has dm with user 2 # user 3 has dm with user 4 # user 5 has dm with user 2 data_test_dms = [ dm_create_v1(data_test_users[0]["token"], [data_test_users[1]["auth_user_id"]]).json(), dm_create_v1(data_test_users[2]["token"], [data_test_users[3]["auth_user_id"]]).json(), dm_create_v1(data_test_users[4]["token"], [data_test_users[1]["auth_user_id"]]).json(), ] # user 1, user_2 sends dm to dm_1 # user 3, user 4 sends dm to dm_2 # user 5 sends dm to dm_3 data_test_dm_messages = [ message_senddm_v1(data_test_users[0]["token"], data_test_dms[0]["dm_id"], "Hello user 2!").json(), message_senddm_v1(data_test_users[1]["token"], data_test_dms[0]["dm_id"], "Hi user 1!").json(), message_senddm_v1(data_test_users[2]["token"], data_test_dms[1]["dm_id"], "How are you user 4?").json(), message_senddm_v1(data_test_users[3]["token"], data_test_dms[1]["dm_id"], "I am fine user 3!").json(), message_senddm_v1(data_test_users[4]["token"], data_test_dms[2]["dm_id"], "Shut up user 2.").json(), ] return [ data_test_users, data_test_channels, data_test_channel_messages, data_test_dms, data_test_dm_messages ]
def test_greater_than_20_notifications(): """ Tests for correctly displayed most recent 20 notifications """ clear_v1() user_1 = auth_register_v2('*****@*****.**', 'kjhfbshjbdf', 'Eric', 'Zheng').json() user_1_handle = user_profile_v2(user_1['token'], user_1['auth_user_id']).json() channel_1 = channels_create_v2(user_1['token'], 'Test', True).json() # Send 25 message notifications sent_messages = [] for i in range(25): message_send_v2( user_1['token'], channel_1['channel_id'], f"@{user_1_handle['user']['handle_str']} - this is notification {i}" ) sent_messages.append( f"@{user_1_handle['user']['handle_str']} - this is notification {i}" ) assert notifications_get_v1(user_1['token']).json() == { 'notifications': [ { 'channel_id': channel_1['channel_id'], 'dm_id': -1, 'notification_message': f"{user_1_handle['user']['handle_str']} tagged you in Test: {sent_messages[24][0:20]}" }, { 'channel_id': channel_1['channel_id'], 'dm_id': -1, 'notification_message': f"{user_1_handle['user']['handle_str']} tagged you in Test: {sent_messages[23][0:20]}" }, { 'channel_id': channel_1['channel_id'], 'dm_id': -1, 'notification_message': f"{user_1_handle['user']['handle_str']} tagged you in Test: {sent_messages[22][0:20]}" }, { 'channel_id': channel_1['channel_id'], 'dm_id': -1, 'notification_message': f"{user_1_handle['user']['handle_str']} tagged you in Test: {sent_messages[21][0:20]}" }, { 'channel_id': channel_1['channel_id'], 'dm_id': -1, 'notification_message': f"{user_1_handle['user']['handle_str']} tagged you in Test: {sent_messages[20][0:20]}" }, { 'channel_id': channel_1['channel_id'], 'dm_id': -1, 'notification_message': f"{user_1_handle['user']['handle_str']} tagged you in Test: {sent_messages[19][0:20]}" }, { 'channel_id': channel_1['channel_id'], 'dm_id': -1, 'notification_message': f"{user_1_handle['user']['handle_str']} tagged you in Test: {sent_messages[18][0:20]}" }, { 'channel_id': channel_1['channel_id'], 'dm_id': -1, 'notification_message': f"{user_1_handle['user']['handle_str']} tagged you in Test: {sent_messages[17][0:20]}" }, { 'channel_id': channel_1['channel_id'], 'dm_id': -1, 'notification_message': f"{user_1_handle['user']['handle_str']} tagged you in Test: {sent_messages[16][0:20]}" }, { 'channel_id': channel_1['channel_id'], 'dm_id': -1, 'notification_message': f"{user_1_handle['user']['handle_str']} tagged you in Test: {sent_messages[15][0:20]}" }, { 'channel_id': channel_1['channel_id'], 'dm_id': -1, 'notification_message': f"{user_1_handle['user']['handle_str']} tagged you in Test: {sent_messages[14][0:20]}" }, { 'channel_id': channel_1['channel_id'], 'dm_id': -1, 'notification_message': f"{user_1_handle['user']['handle_str']} tagged you in Test: {sent_messages[13][0:20]}" }, { 'channel_id': channel_1['channel_id'], 'dm_id': -1, 'notification_message': f"{user_1_handle['user']['handle_str']} tagged you in Test: {sent_messages[12][0:20]}" }, { 'channel_id': channel_1['channel_id'], 'dm_id': -1, 'notification_message': f"{user_1_handle['user']['handle_str']} tagged you in Test: {sent_messages[11][0:20]}" }, { 'channel_id': channel_1['channel_id'], 'dm_id': -1, 'notification_message': f"{user_1_handle['user']['handle_str']} tagged you in Test: {sent_messages[10][0:20]}" }, { 'channel_id': channel_1['channel_id'], 'dm_id': -1, 'notification_message': f"{user_1_handle['user']['handle_str']} tagged you in Test: {sent_messages[9][0:20]}" }, { 'channel_id': channel_1['channel_id'], 'dm_id': -1, 'notification_message': f"{user_1_handle['user']['handle_str']} tagged you in Test: {sent_messages[8][0:20]}" }, { 'channel_id': channel_1['channel_id'], 'dm_id': -1, 'notification_message': f"{user_1_handle['user']['handle_str']} tagged you in Test: {sent_messages[7][0:20]}" }, { 'channel_id': channel_1['channel_id'], 'dm_id': -1, 'notification_message': f"{user_1_handle['user']['handle_str']} tagged you in Test: {sent_messages[6][0:20]}" }, { 'channel_id': channel_1['channel_id'], 'dm_id': -1, 'notification_message': f"{user_1_handle['user']['handle_str']} tagged you in Test: {sent_messages[5][0:20]}" }, ] }
def create_input(): clear_v1() data_test_users = [ auth_register_v2("*****@*****.**", "validpassword", "Josh", "Hatton").json(), auth_register_v2("*****@*****.**", "anotherpassword", "Bunny", "Dong").json(), auth_register_v2("*****@*****.**", "password3", "Jordan", "Milch").json(), auth_register_v2("*****@*****.**", "4thpassword", "Dean", "Zworestine").json(), auth_register_v2("*****@*****.**", "finalpassword", "Eric", "Zheng").json(), ] data_test_channels = [ channels_create_v2(data_test_users[0]["token"], "First Channel", True).json(), channels_create_v2(data_test_users[1]["token"], "Second Channel", True).json(), ] data_test_dms = [ dm_create_v1(data_test_users[0]["token"], [ data_test_users[1]["auth_user_id"], data_test_users[2]["auth_user_id"] ]).json(), dm_create_v1(data_test_users[3]["token"], [ data_test_users[0]["auth_user_id"], data_test_users[4]["auth_user_id"] ]).json(), ] # Add everyone to First Channel channel_join_v2(data_test_users[1]["token"], data_test_channels[0]["channel_id"]) channel_join_v2(data_test_users[2]["token"], data_test_channels[0]["channel_id"]) channel_join_v2(data_test_users[3]["token"], data_test_channels[0]["channel_id"]) channel_join_v2(data_test_users[4]["token"], data_test_channels[0]["channel_id"]) # Add users 0 and 3 to Second Channel channel_join_v2(data_test_users[0]["token"], data_test_channels[1]["channel_id"]) channel_join_v2(data_test_users[3]["token"], data_test_channels[1]["channel_id"]) # Send messages to First Channel message_send_v2(data_test_users[0]["token"], data_test_channels[0]["channel_id"], "Hey there") message_send_v2(data_test_users[1]["token"], data_test_channels[0]["channel_id"], "Hey nice to meet you") message_send_v2(data_test_users[2]["token"], data_test_channels[0]["channel_id"], "I'm excited to be here!") message_send_v2(data_test_users[3]["token"], data_test_channels[0]["channel_id"], "Me too!") # Send messages to Second Channel message_send_v2(data_test_users[1]["token"], data_test_channels[1]["channel_id"], "hey") message_send_v2(data_test_users[0]["token"], data_test_channels[1]["channel_id"], "sup") message_send_v2(data_test_users[3]["token"], data_test_channels[1]["channel_id"], "Nice weather today aye...") # Send messages to dm_1 message_senddm_v1(data_test_users[0]["token"], data_test_dms[0]["dm_id"], "Hey there") message_senddm_v1(data_test_users[1]["token"], data_test_dms[0]["dm_id"], "Oh hi Mark") message_senddm_v1(data_test_users[2]["token"], data_test_dms[0]["dm_id"], "Lol") # Send messages to dm_2 message_senddm_v1(data_test_users[0]["token"], data_test_dms[1]["dm_id"], "Hey again. This is getting repetitive...") message_senddm_v1(data_test_users[3]["token"], data_test_dms[1]["dm_id"], "Yeah true lol") message_senddm_v1(data_test_users[4]["token"], data_test_dms[1]["dm_id"], "Haha") return [data_test_users, data_test_channels, data_test_dms]
def test_multiple_react_notification(): clear_v1() user1 = auth_register_v2("*****@*****.**", "finalpassword", "Eric", "Zheng").json() user2 = auth_register_v2("*****@*****.**", "validpassword", "Josh", "Hatton").json() user3 = auth_register_v2("*****@*****.**", "anotherpassword", "Bunny", "Dong").json() user4 = auth_register_v2("*****@*****.**", "password3", "Jordan", "Milch").json() user5 = auth_register_v2("*****@*****.**", "4thpassword", "Dean", "Zworestine").json() channel1 = channels_create_v2(user1['token'], 'Channel 1', True).json() channel_join_v2(user2['token'], channel1['channel_id']) channel_join_v2(user3['token'], channel1['channel_id']) channel_join_v2(user4['token'], channel1['channel_id']) channel_join_v2(user5['token'], channel1['channel_id']) msg1 = message_send_v2(user1['token'], channel1['channel_id'], "1 like = 1 prayer").json() message_react_v1(user1['token'], msg1['message_id'], 1) message_react_v1(user2['token'], msg1['message_id'], 1) message_react_v1(user3['token'], msg1['message_id'], 1) message_react_v1(user4['token'], msg1['message_id'], 1) message_react_v1(user5['token'], msg1['message_id'], 1) assert notifications_get_v1(user1['token']).json() == { 'notifications': [{ 'channel_id': channel1['channel_id'], 'dm_id': -1, 'notification_message': "deanzworestine reacted to your message in Channel 1" }, { 'channel_id': channel1['channel_id'], 'dm_id': -1, 'notification_message': "jordanmilch reacted to your message in Channel 1" }, { 'channel_id': channel1['channel_id'], 'dm_id': -1, 'notification_message': "bunnydong reacted to your message in Channel 1" }, { 'channel_id': channel1['channel_id'], 'dm_id': -1, 'notification_message': "joshhatton reacted to your message in Channel 1" }, { 'channel_id': channel1['channel_id'], 'dm_id': -1, 'notification_message': "ericzheng reacted to your message in Channel 1" }] }
def test_channel_tagged_user(create_input): """ Tests correct return of notifications when user is tagged in a channel. """ user_1, user_2, user_3, user_4, user_5 = create_input[0] user_1_handle = create_input[1][0] user_2_handle = create_input[1][1] user_3_handle = create_input[1][2] user_4_handle = create_input[1][3] user_5_handle = create_input[1][4] channel_1, channel_2, channel_3 = create_input[2] message_1 = f"@{user_1_handle['user']['handle_str']}, how are you on such a fine lovely day? I hope you are well!" message_2 = f"@{user_2_handle['user']['handle_str']}, can you send me homework answers from yesterday please? Thanks!" message_3 = f"@{user_3_handle['user']['handle_str']}, I heard that your knees are the finest knees in all of Australia, is this true?" message_4 = f"@{user_4_handle['user']['handle_str']} is cool." message_5 = f"@{user_5_handle['user']['handle_str']} is a donkey." message_6 = f"@{user_3_handle['user']['handle_str']} is an even bigger donkey than @{user_4_handle['user']['handle_str']}" dm_1, dm_2, dm_3 = create_input[3] channel_join_v2(user_2['token'], channel_1['channel_id']) channel_join_v2(user_3['token'], channel_1['channel_id']) channel_join_v2(user_4['token'], channel_1['channel_id']) channel_join_v2(user_4['token'], channel_2['channel_id']) channel_join_v2(user_5['token'], channel_2['channel_id']) channel_join_v2(user_1['token'], channel_3['channel_id']) message_send_v2(user_1['token'], channel_1['channel_id'], message_2) message_send_v2(user_1['token'], channel_1['channel_id'], message_3) message_send_v2(user_2['token'], channel_2['channel_id'], message_4) message_send_v2(user_2['token'], channel_2['channel_id'], message_5) message_send_v2(user_3['token'], channel_1['channel_id'], message_1) message_send_v2(user_1['token'], channel_1['channel_id'], message_6) assert notifications_get_v1(user_2['token']).json() == { 'notifications': [{ 'channel_id': channel_1['channel_id'], 'dm_id': -1, 'notification_message': f"{user_1_handle['user']['handle_str']} tagged you in Channel 1: {message_2[0:20]}" }, { 'channel_id': -1, 'dm_id': dm_3['dm_id'], 'notification_message': f"{user_5_handle['user']['handle_str']} added you to {dm_3['dm_name']}" }, { 'channel_id': -1, 'dm_id': dm_1['dm_id'], 'notification_message': f"{user_1_handle['user']['handle_str']} added you to {dm_1['dm_name']}" }] } assert notifications_get_v1(user_3['token']).json() == { 'notifications': [ { 'channel_id': channel_1['channel_id'], 'dm_id': -1, 'notification_message': f"{user_1_handle['user']['handle_str']} tagged you in Channel 1: {message_6[0:20]}" }, { 'channel_id': channel_1['channel_id'], 'dm_id': -1, 'notification_message': f"{user_1_handle['user']['handle_str']} tagged you in Channel 1: {message_3[0:20]}" }, ] } assert notifications_get_v1(user_4['token']).json() == { 'notifications': [{ 'channel_id': channel_1['channel_id'], 'dm_id': -1, 'notification_message': f"{user_1_handle['user']['handle_str']} tagged you in Channel 1: {message_6[0:20]}" }, { 'channel_id': channel_2['channel_id'], 'dm_id': -1, 'notification_message': f"{user_2_handle['user']['handle_str']} tagged you in Channel 2: {message_4[0:20]}" }, { 'channel_id': -1, 'dm_id': dm_2['dm_id'], 'notification_message': f"{user_3_handle['user']['handle_str']} added you to {dm_2['dm_name']}" }] } assert notifications_get_v1(user_5['token']).json() == { 'notifications': [{ 'channel_id': channel_2['channel_id'], 'dm_id': -1, 'notification_message': f"{user_2_handle['user']['handle_str']} tagged you in Channel 2: {message_5[0:20]}" }] }
def test_further_mixed_harder(): clear_v1() result1 = auth_register_v2('*****@*****.**', 'password', 'comp', 'student').json() result2 = auth_register_v2('*****@*****.**', 'password', 'comp', 'student').json() result3 = auth_register_v2('*****@*****.**', 'password', 'comp', 'student').json() result4 = auth_register_v2('*****@*****.**', 'password', 'comp', 'student').json() channel1 = channels_create_v2(result1['token'], "The party channel 1", True).json() channel2 = channels_create_v2(result2['token'], "The party channel 2", True).json() dm_create_v1(result1['token'], [result2['auth_user_id'], result3['auth_user_id']]) dm_create_v1(result2['token'], [result4['auth_user_id'], result3['auth_user_id']]) output1 = user_stats(result1['token']).json() output2 = user_stats(result2['token']).json() output3 = user_stats(result3['token']).json() output4 = user_stats(result4['token']).json() assert len(output1['user_stats']) == 4 assert output1['user_stats']['channels_joined'][-1][ 'num_channels_joined'] == 1 assert output1['user_stats']['dms_joined'][-1]['num_dms_joined'] == 1 assert output1['user_stats']['messages_sent'][-1]['num_messages_sent'] == 0 assert output1['user_stats']['involvement_rate'] == 2 / 4 assert len(output2['user_stats']) == 4 assert output2['user_stats']['channels_joined'][-1][ 'num_channels_joined'] == 1 assert output2['user_stats']['dms_joined'][-1]['num_dms_joined'] == 2 assert output2['user_stats']['messages_sent'][-1]['num_messages_sent'] == 0 assert output2['user_stats']['involvement_rate'] == 3 / 4 assert len(output3['user_stats']) == 4 assert output3['user_stats']['channels_joined'][-1][ 'num_channels_joined'] == 0 assert output3['user_stats']['dms_joined'][-1]['num_dms_joined'] == 2 assert output3['user_stats']['messages_sent'][-1]['num_messages_sent'] == 0 assert output3['user_stats']['involvement_rate'] == 2 / 4 assert len(output4['user_stats']) == 4 assert output4['user_stats']['channels_joined'][-1][ 'num_channels_joined'] == 0 assert output4['user_stats']['dms_joined'][-1]['num_dms_joined'] == 1 assert output4['user_stats']['messages_sent'][-1]['num_messages_sent'] == 0 assert output4['user_stats']['involvement_rate'] == 1 / 4 dreams = users_stats(result1['token']).json() assert len(dreams['dreams_stats']) == 4 assert dreams['dreams_stats']['channels_exist'][-1][ 'num_channels_exist'] == 2 assert dreams['dreams_stats']['dms_exist'][-1]['num_dms_exist'] == 2 assert dreams['dreams_stats']['messages_exist'][-1][ 'num_messages_exist'] == 0 assert dreams['dreams_stats']['utilization_rate'] == 1 channel_invite_v2(result1['token'], channel1['channel_id'], result3['auth_user_id']) channel_invite_v2(result2['token'], channel2['channel_id'], result3['auth_user_id']) message1 = message_send_v2(result1['token'], channel1['channel_id'], 'Hello, how are you?').json() message_send_v2(result1['token'], channel1['channel_id'], 'Hello, how are you?') message_send_v2(result1['token'], channel1['channel_id'], 'Hello, how are you?') message_send_v2(result2['token'], channel2['channel_id'], 'Hello, how are you?') message2 = message_send_v2(result3['token'], channel2['channel_id'], 'Hello, how are you?').json() message_remove_v1(result1['token'], message1['message_id']) message_remove_v1(result3['token'], message2['message_id']) auth_register_v2('*****@*****.**', 'password', 'comp', 'student') output1 = user_stats(result1['token']).json() output2 = user_stats(result2['token']).json() output3 = user_stats(result3['token']).json() output4 = user_stats(result4['token']).json() dreams = users_stats(result1['token']).json() assert len(output1['user_stats']) == 4 assert output1['user_stats']['channels_joined'][-1][ 'num_channels_joined'] == 1 assert output1['user_stats']['dms_joined'][-1]['num_dms_joined'] == 1 assert output1['user_stats']['messages_sent'][-1]['num_messages_sent'] == 3 assert output1['user_stats']['involvement_rate'] == 5 / 7 assert len(output2['user_stats']) == 4 assert output2['user_stats']['channels_joined'][-1][ 'num_channels_joined'] == 1 assert output2['user_stats']['dms_joined'][-1]['num_dms_joined'] == 2 assert output2['user_stats']['messages_sent'][-1]['num_messages_sent'] == 1 assert output2['user_stats']['involvement_rate'] == 4 / 7 assert len(output3['user_stats']) == 4 assert output3['user_stats']['channels_joined'][-1][ 'num_channels_joined'] == 2 assert output3['user_stats']['dms_joined'][-1]['num_dms_joined'] == 2 assert output3['user_stats']['messages_sent'][-1]['num_messages_sent'] == 1 assert output3['user_stats']['involvement_rate'] == 5 / 7 assert len(output4['user_stats']) == 4 assert output4['user_stats']['channels_joined'][-1][ 'num_channels_joined'] == 0 assert output4['user_stats']['dms_joined'][-1]['num_dms_joined'] == 1 assert output4['user_stats']['messages_sent'][-1]['num_messages_sent'] == 0 assert output4['user_stats']['involvement_rate'] == 1 / 7 assert len(dreams['dreams_stats']) == 4 assert dreams['dreams_stats']['channels_exist'][-1][ 'num_channels_exist'] == 2 assert dreams['dreams_stats']['dms_exist'][-1]['num_dms_exist'] == 2 assert dreams['dreams_stats']['messages_exist'][-1][ 'num_messages_exist'] == 3 assert dreams['dreams_stats']['utilization_rate'] == 4 / 5 clear_v1()