Example #1
0
def test_dm_messages_v1_leave(user_setup, dm_setup):
    # testing to see if messages works after user leaves
    message_senddm_v1(make_token(0), 1, "onions cannot be eaten raw")
    dateTimeObj = datetime.now()
    timeStampStr = dateTimeObj.strftime("%d-%b-%Y (%H:%M)")
    dm_leave_v1(make_token(0), 1)
    assert dm_messages_v1(make_token(1), 1, 0) == {
        "messages": [
            {
                "message_id":
                0,
                "u_id":
                0,
                "message":
                "onions cannot be eaten raw",
                "time_created":
                timeStampStr,
                "channel_id":
                -1,
                "dm_id":
                1,
                'reacts': [{
                    'react_id': 1,
                    'u_ids': [],
                    'is_this_user_reacted': False
                }],
                'is_pinned':
                False
            },
        ],
        "start":
        0,
        "end":
        -1,
    }
Example #2
0
def test_invalid_dm_id():
    clear_v1()

    auth_user_1_data = auth_register_v2("*****@*****.**", "123456", "Andy", "Dandy")
    auth_user_1_token = auth_user_1_data["token"]

    with pytest.raises(InputError):
        dm_leave_v1(auth_user_1_token, 99999)
def test_invalid_dm_id(reg_user):
    clear_v2()
    user = reg_user(0)
    token = user['token']
    u_id = user['auth_user_id']
    dm = dm_create_v1(token, [u_id])
    dm_id = dm['dm_id']

    with pytest.raises(InputError):
        dm_leave_v1(token, dm_id + 1)
def test_invalid_token(reg_user):

    clear_v2()
    first_user = reg_user(0)
    first_token = first_user['token']
    first_id = first_user['auth_user_id']
    dm = dm_create_v1(first_token, [first_id])
    dm_id = dm['dm_id']

    with pytest.raises(AccessError):
        dm_leave_v1("invalid_token", dm_id)
def test_not_creator(reg_user):
    clear_v2()
    first_user = reg_user(0)
    first_token = first_user['token']
    first_id = first_user['auth_user_id']
    dm = dm_create_v1(first_token, [first_id])
    dm_id = dm['dm_id']

    second_user = auth_register_v2("*****@*****.**", "goodpass123",
                                   "Stress", "Puppy")
    second_token = second_user['token']
    with pytest.raises(AccessError):
        dm_leave_v1(second_token, dm_id)
def test_one_commom(reg_user):
    clear_v2()
    user = reg_user(0)
    token = user['token']
    second_user = reg_user(1)
    second_id = second_user['auth_user_id']

    # one dm id
    dm = dm_create_v1(token, [second_id])
    dm_id = dm['dm_id']

    dm_leave_v1(token, dm_id)

    dm_list = dm_list_v1(token)['dms']
    assert not len(dm_list)
def test_not_creator_again(reg_user):

    clear_v2()
    first_user = reg_user(0)
    first_token = first_user['token']
    second_user = reg_user(1)
    second_id = second_user['auth_user_id']
    second_token = second_user['token']
    dm = dm_create_v1(first_token, [second_id])
    dm_id = dm['dm_id']

    # already leave case
    dm_leave_v1(second_token, dm_id)

    with pytest.raises(AccessError):
        dm_leave_v1(second_token, dm_id)
Example #8
0
def dm_leave():
    info = request.get_json()
    token = info["token"]
    dm_id = info["dm_id"]

    dm_leave = dm_leave_v1(token, dm_id)
    return dumps(dm_leave)
Example #9
0
def test_dm_leave_v1():
    clear_v1()

    auth_user_1_data = auth_register_v2("*****@*****.**", "123456", "Andy", "Dandy")
    auth_user_1_token = auth_user_1_data["token"]

    auth_user_2_data = auth_register_v2("*****@*****.**", "123456", "Bob", "Hobs")
    auth_user_2_token = auth_user_2_data["token"]
    auth_user_2_id = auth_user_2_data["auth_user_id"]

    auth_user_3_data = auth_register_v2("*****@*****.**", "123456", "Chris", "Wiz")
    auth_user_3_id = auth_user_3_data["auth_user_id"]

    dm_data_1 = dm_create_v1(auth_user_1_token, [auth_user_2_id, auth_user_3_id])
    dm_id_1 = dm_data_1["dm_id"]
    dm_name_1 = dm_data_1["dm_name"]

    assert dm_list_v1(auth_user_1_token) == {
        "dms": [
            {
                "dm_id": dm_id_1,
                "name": dm_name_1
            }
        ]
    }

    dm_leave_v1(auth_user_1_token, dm_id_1)
    assert dm_list_v1(auth_user_1_token) == {
        "dms": [
        ]
    }

    assert dm_list_v1(auth_user_2_token) == {
        "dms": [
            {
                "dm_id": dm_id_1,
                "name": dm_name_1
            }
        ]
    }

    dm_leave_v1(auth_user_2_token, dm_id_1)
    assert dm_list_v1(auth_user_2_token) == {
        "dms": [
        ]
    }
Example #10
0
def test_dm_leave_v1_owner(user_setup, dm_setup):

    # dm_create_v1(make_token(1), [0, 2]) # dm_id 0
    dm_leave_v1(make_token(0), 0)
    dm_leave_v1(make_token(1), 0)
    assert dm_details_v1(make_token(2), 0) == {
        "name":
        "christopherluong",
        "members": [
            {
                'u_id': 2,
                'email': "*****@*****.**",
                'name_first': 'Christopher',
                'name_last': 'Luong',
                'handle': 'christopherluong'
            },
        ],
    }
Example #11
0
def test_invalid_non_member():
    clear_v1()

    auth_user_1_data = auth_register_v2("*****@*****.**", "123456", "Andy", "Dandy")
    auth_user_1_token = auth_user_1_data["token"]

    auth_user_2_data = auth_register_v2("*****@*****.**", "123456", "Bob", "Hobs")
    auth_user_2_id = auth_user_2_data["auth_user_id"]

    auth_user_3_data = auth_register_v2("*****@*****.**", "123456", "Chris", "Wiz")
    auth_user_3_id = auth_user_3_data["auth_user_id"]

    dm_data_1 = dm_create_v1(auth_user_1_token, [auth_user_2_id, auth_user_3_id])
    dm_id_1 = dm_data_1["dm_id"]

    auth_user_4_data = auth_register_v2("*****@*****.**", "123456", "Joshua", "King")
    auth_user_4_token = auth_user_4_data["token"]

    with pytest.raises(AccessError):
        dm_leave_v1(auth_user_4_token, dm_id_1)
def test_message_unreact_user_not_member():
    # Authorised user is not a member of the channel or DM the message exists in
    clear_v1()
    user = auth_register_v2("*****@*****.**", "password", "bob", "williams")
    user2 = auth_register_v2("*****@*****.**", "password", "billy",
                             "williams")
    channel = channels_create_v2(user['token'], 'channel example', True)
    channel_join_v2(user2['token'], channel['channel_id'])
    msg = message_send_v2(user["token"], channel['channel_id'], 'helo world')
    message_react_v1(user2['token'], msg["message_id"], 1)
    # User leaves channel so cannot unreact
    channel_leave_v1(user2['token'], channel['channel_id'])
    with pytest.raises(AccessError):
        message_unreact_v1(user2['token'], msg["message_id"], 1)

    dm = dm_create_v1(user['token'], [user2["auth_user_id"]])
    msg = message_senddm_v1(user["token"], dm["dm_id"], "hi hi")
    message_react_v1(user2['token'], msg["message_id"], 1)
    dm_leave_v1(user2["token"], dm["dm_id"])
    with pytest.raises(AccessError):
        message_unreact_v1(user2["token"], msg["message_id"], 1)
Example #13
0
def test_dm_leave_v1_success(user_setup, dm_setup):

    # Test 1:
    # Remove user no.3 from dm no.1
    # dm_create_v1(make_token(1), [0, 2]) # dm_id 0
    dm_leave_v1(make_token(2), 0)
    assert dm_details_v1(make_token(1), 0) == {
        "name":
        "gungeetsingh, petertran",
        "members": [{
            'u_id': 1,
            'email': "*****@*****.**",
            'name_first': 'Peter',
            'name_last': 'Tran',
            'handle': 'petertran'
        }, {
            'u_id': 0,
            'email': "*****@*****.**",
            'name_first': 'Gungeet',
            'name_last': 'Singh',
            'handle': 'gungeetsingh'
        }],
    }
Example #14
0
def test_dm_leave_v1_errors(user_setup, dm_setup):
    # invalid token
    with pytest.raises(AccessError):
        dm_leave_v1(make_token(123456), 0)

    # invalid dm
    with pytest.raises(InputError):
        dm_leave_v1(make_token(1), 10)

    # User is not part of the dm
    with pytest.raises(AccessError):
        dm_leave_v1(make_token(3), 0)
def test_more_commom(reg_user):

    clear_v2()
    user = reg_user(0)
    token = user['token']
    second_user = reg_user(1)
    second_id = second_user['auth_user_id']

    # more dm id
    dm1 = dm_create_v1(token, [second_id])
    dm_id1 = dm1['dm_id']
    dm2 = dm_create_v1(token, [second_id])
    dm_id2 = dm2['dm_id']
    dm3 = dm_create_v1(token, [second_id])
    dm_id3 = dm3['dm_id']
    dm_leave_v1(token, dm_id1)
    dm_leave_v1(token, dm_id2)
    dm_leave_v1(token, dm_id3)

    dm_list = dm_list_v1(token)['dms']
    assert not len(dm_list)
Example #16
0
def dm_leave():
    parameters = request.get_json()
    token = parameters['token']
    dm_id = parameters['dm_id']
    dm_leave_v1(token, dm_id)
    return dumps({})
Example #17
0
def test_user_stats_dms(register_users, dm_setup):
    # testing dms
    assert user_stats_v1(make_token(0)) == {
        'user_stats': {
            "channels_joined": [{
                "num_channels_joined": 0,
                "time_stamp": str(create_timestamp())
            }],
            "dms_joined": [{
                "num_dms_joined": 0,
                "time_stamp": str(create_timestamp())
            }, {
                "num_dms_joined": 1,
                "time_stamp": str(create_timestamp())
            }, {
                "num_dms_joined": 2,
                "time_stamp": str(create_timestamp())
            }, {
                "num_dms_joined": 3,
                "time_stamp": str(create_timestamp())
            }],
            "messages_sent": [{
                "num_messages_sent": 0,
                "time_stamp": str(create_timestamp())
            }],
            "involvement_rate":
            1.0
        }
    }
    dm_remove_v1(make_token(0), 2)
    assert user_stats_v1(make_token(0)) == {
        'user_stats': {
            "channels_joined": [{
                "num_channels_joined": 0,
                "time_stamp": str(create_timestamp())
            }],
            "dms_joined": [
                {
                    "num_dms_joined": 0,
                    "time_stamp": str(create_timestamp())
                },
                {
                    "num_dms_joined": 1,
                    "time_stamp": str(create_timestamp())
                },
                {
                    "num_dms_joined": 2,
                    "time_stamp": str(create_timestamp())
                },
                {
                    "num_dms_joined": 3,
                    "time_stamp": str(create_timestamp())
                },
                {
                    "num_dms_joined": 2,
                    "time_stamp": str(create_timestamp())
                },
            ],
            "messages_sent": [{
                "num_messages_sent": 0,
                "time_stamp": str(create_timestamp())
            }],
            "involvement_rate":
            1.0
        }
    }
    dm_leave_v1(make_token(1), 0)
    assert user_stats_v1(make_token(1)) == {
        'user_stats': {
            "channels_joined": [{
                "num_channels_joined": 0,
                "time_stamp": str(create_timestamp())
            }],
            "dms_joined": [
                {
                    "num_dms_joined": 0,
                    "time_stamp": str(create_timestamp())
                },
                {
                    "num_dms_joined": 1,
                    "time_stamp": str(create_timestamp())
                },
                {
                    "num_dms_joined": 2,
                    "time_stamp": str(create_timestamp())
                },
                {
                    "num_dms_joined": 1,
                    "time_stamp": str(create_timestamp())
                },
            ],
            "messages_sent": [{
                "num_messages_sent": 0,
                "time_stamp": str(create_timestamp())
            }],
            "involvement_rate":
            0.5
        }
    }
    dm_invite_v1(make_token(0), 0, 1)
    assert user_stats_v1(make_token(1)) == {
        'user_stats': {
            "channels_joined": [{
                "num_channels_joined": 0,
                "time_stamp": str(create_timestamp())
            }],
            "dms_joined": [
                {
                    "num_dms_joined": 0,
                    "time_stamp": str(create_timestamp())
                },
                {
                    "num_dms_joined": 1,
                    "time_stamp": str(create_timestamp())
                },
                {
                    "num_dms_joined": 2,
                    "time_stamp": str(create_timestamp())
                },
                {
                    "num_dms_joined": 1,
                    "time_stamp": str(create_timestamp())
                },
                {
                    "num_dms_joined": 2,
                    "time_stamp": str(create_timestamp())
                },
            ],
            "messages_sent": [{
                "num_messages_sent": 0,
                "time_stamp": str(create_timestamp())
            }],
            "involvement_rate":
            1.0
        }
    }
def test_dm(test_data):
    a_data, b_data, c_data = test_data
    init_time_stamp = datetime.now().replace(microsecond=0).timestamp()
    sleep(1)

    # A: a,c
    a_dm_time_stamp = datetime.now().replace(microsecond=0).timestamp()
    a_dm_id = dm_create_v1(a_data["token"], [c_data["auth_user_id"]])["dm_id"]
    sleep(1)

    dreams_stats = users_stats_v1(a_data["token"])["dreams_stats"]
    assert dreams_stats["dms_exist"][0]["num_dms_exist"] == 0
    assert abs(dreams_stats["dms_exist"][0]["time_stamp"] -
               init_time_stamp) <= 1

    assert dreams_stats["dms_exist"][0]["num_dms_exist"] == 0
    assert abs(dreams_stats["dms_exist"][0]["time_stamp"] -
               a_dm_time_stamp) <= 1

    assert dreams_stats["utilization_rate"] == 0.67

    # A: a,c
    # B: b,c
    b_dm_time_stamp = datetime.now().replace(microsecond=0).timestamp()
    dm_create_v1(b_data["token"], [c_data["auth_user_id"]])["dm_id"]
    sleep(1)

    dreams_stats = users_stats_v1(a_data["token"])["dreams_stats"]
    assert dreams_stats["dms_exist"][0]["num_dms_exist"] == 0
    assert abs(dreams_stats["dms_exist"][0]["time_stamp"] -
               init_time_stamp) <= 1

    assert dreams_stats["dms_exist"][1]["num_dms_exist"] == 1
    assert abs(dreams_stats["dms_exist"][1]["time_stamp"] -
               a_dm_time_stamp) <= 1

    assert dreams_stats["dms_exist"][2]["num_dms_exist"] == 2
    assert abs(dreams_stats["dms_exist"][2]["time_stamp"] -
               b_dm_time_stamp) <= 1

    assert dreams_stats["utilization_rate"] == 1

    # A: a,c
    # B: b,c
    # C: c,a
    c_dm_time_stamp = datetime.now().replace(microsecond=0).timestamp()
    c_dm_id = dm_create_v1(c_data["token"], [a_data["auth_user_id"]])["dm_id"]
    sleep(1)

    dreams_stats = users_stats_v1(a_data["token"])["dreams_stats"]
    assert dreams_stats["dms_exist"][0]["num_dms_exist"] == 0
    assert abs(dreams_stats["dms_exist"][0]["time_stamp"] -
               init_time_stamp) <= 1

    assert dreams_stats["dms_exist"][1]["num_dms_exist"] == 1
    assert abs(dreams_stats["dms_exist"][1]["time_stamp"] -
               a_dm_time_stamp) <= 1

    assert dreams_stats["dms_exist"][2]["num_dms_exist"] == 2
    assert abs(dreams_stats["dms_exist"][2]["time_stamp"] -
               b_dm_time_stamp) <= 1

    assert dreams_stats["dms_exist"][3]["num_dms_exist"] == 3
    assert abs(dreams_stats["dms_exist"][3]["time_stamp"] -
               c_dm_time_stamp) <= 1

    assert dreams_stats["utilization_rate"] == 1

    # A: a,c
    # B: b,c
    # C: c
    dm_leave_v1(a_data["token"], c_dm_id)
    sleep(1)

    dreams_stats = users_stats_v1(a_data["token"])["dreams_stats"]
    assert dreams_stats["dms_exist"][0]["num_dms_exist"] == 0
    assert abs(dreams_stats["dms_exist"][0]["time_stamp"] -
               init_time_stamp) <= 1

    assert dreams_stats["dms_exist"][1]["num_dms_exist"] == 1
    assert abs(dreams_stats["dms_exist"][1]["time_stamp"] -
               a_dm_time_stamp) <= 1

    assert dreams_stats["dms_exist"][2]["num_dms_exist"] == 2
    assert abs(dreams_stats["dms_exist"][2]["time_stamp"] -
               b_dm_time_stamp) <= 1

    assert dreams_stats["dms_exist"][3]["num_dms_exist"] == 3
    assert abs(dreams_stats["dms_exist"][3]["time_stamp"] -
               c_dm_time_stamp) <= 1

    assert dreams_stats["utilization_rate"] == 1

    # ~~A: a,c~~
    # B: b,c
    # C: c
    a_dm_remove_timestamp = datetime.now().replace(microsecond=0).timestamp()
    dm_remove_v1(a_data["token"], a_dm_id)
    sleep(1)

    dreams_stats = users_stats_v1(a_data["token"])["dreams_stats"]
    assert dreams_stats["dms_exist"][0]["num_dms_exist"] == 0
    assert abs(dreams_stats["dms_exist"][0]["time_stamp"] -
               init_time_stamp) <= 1

    assert dreams_stats["dms_exist"][1]["num_dms_exist"] == 1
    assert abs(dreams_stats["dms_exist"][1]["time_stamp"] -
               a_dm_time_stamp) <= 1

    assert dreams_stats["dms_exist"][2]["num_dms_exist"] == 2
    assert abs(dreams_stats["dms_exist"][2]["time_stamp"] -
               b_dm_time_stamp) <= 1

    assert dreams_stats["dms_exist"][3]["num_dms_exist"] == 3
    assert abs(dreams_stats["dms_exist"][3]["time_stamp"] -
               c_dm_time_stamp) <= 1

    assert dreams_stats["dms_exist"][4]["num_dms_exist"] == 2
    assert abs(dreams_stats["dms_exist"][4]["time_stamp"] -
               a_dm_remove_timestamp) <= 1

    assert dreams_stats["utilization_rate"] == 0.67
Example #19
0
def test_dm(test_data):
    a_data, b_data, c_data = test_data

    # b makes dm with c
    # a inv. = 0
    # b and c inv. = 1
    b_dm_create_timestamp = datetime.now().replace(microsecond=0).timestamp()
    b_dm_id = dm_create_v1(b_data["token"], [c_data["auth_user_id"]])["dm_id"]
    sleep(1)

    user_stats = user_stats_v1(a_data["token"])["user_stats"]
    assert user_stats["dms_joined"][0]["num_dms_joined"] == 0
    assert abs(user_stats["dms_joined"][0]["time_stamp"] - a_data["time_registered"]) <= 1

    assert user_stats["involvement_rate"] == 0

    user_stats = user_stats_v1(b_data["token"])["user_stats"]
    assert user_stats["dms_joined"][1]["num_dms_joined"] == 1
    assert abs(user_stats["dms_joined"][1]["time_stamp"] - b_dm_create_timestamp) <= 1

    assert user_stats["involvement_rate"] == 1

    user_stats = user_stats_v1(c_data["token"])["user_stats"]
    assert user_stats["dms_joined"][1]["num_dms_joined"] == 1
    assert abs(user_stats["dms_joined"][1]["time_stamp"] - b_dm_create_timestamp) <= 1

    assert user_stats["involvement_rate"] == 1

    # a makes dm with b, c
    # a inv. = 0.5
    # b and c inv. = 1
   
    a_dm_create_timestamp = datetime.now().replace(microsecond=0).timestamp()
    a_dm_id = dm_create_v1(a_data["token"], [b_data["auth_user_id"], c_data["auth_user_id"]])["dm_id"]
    sleep(1)
    
    user_stats = user_stats_v1(a_data["token"])["user_stats"]
    assert user_stats["dms_joined"][1]["num_dms_joined"] == 1
    assert abs(user_stats["dms_joined"][1]["time_stamp"] - a_dm_create_timestamp) <= 1

    assert user_stats["involvement_rate"] == 0.5

    user_stats = user_stats_v1(b_data["token"])["user_stats"]
    assert user_stats["dms_joined"][1]["num_dms_joined"] == 1
    assert abs(user_stats["dms_joined"][1]["time_stamp"] - b_dm_create_timestamp) <= 1

    assert user_stats["dms_joined"][2]["num_dms_joined"] == 2
    assert abs(user_stats["dms_joined"][2]["time_stamp"] - a_dm_create_timestamp) <= 1

    assert user_stats["involvement_rate"] == 1

    user_stats = user_stats_v1(c_data["token"])["user_stats"]
    assert user_stats["dms_joined"][1]["num_dms_joined"] == 1
    assert abs(user_stats["dms_joined"][1]["time_stamp"] - b_dm_create_timestamp) <= 1

    assert user_stats["dms_joined"][2]["num_dms_joined"] == 2
    assert abs(user_stats["dms_joined"][2]["time_stamp"] - a_dm_create_timestamp) <= 1

    assert user_stats["involvement_rate"] == 1

    # b leaves a dm
    # b inv. = 0.5
    b_dm_leave_timestamp = datetime.now().replace(microsecond=0).timestamp()
    dm_leave_v1(b_data["token"], a_dm_id)
    sleep(1)

    user_stats = user_stats_v1(b_data["token"])["user_stats"]
    assert user_stats["dms_joined"][1]["num_dms_joined"] == 1
    assert abs(user_stats["dms_joined"][1]["time_stamp"] - b_dm_create_timestamp) <= 1

    assert user_stats["dms_joined"][2]["num_dms_joined"] == 2
    assert abs(user_stats["dms_joined"][2]["time_stamp"] - a_dm_create_timestamp) <= 1

    assert user_stats["dms_joined"][3]["num_dms_joined"] == 1
    assert abs(user_stats["dms_joined"][3]["time_stamp"] - b_dm_leave_timestamp) <= 1

    assert user_stats["involvement_rate"] == 0.50

    # b deletes b_dm
    # a and c inv. = 1
    # b inv. = 0
    b_dm_remove_timestamp = datetime.now().replace(microsecond=0).timestamp()
    dm_remove_v1(b_data["token"], b_dm_id)
    sleep(1)

    user_stats = user_stats_v1(a_data["token"])["user_stats"]
    assert user_stats["dms_joined"][1]["num_dms_joined"] == 1
    assert abs(user_stats["dms_joined"][1]["time_stamp"] - a_dm_create_timestamp) <= 1

    assert user_stats["involvement_rate"] == 1
    
    user_stats = user_stats_v1(b_data["token"])["user_stats"]
    assert user_stats["dms_joined"][1]["num_dms_joined"] == 1
    assert abs(user_stats["dms_joined"][1]["time_stamp"] - b_dm_create_timestamp) <= 1

    assert user_stats["dms_joined"][2]["num_dms_joined"] == 2
    assert abs(user_stats["dms_joined"][2]["time_stamp"] - a_dm_create_timestamp) <= 1

    assert user_stats["dms_joined"][3]["num_dms_joined"] == 1
    assert abs(user_stats["dms_joined"][3]["time_stamp"] - b_dm_leave_timestamp) <= 1

    assert user_stats["dms_joined"][4]["num_dms_joined"] == 0
    assert abs(user_stats["dms_joined"][4]["time_stamp"] - b_dm_remove_timestamp) <= 1

    assert user_stats["involvement_rate"] == 0

    user_stats = user_stats_v1(c_data["token"])["user_stats"]
    assert user_stats["dms_joined"][1]["num_dms_joined"] == 1
    assert abs(user_stats["dms_joined"][1]["time_stamp"] - b_dm_create_timestamp) <= 1

    assert user_stats["dms_joined"][2]["num_dms_joined"] == 2
    assert abs(user_stats["dms_joined"][2]["time_stamp"] - a_dm_create_timestamp) <= 1

    assert user_stats["dms_joined"][3]["num_dms_joined"] == 1
    assert abs(user_stats["dms_joined"][3]["time_stamp"] - b_dm_remove_timestamp) <= 1

    assert user_stats["involvement_rate"] == 1