예제 #1
0
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
예제 #3
0
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'
    }]
예제 #5
0
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']
예제 #6
0
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'
    }]
예제 #7
0
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
예제 #8
0
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']
예제 #9
0
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)
예제 #10
0
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) == {}
예제 #11
0
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)
예제 #12
0
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)
예제 #14
0
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)
예제 #15
0
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)
예제 #16
0
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)
예제 #17
0
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)
예제 #18
0
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)
예제 #19
0
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'],
        })
예제 #20
0
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)
예제 #21
0
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)
예제 #22
0
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)
예제 #23
0
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']
        })
예제 #24
0
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",
        }]
    }
예제 #25
0
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)
예제 #26
0
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'
        })
예제 #27
0
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)
예제 #29
0
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)
예제 #30
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']