Exemple #1
0
def create_input():
    clear_v1()

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

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

    channel_join_v2(data_test_users[1]["token"],
                    data_test_channels[0]["channel_id"])
    channel_join_v2(data_test_users[2]["token"],
                    data_test_channels[0]["channel_id"])

    return [data_test_users, data_test_channels]
Exemple #2
0
def test_channel_join_stat():
    clear_v1()
    result1 = auth_register_v2('*****@*****.**', 'password', 'comp',
                               'student').json()
    result2 = auth_register_v2('*****@*****.**', 'password', 'comp',
                               'student').json()
    channel1 = channels_create_v2(result1['token'], "The party channel 1",
                                  True).json()
    channel_join_v2(result2['token'], channel1['channel_id'])

    output = user_stats(result1['token']).json()
    output1 = user_stats(result2['token']).json()
    dreams = users_stats(result1['token']).json()

    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'] == 1
    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'] == 1

    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'] == 2 / 2
Exemple #3
0
def test_mixed_decrement():
    clear_v1()
    result1 = auth_register_v2('*****@*****.**', 'password', 'comp',
                               'student').json()
    result2 = auth_register_v2('*****@*****.**', 'password', 'comp',
                               'student').json()
    channel1 = channels_create_v2(result1['token'], "The party channel 1",
                                  True).json()['channel_id']
    message1 = message_send_v2(result1['token'], channel1,
                               'hello how are you').json()['message_id']

    message_remove_v1(result1['token'], message1)
    channel_join_v2(result2['token'], channel1)
    channel_leave_v1(result2['token'], channel1)

    output = user_stats(result1['token']).json()
    assert output['user_stats']['channels_joined'][-1][
        'num_channels_joined'] == 1
    assert output['user_stats']['messages_sent'][-1]['num_messages_sent'] == 1
    output1 = user_stats(result2['token']).json()
    assert output1['user_stats']['channels_joined'][-1][
        'num_channels_joined'] == 0
    dreams = users_stats(result1['token']).json()
    assert dreams['dreams_stats']['channels_exist'][-1][
        'num_channels_exist'] == 1
    assert dreams['dreams_stats']['messages_exist'][-1][
        'num_messages_exist'] == 0
Exemple #4
0
def test_two_tags():
    clear_v1()
    user1 = auth_register_v2("*****@*****.**", "finalpassword", "Eric",
                             "Zheng").json()
    user2 = auth_register_v2("*****@*****.**", "validpassword", "Josh",
                             "Hatton").json()
    channel1 = channels_create_v2(user1['token'], 'Channel 1', True).json()
    channel_join_v2(user2['token'], channel1['channel_id'])
    msg1str = "@ericzheng @joshhatton"
    message_send_v2(user1['token'], channel1['channel_id'], msg1str)

    assert notifications_get_v1(user1['token']).json() == {
        'notifications': [{
            'channel_id':
            channel1['channel_id'],
            'dm_id':
            -1,
            'notification_message':
            f"ericzheng tagged you in Channel 1: {msg1str[0:20]}"
        }]
    }
    assert notifications_get_v1(user2['token']).json() == {
        'notifications': [{
            'channel_id':
            channel1['channel_id'],
            'dm_id':
            -1,
            'notification_message':
            f"ericzheng tagged you in Channel 1: {msg1str[0:20]}"
        }]
    }
Exemple #5
0
def test_successful_remove(create_input):
    user_1, user_2, user_3, user_4, user_5 = create_input[0]

    assert admin_user_remove_v1(user_1["token"],
                                user_2["auth_user_id"]).status_code == SUCCESS
    assert admin_user_remove_v1(user_1["token"],
                                user_3["auth_user_id"]).status_code == SUCCESS
    assert admin_user_remove_v1(user_1["token"],
                                user_4["auth_user_id"]).status_code == SUCCESS
    assert admin_user_remove_v1(user_1["token"],
                                user_5["auth_user_id"]).status_code == SUCCESS

    # check to see that these users are indeed removed

    # only user_1 should be shown when calling users_all
    assert users_all_v1(user_1["token"]).json() == {
        "users": [
            user_profile_v2(user_1["token"],
                            user_1["auth_user_id"]).json()["user"]
        ]
    }

    # calling channels list should raise an input error as their u_id's are invalid
    assert channels_list_v2(user_2["token"]).status_code == ACCESS_ERROR
    assert channels_list_v2(user_3["token"]).status_code == ACCESS_ERROR
    assert channels_list_v2(user_4["token"]).status_code == ACCESS_ERROR
    assert channels_list_v2(user_5["token"]).status_code == ACCESS_ERROR

    # Check to see each removed user's profile is retrievable and their name is
    # now 'Removed user'
    for user in [user_2, user_3, user_4, user_5]:
        user_profile = user_profile_v2(user_1["token"],
                                       user["auth_user_id"]).json()
        assert type(user_profile) == dict
        assert (
            f"{user_profile['user']['name_first']}{user_profile['user']['name_last']}"
            == "Removed user" or
            f"{user_profile['user']['name_first']} {user_profile['user']['name_last']}"
            == "Removed user")

    # CHECK THAT MESSAGES SENT ARE 'REMOVED USER'
    # check channel messages for user 2
    channel_join_v2(user_1["token"], create_input[1][1]["channel_id"])
    channel_1_messages = channel_messages_v2(user_1["token"],
                                             create_input[1][1]["channel_id"],
                                             0).json()
    for message in channel_1_messages["messages"]:
        if message["message_id"] == create_input[2][1]:
            assert message["message"] == "Removed user"

    # check channel messages for user 3
    channel_join_v2(user_1["token"], create_input[1][0]["channel_id"])
    channel_2_messages = channel_messages_v2(user_1["token"],
                                             create_input[1][0]["channel_id"],
                                             0).json()
    for message in channel_2_messages["messages"]:
        if message["message_id"] == create_input[2][2]:
            assert message["message"] == "Removed user"

    clear_v1()
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"]).json() == {}
    assert channel_join_v2(create_input[0][2]["token"],
                           create_input[1][0]["channel_id"]).json() == {}

    # length of *_members for First Channel before add
    assert len(
        channel_details_v2(
            create_input[0][0]["token"],
            create_input[1][0]["channel_id"]).json()["owner_members"]) == 1
    assert len(
        channel_details_v2(
            create_input[0][0]["token"],
            create_input[1][0]["channel_id"]).json()["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"]).json() == {}

    # 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"]).json()["owner_members"]) == 2
    assert len(
        channel_details_v2(
            create_input[0][0]["token"],
            create_input[1][0]["channel_id"]).json()["all_members"]) == 3
    assert len(
        channel_details_v2(
            create_input[0][1]["token"],
            create_input[1][0]["channel_id"]).json()["owner_members"]) == 2
    assert len(
        channel_details_v2(
            create_input[0][1]["token"],
            create_input[1][0]["channel_id"]).json()["all_members"]) == 3
    assert len(
        channel_details_v2(
            create_input[0][2]["token"],
            create_input[1][0]["channel_id"]).json()["owner_members"]) == 2
    assert len(
        channel_details_v2(
            create_input[0][2]["token"],
            create_input[1][0]["channel_id"]).json()["all_members"]) == 3

    # number of channels each user is a part of
    assert len(
        channels_list_v2(create_input[0][0]["token"]).json()["channels"]) == 1
    assert len(
        channels_list_v2(create_input[0][1]["token"]).json()["channels"]) == 2
    assert len(
        channels_list_v2(create_input[0][2]["token"]).json()["channels"]) == 2
    assert len(
        channels_list_v2(create_input[0][3]["token"]).json()["channels"]) == 1
    assert len(
        channels_list_v2(create_input[0][4]["token"]).json()["channels"]) == 0
Exemple #7
0
def test_success_private_channel(create_input):
    # length of *_members for Third Channel before join
    assert len(
        channel_details_v2(
            create_input[0][2]["token"],
            create_input[1][2]["channel_id"]).json()["owner_members"]) == 1
    assert len(
        channel_details_v2(
            create_input[0][2]["token"],
            create_input[1][2]["channel_id"]).json()["all_members"]) == 1

    assert channel_join_v2(create_input[0][0]["token"],
                           create_input[1][2]["channel_id"]).json() == {}

    # create_input[0][0] is a global owner so will pass test
    assert len(
        channel_details_v2(
            create_input[0][2]["token"],
            create_input[1][2]["channel_id"]).json()["owner_members"]) == 1
    assert len(
        channel_details_v2(
            create_input[0][2]["token"],
            create_input[1][2]["channel_id"]).json()["all_members"]) == 2
    assert len(
        channel_details_v2(
            create_input[0][0]["token"],
            create_input[1][2]["channel_id"]).json()["owner_members"]) == 1
    assert len(
        channel_details_v2(
            create_input[0][0]["token"],
            create_input[1][2]["channel_id"]).json()["all_members"]) == 2
Exemple #8
0
def test_removed_from_channel():
    """Tests that a user is removed from a channel"""
    clear_v1()
    user_1 = auth_register_v2("*****@*****.**", "finalpassword", "Eric",
                              "Zheng").json()
    user_2 = auth_register_v2("*****@*****.**", "validpassword", "Josh",
                              "Hatton").json()

    channel_1 = channels_create_v2(user_1["token"], "Test", True).json()
    channel_join_v2(user_2["token"], channel_1["channel_id"])

    admin_user_remove_v1(user_1["token"], user_2["auth_user_id"])

    members = channel_details_v2(user_1["token"],
                                 channel_1["channel_id"]).json()["all_members"]

    assert user_2["auth_user_id"] not in [m["u_id"] for m in members]
Exemple #9
0
def test_self_permission_change(create_input):
    """ Assume owners are able to change their own permission to member 
        permissions. 
        
        Assume if there is only one Owner of Dreams, they are not able to change
        their own permission to 2.
    """
    user_1 = create_input[0][0]
    user_2 = create_input[0][1]
    user_3 = create_input[0][2]
    private_channel = create_input[1][2]

    # promote user2 and user3 to owners
    assert admin_userpermission_change_v1(user_1['token'],
                                          user_2['auth_user_id'],
                                          1).status_code == SUCCESS
    assert admin_userpermission_change_v1(user_1['token'],
                                          user_3['auth_user_id'],
                                          1).status_code == SUCCESS

    # user1, user2 should both be able to change their own permissions to 2
    assert admin_userpermission_change_v1(user_1['token'],
                                          user_1['auth_user_id'],
                                          2).status_code == SUCCESS
    assert admin_userpermission_change_v1(user_2['token'],
                                          user_2['auth_user_id'],
                                          2).status_code == SUCCESS

    # user3 shouldn't have their permissions changed despite function returning
    # expected output
    assert admin_userpermission_change_v1(user_3['token'],
                                          user_3['auth_user_id'],
                                          2).status_code == SUCCESS

    # user1 & user2 should now be members and can't join private channels
    assert channel_join_v2(
        user_1['token'],
        private_channel['channel_id']).status_code == ACCESS_ERROR
    assert channel_join_v2(
        user_2['token'],
        private_channel['channel_id']).status_code == ACCESS_ERROR

    # user3 should still be able to join private channels
    assert channel_join_v2(
        user_3['token'], private_channel['channel_id']).status_code == SUCCESS
Exemple #10
0
def test_no_change(create_input):
    """ Assume owners are able to set the new permissions of others and 
        themselves to be the same permissions they already had, with no errors
        occurring.
    """
    user_1, user_2, user_3, user_4, user_5 = create_input[0]
    private_channel = create_input[1][2]

    # change permissions of user2 and user3 to owners
    assert admin_userpermission_change_v1(user_1['token'],
                                          user_2['auth_user_id'],
                                          1).status_code == SUCCESS
    assert admin_userpermission_change_v1(user_1['token'],
                                          user_3['auth_user_id'],
                                          1).status_code == SUCCESS

    # call function on user2,3,4,5 but "change" their permissions to their
    # original permissions
    assert admin_userpermission_change_v1(user_1['token'],
                                          user_2['auth_user_id'],
                                          1).status_code == SUCCESS
    assert admin_userpermission_change_v1(user_1['token'],
                                          user_3['auth_user_id'],
                                          1).status_code == SUCCESS
    assert admin_userpermission_change_v1(user_1['token'],
                                          user_4['auth_user_id'],
                                          2).status_code == SUCCESS
    assert admin_userpermission_change_v1(user_1['token'],
                                          user_5['auth_user_id'],
                                          2).status_code == SUCCESS

    # user2,3 should still be able to join private channels
    assert channel_join_v2(
        user_2['token'], private_channel['channel_id']).status_code == SUCCESS
    assert channel_join_v2(
        user_3['token'], private_channel['channel_id']).status_code == SUCCESS

    # user4,5 should still not be able to join private channels
    assert channel_join_v2(
        user_4['token'],
        private_channel['channel_id']).status_code == ACCESS_ERROR
    assert channel_join_v2(
        user_5['token'],
        private_channel['channel_id']).status_code == ACCESS_ERROR
Exemple #11
0
def test_multiple_owners_to_members(create_input):
    """ Tests for demoting multiple owners to members.
    """

    user_1, user_2, user_3, user_4, user_5 = create_input[0]

    private_channel = create_input[1][2]

    # make user 2,3,4 all owners
    assert admin_userpermission_change_v1(user_1['token'],
                                          user_2['auth_user_id'],
                                          1).status_code == SUCCESS
    assert admin_userpermission_change_v1(user_1['token'],
                                          user_3['auth_user_id'],
                                          1).status_code == SUCCESS
    assert admin_userpermission_change_v1(user_1['token'],
                                          user_4['auth_user_id'],
                                          1).status_code == SUCCESS

    # as user 2, demote user1,3,4
    assert admin_userpermission_change_v1(user_2['token'],
                                          user_1['auth_user_id'],
                                          2).status_code == SUCCESS
    assert admin_userpermission_change_v1(user_2['token'],
                                          user_3['auth_user_id'],
                                          2).status_code == SUCCESS
    assert admin_userpermission_change_v1(user_2['token'],
                                          user_4['auth_user_id'],
                                          2).status_code == SUCCESS

    # user1,3,4,5 should not be able to join private channels
    assert channel_join_v2(
        user_1['token'],
        private_channel['channel_id']).status_code == ACCESS_ERROR
    assert channel_join_v2(
        user_3['token'],
        private_channel['channel_id']).status_code == ACCESS_ERROR
    assert channel_join_v2(
        user_4['token'],
        private_channel['channel_id']).status_code == ACCESS_ERROR
    assert channel_join_v2(
        user_5['token'],
        private_channel['channel_id']).status_code == ACCESS_ERROR
Exemple #12
0
def test_fail_private_channel(create_input):
    # length of *_members for Third Channel before join
    assert len(
        channel_details_v2(
            create_input[0][2]["token"],
            create_input[1][2]["channel_id"]).json()["owner_members"]) == 1
    assert len(
        channel_details_v2(
            create_input[0][2]["token"],
            create_input[1][2]["channel_id"]).json()["all_members"]) == 1

    # AccessError becuase these users are not global owners
    assert channel_join_v2(
        create_input[0][1]["token"],
        create_input[1][2]["channel_id"]).status_code == ACCESS_ERROR
    assert channel_join_v2(
        create_input[0][3]["token"],
        create_input[1][2]["channel_id"]).status_code == ACCESS_ERROR
    assert channel_join_v2(
        create_input[0][4]["token"],
        create_input[1][2]["channel_id"]).status_code == ACCESS_ERROR
Exemple #13
0
def test_single_react_notification():
    clear_v1()
    user1 = auth_register_v2("*****@*****.**", "finalpassword", "Eric",
                             "Zheng").json()
    user2 = auth_register_v2("*****@*****.**", "validpassword", "Josh",
                             "Hatton").json()
    channel1 = channels_create_v2(user1['token'], 'Channel 1', True).json()
    channel_join_v2(user2['token'], channel1['channel_id'])
    msg1 = message_send_v2(user1['token'], channel1['channel_id'],
                           "1 like = 1 prayer").json()
    message_react_v1(user2['token'], msg1['message_id'], 1)

    assert notifications_get_v1(user1['token']).json() == {
        'notifications': [{
            'channel_id':
            channel1['channel_id'],
            'dm_id':
            -1,
            'notification_message':
            "joshhatton reacted to your message in Channel 1"
        }]
    }
Exemple #14
0
def test_simple_tag():
    clear_v1()
    user_1 = auth_register_v2("*****@*****.**", "finalpassword", "Eric",
                              "Zheng").json()
    user_2 = auth_register_v2("*****@*****.**", "validpassword", "Josh",
                              "Hatton").json()

    message_1 = "@ericzheng, how are you doing today?"

    channel_1 = channels_create_v2(user_1['token'], 'Channel 1', True).json()
    channel_join_v2(user_2['token'], channel_1['channel_id'])
    message_send_v2(user_2['token'], channel_1['channel_id'], message_1)

    assert notifications_get_v1(user_1['token']).json() == {
        'notifications': [{
            'channel_id':
            channel_1['channel_id'],
            'dm_id':
            -1,
            'notification_message':
            f"joshhatton tagged you in Channel 1: {message_1[0:20]}"
        }]
    }
def test_success_user_added_after_msg_send(create_input):
    assert channel_join_v2(create_input[0][4]["token"],
                           create_input[1][1]["channel_id"]).json() == {}
    result = search_v2(create_input[0][4]["token"], "to").json()
    assert type(result) == dict
    assert len(result["messages"]) == 4
    assert result["messages"][0]["u_id"] == create_input[0][3]["auth_user_id"]
    assert result["messages"][1]["u_id"] == create_input[0][2]["auth_user_id"]
    assert result["messages"][2]["u_id"] == create_input[0][1]["auth_user_id"]
    assert result["messages"][3]["u_id"] == create_input[0][3]["auth_user_id"]
    assert result["messages"][0]["message"] == "Me too!"
    assert result["messages"][1]["message"] == "I'm excited to be here!"
    assert result["messages"][2]["message"] == "Hey nice to meet you"
    assert result["messages"][3]["message"] == "Nice weather today aye..."
def test_not_channel_member_react(create_input):
    assert message_react_v1(create_input[0][2]['token'], create_input[3][0],
                            1).status_code == ACCESS_ERROR
    assert message_react_v1(create_input[0][3]['token'], create_input[3][1],
                            1).status_code == ACCESS_ERROR
    assert message_react_v1(create_input[0][3]['token'], create_input[3][4],
                            1).status_code == ACCESS_ERROR
    assert message_react_v1(create_input[0][4]['token'], create_input[4][3],
                            1).status_code == ACCESS_ERROR
    assert message_react_v1(create_input[0][3]['token'], create_input[4][1],
                            1).status_code == ACCESS_ERROR
    assert message_react_v1(create_input[0][3]['token'], create_input[4][4],
                            1).status_code == ACCESS_ERROR
    # Cannot occur (if the are not a member they can't have reacted - unless removed from channel)
    channel_join_v2(create_input[0][2]['token'], create_input[1][0])
    message_react_v1(create_input[0][2]['token'], create_input[3][0], 1)
    channel_leave_v1(create_input[0][2]['token'], create_input[1][0])
    assert message_unreact_v1(create_input[0][2]['token'], create_input[3][0],
                              1).status_code == ACCESS_ERROR
    message_react_v1(create_input[0][2]['token'], create_input[4][0], 1)
    dm_leave_v1(create_input[0][2]['token'], create_input[3][0])
    assert message_unreact_v1(create_input[0][2]['token'], create_input[4][0],
                              1).status_code == ACCESS_ERROR
Exemple #17
0
def test_multiple_members_to_owners(create_input):
    """ Tests that the first owner of Dreams is able to promote several members of
        Dreams to an owner. These new owners should also be able to promote
        other members.
    """
    # user_1 is a dreams owner, everyone else is a member
    user_1, user_2, user_3, user_4, user_5 = create_input[0]

    private_channel = create_input[1][2]

    # Promote user_2 to owner
    assert admin_userpermission_change_v1(user_1['token'],
                                          user_2['auth_user_id'],
                                          1).status_code == SUCCESS

    # user_2 should be able to promote other members to owners as well
    assert admin_userpermission_change_v1(user_2['token'],
                                          user_3['auth_user_id'],
                                          1).status_code == SUCCESS
    assert admin_userpermission_change_v1(user_2['token'],
                                          user_4['auth_user_id'],
                                          1).status_code == SUCCESS

    # user_3 should also be able to promote members to owners
    assert admin_userpermission_change_v1(user_3['token'],
                                          user_5['auth_user_id'],
                                          1).status_code == SUCCESS

    # everyone should be able to join a private channel
    assert channel_join_v2(
        user_2['token'], private_channel['channel_id']).status_code == SUCCESS
    assert channel_join_v2(
        user_3['token'], private_channel['channel_id']).status_code == SUCCESS
    assert channel_join_v2(
        user_4['token'], private_channel['channel_id']).status_code == SUCCESS
    assert channel_join_v2(
        user_5['token'], private_channel['channel_id']).status_code == SUCCESS
Exemple #18
0
def test_fail_no_permission(create_input):
    # length of *_members for Third Channel before remove
    assert len(
        channel_details_v2(
            create_input[0][2]["token"],
            create_input[1][2]["channel_id"]).json()["owner_members"]) == 2
    assert len(
        channel_details_v2(
            create_input[0][2]["token"],
            create_input[1][2]["channel_id"]).json()["all_members"]) == 2

    assert channel_join_v2(create_input[0][4]["token"],
                           create_input[1][2]["channel_id"]).json() == {}

    assert channel_removeowner_v1(
        create_input[0][4]["token"], create_input[1][2]["channel_id"],
        create_input[0][2]["auth_user_id"]).status_code == ACCESS_ERROR
Exemple #19
0
def test_promote_member_to_owner(create_input):
    """ Tests that the first owner of Dreams is able to successfully promote
        a member of Dreams to an owner.
    """

    user_1 = create_input[0][0]  # Dreams owner
    user_2 = create_input[0][1]  # Dreams member

    private_channel = create_input[1][2]

    # Promote user_2 to an owner
    assert admin_userpermission_change_v1(user_1['token'],
                                          user_2['auth_user_id'],
                                          1).status_code == SUCCESS

    # user_2 should be able to join private channels now as an owner
    assert channel_join_v2(
        user_2['token'], private_channel['channel_id']).status_code == SUCCESS
Exemple #20
0
def test_demote_owner_to_member(create_input):
    """ Test for demoting owners to members.
    """

    user_1 = create_input[0][0]
    user_2 = create_input[0][1]

    private_channel = create_input[1][2]

    # first make user_2 an owner
    assert admin_userpermission_change_v1(user_1['token'],
                                          user_2['auth_user_id'],
                                          1).status_code == SUCCESS

    # now demote user_1 to member
    assert admin_userpermission_change_v1(user_2['token'],
                                          user_1['auth_user_id'],
                                          2).status_code == SUCCESS

    # user_1 should not be able to join private channels
    assert channel_join_v2(
        user_1['token'],
        private_channel['channel_id']).status_code == ACCESS_ERROR
Exemple #21
0
def test_success_one_join(create_input):
    # length of *_members for First Channel before join
    assert len(
        channel_details_v2(
            create_input[0][0]["token"],
            create_input[1][0]["channel_id"]).json()["owner_members"]) == 1
    assert len(
        channel_details_v2(
            create_input[0][0]["token"],
            create_input[1][0]["channel_id"]).json()["all_members"]) == 1

    assert channel_join_v2(create_input[0][1]["token"],
                           create_input[1][0]["channel_id"]).json() == {}

    # 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"]).json()["owner_members"]) == 1
    assert len(
        channel_details_v2(
            create_input[0][0]["token"],
            create_input[1][0]["channel_id"]).json()["all_members"]) == 2
    assert len(
        channel_details_v2(
            create_input[0][1]["token"],
            create_input[1][0]["channel_id"]).json()["owner_members"]) == 1
    assert len(
        channel_details_v2(
            create_input[0][1]["token"],
            create_input[1][0]["channel_id"]).json()["all_members"]) == 2

    # number of channels each user is a part of
    assert len(
        channels_list_v2(create_input[0][0]["token"]).json()["channels"]) == 1
    assert len(
        channels_list_v2(create_input[0][1]["token"]).json()["channels"]) == 2
Exemple #22
0
def test_channel_tagged_user(create_input):
    """ Tests correct return of notifications when user is tagged in a channel.
    """
    user_1, user_2, user_3, user_4, user_5 = create_input[0]

    user_1_handle = create_input[1][0]
    user_2_handle = create_input[1][1]
    user_3_handle = create_input[1][2]
    user_4_handle = create_input[1][3]
    user_5_handle = create_input[1][4]

    channel_1, channel_2, channel_3 = create_input[2]

    message_1 = f"@{user_1_handle['user']['handle_str']}, how are you on such a fine lovely day? I hope you are well!"
    message_2 = f"@{user_2_handle['user']['handle_str']}, can you send me homework answers from yesterday please? Thanks!"
    message_3 = f"@{user_3_handle['user']['handle_str']}, I heard that your knees are the finest knees in all of Australia, is this true?"
    message_4 = f"@{user_4_handle['user']['handle_str']} is cool."
    message_5 = f"@{user_5_handle['user']['handle_str']} is a donkey."
    message_6 = f"@{user_3_handle['user']['handle_str']} is an even bigger donkey than @{user_4_handle['user']['handle_str']}"

    dm_1, dm_2, dm_3 = create_input[3]

    channel_join_v2(user_2['token'], channel_1['channel_id'])
    channel_join_v2(user_3['token'], channel_1['channel_id'])
    channel_join_v2(user_4['token'], channel_1['channel_id'])
    channel_join_v2(user_4['token'], channel_2['channel_id'])
    channel_join_v2(user_5['token'], channel_2['channel_id'])
    channel_join_v2(user_1['token'], channel_3['channel_id'])

    message_send_v2(user_1['token'], channel_1['channel_id'], message_2)
    message_send_v2(user_1['token'], channel_1['channel_id'], message_3)
    message_send_v2(user_2['token'], channel_2['channel_id'], message_4)
    message_send_v2(user_2['token'], channel_2['channel_id'], message_5)
    message_send_v2(user_3['token'], channel_1['channel_id'], message_1)
    message_send_v2(user_1['token'], channel_1['channel_id'], message_6)

    assert notifications_get_v1(user_2['token']).json() == {
        'notifications': [{
            'channel_id':
            channel_1['channel_id'],
            'dm_id':
            -1,
            'notification_message':
            f"{user_1_handle['user']['handle_str']} tagged you in Channel 1: {message_2[0:20]}"
        }, {
            'channel_id':
            -1,
            'dm_id':
            dm_3['dm_id'],
            'notification_message':
            f"{user_5_handle['user']['handle_str']} added you to {dm_3['dm_name']}"
        }, {
            'channel_id':
            -1,
            'dm_id':
            dm_1['dm_id'],
            'notification_message':
            f"{user_1_handle['user']['handle_str']} added you to {dm_1['dm_name']}"
        }]
    }

    assert notifications_get_v1(user_3['token']).json() == {
        'notifications': [
            {
                'channel_id':
                channel_1['channel_id'],
                'dm_id':
                -1,
                'notification_message':
                f"{user_1_handle['user']['handle_str']} tagged you in Channel 1: {message_6[0:20]}"
            },
            {
                'channel_id':
                channel_1['channel_id'],
                'dm_id':
                -1,
                'notification_message':
                f"{user_1_handle['user']['handle_str']} tagged you in Channel 1: {message_3[0:20]}"
            },
        ]
    }

    assert notifications_get_v1(user_4['token']).json() == {
        'notifications': [{
            'channel_id':
            channel_1['channel_id'],
            'dm_id':
            -1,
            'notification_message':
            f"{user_1_handle['user']['handle_str']} tagged you in Channel 1: {message_6[0:20]}"
        }, {
            'channel_id':
            channel_2['channel_id'],
            'dm_id':
            -1,
            'notification_message':
            f"{user_2_handle['user']['handle_str']} tagged you in Channel 2: {message_4[0:20]}"
        }, {
            'channel_id':
            -1,
            'dm_id':
            dm_2['dm_id'],
            'notification_message':
            f"{user_3_handle['user']['handle_str']} added you to {dm_2['dm_name']}"
        }]
    }

    assert notifications_get_v1(user_5['token']).json() == {
        'notifications': [{
            'channel_id':
            channel_2['channel_id'],
            'dm_id':
            -1,
            'notification_message':
            f"{user_2_handle['user']['handle_str']} tagged you in Channel 2: {message_5[0:20]}"
        }]
    }
Exemple #23
0
def test_multiple_react_notification():
    clear_v1()
    user1 = auth_register_v2("*****@*****.**", "finalpassword", "Eric",
                             "Zheng").json()
    user2 = auth_register_v2("*****@*****.**", "validpassword", "Josh",
                             "Hatton").json()
    user3 = auth_register_v2("*****@*****.**", "anotherpassword", "Bunny",
                             "Dong").json()
    user4 = auth_register_v2("*****@*****.**", "password3", "Jordan",
                             "Milch").json()
    user5 = auth_register_v2("*****@*****.**", "4thpassword", "Dean",
                             "Zworestine").json()
    channel1 = channels_create_v2(user1['token'], 'Channel 1', True).json()
    channel_join_v2(user2['token'], channel1['channel_id'])
    channel_join_v2(user3['token'], channel1['channel_id'])
    channel_join_v2(user4['token'], channel1['channel_id'])
    channel_join_v2(user5['token'], channel1['channel_id'])
    msg1 = message_send_v2(user1['token'], channel1['channel_id'],
                           "1 like = 1 prayer").json()
    message_react_v1(user1['token'], msg1['message_id'], 1)
    message_react_v1(user2['token'], msg1['message_id'], 1)
    message_react_v1(user3['token'], msg1['message_id'], 1)
    message_react_v1(user4['token'], msg1['message_id'], 1)
    message_react_v1(user5['token'], msg1['message_id'], 1)

    assert notifications_get_v1(user1['token']).json() == {
        'notifications': [{
            'channel_id':
            channel1['channel_id'],
            'dm_id':
            -1,
            'notification_message':
            "deanzworestine reacted to your message in Channel 1"
        }, {
            'channel_id':
            channel1['channel_id'],
            'dm_id':
            -1,
            'notification_message':
            "jordanmilch reacted to your message in Channel 1"
        }, {
            'channel_id':
            channel1['channel_id'],
            'dm_id':
            -1,
            'notification_message':
            "bunnydong reacted to your message in Channel 1"
        }, {
            'channel_id':
            channel1['channel_id'],
            'dm_id':
            -1,
            'notification_message':
            "joshhatton reacted to your message in Channel 1"
        }, {
            'channel_id':
            channel1['channel_id'],
            'dm_id':
            -1,
            'notification_message':
            "ericzheng reacted to your message in Channel 1"
        }]
    }
Exemple #24
0
def test_channel_id_invalid(create_input):
    # channel_id 5 has not been created
    assert channel_join_v2(create_input[0][0]["token"],
                           5).status_code == INPUT_ERROR
Exemple #25
0
def test_token_invalid(create_input):
    # token is invalid
    assert channel_join_v2(
        'insertinvalidtokenhere',
        create_input[1][0]["channel_id"]).status_code == ACCESS_ERROR
Exemple #26
0
def test_both_invalid(create_input):
    # token and channel_id both invalid,
    # ACCESS_ERROR is prioritised
    assert channel_join_v2('insertanotherinvalidtokenhere',
                           321).status_code == ACCESS_ERROR
Exemple #27
0
def test_success_multiple_join(create_input):
    # length of *_members for Second Channel before join
    assert len(
        channel_details_v2(
            create_input[0][1]["token"],
            create_input[1][1]["channel_id"]).json()["owner_members"]) == 1
    assert len(
        channel_details_v2(
            create_input[0][1]["token"],
            create_input[1][1]["channel_id"]).json()["all_members"]) == 1

    assert channel_join_v2(create_input[0][0]["token"],
                           create_input[1][1]["channel_id"]).json() == {}
    assert channel_join_v2(create_input[0][2]["token"],
                           create_input[1][1]["channel_id"]).json() == {}
    assert channel_join_v2(create_input[0][3]["token"],
                           create_input[1][1]["channel_id"]).json() == {}

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

    assert channel_details_v2(
        create_input[0][4]["token"],
        create_input[1][1]["channel_id"]).status_code == ACCESS_ERROR

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

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

    data_test_channels = [
        channels_create_v2(data_test_users[0]["token"], "Channel 1",
                           True).json(),
        channels_create_v2(data_test_users[1]["token"], "Private",
                           False).json(),
    ]

    # User1, User3, User 4 in channel 1
    # User2, User 5 in channel 2
    channel_join_v2(data_test_users[2]["token"],
                    data_test_channels[0]["channel_id"])
    channel_join_v2(data_test_users[3]["token"],
                    data_test_channels[0]["channel_id"])
    channel_invite_v2(data_test_users[1]["token"],
                      data_test_channels[1]["channel_id"],
                      data_test_users[4]["auth_user_id"])

    # User 1, user3, user4 sends a message to channel 1
    # User2, user5 sends a message to channel 2
    data_test_channel_messages = [
        message_send_v2(
            data_test_users[0]["token"],
            data_test_channels[0]["channel_id"],
            "Look, I was gonna go easy on you \
                                 Not to hurt your feelings \
                                 But I'm only going to get this one chance \
                                 Something's wrong, I can feel it",
        ).json(),
        message_send_v2(
            data_test_users[1]["token"],
            data_test_channels[1]["channel_id"],
            "Can we pretend that airplanes in the night \
                                 sky are like shootin' stars \
                                 I could really use a wish right now, wish right \
                                 now, wish right now Can we pretend that \
                                 airplanes in the night sky are like shootin'",
        ).json(),
        message_send_v2(
            data_test_users[2]["token"],
            data_test_channels[0]["channel_id"],
            "All I want is nothing more \
                                  To hear you knocking at my door \
                                  'Cause if I could see your face once more \
                                  I could die a happy man I'm sure",
        ).json(),
        message_send_v2(
            data_test_users[3]["token"],
            data_test_channels[0]["channel_id"],
            "I've been staring at the edge of the water \
                                  'Long as I can remember \
                                  Never really knowing why",
        ).json(),
        message_send_v2(
            data_test_users[4]["token"],
            data_test_channels[1]["channel_id"],
            "I am so so so so so sick of writing these tests \
                                  someone please send help i am so tired lol.",
        ).json(),
    ]

    # user 1 has dm with user 2
    # user 3 has dm with user 4
    # user 5 has dm with user 2
    data_test_dms = [
        dm_create_v1(data_test_users[0]["token"],
                     [data_test_users[1]["auth_user_id"]]).json(),
        dm_create_v1(data_test_users[2]["token"],
                     [data_test_users[3]["auth_user_id"]]).json(),
        dm_create_v1(data_test_users[4]["token"],
                     [data_test_users[1]["auth_user_id"]]).json(),
    ]

    # user 1, user_2 sends dm to dm_1
    # user 3, user 4 sends dm to dm_2
    # user 5 sends dm to dm_3
    data_test_dm_messages = [
        message_senddm_v1(data_test_users[0]["token"],
                          data_test_dms[0]["dm_id"], "Hello user 2!").json(),
        message_senddm_v1(data_test_users[1]["token"],
                          data_test_dms[0]["dm_id"], "Hi user 1!").json(),
        message_senddm_v1(data_test_users[2]["token"],
                          data_test_dms[1]["dm_id"],
                          "How are you user 4?").json(),
        message_senddm_v1(data_test_users[3]["token"],
                          data_test_dms[1]["dm_id"],
                          "I am fine user 3!").json(),
        message_senddm_v1(data_test_users[4]["token"],
                          data_test_dms[2]["dm_id"], "Shut up user 2.").json(),
    ]

    return [
        data_test_users, data_test_channels, data_test_channel_messages,
        data_test_dms, data_test_dm_messages
    ]
def create_input():
    clear_v1()

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

    data_test_channels = [
        channels_create_v2(data_test_users[0]["token"], "First Channel",
                           True).json(),
        channels_create_v2(data_test_users[1]["token"], "Second Channel",
                           True).json(),
    ]

    data_test_dms = [
        dm_create_v1(data_test_users[0]["token"], [
            data_test_users[1]["auth_user_id"],
            data_test_users[2]["auth_user_id"]
        ]).json(),
        dm_create_v1(data_test_users[3]["token"], [
            data_test_users[0]["auth_user_id"],
            data_test_users[4]["auth_user_id"]
        ]).json(),
    ]

    # Add everyone to First Channel
    channel_join_v2(data_test_users[1]["token"],
                    data_test_channels[0]["channel_id"])
    channel_join_v2(data_test_users[2]["token"],
                    data_test_channels[0]["channel_id"])
    channel_join_v2(data_test_users[3]["token"],
                    data_test_channels[0]["channel_id"])
    channel_join_v2(data_test_users[4]["token"],
                    data_test_channels[0]["channel_id"])

    # Add users 0 and 3 to Second Channel
    channel_join_v2(data_test_users[0]["token"],
                    data_test_channels[1]["channel_id"])
    channel_join_v2(data_test_users[3]["token"],
                    data_test_channels[1]["channel_id"])

    # Send messages to First Channel
    message_send_v2(data_test_users[0]["token"],
                    data_test_channels[0]["channel_id"], "Hey there")
    message_send_v2(data_test_users[1]["token"],
                    data_test_channels[0]["channel_id"],
                    "Hey nice to meet you")
    message_send_v2(data_test_users[2]["token"],
                    data_test_channels[0]["channel_id"],
                    "I'm excited to be here!")
    message_send_v2(data_test_users[3]["token"],
                    data_test_channels[0]["channel_id"], "Me too!")

    # Send messages to Second Channel
    message_send_v2(data_test_users[1]["token"],
                    data_test_channels[1]["channel_id"], "hey")
    message_send_v2(data_test_users[0]["token"],
                    data_test_channels[1]["channel_id"], "sup")
    message_send_v2(data_test_users[3]["token"],
                    data_test_channels[1]["channel_id"],
                    "Nice weather today aye...")

    # Send messages to dm_1
    message_senddm_v1(data_test_users[0]["token"], data_test_dms[0]["dm_id"],
                      "Hey there")
    message_senddm_v1(data_test_users[1]["token"], data_test_dms[0]["dm_id"],
                      "Oh hi Mark")
    message_senddm_v1(data_test_users[2]["token"], data_test_dms[0]["dm_id"],
                      "Lol")

    # Send messages to dm_2
    message_senddm_v1(data_test_users[0]["token"], data_test_dms[1]["dm_id"],
                      "Hey again. This is getting repetitive...")
    message_senddm_v1(data_test_users[3]["token"], data_test_dms[1]["dm_id"],
                      "Yeah true lol")
    message_senddm_v1(data_test_users[4]["token"], data_test_dms[1]["dm_id"],
                      "Haha")

    return [data_test_users, data_test_channels, data_test_dms]