def test_user_profile_sethandle_already_used(): workspace_reset() details1 = reg_user1() token1 = details1['token'] uid1 = details1['u_id'] details2 = reg_user2() token2 = details2['token'] uid2 = details2['u_id'] valid_handle = "ValidHandle" #test handle already used payload1 = {'token': token1, 'handle_str': valid_handle} payload2 = {'token': token1, 'u_id': uid1} payload3 = {'token': token2, 'handle_str': valid_handle} user_profile_sethandle(payload1) assert (user_profile(payload2) == {}) with pytest.raises(InputError): user_profile_sethandle(payload3)
def test_listall(): 'testing functionability of channels listall' workspace_reset() ret = register_and_create() user1 = ret['user'] token = user1['token'] user2 = reg_user2() #user2 creating a channel payload1 = { 'token': user2['token'], 'name': 'Slackrs', 'is_public': True } result1 = channels.create(payload1) # pylint: disable=W0612 result2 = channels.Listall(token) # pylint: disable=C0304 expected1 = { 'channel_id' : 1, 'name': 'firstChannel' } expected2 = { 'channel_id': 2, 'name': 'Slackrs' } assert expected1 in result2 assert expected2 in result2
def test_unauthor_member(): 'testing error case' workspace_reset() ret = register_and_create() user = ret['user'] channel = ret['channel'] user2 = reg_user2() payload = { 'token': user['token'], 'channel_id': channel['channel_id'], 'length': 30 } result = standup.start(payload) # pylint: disable=W0612 payload2 = {'token': user['token'], 'channel_id': channel['channel_id']} result2 = standup.active(payload2) # pylint: disable=W0612 with pytest.raises(AccessError): standup.send({ 'token': user2['token'], 'channel_id': channel['channel_id'], 'message': 'test' }) # pylint: disable=C0304
def test_channel_remove_owner(): 'Normal case' workspace_reset() ret = register_and_create() user1 = ret['user'] token1 = user1['token'] u_id1 = user1['u_id'] channel_info = ret['channel'] user2 = reg_user2() token2 = user2['token'] u_id2 = user2['u_id'] channel_id = channel_info['channel_id'] channel.join(token2, channel_id) channel.addowner(token1, channel_id, u_id2) # User2 removes user1 as owner channel.removeowner(token2, channel_id, u_id1) assert channel.details(token1, channel_id)['owner_members'] == [{ "u_id": u_id2, "name_first": 'Cindy', "name_last": 'Tran' }]
def test_unreact(): ''' Test a valid case of message_unreact to a message someone else had sent ''' workspace_reset() user1 = reg_user1() user2 = reg_user2() channel1 = create_ch1(user1) invite_to_ch1(user1, user2, channel1) msg1 = send_msg1(user1, channel1) # react to the message react_to_msg(1, msg1, user2) payload = { 'token': user2['token'], 'message_id': msg1['message_id'], 'react_id': 1 } message.unreact(payload) message1_reacts = find_message(msg1['message_id'])['reacts'] for i in message1_reacts: if i['react_id'] == 1: assert user2['u_id'] not in i['u_ids']
def test_channel_leave_successful(): 'Sucessful case' workspace_reset() ret = register_and_create() user1 = ret['user'] token1 = user1['token'] u_id1 = user1['u_id'] channel_info = ret['channel'] channel_id = channel_info['channel_id'] user2 = reg_user2() token2 = user2['token'] channel.join(token2, channel_id) channel.leave(token2, channel_id) assert channel.details(token1, channel_id)['name'] == 'firstChannel' assert channel.details(token1, channel_id)['owner_members'] == [{ 'u_id': u_id1, 'name_first': 'Kennan', 'name_last': 'Wong' }] assert channel.details(token1, channel_id)['all_members'] == [{ 'u_id': u_id1, 'name_first': 'Kennan', 'name_last': 'Wong' }]
def test_bad_token(): ''' Test logout on a bad token ''' reset_auth_store() reg_user1() user2 = reg_user2() auth.logout(user2) assert auth.logout(user2) == False
def test_admin_user_remove_successful3(): 'Successful case with messages' workspace_reset() channel_store = get_channel_data_store() messages_store = get_messages_store() ret = register_and_create() user1 = ret['user'] token1 = user1['token'] u_id1 = user1['u_id'] user2 = reg_user2() token2 = user2['token'] u_id2 = user2['u_id'] channel_info = ret['channel'] channel_id = channel_info['channel_id'] channel.join(token2, channel_id) payload = {'token': token1, 'u_id': u_id2} msg1 = send_msg1(user2, channel_info) # Remove user1 from slackr user_remove(payload) user2_dets = user_details(u_id2) channel_info = ret['channel'] channel_id = channel_info['channel_id'] for curr_channel in channel_store: channel_id = curr_channel['channel_id'] if user2_dets in curr_channel['members']: assert channel.details(token1, channel_id)['all_members'] == [{ "u_id": u_id1, "name_first": 'Kennan', "name_last": 'Wong' }] if user2_dets in curr_channel['owners']: assert channel.details(token1, channel_id)['owner_members'] == [{ "u_id": u_id1, "name_first": 'Kennan', "name_last": 'Wong' }] assert msg1 not in messages_store assert msg1 not in channel_info['messages']
def test_channel_join_invalid_channel(): 'Invalid channel case' workspace_reset() ret = register_and_create() channel_info = ret['channel'] user2 = reg_user2() token2 = user2['token'] # InputError when user2 tries to join an invalid channel # Invalid channel_id = 100 with pytest.raises(InputError) as e: channel.join(token2, 100)
def test_channel_invite_successful(): 'Successful case' workspace_reset() ret = register_and_create() user1 = ret['user'] token1 = user1['token'] channel_info = ret['channel'] user2 = reg_user2() u_id2 = user2['u_id'] channel_id = channel_info['channel_id'] assert channel.invite(token1, channel_id, u_id2) == {}
def test_admin_user_remove_successful1(): 'Successful case with registering' workspace_reset() user1 = reg_user1() token1 = user1['token'] u_id1 = user1['u_id'] user2 = reg_user2() token2 = user2['token'] u_id2 = user2['u_id'] payload = {'token': token1, 'u_id': u_id2} # Remove user1 from slackr user_remove(payload)
def test_channel_invite_invalid_channel(): 'Invalid channel case' workspace_reset() ret = register_and_create() user1 = ret['user'] token1 = user1['token'] channel_info = ret['channel'] user2 = reg_user2() u_id2 = user2['u_id'] # InputError when user2 is invited to an invalid channel # Invalid channel_id = 100 with pytest.raises(InputError) as e: channel.invite(token1, 100, u_id2)
def test_not_owner2(): 'Non-owner case' workspace_reset() ret = register_and_create() user1 = ret['user'] u_id1 = user1['u_id'] channel_info = ret['channel'] user2 = reg_user2() token2 = user2['token'] channel_id = channel_info['channel_id'] with pytest.raises(AccessError) as e: channel.removeowner(token2, channel_id, u_id1)
def test_unauthorised_slackr(): 'Authorised user is not an owner of slackr case' workspace_reset() user1 = reg_user1() u_id1 = user1['u_id'] user2 = reg_user2() token2 = user2['token'] payload = {'token': token2, 'u_id': u_id1} if not check_owner_slackr(token2): # AccessError when authorised user isn't an owner and tries to remove someone from the # slackr with pytest.raises(AccessError) as e: user_remove(payload)
def test_channel_details_unauthorised(): 'User is not a member case' workspace_reset() ret = register_and_create() user2 = reg_user2() token2 = user2['token'] channel_info = ret['channel'] channel_id = channel_info['channel_id'] # AccessError when we try to get details of channel where the user isn't a member # user2 isn't a member with pytest.raises(AccessError) as e: channel.details(token2, channel_id)
def test_channel_join_private(): 'Private channel case' workspace_reset() user1 = reg_user1() payload = {'token': user1['token'], 'name': 'Slackrs', 'is_public': False} pvt_channel = channels.create(payload) channel_id = pvt_channel['channel_id'] user2 = reg_user2() token2 = user2['token'] # AccessError when user2 tries to join channel where the authorised user # isn't an admin with pytest.raises(AccessError) as e: channel.join(token2, channel_id)
def test_channel_invite_unauthorised(): 'User is not a member case' workspace_reset() ret = register_and_create() user1 = ret['user'] channel_info = ret['channel'] user2 = reg_user2() token2 = user2['token'] user3 = reg_user3() u_id3 = user3['u_id'] channel_id = channel_info['channel_id'] # AccessError when authorised user is not a member of the channel # user2 invites user3 after user1 creates the channel with pytest.raises(AccessError) as e: channel.invite(token2, channel_id, u_id3)
def test_not_in_channel(): ''' Test a user reacting to a message in a channel they are not a part of ''' workspace_reset() user1 = reg_user1() user2 = reg_user2() channel1 = create_ch1(user1) msg1 = send_msg1(user1, channel1) payload = { 'token': user2['token'], 'message_id': msg1['message_id'], 'react_id': 1 } with pytest.raises(InputError): message.react(payload)
def test_unauthor_member(): 'testing error case' workspace_reset() ret = register_and_create() user = ret['user'] channel1 = ret['channel'] user2 = reg_user2() msg1 = send_msg1(user, channel1) with pytest.raises(AccessError): message.pin({ 'token': user2['token'], 'message_id': msg1['message_id'], })
def test_channel_leave_unauthorised(): 'User is not a member' workspace_reset() ret = register_and_create() user1 = ret['user'] token1 = user1['token'] channel_info = ret['channel'] user2 = reg_user2() token2 = user2['token'] channel_id = channel_info['channel_id'] # AccessError when authorised user is not a member of channel they are # trying to leave from # user2 isn't a member with pytest.raises(AccessError) as e: channel.leave(token2, channel_id)
def test_invalid_channel(): 'Invalid channel case' workspace_reset() ret = register_and_create() user1 = ret['user'] token1 = user1['token'] channel_info = ret['channel'] user2 = reg_user2() token2 = user2['token'] u_id2 = user2['u_id'] channel_id = channel_info['channel_id'] channel.join(token2, channel_id) # Invalid channel_id = 100 with pytest.raises(InputError): channel.addowner(token1, 100, u_id2)
def test_not_owner(): 'Non-owner case' workspace_reset() ret = register_and_create() user1 = ret['user'] channel_info = ret['channel'] user2 = reg_user2() token2 = user2['token'] user3 = reg_user3() token3 = user3['token'] u_id3 = user3['u_id'] channel_id = channel_info['channel_id'] channel.join(token3, channel_id) # AccessError when non-owner tries to make user3 as owner with pytest.raises(AccessError): channel.addowner(token2, channel_id, u_id3)
def test_unauth_remove2(): ''' Attempting remove another users message in a channel they are not a part of ''' workspace_reset() ret = register_and_create() user1 = ret['user'] channel1 = ret['channel'] user2 = reg_user2() msg1 = send_msg1(user1, channel1) with pytest.raises(AccessError): message.remove({ 'token': user2['token'], 'message_id': msg1['message_id'] })
def test_users_all_working(): workspace_reset() details1 = reg_user1() token1 = details1['token'] uid1 = details1['u_id'] user_profile_sethandle(token1, "handleOne") details2 = reg_user2() token2 = details2['token'] uid2 = details2['u_id'] user_profile_sethandle(token2, "handleTwo") # test if the function works properly list_user = users_all(token1) # List of dictionaries, where each dictionary contains types # u_id, email, name_first, name_last, handle_str #userOne = list_user #print (userOne) #assert (userOne['u_id'] == uid1) #assert (userOne['email'] == "*****@*****.**") #assert (userOne['name_first'] == "firstOne") #assert (userOne['name_last'] == "lastOne") #assert (userOne['handle_str'] == "handleOne") print(list_user) assert list_user == {'users': [{ 'u_id': 'uid1', 'email' : '*****@*****.**', 'name_first': 'Kennan', 'name_last': 'Wong' 'handle_str': "handleOne", },{ 'u_id': 'uid2', 'email' : '*****@*****.**', 'name_first': 'Cindy', 'name_last': 'Tran' 'handle_str': "handleTwo", }] }
def test_channel_invite_existing_user(): 'Existing user case' workspace_reset() ret = register_and_create() user1 = ret['user'] token1 = user1['token'] channel_info = ret['channel'] user2 = reg_user2() u_id2 = user2['u_id'] channel_id = channel_info['channel_id'] # Invite user2 channel.invite(token1, channel_id, u_id2) # InputError when user tries to invite someone who is already a member of # the channel with pytest.raises(InputError) as e: channel.invite(token1, channel_id, u_id2)
def test_unauth_edit2(): ''' Someone attempting to edit a message in a channel they are not a part of ''' workspace_reset() ret = register_and_create() user1 = ret['user'] channel1 = ret['channel'] user2 = reg_user2() msg1 = send_msg1(user1, channel1) with pytest.raises(AccessError): message.edit({ 'token': user2['token'], 'message_id': msg1['message_id'], 'message': 'edit' })
def test_already_owner(): 'Already an owner case' workspace_reset() ret = register_and_create() user1 = ret['user'] token1 = user1['token'] channel_info = ret['channel'] user2 = reg_user2() token2 = user2['token'] u_id2 = user2['u_id'] channel_id = channel_info['channel_id'] channel.join(token2, channel_id) channel.addowner(token1, channel_id, u_id2) # InputError because user2 is already an owner with pytest.raises(InputError): channel.addowner(token1, channel_id, u_id2)
def test_userid_not_owner(): 'User is not an owner case' workspace_reset() ret = register_and_create() user1 = ret['user'] token1 = user1['token'] channel_info = ret['channel'] user2 = reg_user2() token2 = user2['token'] u_id2 = user2['u_id'] channel_id = channel_info['channel_id'] channel.join(token2, channel_id) channel.addowner(token1, channel_id, u_id2) # Invalid user_id = 100 with pytest.raises(InputError) as e: channel.removeowner(token2, channel_id, 100)
def test_channel_messages_unauthorised(): 'User is not a member case' workspace_reset() ret = register_and_create() user1 = ret['user'] token1 = user1['token'] channelInfo = ret['channel'] channel_id = channelInfo['channel_id'] user2 = reg_user2() token2 = user2['token'] payload = {'token': token1, 'channel_id': channel_id, 'message': "hello"} # Send message message.send(payload) # AccessError when user sends message to channel they aren't a member of # user2 isn't a member with pytest.raises(AccessError) as e: channel.messages(token2, channel_id, 0)
def test_remove2(): ''' The admin of a channel is attempting to remove a message ''' workspace_reset() messages_store = get_messages_store() #register user1 and create channel1 ret = register_and_create() user1 = ret['user'] channel1 = ret['channel'] user2 = reg_user2() channel.invite(user1['token'], channel1['channel_id'], user2['u_id']) msg1 = send_msg1(user2, channel1) message.remove({'token': user1['token'], 'message_id': msg1['message_id']}) assert msg1 not in messages_store assert msg1 not in channel1['messages']