예제 #1
0
def test_channels_listall_2_channels(setup1, setup2, setup3):
    data = getData()
    reset_channels()
    ''' Creates a public channel (channel1) (Admin: user1) '''
    channelsCreate1 = channels_create(setup1['token'], "Public Channel", True)
    channelId1 = channelsCreate1['channel_id']
    ''' Creates a private channel (channel2) (Admin: user2) '''
    channelsCreate2 = channels_create(setup2['token'], "Private Channel",
                                      False)
    channelId2 = channelsCreate2['channel_id']

    assert channels_listall(setup1['token']) == {
        'channels': [{
            'channel_id': channelId1,
            'name': 'Public Channel',
        }, {
            'channel_id': channelId2,
            'name': 'Private Channel',
        }]
    }

    # Passing in token 2 will return same output

    assert channels_listall(setup2['token']) == {
        'channels': [{
            'channel_id': channelId1,
            'name': 'Public Channel',
        }, {
            'channel_id': channelId2,
            'name': 'Private Channel',
        }]
    }
def setup_test_search():
    '''set up for test_search'''
    #SET UP START
    user1 = auth_register("*****@*****.**", "GoodPassword1", "Builder", "Bob")
    user2 = auth_register("*****@*****.**", "GoodPassword2", "Super", "Sally")
    user3 = auth_register("*****@*****.**", "GoodPassword3", "Ethan", "Earth")
    user_1 = getUserFromToken(user1['token'])
    user_2 = getUserById(user2['u_id'])
    user_3 = getUserById(user3['u_id'])
    # user 1 promote user 2 to be  an admin
    admin_userpermission_change(user_1['token'], user_2['u_id'], 2)
    # then user 1 create channel name drinkWater
    channels_create(user_1['token'], 'drinkWater', True)
    channel_1 = getChannelByChannelName('drinkWater')
    # user 2 create channel name eatProtein
    channels_create(user_2['token'], 'eatProtein', False)
    channel_2 = getChannelByChannelName('eatProtein')
    # user 1 invite user 2 into drinkWater
    channel_invite(user_1['token'], channel_1['channel_id'], user2['u_id'])
    # user 2 invite user 1 into eatProtein
    channel_invite(user_2['token'], channel_2['channel_id'], user1['u_id'])
    # user 1 sends msg in drinkWate
    message_send(user_1['token'], channel_1['channel_id'],
                 'I\'m getting bored')
    message_send(user_1['token'], channel_1['channel_id'],
                 'ethan getting bored')
    # user 2 sends msg in eatProtein
    message_send(user_2['token'], channel_2['channel_id'], 'mer is boring')
    message_send(user_1['token'], channel_2['channel_id'], 'hollaaaaa')
    #SET UP END
    return data
예제 #3
0
def test_channels_create_invalid_name_private(setup1, setup2, setup3):
    data = getData()
    reset_channels()
    ''' invalid name (> 20 characters) '''
    invalidName = "thisisaninvalidname!!!"
    ''' Error when invalid name entered '''
    with pytest.raises(ValueError_http, match=r".*"):
        channels_create(setup2['token'], invalidName, False)
예제 #4
0
def test_channel_addowner_success(setup1, setup2, setup3):
    data = getData()
    reset_channels()
    ''' Creates a public channel (Admin: user1) '''
    channelsCreate1 = channels_create(setup1['token'], "Public Channel", True)
    channelId1 = channelsCreate1['channel_id']
    ''' User2 joins the channel '''
    channel_join(setup2['token'], channelId1)
    ''' Adds user2 as owner of "Public Channel" '''
    channel_addowner(setup1['token'], channelId1, setup2['u_id'])
    ''' If above line was succesful, will display user2 as an owner when calling channel_details '''
    details = channel_details(setup1['token'], channelId1)
    assert details['owner_members'] == [{
        'u_id':
        setup1['u_id'],
        'name_first':
        "Sojin",
        'name_last':
        "Nam",
        'profile_img_url':
        "https://upload.wikimedia.org/wikipedia/commons/thumb/6/66/An_up-close_picture_of_a_curious_male_domestic_shorthair_tabby_cat.jpg/440px-An_up-close_picture_of_a_curious_male_domestic_shorthair_tabby_cat.jpg"
    }, {
        'u_id':
        setup2['u_id'],
        'name_first':
        "Fairuz",
        'name_last':
        "Alam",
        'profile_img_url':
        "https://upload.wikimedia.org/wikipedia/commons/thumb/6/66/An_up-close_picture_of_a_curious_male_domestic_shorthair_tabby_cat.jpg/440px-An_up-close_picture_of_a_curious_male_domestic_shorthair_tabby_cat.jpg"
    }]
예제 #5
0
def test_channel_details_success(setup1, setup2, setup3):
    data = getData()
    reset_channels()
    ''' Creates a public channel (Admin: user1) '''
    channelsCreate1 = channels_create(setup1['token'], "Public Channel", True)
    channelId1 = channelsCreate1['channel_id']

    assert channel_details(setup1['token'], channelId1) == {
        'name':
        "Public Channel",
        'all_members': [{
            'u_id':
            setup1['u_id'],
            'name_first':
            'Sojin',
            'name_last':
            'Nam',
            'profile_img_url':
            "https://upload.wikimedia.org/wikipedia/commons/thumb/6/66/An_up-close_picture_of_a_curious_male_domestic_shorthair_tabby_cat.jpg/440px-An_up-close_picture_of_a_curious_male_domestic_shorthair_tabby_cat.jpg"
        }],
        'owner_members': [{
            'u_id':
            setup1['u_id'],
            'name_first':
            'Sojin',
            'name_last':
            'Nam',
            'profile_img_url':
            "https://upload.wikimedia.org/wikipedia/commons/thumb/6/66/An_up-close_picture_of_a_curious_male_domestic_shorthair_tabby_cat.jpg/440px-An_up-close_picture_of_a_curious_male_domestic_shorthair_tabby_cat.jpg"
        }]
    }
예제 #6
0
def test_channel_invite_no_user(setup1, setup2, setup3):
    data = getData()
    reset_channels()
    ''' Creates a public channel (Admin: user1) '''
    channelsCreate1 = channels_create(setup1['token'], "Public Channel", True)
    channelId1 = channelsCreate1['channel_id']
    ''' Error when user does not exist'''
    with pytest.raises(ValueError_http, match=r".*"):
        channel_invite(setup1['token'], channelId1, 'wrong')
예제 #7
0
def test_channel_invite_unauthorized(setup1, setup2, setup3):
    data = getData()
    reset_channels()
    ''' Creates a public channel (Admin: user1) '''
    channelsCreate1 = channels_create(setup1['token'], "Public Channel", True)
    channelId1 = channelsCreate1['channel_id']
    ''' Error when authorized user is not a member of channel'''
    with pytest.raises(AccessError, match=r".*"):
        channel_invite(setup2['token'], channelId1, setup3['u_id'])
예제 #8
0
def test_channel_removeowner_unauthorized_user(setup1, setup2, setup3):
    data = getData()
    reset_channels()
    ''' Creates a public channel (Admin: user1) '''
    channelsCreate1 = channels_create(setup1['token'], "Public Channel", True)
    channelId1 = channelsCreate1['channel_id']
    ''' Error when not-an-owner tries to remove another user as an owner'''
    with pytest.raises(AccessError, match=r".*"):
        channel_removeowner(setup2['token'], channelId1, setup1['u_id'])
예제 #9
0
def test_channel_addowner_not_a_member(setup1, setup2, setup3):
    data = getData()
    reset_channels()
    ''' Creates a public channel (Admin: user1) '''
    channelsCreate1 = channels_create(setup1['token'], "Public Channel", True)
    channelId1 = channelsCreate1['channel_id']
    ''' Error when owner tries to make a non-member an owner '''
    with pytest.raises(ValueError_http, match=r".*"):
        channel_addowner(setup1['token'], channelId1, setup2['u_id'])
예제 #10
0
def test_channel_join_unauthorized(setup1, setup2, setup3):
    global data
    reset_channels()
    ''' Creates a private channel (Admin: user1) '''
    channelsCreate2 = channels_create(setup1['token'], "Private Channel",
                                      False)
    channelId2 = channelsCreate2['channel_id']
    ''' Error when unauthorized user joins private channel '''
    with pytest.raises(AccessError, match=r".*"):
        channel_join(setup2['token'], channelId2)
예제 #11
0
def channel_id1(request, reg1, reg2, reg3, reg4):
    data = getData()
    #user1 create a public channel
    channel_id_1 = channels_create(reg1['token'], 'channel1',
                                   True)['channel_id']
    #user2 joins the public channel
    channel_join(reg2['token'], channel_id_1)
    #user4 joins channel 1
    channel_join(reg4['token'], channel_id_1)
    return channel_id_1
예제 #12
0
def test_channel_messages_no_channel(setup1, setup2, setup3):
    data = getData()
    reset_channels()
    # Creates public channel (Admin: user1)
    channelsCreateDict1 = channels_create(setup1['token'], "Public Channel",
                                          True)
    channelId1 = channelsCreateDict1['channel_id']

    # channel doesnt exist
    with pytest.raises(ValueError_http):
        channel_messages(setup1['token'], -1, 10)
예제 #13
0
def test_channel_invite_already_member(setup1, setup2, setup3):
    data = getData()
    reset_channels()
    ''' Creates a public channel (Admin: user1) '''
    channelsCreate1 = channels_create(setup1['token'], "Public Channel", True)
    channelId1 = channelsCreate1['channel_id']

    channel_invite(setup1['token'], channelId1, setup2['u_id'])
    ''' Error user trying to invite is already a member of channel'''
    with pytest.raises(ValueError_http, match=r".*"):
        channel_invite(setup1['token'], channelId1, setup2['u_id'])
예제 #14
0
def test_channel_removeowner_yourself(setup1, setup2, setup3):
    data = getData()
    reset_channels()
    ''' Creates a public channel (Admin: user1) '''
    channelsCreate1 = channels_create(setup1['token'], "Public Channel", True)
    channelId1 = channelsCreate1['channel_id']
    ''' User1 removes attempts to remove themself as an owner '''
    ''' (Assumption) It is impossible to remove yourself as an owner (if you are the only owner) '''

    with pytest.raises(ValueError_http, match=r".*"):
        channel_removeowner(setup1['token'], channelId1, setup1['u_id'])
예제 #15
0
def test_channel_messages_unauthorized(setup1, setup2, setup3):
    data = getData()
    reset_channels()
    # Creates public channel (Admin: user1)
    channelsCreateDict1 = channels_create(setup1['token'], "Public Channel",
                                          True)
    channelId1 = channelsCreateDict1['channel_id']

    # not a member of channel
    with pytest.raises(AccessError):
        channel_messages(setup2['token'], channelId1, 1)
예제 #16
0
def test_channel_leave_success_private(setup1, setup2, setup3):
    data = getData()
    reset_channels()
    ''' Creates a private channel (Admin: user1) '''
    channelsCreate2 = channels_create(setup1['token'], "Private Channel",
                                      False)
    channelId2 = channelsCreate2['channel_id']
    ''' Leave private channel'''
    channel_leave(setup1['token'], channelId2)
    ''' If above line was succesful, channel_list should return an empty list '''
    assert channels_list(setup1['token']) == {'channels': []}
예제 #17
0
def test_channel_leave_success_public(setup1, setup2, setup3):
    data = getData()
    reset_channels()
    # Creates public channel (Admin: user1)
    channelsCreateDict1 = channels_create(setup1['token'], "Public Channel",
                                          True)
    channelId1 = channelsCreateDict1['channel_id']
    ''' Leave public channel '''
    channel_leave(setup1['token'], channelId1)
    ''' If above line was successful, channel_list should return an empty list '''
    assert channels_list(setup1['token']) == {'channels': []}
예제 #18
0
def test_channel_messages_no_message(setup1, setup2, setup3):
    data = getData()
    reset_channels()
    # Creates public channel (Admin: user1)
    channelsCreateDict1 = channels_create(setup1['token'], "Public Channel",
                                          True)
    channelId1 = channelsCreateDict1['channel_id']

    assert channel_messages(setup1['token'], channelId1, 0) == {
        'messages': [],
        'start': 0,
        'end': 0
    }
예제 #19
0
def test_channel_removeowner_no_channel(setup1, setup2, setup3):
    data = getData()
    reset_channels()
    ''' Creates a public channel (Admin: user1) '''
    channelsCreate1 = channels_create(setup1['token'], "Public Channel", True)
    channelId1 = channelsCreate1['channel_id']
    ''' User2 joins the channel '''
    channel_join(setup2['token'], channelId1)
    ''' Adds user2 as owner of "Public Channel" '''
    channel_addowner(setup1['token'], channelId1, setup2['u_id'])
    ''' Error when channel does not exist '''
    with pytest.raises(ValueError_http, match=r".*"):
        channel_removeowner(setup1['token'], -1, setup2['u_id'])
예제 #20
0
def test_channel_addowner_already_owner(setup1, setup2, setup3):
    data = getData()
    reset_channels()
    ''' Creates a public channel (Admin: user1) '''
    channelsCreate1 = channels_create(setup1['token'], "Public Channel", True)
    channelId1 = channelsCreate1['channel_id']
    ''' User2 joins the channel '''
    channel_join(setup2['token'], channelId1)
    ''' Adds user2 as owner of "Public Channel" '''
    channel_addowner(setup1['token'], channelId1, setup2['u_id'])
    ''' Error when trying to add owner that is already an owner '''
    with pytest.raises(ValueError_http, match=r".*"):
        channel_addowner(setup1['token'], channelId1, setup2['u_id'])
예제 #21
0
def test_channel_messages_start_equal(setup1, setup2, setup3):
    data = getData()
    reset_channels()
    # Creates public channel (Admin: user1)
    channelsCreateDict1 = channels_create(setup1['token'], "Public Channel",
                                          True)
    channelId1 = channelsCreateDict1['channel_id']

    message_send(setup1['token'], channelId1, 'sendmessage')

    # start is equal to total messages
    with pytest.raises(ValueError_http):
        channel_messages(setup1['token'], channelId1, 1)
예제 #22
0
def reset_data_standup():
    data = getData()
    data['users'] = []
    user1 = auth_register('*****@*****.**', 'password', 'Sally', 'name')
    user2 = auth_register('*****@*****.**', 'password', 'Bob', 'name')
    user3 = auth_register('*****@*****.**', 'password', 'Bob2', 'name')
    global channel_id
    data['channel'] = []
    for user in data['users']:
        user['joined_channels'] = []
    channel_id = 0
    ch_id = channels_create(user1['token'], 'ch1', True)['channel_id']
    channel_join(user2['token'], ch_id)
    return user1, user2, user3, ch_id
예제 #23
0
def test_channel_invite_success(setup1, setup2, setup3):
    data = getData()
    reset_channels()
    ''' Creates a public channel (Admin: user1) '''
    channelsCreate1 = channels_create(setup1['token'], "Public Channel", True)
    channelId1 = channelsCreate1['channel_id']

    channel_invite(setup1['token'], channelId1, setup2['u_id'])

    assert channels_list(setup2['token']) == {
        'channels': [{
            'channel_id': channelId1,
            'name': 'Public Channel',
        }]
    }
예제 #24
0
def test_channel_join_success_admin(setup1, setup2, setup3):
    data = getData()
    reset_channels()
    ''' Creates a public channel (Admin: user1) '''
    channelsCreate1 = channels_create(setup1['token'], "Public Channel", True)
    channelId1 = channelsCreate1['channel_id']
    ''' Join public channel '''
    channel_join(tokenize('*****@*****.**'), channelId1)

    assert channels_list(setup1['token']) == {
        'channels': [{
            'channel_id': channelId1,
            'name': "Public Channel",
        }]
    }
예제 #25
0
def test_channels_list_two_channels(setup1, setup2, setup3):
    data = getData()
    reset_channels()
    ''' Creates a public channel (channel 1) (Admin: user1) '''
    channelsCreate1 = channels_create(setup1['token'], "Public Channel", True)
    channelId1 = channelsCreate1['channel_id']
    ''' Creates a private channel (channel 2) (Admin: user1) '''
    channelsCreate2 = channels_create(setup2['token'], "Private Channel",
                                      False)
    channelId2 = channelsCreate2['channel_id']

    assert channels_list(setup1['token']) == {
        'channels': [{
            'channel_id': channelId1,
            'name': 'Public Channel',
        }]
    }

    assert channels_list(setup2['token']) == {
        'channels': [{
            'channel_id': channelId2,
            'name': 'Private Channel',
        }]
    }
예제 #26
0
def test_channels_create_success_private(setup1, setup2, setup3):
    data = getData()
    reset_channels()
    ''' valid name '''
    validName2 = "anothername"
    ''' Creating a private channel '''
    channelsCreate2 = channels_create(setup1['token'], validName2, False)
    channelId2 = channelsCreate2['channel_id']
    ''' If the above was successful, it will display the channel when calling channels_listall'''
    assert channels_listall(setup1['token']) == {
        'channels': [{
            'channel_id': channelId2,
            'name': validName2
        }]
    }
예제 #27
0
def test_channels_list_one_channel(setup1, setup2, setup3):
    data = getData()
    reset_channels()
    ''' Creates a public channel (channel1) (Admin: user1) '''
    channelsCreate1 = channels_create(setup1['token'], "Public Channel", True)
    channelId1 = channelsCreate1['channel_id']

    assert channels_list(setup1['token']) == {
        'channels': [{
            'channel_id': channelId1,
            'name': 'Public Channel',
        }]
    }

    # Passing in token 2 will return empty list
    assert channels_list(setup2['token']) == {'channels': []}
예제 #28
0
def test_channels_create_success_public(setup1, setup2, setup3):
    data = getData()
    reset_channels()
    ''' valid name '''
    validName1 = "validname"
    ''' Creating a public channel '''
    channelsCreate1 = channels_create(setup1['token'], validName1, True)
    channelId1 = channelsCreate1['channel_id']
    ''' Confirm that created channel is public by attempting to add unauthorized user '''
    channel_join(setup2['token'], channelId1)
    ''' If the above was successful, it will display the channel when calling channels_listall '''
    assert channels_listall(setup1['token']) == {
        'channels': [{
            'channel_id': channelId1,
            'name': validName1,
        }]
    }
예제 #29
0
def test_channel_messages_success_less_than_fifty(setup1, setup2, setup3):
    data = getData()
    reset_channels()
    # Creates public channel (Admin: user1)
    channelsCreateDict1 = channels_create(setup1['token'], "Public Channel",
                                          True)
    channelId1 = channelsCreateDict1['channel_id']

    i = 0
    message_send(setup1['token'], channelId1, 'oldest')
    while i < 30:
        message_send(setup1['token'], channelId1, 'hello')
        i += 1
    message_send(setup1['token'], channelId1, 'recent')

    assert len(channel_messages(setup1['token'], channelId1,
                                1)['messages']) == 31
    assert channel_messages(setup1['token'], channelId1,
                            1)['messages'][0]['message'] == 'hello'
    assert channel_messages(setup1['token'], channelId1,
                            1)['messages'][30]['message'] == 'oldest'
예제 #30
0
def test_channels_list_user2_joins(setup1, setup2, setup3):
    data = getData()
    reset_channels()
    ''' Creates a public channel (channel1) (Admin: user1) '''
    channelsCreate1 = channels_create(setup1['token'], "Public Channel", True)
    channelId1 = channelsCreate1['channel_id']

    assert channels_list(setup1['token']) == {
        'channels': [{
            'channel_id': channelId1,
            'name': 'Public Channel',
        }]
    }
    ''' User2 joins channel1 '''
    channel_join(setup2['token'], channelId1)

    assert channels_list(setup2['token']) == {
        'channels': [{
            'channel_id': channelId1,
            'name': 'Public Channel',
        }]
    }