def test_dm_remove_v1_success(user_setup): dm_create_v1(make_token(0), [1]) dm_create_v1(make_token(0), [2]) # removing this dm dm_remove_v1(make_token(0), 1) assert dm_list_v1(make_token(0)) == { 'dms': [{ "dm_id": 0, "name": "gungeetsingh, petertran", "members": [ { 'u_id': 0, 'email': "*****@*****.**", 'name_first': 'Gungeet', 'name_last': 'Singh', 'handle': 'gungeetsingh' }, { 'u_id': 1, 'email': "*****@*****.**", 'name_first': 'Peter', 'name_last': 'Tran', 'handle': 'petertran' }, ], "owner_members": [{ 'u_id': 0, 'email': "*****@*****.**", 'name_first': 'Gungeet', 'name_last': 'Singh', 'handle': 'gungeetsingh' }] }] }
def test_invalid_dm_id(): clear_v1() auth_user_1_token = auth_register_v2("*****@*****.**", "123456", "Andy", "Dandy")["token"] with pytest.raises(InputError): dm_remove_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_remove_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_remove_v1("invalid_token", dm_id)
def test_remove_dm_with_messages(reg_user, crt_dm, send_dm): clear_v2() user = reg_user(0) token = user['token'] u_id = user['auth_user_id'] message = "Apple" dm_id = crt_dm(token, [u_id])['dm_id'] send_dm(token, dm_id, message) # Send message containing string "Apple" dm_remove_v1(token, dm_id) assert search_v2(token, message)['messages'] == []
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 = reg_user(1) second_token = second_user['token'] second_id = second_user['auth_user_id'] dm_invite_v1(first_token, dm_id, second_id) # second user is not the original DM creator with pytest.raises(AccessError): dm_remove_v1(second_token, dm_id)
def test_commom_one(reg_user): clear_v2() user = reg_user(0) token = user['token'] u_id = user['auth_user_id'] # one dm id dm = dm_create_v1(token, [u_id]) dm_id = dm['dm_id'] dm_remove_v1(token, dm_id) dm_list = dm_list_v1(token)['dms'] assert not len(dm_list) with pytest.raises(InputError): dm_details_v1(token, dm_id)
def dm_remove(): info = request.get_json() token = info["token"] dm_id = info["dm_id"] remove = dm_remove_v1(token, dm_id) return dumps(remove)
def test_invalid_non_creator(): clear_v1() auth_user_1_token = auth_register_v2("*****@*****.**", "123456", "Andy", "Dandy")["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_id = auth_register_v2("*****@*****.**", "123456", "Chris", "Wiz")["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"] with pytest.raises(AccessError): dm_remove_v1(auth_user_2_token, dm_id_1)
def test_commom_more(reg_user): clear_v2() user = reg_user(0) token = user['token'] user_2 = reg_user(1) user_2_id = user_2['auth_user_id'] # more dm id dm1 = dm_create_v1(token, [user_2_id]) dm_id1 = dm1['dm_id'] dm2 = dm_create_v1(token, [user_2_id]) dm_id2 = dm2['dm_id'] dm3 = dm_create_v1(token, [user_2_id]) dm_id3 = dm3['dm_id'] dm_remove_v1(token, dm_id1) dm_remove_v1(token, dm_id2) dm_remove_v1(token, dm_id3) dm_list = dm_list_v1(token)['dms'] assert not len(dm_list) # dm become invaild with pytest.raises(InputError): dm_details_v1(token, dm_id1) with pytest.raises(InputError): dm_details_v1(token, dm_id2) with pytest.raises(InputError): dm_details_v1(token, dm_id3)
def test_dm_remove_v1(): clear_v1() auth_user_1_token = auth_register_v2("*****@*****.**", "123456", "Andy", "Dandy")["token"] auth_user_2_id = auth_register_v2("*****@*****.**", "123456", "Bob", "Hobs")["auth_user_id"] auth_user_3_id = auth_register_v2("*****@*****.**", "123456", "Chris", "Wiz")["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"] dm_list = dm_list_v1(auth_user_1_token) assert dm_list["dms"][0]["dm_id"] == dm_id_1 assert dm_list["dms"][0]["name"] == dm_name_1 auth_user_4_id = auth_register_v2("*****@*****.**", "123456", "Joshua", "King")["auth_user_id"] dm_data_2 = dm_create_v1(auth_user_1_token, [auth_user_3_id, auth_user_4_id]) dm_id_2 = dm_data_2["dm_id"] dm_name_2 = dm_data_2["dm_name"] dm_list = dm_list_v1(auth_user_1_token) assert dm_list["dms"][1]["dm_id"] == dm_id_2 assert dm_list["dms"][1]["name"] == dm_name_2 dm_remove_v1(auth_user_1_token, dm_id_1) dm_list = dm_list_v1(auth_user_1_token) assert dm_list["dms"][0]["dm_id"] == dm_id_2 assert dm_list["dms"][0]["name"] == dm_name_2 dm_remove_v1(auth_user_1_token, dm_id_2) dm_list = dm_list_v1(auth_user_1_token) assert dm_list["dms"] == []
def test_dm_remove_v1_errors(user_setup, dm_setup): # invalid token with pytest.raises(AccessError): dm_remove_v1(make_token(123456), 0) # invalid dm with pytest.raises(InputError): dm_remove_v1(make_token(1), 10) # User is not the owner with pytest.raises(AccessError): dm_remove_v1(make_token(0), 2)
def dm_remove(): parameters = request.get_json() token = parameters['token'] dm_id = parameters['dm_id'] dm_remove_v1(token, dm_id) return dumps({})
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 # 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
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