def test_no_notifications(): """ Assume that notifications_get_v1 returns an empty dictionary of list when there are no notifiactions to display """ clear_v1() user_1 = auth_register_v2("*****@*****.**", "finalpassword", "Eric", "Zheng").json() user_2 = auth_register_v2("*****@*****.**", "validpassword", "Josh", "Hatton").json() user_3 = auth_register_v2("*****@*****.**", "anotherpassword", "Bunny", "Dong").json() user_4 = auth_register_v2("*****@*****.**", "password3", "Jordan", "Milch").json() user_5 = auth_register_v2("*****@*****.**", "4thpassword", "Dean", "Zworestine").json() assert notifications_get_v1(user_1['token']).json() == { 'notifications': [] } assert notifications_get_v1(user_2['token']).json() == { 'notifications': [] } assert notifications_get_v1(user_3['token']).json() == { 'notifications': [] } assert notifications_get_v1(user_4['token']).json() == { 'notifications': [] } assert notifications_get_v1(user_5['token']).json() == { 'notifications': [] }
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_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_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 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_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_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 test_added_to_dm(create_input): """ Tests the expected return value when a user is added to a channel """ user_1, user_2, user_3, user_4, user_5 = create_input[0] user_1_handle, _, user_3_handle, _, user_5_handle = create_input[1] dm_1, dm_2, dm_3 = create_input[3] dm_invite_v1(user_1['token'], dm_1['dm_id'], user_3['auth_user_id']) dm_invite_v1(user_1['token'], dm_1['dm_id'], user_5['auth_user_id']) dm_invite_v1(user_3['token'], dm_2['dm_id'], user_1['auth_user_id']) dm_invite_v1(user_3['token'], dm_2['dm_id'], user_2['auth_user_id']) dm_invite_v1(user_5['token'], dm_3['dm_id'], user_4['auth_user_id']) assert notifications_get_v1(user_1['token']).json() == { 'notifications': [ { '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_2['token']).json() == { 'notifications': [{ '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']}" }, { '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': -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_4['token']).json() == { 'notifications': [{ '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_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': -1, 'dm_id': dm_1['dm_id'], 'notification_message': f"{user_1_handle['user']['handle_str']} added you to {dm_1['dm_name']}" }, ] }
def test_dm_tagged_user(create_input): """ Tests correct returns of notifications when user is tagged in a dm """ 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] dm_1, dm_2, dm_3 = create_input[3] message_2 = f"@{user_2_handle['user']['handle_str']}, can you send me homework answers from yesterday please? Thanks!" message_4 = f"@{user_4_handle['user']['handle_str']} is cool." message_senddm_v1(user_1['token'], dm_1['dm_id'], message_2) message_senddm_v1(user_3['token'], dm_2['dm_id'], message_4) message_senddm_v1(user_5['token'], dm_3['dm_id'], message_2) assert notifications_get_v1(user_2['token']).json() == { 'notifications': [{ 'channel_id': -1, 'dm_id': dm_3['dm_id'], 'notification_message': f"{user_5_handle['user']['handle_str']} tagged you in {dm_3['dm_name']}: {message_2[0:20]}" }, { 'channel_id': -1, 'dm_id': dm_1['dm_id'], 'notification_message': f"{user_1_handle['user']['handle_str']} tagged you in {dm_1['dm_name']}: {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_4['token']).json() == { 'notifications': [{ 'channel_id': -1, 'dm_id': dm_2['dm_id'], 'notification_message': f"{user_3_handle['user']['handle_str']} tagged you in {dm_2['dm_name']}: {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']}" }] }
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]}" }] }