Beispiel #1
0
def test_channel_leave_stat():
    clear_v1()    
    result1 = auth_register_v2('*****@*****.**', 'password', 'comp', 'student')
    result2 = auth_register_v2('*****@*****.**', 'password', 'comp', 'student')
    channel1 = channels_create_v2(result2['token'], "The party channel 1", True)
    channel_addowner_v1(result2['token'], channel1['channel_id'], result1['auth_user_id'])
    channel_leave_v1(result2['token'], channel1['channel_id'])
 
    output = user_stats(result1['token'])
    output1 = user_stats(result2['token'])
    dreams = users_stats(result1['token'])

    

    assert len(output['user_stats']) == 4
    assert output['user_stats']['channels_joined'][-1]['num_channels_joined'] == 1
    assert output['user_stats']['dms_joined'][-1]['num_dms_joined'] == 0
    assert output['user_stats']['messages_sent'][-1]['num_messages_sent'] == 0
    assert output['user_stats']['involvement_rate'] == 1

    assert len(output1['user_stats']) == 4
    assert output1['user_stats']['channels_joined'][-1]['num_channels_joined'] == 0
    assert output1['user_stats']['dms_joined'][-1]['num_dms_joined'] == 0
    assert output1['user_stats']['messages_sent'][-1]['num_messages_sent'] == 0
    assert output1['user_stats']['involvement_rate'] == 0

    assert len(dreams['dreams_stats']) == 4
    assert dreams['dreams_stats']['channels_exist'][-1]['num_channels_exist'] == 1
    assert dreams['dreams_stats']['dms_exist'][-1]['num_dms_exist'] == 0
    assert dreams['dreams_stats']['messages_exist'][-1]['num_messages_exist'] == 0
    assert dreams['dreams_stats']['utilization_rate'] == 1/2 
Beispiel #2
0
def test_channel_add_leave_owner_v1_errors(user_setup, channel_setup):
    '''
    #test the errors for channel_addowner_v1 and channel_removeowner_v1
    '''
    # Test 6:
    # user is currently the only owner
    with pytest.raises(AccessError):
        channel_removeowner_v1(make_token(1), 1, 1)
    
    channel_invite_v2(make_token(1), 1, 0) # invite gungeet
    channel_invite_v2(make_token(1), 1, 2) # invite chris
    channel_invite_v2(make_token(1), 1, 3)
    # Test 6:
    # invalid channel
    with pytest.raises(InputError):
        channel_addowner_v1(make_token(1), 10, 0)

    # Test 7:
    # authorised user doesn't exist
    with pytest.raises(AccessError):
        channel_addowner_v1(make_token(10), 1, 0)

    # Test 8:
    # user is already an owner
    with pytest.raises(InputError):
        channel_addowner_v1(make_token(1), 1, 1)

    # Test 9:
    # authorised user is not an owner
    with pytest.raises(AccessError):
        channel_addowner_v1(make_token(3), 1, 2)

    # Test 10:
    # invalid channel
    with pytest.raises(InputError):
        channel_removeowner_v1(make_token(0), 1, 2)

    # Test 11:
    # authorised user doesn't exist
    with pytest.raises(AccessError):
        channel_removeowner_v1(make_token(10), 1, 1)

    # Test 12:
    # invalid channel
    with pytest.raises(InputError):
        channel_addowner_v1(make_token(1), 10, 0)

    # Test 13:
    # authorised user is not an owner
    with pytest.raises(AccessError):
        channel_removeowner_v1(make_token(2), 1, 1)

    # Test 14:
    # user is not the owner of the channel
    with pytest.raises(InputError):
        channel_removeowner_v1(make_token(1), 1, 2)
def test_invalid_channel(reg_user, create_channel):

    clear_v2()
    new_user = reg_user(0)
    user_token = new_user['token']
    user_id =  new_user['auth_user_id']
    channel_id = create_channel(user_token)['channel_id']
    
    with pytest.raises(InputError):
        channel_addowner_v1(user_token, channel_id + 1, user_id)
def test_invalid_token(reg_user, create_channel):
    
    clear_v2()
    new_user = reg_user(0)
    user_id =  new_user['auth_user_id']
    user_token = new_user['token']
    channel_id = create_channel(user_token)['channel_id']

    with pytest.raises(AccessError):
        channel_addowner_v1("invalid_token", channel_id, user_id)
def test_success_private_add(create_input):
    # length of *_members for Fourth Channel before add
    assert len(
        channel_details_v2(
            create_input[0][3]["token"],
            create_input[1][3]["channel_id"])["owner_members"]) == 1
    assert len(
        channel_details_v2(
            create_input[0][3]["token"],
            create_input[1][3]["channel_id"])["all_members"]) == 1

    assert channel_addowner_v1(create_input[0][3]["token"],
                               create_input[1][3]["channel_id"],
                               create_input[0][0]["auth_user_id"]) == {}
    assert channel_addowner_v1(create_input[0][3]["token"],
                               create_input[1][3]["channel_id"],
                               create_input[0][1]["auth_user_id"]) == {}

    # length of *_members for Fourth Channel after add; testing for all users
    assert len(
        channel_details_v2(
            create_input[0][0]["token"],
            create_input[1][3]["channel_id"])["owner_members"]) == 3
    assert len(
        channel_details_v2(
            create_input[0][0]["token"],
            create_input[1][3]["channel_id"])["all_members"]) == 3
    assert len(
        channel_details_v2(
            create_input[0][1]["token"],
            create_input[1][3]["channel_id"])["owner_members"]) == 3
    assert len(
        channel_details_v2(
            create_input[0][1]["token"],
            create_input[1][3]["channel_id"])["all_members"]) == 3
    assert len(
        channel_details_v2(
            create_input[0][3]["token"],
            create_input[1][3]["channel_id"])["owner_members"]) == 3
    assert len(
        channel_details_v2(
            create_input[0][3]["token"],
            create_input[1][3]["channel_id"])["all_members"]) == 3
    with pytest.raises(AccessError):
        channel_details_v2(create_input[0][4]["token"],
                           create_input[1][2]["channel_id"])["owner_members"]
        channel_details_v2(create_input[0][4]["token"],
                           create_input[1][2]["channel_id"])["all_members"]

    # number of channels each user is a part of
    assert len(channels_list_v2(create_input[0][0]["token"])["channels"]) == 2
    assert len(channels_list_v2(create_input[0][1]["token"])["channels"]) == 2
    assert len(channels_list_v2(create_input[0][2]["token"])["channels"]) == 1
    assert len(channels_list_v2(create_input[0][3]["token"])["channels"]) == 1
    assert len(channels_list_v2(create_input[0][4]["token"])["channels"]) == 0
Beispiel #6
0
def test_channel_removeowner_v1_token(reg_user, basic_channel_name):
    clear_v2()
    channel_name = basic_channel_name
    token_1 = reg_user(0)['token']
    auth_user_id_2 = reg_user(1)['auth_user_id']
    fake_token = 'random values'
    channel_id = channels_create_v2(token_1, channel_name, True)['channel_id']
    channel_addowner_v1(token_1, channel_id,
                        auth_user_id_2)  #add this user as the owner

    with pytest.raises(AccessError):
        channel_removeowner_v1(fake_token, channel_id,
                               auth_user_id_2)  #invalid token
def test_already_owner(reg_user, create_channel):

    clear_v2()
    first_user = reg_user(0)
    second_user = reg_user(1)
    first_token = first_user['token']
    second_id =  second_user['auth_user_id']
    
    channel_id = create_channel(first_token)['channel_id']
    channel_addowner_v1(first_token, channel_id, second_id)

    with pytest.raises(InputError):
        channel_addowner_v1(first_token, channel_id, second_id)
Beispiel #8
0
def test_channel_pin(test_data):
    a_data, b_data, c_data = test_data

    a_ch_id = channels_create_v2(a_data["token"], "A channel",
                                 True)["channel_id"]
    b_ch_id = channels_create_v2(b_data["token"], "B channel",
                                 True)["channel_id"]
    channel_join_v2(c_data["token"], a_ch_id)
    channel_join_v2(c_data["token"], b_ch_id)

    # pin own message
    a1_msg_id = message_send_v2(a_data["token"], a_ch_id,
                                "My own message")["message_id"]
    message_pin_v1(a_data["token"], a1_msg_id)

    messages = channel_messages_v2(a_data["token"], a_ch_id, 0)["messages"]

    # we know there is only one message sent, so it must be index 0 of messages

    assert messages[0]["message_id"] == a1_msg_id
    assert messages[0]["is_pinned"] == True

    # pin someone elses message
    c1_msg_id = message_send_v2(c_data["token"], a_ch_id,
                                "C's message")["message_id"]
    message_pin_v1(a_data["token"], c1_msg_id)

    messages = channel_messages_v2(a_data["token"], a_ch_id, 0)["messages"]

    # channel_messages is most recent message first
    assert messages[0]["message_id"] == c1_msg_id
    assert messages[0]["is_pinned"] == True

    # b_ch
    b1_msg_id = message_send_v2(b_data["token"], b_ch_id,
                                "B's message whoo")["message_id"]
    message_pin_v1(b_data["token"], b1_msg_id)

    messages = channel_messages_v2(b_data["token"], b_ch_id, 0)["messages"]
    assert messages[0]["message_id"] == b1_msg_id
    assert messages[0]["is_pinned"] == True

    channel_addowner_v1(b_data["token"], b_ch_id, c_data["auth_user_id"])
    c2_msg_id = message_send_v2(c_data["token"], b_ch_id,
                                "C's second message whoo")["message_id"]
    message_pin_v1(c_data["token"], c2_msg_id)

    messages = channel_messages_v2(c_data["token"], b_ch_id, 0)["messages"]
    assert messages[0]["message_id"] == c2_msg_id
    assert messages[0]["is_pinned"] == True
Beispiel #9
0
def test_remove_owner(reg_user, basic_channel_name):
    clear_v2()
    owner_user = reg_user(0)
    basic_user = reg_user(1)
    channel_id = channels_create_v2(owner_user['token'], basic_channel_name,
                                    True)['channel_id']
    channel_addowner_v1(owner_user['token'], channel_id,
                        basic_user['auth_user_id'])
    channel_removeowner_v1(basic_user['token'], channel_id,
                           owner_user['auth_user_id'])
    channel_owners = channel_details_v2(basic_user['token'],
                                        channel_id)['owner_members']
    owner_ids = [owner['u_id'] for owner in channel_owners]
    assert owner_user[
        'auth_user_id'] not in owner_ids  # Check that owner has been removed
def test_fail_token_not_owner(create_input):
    # length of *_members for Second Channel before add
    assert len(
        channel_details_v2(
            create_input[0][1]["token"],
            create_input[1][1]["channel_id"])["owner_members"]) == 1
    assert len(
        channel_details_v2(
            create_input[0][1]["token"],
            create_input[1][1]["channel_id"])["all_members"]) == 1

    with pytest.raises(AccessError):
        channel_addowner_v1(create_input[0][2]["token"],
                            create_input[1][1]["channel_id"],
                            create_input[0][3]["auth_user_id"])
def test_invite_global_owner(create_input):
    """ Tests that when a global owner is invited to a channel, they will have
        owner permissions in that channel.
    """

    channel_1 = create_input[1][1]

    assert channel_invite_v2(create_input[0][1]['token'],
                             channel_1['channel_id'],
                             create_input[0][0]['auth_user_id']) == {}
    assert channel_invite_v2(create_input[0][1]['token'],
                             channel_1['channel_id'],
                             create_input[0][2]['auth_user_id']) == {}

    # create_input[0][0] is a global owner, so when invited, they should join
    # as a member but have owner permissions
    # create_input[0][2] is a member
    assert len(
        channel_details_v2(create_input[0][1]['token'],
                           channel_1['channel_id'])['owner_members']) == 1
    assert len(
        channel_details_v2(create_input[0][1]['token'],
                           channel_1['channel_id'])['all_members']) == 3

    # create_input[0][0] should be able to promote create_input[0][2] to a
    # channel owner
    assert channel_addowner_v1(create_input[0][0]['token'],
                               channel_1['channel_id'],
                               create_input[0][2]['auth_user_id']) == {}
Beispiel #12
0
def channel_addowner():
    parameters = request.get_json()
    token = parameters['token']
    channel_id = parameters['channel_id']
    u_id = parameters['u_id']
    output = channel_addowner_v1(token, channel_id, u_id)
    return dumps(output)
def test_success_owner_leave(create_input):
    # Add another owner to First Channel
    assert channel_addowner_v1(create_input[0][0]["token"], create_input[1][0]["channel_id"], create_input[0][4]["auth_user_id"]) == {}

    # length of *_members for First Channel before leave
    assert len(channel_details_v2(create_input[0][0]["token"], create_input[1][0]["channel_id"])["owner_members"]) == 2
    assert len(channel_details_v2(create_input[0][0]["token"], create_input[1][0]["channel_id"])["all_members"]) == 4

    # One owner leaves
    assert channel_leave_v1(create_input[0][0]["token"], create_input[1][0]["channel_id"]) == {}

    # length of *_members for First Channel after leave; testing for all involved users
    assert len(channel_details_v2(create_input[0][1]["token"], create_input[1][0]["channel_id"])["owner_members"]) == 1
    assert len(channel_details_v2(create_input[0][1]["token"], create_input[1][0]["channel_id"])["all_members"]) == 3
    assert len(channel_details_v2(create_input[0][2]["token"], create_input[1][0]["channel_id"])["owner_members"]) == 1
    assert len(channel_details_v2(create_input[0][2]["token"], create_input[1][0]["channel_id"])["all_members"]) == 3
    assert len(channel_details_v2(create_input[0][4]["token"], create_input[1][0]["channel_id"])["owner_members"]) == 1
    assert len(channel_details_v2(create_input[0][4]["token"], create_input[1][0]["channel_id"])["all_members"]) == 3
    with pytest.raises(AccessError):
        channel_details_v2(create_input[0][0]["token"], create_input[1][0]["channel_id"])

    # number of channels each user is a part of
    assert len(channels_list_v2(create_input[0][0]["token"])["channels"]) == 0
    assert len(channels_list_v2(create_input[0][1]["token"])["channels"]) == 2
    assert len(channels_list_v2(create_input[0][2]["token"])["channels"]) == 2
    assert len(channels_list_v2(create_input[0][4]["token"])["channels"]) == 1
Beispiel #14
0
def test_channel_removeowner_v1_auth_user_not_owner_of_channel(
        reg_user, basic_channel_name):
    clear_v2()
    channel_name = basic_channel_name
    token_1 = reg_user(0)['token']
    user_register2 = reg_user(1)
    user_register3 = reg_user(2)
    channel_id = channels_create_v2(token_1, channel_name, True)['channel_id']
    #join
    channel_join_v2(user_register2['token'], channel_id)
    channel_join_v2(user_register3['token'], channel_id)
    channel_addowner_v1(token_1, channel_id, user_register3['auth_user_id'])
    #user 2 cant remove user 3 // promote user 3 to owner
    with pytest.raises(AccessError):
        channel_removeowner_v1(
            user_register2['token'], channel_id, user_register3['auth_user_id']
        )  #a normal member of the channel cant remove a owner of the channel
def test_sender_non_channel_member(reg_user, create_channel):

    clear_v2()

    # first user is the owner of the **Dreams** as well as the owner of this channel, but the second user is neither of them 
    first_user = reg_user(0)
    second_user = reg_user(1)
    third_user = reg_user(2)
    
    first_id = first_user['auth_user_id']
    second_token =  second_user['token']
    third_token = third_user['token']

    channel_id = create_channel(third_token)['channel_id']

    with pytest.raises(AccessError):
        channel_addowner_v1(second_token, channel_id, first_id)
Beispiel #16
0
def channel_addowner():
    info = request.get_json()
    token = info["token"]
    channel_id = info["channel_id"]
    u_id = info["u_id"]

    channel_addowner = channel_addowner_v1(token, channel_id, u_id)
    return dumps(channel_addowner)
def test_invalid_channel_id(test_data):
    _, a_data, b_data, c_data, a_ch_id, c_ch_id = test_data

    channel_addowner_v1(a_data["token"], a_ch_id, b_data["auth_user_id"])
    channel_join_v2(b_data["token"], c_ch_id)
    channel_addowner_v1(c_data["token"], c_ch_id, b_data["auth_user_id"])

    with pytest.raises(InputError):
        channel_removeowner_v1(a_data["token"], 123456, b_data["auth_user_id"])
        channel_removeowner_v1(a_data["token"], -1231, b_data["auth_user_id"])
        channel_removeowner_v1(a_data["token"], "abcdefgha",
                               b_data["auth_user_id"])
        channel_removeowner_v1(c_data["token"], "aBNNaasdAIWK",
                               b_data["auth_user_id"])
        channel_removeowner_v1(c_data["token"], "ashd8AOw51234AI",
                               b_data["auth_user_id"])
        channel_removeowner_v1(c_data["token"], "AuNAD)(A*H@Emas90djam2",
                               b_data["auth_user_id"])
def test_already_unpinned(test_data):
    a_data, b_data, c_data = test_data

    a_ch_id = channels_create_v2(a_data["token"], "A channel", True)["channel_id"]
    channel_join_v2(c_data["token"], a_ch_id)
    channel_join_v2(b_data["token"], a_ch_id)

    channel_addowner_v1(a_data["token"], a_ch_id, c_data["auth_user_id"])
    channel_addowner_v1(a_data["token"], a_ch_id, b_data["auth_user_id"])

    a1_msg_id = message_send_v2(a_data["token"], a_ch_id, "My own message")["message_id"]
    message_pin_v1(a_data["token"], a1_msg_id)
    message_unpin_v1(a_data["token"], a1_msg_id)

    with pytest.raises(InputError):
        message_unpin_v1(a_data["token"], a1_msg_id)
        message_unpin_v1(b_data["token"], a1_msg_id)
        message_unpin_v1(c_data["token"], a1_msg_id)
Beispiel #19
0
def test_success_remove_multiple(create_input):
    # Add extra owner to First Channel
    assert channel_addowner_v1(create_input[0][0]["token"],
                               create_input[1][0]["channel_id"],
                               create_input[0][2]["auth_user_id"]) == {}

    # length of *_members for First Channel before remove
    assert len(
        channel_details_v2(
            create_input[0][0]["token"],
            create_input[1][0]["channel_id"])["owner_members"]) == 3
    assert len(
        channel_details_v2(
            create_input[0][0]["token"],
            create_input[1][0]["channel_id"])["all_members"]) == 4

    assert channel_removeowner_v1(create_input[0][0]["token"],
                                  create_input[1][0]["channel_id"],
                                  create_input[0][1]["auth_user_id"]) == {}
    assert channel_removeowner_v1(create_input[0][0]["token"],
                                  create_input[1][0]["channel_id"],
                                  create_input[0][2]["auth_user_id"]) == {}

    # length of *_members for First Channel after remove; testing for all users
    assert len(
        channel_details_v2(
            create_input[0][0]["token"],
            create_input[1][0]["channel_id"])["owner_members"]) == 1
    assert len(
        channel_details_v2(
            create_input[0][0]["token"],
            create_input[1][0]["channel_id"])["all_members"]) == 4
    assert len(
        channel_details_v2(
            create_input[0][1]["token"],
            create_input[1][0]["channel_id"])["owner_members"]) == 1
    assert len(
        channel_details_v2(
            create_input[0][1]["token"],
            create_input[1][0]["channel_id"])["all_members"]) == 4
    assert len(
        channel_details_v2(
            create_input[0][2]["token"],
            create_input[1][0]["channel_id"])["owner_members"]) == 1
    assert len(
        channel_details_v2(
            create_input[0][2]["token"],
            create_input[1][0]["channel_id"])["all_members"]) == 4
    assert len(
        channel_details_v2(
            create_input[0][4]["token"],
            create_input[1][0]["channel_id"])["owner_members"]) == 1
    assert len(
        channel_details_v2(
            create_input[0][4]["token"],
            create_input[1][0]["channel_id"])["all_members"]) == 4
Beispiel #20
0
def test_invalid_token(test_data):
    _, _, b_data, _, a_ch_id, _ = test_data

    with pytest.raises(AccessError):
        channel_addowner_v1("randominvalidtoken.123456789", a_ch_id,
                            b_data["auth_user_id"])
        channel_addowner_v1("token.12314511.token", a_ch_id,
                            b_data["auth_user_id"])
        channel_addowner_v1(
            "t817sn192w18HA&Dh8nq.J*(b98NQFASDA.(n(*@nq@dASDAN", a_ch_id,
            b_data["auth_user_id"])
        channel_addowner_v1("COMP1531.COMP1531.COMP1531", a_ch_id,
                            b_data["auth_user_id"])
def test_success_user_is_member(create_input):
    # Add member to First Channel before making them owner
    assert channel_join_v2(create_input[0][1]["token"],
                           create_input[1][0]["channel_id"]) == {}
    assert channel_join_v2(create_input[0][2]["token"],
                           create_input[1][0]["channel_id"]) == {}

    # length of *_members for First Channel before add
    assert len(
        channel_details_v2(
            create_input[0][0]["token"],
            create_input[1][0]["channel_id"])["owner_members"]) == 1
    assert len(
        channel_details_v2(
            create_input[0][0]["token"],
            create_input[1][0]["channel_id"])["all_members"]) == 3

    assert channel_addowner_v1(create_input[0][0]["token"],
                               create_input[1][0]["channel_id"],
                               create_input[0][1]["auth_user_id"]) == {}

    # length of *_members for First Channel after add; testing for all users
    assert len(
        channel_details_v2(
            create_input[0][0]["token"],
            create_input[1][0]["channel_id"])["owner_members"]) == 2
    assert len(
        channel_details_v2(
            create_input[0][0]["token"],
            create_input[1][0]["channel_id"])["all_members"]) == 3
    assert len(
        channel_details_v2(
            create_input[0][1]["token"],
            create_input[1][0]["channel_id"])["owner_members"]) == 2
    assert len(
        channel_details_v2(
            create_input[0][1]["token"],
            create_input[1][0]["channel_id"])["all_members"]) == 3
    assert len(
        channel_details_v2(
            create_input[0][2]["token"],
            create_input[1][0]["channel_id"])["owner_members"]) == 2
    assert len(
        channel_details_v2(
            create_input[0][2]["token"],
            create_input[1][0]["channel_id"])["all_members"]) == 3

    # number of channels each user is a part of
    assert len(channels_list_v2(create_input[0][0]["token"])["channels"]) == 1
    assert len(channels_list_v2(create_input[0][1]["token"])["channels"]) == 2
    assert len(channels_list_v2(create_input[0][2]["token"])["channels"]) == 2
    assert len(channels_list_v2(create_input[0][3]["token"])["channels"]) == 1
    assert len(channels_list_v2(create_input[0][4]["token"])["channels"]) == 0
Beispiel #22
0
def test_add_nonmember(test_data):
    _, a_data, b_data, c_data, a_ch_id, c_ch_id = test_data

    with pytest.raises(InputError):
        channel_addowner_v1(a_data["token"], a_ch_id, c_data["auth_user_id"])
        channel_addowner_v1(c_data["token"], c_ch_id, a_data["auth_user_id"])
        channel_addowner_v1(c_data["token"], c_ch_id, b_data["auth_user_id"])
def test_invalid_token(test_data):
    _, a_data, b_data, _, a_ch_id, _ = test_data

    channel_addowner_v1(a_data["token"], a_ch_id, b_data["auth_user_id"])
    """
    channel a
        owners
            a, b
        members
            a, b
    """

    with pytest.raises(AccessError):
        channel_removeowner_v1(0, a_ch_id, b_data)
        channel_removeowner_v1(12319241, a_ch_id, b_data)
        channel_removeowner_v1("", a_ch_id, b_data)
        channel_removeowner_v1("randominvalidtoken.123456789", a_ch_id, b_data)
        channel_removeowner_v1("token.12314511.token", a_ch_id, b_data)
        channel_removeowner_v1(
            "t817sn192w18HA&Dh8nq.J*(b98NQFASDA.(n(*@nq@dASDAN", a_ch_id,
            b_data)
        channel_removeowner_v1("COMP1531.COMP1531.COMP1531", a_ch_id, b_data)
Beispiel #24
0
def test_mixed_harder():
    clear_v1()    
    result1 = auth_register_v2('*****@*****.**', 'password', 'comp', 'student')
    result2 = auth_register_v2('*****@*****.**', 'password', 'comp', 'student')
    channel1 = channels_create_v2(result1['token'], "The party channel 1", True)['channel_id']
    message_send_v2(result1['token'], channel1, 'hello how are you')
    dm_create_v1(result1['token'], [result2['auth_user_id']])
    output = user_stats(result1['token'])
    assert len(output['user_stats']) == 4
    assert output['user_stats']['channels_joined'][-1]['num_channels_joined'] == 1
    assert output['user_stats']['dms_joined'][-1]['num_dms_joined'] == 1
    assert output['user_stats']['messages_sent'][-1]['num_messages_sent'] == 1
    assert output['user_stats']['involvement_rate'] == 1
    channels_create_v2(result1['token'], "The party channel 2", True)
    channel3 = channels_create_v2(result2['token'], "The party channel 3", True)['channel_id']
    channel_addowner_v1(result2['token'], channel3, result1['auth_user_id'])
    message_send_v2(result2['token'], channel3, 'hello how are you')
    output1 = user_stats(result1['token'])
    output2 = user_stats(result2['token'])
    assert len(output1['user_stats']) == 4
    assert output1['user_stats']['channels_joined'][-1]['num_channels_joined'] == 3
    assert output1['user_stats']['dms_joined'][-1]['num_dms_joined'] == 1
    assert output1['user_stats']['messages_sent'][-1]['num_messages_sent'] == 1
    assert output1['user_stats']['involvement_rate'] == 5/6
    assert len(output2['user_stats']) == 4
    assert output2['user_stats']['channels_joined'][-1]['num_channels_joined'] == 1
    assert output2['user_stats']['dms_joined'][-1]['num_dms_joined'] == 1
    assert output2['user_stats']['messages_sent'][-1]['num_messages_sent'] == 1
    assert output2['user_stats']['involvement_rate'] == 3/6

    dreams = users_stats(result1['token'])
    assert len(dreams['dreams_stats']) == 4
    assert dreams['dreams_stats']['channels_exist'][-1]['num_channels_exist'] == 3
    assert dreams['dreams_stats']['dms_exist'][-1]['num_dms_exist'] == 1
    assert dreams['dreams_stats']['messages_exist'][-1]['num_messages_exist'] == 2
    assert dreams['dreams_stats']['utilization_rate'] == 1    
Beispiel #25
0
def test_normal(test_data):
    _, a_data, b_data, c_data, a_ch_id, c_ch_id = test_data

    channel_join_v2(c_data["token"], a_ch_id)
    channel_join_v2(a_data["token"], c_ch_id)
    channel_join_v2(b_data["token"], c_ch_id)
    """
    channel a
        owners
            a
        members
            a, b, c

    channel c
        owners 
            c
        members
            c, a, b
    """

    # only owners can remove owners (including themselves)
    # if any of the added owners are not owners, removeowner will raise an error

    # a add b to a_channel, b removes b
    channel_addowner_v1(a_data["token"], a_ch_id, b_data["auth_user_id"])
    assert channel_removeowner_v1(b_data["token"], a_ch_id,
                                  b_data["auth_user_id"]) == {}
    # a add c to a_channel, c removes c
    channel_addowner_v1(a_data["token"], a_ch_id, c_data["auth_user_id"])
    assert channel_removeowner_v1(c_data["token"], a_ch_id,
                                  c_data["auth_user_id"]) == {}
    #c add a to c_channel, a removes a
    channel_addowner_v1(c_data["token"], c_ch_id, a_data["auth_user_id"])
    assert channel_removeowner_v1(a_data["token"], c_ch_id,
                                  a_data["auth_user_id"]) == {}
    # c add b to c_channel, b removes b
    channel_addowner_v1(c_data["token"], c_ch_id, b_data["auth_user_id"])
    assert channel_removeowner_v1(b_data["token"], c_ch_id,
                                  b_data["auth_user_id"]) == {}
def test_auth_user_dreams_owner(test_data):
    global_owner, a_data, b_data, c_data, a_ch_id, c_ch_id = test_data

    channel_join_v2(c_data["token"], a_ch_id)
    channel_join_v2(a_data["token"], c_ch_id)
    channel_join_v2(b_data["token"], c_ch_id)

    channel_join_v2(global_owner["token"], a_ch_id)
    channel_join_v2(global_owner["token"], c_ch_id)

    channel_addowner_v1(a_data["token"], a_ch_id, b_data["auth_user_id"])
    channel_addowner_v1(a_data["token"], a_ch_id, c_data["auth_user_id"])
    channel_addowner_v1(c_data["token"], c_ch_id, a_data["auth_user_id"])
    channel_addowner_v1(c_data["token"], c_ch_id, b_data["auth_user_id"])
    """
    channel a
        owners
            a, b, c
        members
            a, b, c, g.o

    channel c
        owners 
            c, a, b
        members
            c, a, b, g.o
    """

    assert channel_removeowner_v1(global_owner["token"], a_ch_id,
                                  a_data["auth_user_id"]) == {}
    assert channel_removeowner_v1(global_owner["token"], a_ch_id,
                                  b_data["auth_user_id"]) == {}

    assert channel_removeowner_v1(global_owner["token"], c_ch_id,
                                  a_data["auth_user_id"]) == {}
    assert channel_removeowner_v1(global_owner["token"], c_ch_id,
                                  c_data["auth_user_id"]) == {}
def test_success_owner_one_add(create_input):
    # length of *_members for First Channel before add
    assert len(
        channel_details_v2(
            create_input[0][0]["token"],
            create_input[1][0]["channel_id"])["owner_members"]) == 1
    assert len(
        channel_details_v2(
            create_input[0][0]["token"],
            create_input[1][0]["channel_id"])["all_members"]) == 1

    assert channel_addowner_v1(create_input[0][0]["token"],
                               create_input[1][0]["channel_id"],
                               create_input[0][1]["auth_user_id"]) == {}

    # length of *_members for First Channel after join; testing for both users
    assert len(
        channel_details_v2(
            create_input[0][0]["token"],
            create_input[1][0]["channel_id"])["owner_members"]) == 2
    assert len(
        channel_details_v2(
            create_input[0][0]["token"],
            create_input[1][0]["channel_id"])["all_members"]) == 2
    assert len(
        channel_details_v2(
            create_input[0][1]["token"],
            create_input[1][0]["channel_id"])["owner_members"]) == 2
    assert len(
        channel_details_v2(
            create_input[0][1]["token"],
            create_input[1][0]["channel_id"])["all_members"]) == 2

    # number of channels each user is a part of
    assert len(channels_list_v2(create_input[0][0]["token"])["channels"]) == 1
    assert len(channels_list_v2(create_input[0][1]["token"])["channels"]) == 2
Beispiel #28
0
def create_input():
    clear_v1()

    data_test_users = [
        auth_register_v2("*****@*****.**", "validpassword", "Josh",
                         "Hatton"),
        auth_register_v2("*****@*****.**", "anotherpassword", "Bunny",
                         "Dong"),
        auth_register_v2("*****@*****.**", "password3", "Jordan",
                         "Milch"),
        auth_register_v2("*****@*****.**", "4thpassword", "Dean",
                         "Zworestine"),
        auth_register_v2("*****@*****.**", "finalpassword", "Eric",
                         "Zheng"),
    ]

    data_test_channels = [
        channels_create_v2(data_test_users[0]["token"], "First Channel", True),
        channels_create_v2(data_test_users[1]["token"], "Second Channel",
                           True),
        channels_create_v2(data_test_users[2]["token"], "Third Channel", True),
        channels_create_v2(data_test_users[3]["token"], "Fourth Channel",
                           False),
    ]

    channel_addowner_v1(data_test_users[0]["token"],
                        data_test_channels[0]["channel_id"],
                        data_test_users[1]["auth_user_id"])
    channel_addowner_v1(data_test_users[1]["token"],
                        data_test_channels[1]["channel_id"],
                        data_test_users[0]["auth_user_id"])
    channel_addowner_v1(data_test_users[2]["token"],
                        data_test_channels[2]["channel_id"],
                        data_test_users[3]["auth_user_id"])
    channel_join_v2(data_test_users[4]["token"],
                    data_test_channels[0]["channel_id"])

    return [data_test_users, data_test_channels]
Beispiel #29
0
def test_dreams_owner(test_data):
    # stub until dreams implementation
    global_owner, a_data, b_data, c_data, a_ch_id, c_ch_id = test_data

    channel_join_v2(c_data["token"], a_ch_id)
    channel_join_v2(a_data["token"], c_ch_id)
    channel_join_v2(b_data["token"], c_ch_id)

    channel_join_v2(global_owner["token"], a_ch_id)
    channel_join_v2(global_owner["token"], c_ch_id)
    """
    channel a
        owners
            a
        members
            a, b, c, g.o

    channel c
        owners 
            c
        members
            c, a, b, g.o
    """

    assert channel_addowner_v1(global_owner["token"], a_ch_id,
                               b_data["auth_user_id"]) == {}
    assert channel_addowner_v1(global_owner["token"], a_ch_id,
                               c_data["auth_user_id"]) == {}
    assert channel_addowner_v1(global_owner["token"], a_ch_id,
                               global_owner["auth_user_id"]) == {}

    assert channel_addowner_v1(global_owner["token"], c_ch_id,
                               a_data["auth_user_id"]) == {}
    assert channel_addowner_v1(global_owner["token"], c_ch_id,
                               b_data["auth_user_id"]) == {}
    assert channel_addowner_v1(global_owner["token"], c_ch_id,
                               global_owner["auth_user_id"]) == {}
Beispiel #30
0
def test_channel(test_data):
    a_data, b_data, c_data = test_data

    # a creates a channel
    # a involvement should be 1 (only channel)
    # b involvement should be 0
    a_ch_timestamp = datetime.now().replace(microsecond=0).timestamp()
    channels_create_v2(a_data["token"], "A channel", True)
    sleep(1)

    user_stats = user_stats_v1(a_data["token"])["user_stats"]
    # going to skip 0, as that is the init timestamp
    assert user_stats["channels_joined"][1]["num_channels_joined"] == 1
    assert abs(user_stats["channels_joined"][1]["time_stamp"] - a_ch_timestamp) <= 1

    assert user_stats["involvement_rate"] == 1

    user_stats = user_stats_v1(b_data["token"])["user_stats"]
    assert user_stats["channels_joined"][0]["num_channels_joined"] == 0
    assert abs(user_stats["channels_joined"][0]["time_stamp"] - b_data["time_registered"]) <= 1

    # b creates a channel
    # a and b should have the same involvement rate now (2 channels, each in different channels)
    
    b_ch_timestamp = datetime.now().replace(microsecond=0).timestamp()
    b_ch_id = channels_create_v2(b_data["token"], "B channel", True)["channel_id"]
    sleep(1)

    user_stats = user_stats_v1(b_data["token"])["user_stats"]
    assert user_stats["channels_joined"][1]["num_channels_joined"] == 1
    assert abs(user_stats["channels_joined"][1]["time_stamp"] - b_ch_timestamp) <= 1

    assert user_stats["involvement_rate"] == 0.5

    user_stats = user_stats_v1(a_data["token"])["user_stats"]
    assert user_stats["channels_joined"][1]["num_channels_joined"] == 1
    assert abs(user_stats["channels_joined"][1]["time_stamp"] - a_ch_timestamp) <= 1

    assert user_stats["involvement_rate"] == 0.5

    # b creates a second channel
    # b is now in 2/3 channels
    # a is in only 1/3 channels

    b2_ch_timestamp = datetime.now().replace(microsecond=0).timestamp()
    channels_create_v2(b_data["token"], "B2 channel", True)["channel_id"]
    sleep(1)

    user_stats = user_stats_v1(b_data["token"])["user_stats"]
    assert user_stats["channels_joined"][1]["num_channels_joined"] == 1
    assert abs(user_stats["channels_joined"][1]["time_stamp"] - b_ch_timestamp) <= 1

    assert user_stats["channels_joined"][2]["num_channels_joined"] == 2
    assert abs(user_stats["channels_joined"][2]["time_stamp"] - b2_ch_timestamp) <= 1

    assert user_stats["involvement_rate"] == 0.67

    user_stats = user_stats_v1(a_data["token"])["user_stats"]
    assert user_stats["channels_joined"][1]["num_channels_joined"] == 1
    assert abs(user_stats["channels_joined"][1]["time_stamp"] - a_ch_timestamp) <= 1

    assert user_stats["involvement_rate"] == 0.33
    c_ch_join_timestamp = datetime.now().replace(microsecond=0).timestamp()
    channel_join_v2(c_data["token"], b_ch_id)
    channel_addowner_v1(b_data["token"], b_ch_id, c_data["auth_user_id"])
    sleep(1)

    # b leaves one of his channels
    # a, b c are now in 1/3 existing channels
    b_ch_leave_timestamp = datetime.now().replace(microsecond=0).timestamp()
    channel_leave_v1(b_data["token"], b_ch_id)
    sleep(1)

    user_stats = user_stats_v1(a_data["token"])["user_stats"]
    assert user_stats["channels_joined"][1]["num_channels_joined"] == 1
    assert abs(user_stats["channels_joined"][1]["time_stamp"] - a_ch_timestamp) <= 1

    assert user_stats["involvement_rate"] == 0.33
    
    user_stats = user_stats_v1(b_data["token"])["user_stats"]
    assert user_stats["channels_joined"][1]["num_channels_joined"] == 1
    assert abs(user_stats["channels_joined"][1]["time_stamp"] - b_ch_timestamp) <= 1

    assert user_stats["channels_joined"][2]["num_channels_joined"] == 2
    assert abs(user_stats["channels_joined"][2]["time_stamp"] - b2_ch_timestamp) <= 1
    
    assert user_stats["channels_joined"][3]["num_channels_joined"] == 1
    assert abs(user_stats["channels_joined"][3]["time_stamp"] - b_ch_leave_timestamp) <= 1

    assert user_stats["involvement_rate"] == 0.33

    user_stats = user_stats_v1(c_data["token"])["user_stats"]
    assert user_stats["channels_joined"][1]["num_channels_joined"] == 1
    assert abs(user_stats["channels_joined"][1]["time_stamp"] - c_ch_join_timestamp) <= 1

    assert user_stats["involvement_rate"] == 0.33