def create_valid_user_data(): """ Creates and returns a set of valid users. """ clear_v1() user1 = auth_register_v2('*****@*****.**', '123abc!@#', 'a', 'b') user2 = auth_register_v2('*****@*****.**', '123abc!@#', 'c', 'd') user3 = auth_register_v2('*****@*****.**', '123abc!@#', 'e', 'f') user4 = auth_register_v2('*****@*****.**', '123abc!@#', 'g', 'h') users = [user1, user2, user3, user4] # Create 3 channels with owners user1, user2 & user3 respectively channel_1 = channels_create_v2(user1['token'], "General", True) channel_2 = channels_create_v2(user2['token'], "Music", True) channel_3 = channels_create_v2(user3['token'], "Study", True) # User2, user3 all join channel1 channel_join_v2(user2['token'], channel_1['channel_id']) channel_join_v2(user3['token'], channel_1['channel_id']) # User4 join channel2 channel_join_v2(user4['token'], channel_2['channel_id']) # User1 join channel3 channel_join_v2(user1['token'], channel_3['channel_id']) channels = [channel_1, channel_2, channel_3] return {'users': users, 'channels': channels}
def test_data(): clear_v1() a_data = auth_register_v2('*****@*****.**', '123456', 'Andy', 'Anderson') b_data = auth_register_v2('*****@*****.**', '123456', 'Bob', 'Bobinson') c_data = auth_register_v2('*****@*****.**', '123456', 'Chris', 'Con') return a_data, b_data, c_data
def create_dms(): clear_v1() user1 = auth_register_v2('*****@*****.**', '123abc!@#', 'a', 'b') user2 = auth_register_v2('*****@*****.**', '123abc!@#', 'c', 'd') user3 = auth_register_v2('*****@*****.**', '123abc!@#', 'e', 'f') user4 = auth_register_v2('*****@*****.**', '123abc!@#', 'g', 'h') users = [user1, user2, user3, user4] user_list = [] user_list.append(users[1]['auth_user_id']) user_list.append(users[2]['auth_user_id']) dm_1 = dm_create_v1(users[0]['token'], user_list)#create dm 1 user_list = [] user_list.append(users[0]['auth_user_id']) dm_2 = dm_create_v1(users[1]['token'], user_list)#create dm 2 user_list = [] user_list.append(users[0]['auth_user_id']) user_list.append(users[1]['auth_user_id']) user_list.append(users[2]['auth_user_id']) dm_3 = dm_create_v1(users[3]['token'], user_list)#create dm 3 return {'users': users, 'dms': [dm_1, dm_2, dm_3]}
def test_data(): """ channel a owners a members a, b channel c owners c members c """ clear_v1() global_owner = auth_register_v2('*****@*****.**', '123456', 'Global', 'Owner') a_data = auth_register_v2('*****@*****.**', '123456', 'Andy', 'Anderson') b_data = auth_register_v2('*****@*****.**', '123456', 'Bob', 'Bobinson') c_data = auth_register_v2('*****@*****.**', '123456', 'Chris', 'Con') # Channel that only 'a' and 'b' are in a_ch_id = channels_create_v2(a_data["token"], 'A\'s Public', True)['channel_id'] # b to join channel a channel_join_v2(b_data["token"], a_ch_id) c_ch_id = channels_create_v2(c_data["token"], 'C\'s Public', True)['channel_id'] return global_owner, a_data, b_data, c_data, a_ch_id, c_ch_id
def test_invalid_password_length(): ''' Password entered is less than 6 characters long ''' clear_v1() with pytest.raises(InputError): auth_register_v2('*****@*****.**', 'abc12', 'Rengoku', 'Kyojuro')
def test_email_invalid(): ''' Email entered is not a valid email ''' clear_v1() with pytest.raises(InputError): auth_register_v2('0914rengoku.gmail.com', 'asdjf~!', 'Rengoku', 'Kyojuro')
def test_invalid_email_register(): clear_v1() with pytest.raises(InputError): auth_register_v2('invalidemailgmail.com', '123abc!@#', 'Comp', 'Student') auth_register_v2('invalid#[email protected]', '123abc!@#', 'Comp', 'Student') clear_v1()
def test_message_senddm_invalid_dm_id(): # InputError if dm_id given is invalid clear_v1() DM_owner = auth_register_v2('*****@*****.**', 'password123', 'Jordy', 'Eli') user_receiver = auth_register_v2('*****@*****.**', 'password123', 'John', 'Lam') dm_create_v1(DM_owner['token'], [user_receiver['auth_user_id']]) with pytest.raises(InputError): message_senddm_v1(DM_owner['token'], -1, 'sup')
def test_data(): clear_v1() global_owner = auth_register_v2('*****@*****.**', "12345678", "Global", "Owner") a_data = auth_register_v2('*****@*****.**', '123456', 'Andy', 'Anderson') b_data = auth_register_v2('*****@*****.**', '123456', 'Bob', 'Bobinson') c_data = auth_register_v2('*****@*****.**', '123456', 'Chris', 'Con') return global_owner, a_data, b_data, c_data
def test_auth_passwordreset_reset_invalid_password_less_than_6_characters(): clear_v2() auth_register_v2("*****@*****.**", "iteration3", "cameron", "burrell") email = "*****@*****.**" auth_passwordreset_request_v1(email) test_reset_code = "test" with pytest.raises(InputError): auth_passwordreset_reset_v1(test_reset_code, "hdwd")
def test_invalid_token(): clear_v1() result1 = auth_register_v2('*****@*****.**', 'password', 'comp', 'student') auth_register_v2('*****@*****.**', 'password', 'comp', 'student') channels_create_v2(result1['token'], "The party channel 1", True) channels_create_v2(result1['token'], "The party channel 2", True) with pytest.raises(AccessError): user_stats('abcdef')
def test_incorrect_password(): ''' Password is not correct ''' clear_v1() auth_register_v2('*****@*****.**', 'asdjf~!', 'Rengoku', 'Kyojuro') with pytest.raises(InputError): auth_login_v2('*****@*****.**', 'wakanda123')
def test_message_senddm_msg_too_long(): # InputError when message is more than 1000 characters clear_v1() DM_owner = auth_register_v2('*****@*****.**', 'password123', 'Roger', 'Rogerson') user_receiver = auth_register_v2('*****@*****.**', 'password123', 'Billy', 'Batson') DM = dm_create_v1(DM_owner['token'], [user_receiver['auth_user_id']]) with pytest.raises(InputError): message_senddm_v1(DM_owner['token'], DM['dm_id'], "E"*1001)
def test_multiple_owner(): clear_v1() user_1 = auth_register_v2('*****@*****.**', 'OKOKOK12', 'Polo', 'G') user_2 = auth_register_v2('*****@*****.**', 'OKOKOK12', 'Polo', 'G') userpermission_change_v1(user_1["token"], user_2["auth_user_id"], 1) user_remove_v1(user_2["token"], user_1["auth_user_id"])
def test_invalid_token(): clear_v1() auth_register_v2('*****@*****.**', 'password', 'comp', 'student') with pytest.raises(AccessError): user_profile_uploadphoto_v1( 'abcdef', 'https://media.vanityfair.com/photos/5a9069131d14714f6de43ff5/7:3/w_1995,h_855,c_limit/tout-and-lede_Lisa-Simpson.jpg', 0, 0, 200, 200)
def test_message_senddm_invalid_token(): # AccessError should arise if passing invalid token clear_v1() DM_owner = auth_register_v2('*****@*****.**', 'password123', 'Jerry', 'Tin') user_receiver = auth_register_v2('*****@*****.**', 'password123', 'Shelly', 'Tin') DM = dm_create_v1(DM_owner['token'], [user_receiver['auth_user_id']]) with pytest.raises(AccessError): message_senddm_v1(-1, DM['dm_id'], 'yo what up')
def test_auth_login_v2_incorrect_password(user_details): clear_v2() email, pwd, fName, lName = user_details auth_register_v2(email, pwd, fName, lName) password = "******" with pytest.raises(InputError): auth_login_v2(email, password)
def test_assorted_notifications(): 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_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) 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) message_react_v1(user1['token'], msg2['message_id'], 1) assert notifications_get_v1(user1['token']) == { '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']) == { '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_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_invalid_u_id(): ''' InputError when u_id does not refer to a valid user ''' clear_v1() user_1 = auth_register_v2('*****@*****.**', 'OKOKOK12', 'Polo', 'G') auth_register_v2('*****@*****.**', 'boogie123', 'Luffy', 'Monkey') with pytest.raises(InputError): user_remove_v1(user_1['token'], 123)
def test_auth_login_v2_no_user(user_details): clear_v2() email, pwd, fName, lName = user_details auth_register_v2(email, pwd, fName, lName) unused_email = "*****@*****.**" unused_password = "******" with pytest.raises(InputError): auth_login_v2(unused_email, unused_password)
def test_senddm_invalid_input(): 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']]) with pytest.raises(InputError): message_senddm_v1(user_1['token'], dm_1['dm_id'], 'a' * 1001) message_senddm_v1(user_1['token'], dm_1['dm_id'], 'b' * 1001) message_senddm_v1(user_1['token'], dm_1['dm_id'], 'b' * 1001)
def test_message_senddm_user_not_in_dm_group(): # AccessError should arise if user is not a member of the DM group clear_v1() DM_owner = auth_register_v2('*****@*****.**', 'password123', 'Sheldon', 'Andie') user_receiver = auth_register_v2('*****@*****.**', 'password123', 'Roger', 'Allie') user_random = auth_register_v2('*****@*****.**', 'password123', 'Billy', 'Bobby') DM = dm_create_v1(DM_owner['token'], [user_receiver['auth_user_id']]) with pytest.raises(AccessError): message_senddm_v1(user_random['token'], DM['dm_id'], 'can i join plz')
def test_invalid_reset_code(): ''' reset_code is not a valid reset code ''' clear_v1() auth_register_v2('*****@*****.**', 'asdjf~!', 'Rengoku', 'Kyojuro') auth_passwordreset_request_v1('*****@*****.**') with pytest.raises(InputError): auth_passwordreset_reset_v1('11111111', 'babus1337')
def test_not_in_channel(): 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_2 = channels_create_v2(user_1['token'], 'Channel 2', True) with pytest.raises(AccessError): message_send_v2(user_1['token'], channel_2['channel_id'], 'Hey!') message_send_v2(user_2['token'], channel_1['channel_id'], 'Imposter')
def test_message_send_user_not_in_channel(): # Test if AccessError is raised when user tries to leave a group # that they are not a member of clear_v1() user_owner = auth_register_v2('*****@*****.**', 'password2321', 'Irwin', 'Dundee') user = auth_register_v2('*****@*****.**', 'password2321232', 'Roland', 'Tiddle') channel = channels_create_v2(user_owner['token'], 'Irwins Channel', True) with pytest.raises(AccessError): message_send_v2(user['token'], channel['channel_id'], 'can i join pls')
def test_multiple_errors(): 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_2 = channels_create_v2(user_1['token'], 'Channel 2', True) with pytest.raises(InputError): message_send_v2(user_1['token'], channel_2['channel_id'], 'a' * 1001) message_send_v2(user_2['token'], channel_1['channel_id'], 'b' * 1001)
def test_auth_login_v2_invalid_email(user_details): clear_v2() email, pwd, fName, lName = user_details auth_register_v2(email, pwd, fName, lName) invalid_email = "ankitrai326.com" test_password = "******" with pytest.raises(InputError): auth_login_v2(invalid_email, test_password)
def test_senddm_invalid_access(): 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') dm_1 = dm_create_v1(user_1['token'], [user_2['auth_user_id']]) with pytest.raises(AccessError): message_senddm_v1(user_3['token'], dm_1['dm_id'], 'Sliding in') message_senddm_v1(user_3['token'], dm_1['dm_id'], 'Back again')
def test_handle_with_name_over_20_characters_and_trailing_int(): clear_v1() auth_register_v2('*****@*****.**', 'random', 'Jordan', 'Milchabcdefghijk') user_2 = auth_register_v2('*****@*****.**', 'random', 'Jordan', 'Milchabcdefghijk') output = user_profile_v2(user_2['token'], user_2['auth_user_id']) assert output['user']['handle_str'] == 'jordanmilchabcdefgh0' clear_v1()