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, }
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)
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)
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": [ ] }
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' }, ], }
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)
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' }], }
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)
def dm_leave(): parameters = request.get_json() token = parameters['token'] dm_id = parameters['dm_id'] dm_leave_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 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
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