def test_empty_dreams(reg_user, utilization): clear_v2() token = reg_user(0)['token'] users_stats = users_stats_v1(token)['dreams_stats'] assert len(users_stats['channels_exist']) == 0 assert len(users_stats['dms_exist']) == 0 assert len(users_stats['messages_exist']) == 0 assert users_stats['utilization_rate'] == utilization(0, 1)
def test_single_user_single_channel_full_util(reg_user, crt_channel, utilization): clear_v2() token = reg_user(0)['token'] crt_channel(token) users_stats = users_stats_v1(token)['dreams_stats'] assert users_stats['channels_exist'][-1]['num_channels_exist'] == 1 assert len(users_stats['dms_exist']) == 0 assert len(users_stats['messages_exist']) == 0 assert users_stats['utilization_rate'] == utilization(1, 1)
def test_multi_user_no_channels(reg_user, utilization): clear_v2() token = reg_user(0)['token'] user_count = 10 for i in range(1, user_count): reg_user(i) users_stats = users_stats_v1(token)['dreams_stats'] assert len(users_stats['channels_exist']) == 0 assert len(users_stats['dms_exist']) == 0 assert len(users_stats['messages_exist']) == 0 assert users_stats['utilization_rate'] == utilization(0, user_count)
def test_single_user_single_dm_full_util(reg_user, crt_dm, utilization): clear_v2() user = reg_user(0) token = user['token'] user_id = user['auth_user_id'] crt_dm(token, [user_id]) users_stats = users_stats_v1(token)['dreams_stats'] assert len(users_stats['channels_exist']) == 0 assert users_stats['dms_exist'][-1]['num_dms_exist'] == 1 assert len(users_stats['messages_exist']) == 0 assert users_stats['utilization_rate'] == utilization(1, 1)
def test_initial(test_data): a_data, _, _ = test_data time_stamp = datetime.now().replace(microsecond=0).timestamp() dreams_stats = users_stats_v1(a_data["token"])["dreams_stats"] assert dreams_stats["channels_exist"][0]["num_channels_exist"] == 0 assert abs(dreams_stats["channels_exist"][0]["time_stamp"] - time_stamp) <= 1 assert dreams_stats["dms_exist"][0]["num_dms_exist"] == 0 assert abs(dreams_stats["dms_exist"][0]["time_stamp"] - time_stamp) <= 1 assert dreams_stats["messages_exist"][0]["num_messages_exist"] == 0 assert abs(dreams_stats["messages_exist"][0]["time_stamp"] - time_stamp) <= 1 assert dreams_stats["utilization_rate"] == 0
def test_single_channel_multi_message(reg_user, crt_channel, send_msg, utilization): clear_v2() token = reg_user(0)['token'] channel_id = crt_channel(token)['channel_id'] msg_count = 10 for _ in range(msg_count): send_msg(token, channel_id) users_stats = users_stats_v1(token)['dreams_stats'] assert len(users_stats['channels_exist']) == 1 assert len(users_stats['dms_exist']) == 0 assert users_stats['messages_exist'][-1]['num_messages_exist'] == msg_count assert users_stats['utilization_rate'] == utilization(1, 1)
def test_singe_dm_multi_message(reg_user, crt_dm, send_dm, utilization): clear_v2() user = reg_user(0) token = user['token'] user_id = user['auth_user_id'] dm_id = crt_dm(token, [user_id])['dm_id'] msg_count = 10 for _ in range(msg_count): send_dm(token, dm_id) users_stats = users_stats_v1(token)['dreams_stats'] assert len(users_stats['channels_exist']) == 0 assert len(users_stats['dms_exist']) == 1 assert users_stats['messages_exist'][-1]['num_messages_exist'] == msg_count assert users_stats['utilization_rate'] == utilization(1, 1)
def test_multi_user_full_channel_util(reg_user, crt_channel, utilization): clear_v2() token = reg_user(0)['token'] crt_channel(token) user_count = 10 for i in range(1, user_count): user_token = reg_user(i)['token'] crt_channel(user_token) users_stats = users_stats_v1(token)['dreams_stats'] assert users_stats['channels_exist'][-1][ 'num_channels_exist'] == user_count assert len(users_stats['dms_exist']) == 0 assert len(users_stats['messages_exist']) == 0 assert users_stats['utilization_rate'] == utilization( user_count, user_count)
def test_partial_util_dms(reg_user, crt_dm, utilization): clear_v2() token = reg_user(0)['token'] user_count = 10 for i in range(1, user_count): new_user = reg_user(i) new_user_token = new_user['token'] new_user_id = new_user['auth_user_id'] if i % 2 == 0: # Only half of the users create channels crt_dm(new_user_token, [new_user_id]) dm_count = int(user_count / 2 - 0.5) # Half of user count users_stats = users_stats_v1(token)['dreams_stats'] assert len(users_stats['channels_exist']) == 0 assert users_stats['dms_exist'][-1]['num_dms_exist'] == dm_count assert len(users_stats['messages_exist']) == 0 assert users_stats['utilization_rate'] == utilization(dm_count, user_count)
def test_multi_user_full_dm_util(reg_user, crt_dm, utilization): clear_v2() user = reg_user(0) token = user['token'] user_id = user['auth_user_id'] crt_dm(token, [user_id]) dm_count = 10 for i in range(1, dm_count): new_user = reg_user(i) new_user_token = new_user['token'] new_user_id = new_user['auth_user_id'] crt_dm(new_user_token, [new_user_id]) users_stats = users_stats_v1(token)['dreams_stats'] assert len(users_stats['channels_exist']) == 0 assert users_stats['dms_exist'][-1]['num_dms_exist'] == dm_count assert len(users_stats['messages_exist']) == 0 assert users_stats['utilization_rate'] == utilization(dm_count, dm_count)
def dreams_stats(): parameters = request.args token = parameters['token'] output = users_stats_v1(token) return dumps(output)
def test_channels(test_data): a_data, b_data, c_data = test_data init_time_stamp = datetime.now().replace(microsecond=0).timestamp() sleep(1) a_ch_time_stamp = datetime.now().replace(microsecond=0).timestamp() channels_create_v2(a_data["token"], "A channel", True) sleep(1) #check that the time difference is between one second dreams_stats = users_stats_v1(a_data["token"])["dreams_stats"] assert dreams_stats["channels_exist"][0]["num_channels_exist"] == 0 assert abs(dreams_stats["channels_exist"][0]["time_stamp"] - init_time_stamp) <= 1 assert dreams_stats["channels_exist"][1]["num_channels_exist"] == 1 assert abs(dreams_stats["channels_exist"][1]["time_stamp"] - a_ch_time_stamp) <= 1 assert dreams_stats["utilization_rate"] == 0.33 b_ch_time_stamp = datetime.now().replace(microsecond=0).timestamp() channels_create_v2(b_data["token"], "B channel", True) sleep(1) dreams_stats = users_stats_v1(a_data["token"])["dreams_stats"] assert dreams_stats["channels_exist"][0]["num_channels_exist"] == 0 assert abs(dreams_stats["channels_exist"][0]["time_stamp"] - init_time_stamp) <= 1 assert dreams_stats["channels_exist"][1]["num_channels_exist"] == 1 assert abs(dreams_stats["channels_exist"][1]["time_stamp"] - a_ch_time_stamp) <= 1 assert dreams_stats["channels_exist"][2]["num_channels_exist"] == 2 assert abs(dreams_stats["channels_exist"][2]["time_stamp"] - b_ch_time_stamp) <= 1 assert dreams_stats["utilization_rate"] == 0.67 c_ch_time_stamp = datetime.now().replace(microsecond=0).timestamp() channels_create_v2(c_data["token"], "C channel", True) sleep(1) dreams_stats = users_stats_v1(a_data["token"])["dreams_stats"] assert dreams_stats["channels_exist"][0]["num_channels_exist"] == 0 assert abs(dreams_stats["channels_exist"][0]["time_stamp"] - init_time_stamp) <= 1 assert dreams_stats["channels_exist"][1]["num_channels_exist"] == 1 assert abs(dreams_stats["channels_exist"][1]["time_stamp"] - a_ch_time_stamp) <= 1 assert dreams_stats["channels_exist"][2]["num_channels_exist"] == 2 assert abs(dreams_stats["channels_exist"][2]["time_stamp"] - b_ch_time_stamp) <= 1 assert dreams_stats["channels_exist"][3]["num_channels_exist"] == 3 assert abs(dreams_stats["channels_exist"][3]["time_stamp"] - c_ch_time_stamp) <= 1 assert dreams_stats["utilization_rate"] == 1
def test_invalid_token(test_data): a_data, b_data, c_data = test_data channels_create_v2(a_data["token"], "A channel", True)["channel_id"] dm_create_v1(a_data["token"], [b_data["auth_user_id"], c_data["auth_user_id"]]) with pytest.raises(AccessError): users_stats_v1("") users_stats_v1(0) users_stats_v1(999328) users_stats_v1(-42) users_stats_v1("5912381") users_stats_v1("invalid.token.10586") users_stats_v1("bytasdoawqeawqdqafwa") users_stats_v1("ADWNUASMfaaAWwm") users_stats_v1("ASUIdb21d9ADsDi21") users_stats_v1("!)(%&@!*%#!$") users_stats_v1(" ")
def test_messages(test_data): a_data, b_data, c_data = test_data init_time_stamp = datetime.now().replace(microsecond=0).timestamp() sleep(1) a_dm_id = dm_create_v1( a_data["token"], [b_data["auth_user_id"], c_data["auth_user_id"]])["dm_id"] a_ch_id = channels_create_v2(a_data["token"], "A channel", True)["channel_id"] channel_join_v2(b_data["token"], a_ch_id) channel_join_v2(c_data["token"], a_ch_id) a_msg_time_stamp = datetime.now().replace(microsecond=0).timestamp() message_send_v2(a_data["token"], a_ch_id, "A message") sleep(1) dreams_stats = users_stats_v1(a_data["token"])["dreams_stats"] assert dreams_stats["messages_exist"][0]["num_messages_exist"] == 0 assert abs(dreams_stats["messages_exist"][0]["time_stamp"] - init_time_stamp) <= 1 assert dreams_stats["messages_exist"][1]["num_messages_exist"] == 1 assert abs(dreams_stats["messages_exist"][1]["time_stamp"] - a_msg_time_stamp) <= 1 b_msg_time_stamp = datetime.now().replace(microsecond=0).timestamp() delete_msg_id = message_send_v2(b_data["token"], a_ch_id, "A message")["message_id"] sleep(1) dreams_stats = users_stats_v1(a_data["token"])["dreams_stats"] assert dreams_stats["messages_exist"][0]["num_messages_exist"] == 0 assert abs(dreams_stats["messages_exist"][0]["time_stamp"] - init_time_stamp) <= 1 assert dreams_stats["messages_exist"][1]["num_messages_exist"] == 1 assert abs(dreams_stats["messages_exist"][1]["time_stamp"] - a_msg_time_stamp) <= 1 assert dreams_stats["messages_exist"][2]["num_messages_exist"] == 2 assert abs(dreams_stats["messages_exist"][2]["time_stamp"] - b_msg_time_stamp) <= 1 b_msgdm_time_stamp = datetime.now().replace(microsecond=0).timestamp() share_msg_id = message_senddm_v1(b_data["token"], a_dm_id, "A message")["message_id"] sleep(1) dreams_stats = users_stats_v1(a_data["token"])["dreams_stats"] assert dreams_stats["messages_exist"][0]["num_messages_exist"] == 0 assert abs(dreams_stats["messages_exist"][0]["time_stamp"] - init_time_stamp) <= 1 assert dreams_stats["messages_exist"][1]["num_messages_exist"] == 1 assert abs(dreams_stats["messages_exist"][1]["time_stamp"] - a_msg_time_stamp) <= 1 assert dreams_stats["messages_exist"][2]["num_messages_exist"] == 2 assert abs(dreams_stats["messages_exist"][2]["time_stamp"] - b_msg_time_stamp) <= 1 assert dreams_stats["messages_exist"][3]["num_messages_exist"] == 3 assert abs(dreams_stats["messages_exist"][3]["time_stamp"] - b_msgdm_time_stamp) <= 1 c_share_time_stamp = datetime.now().replace(microsecond=0).timestamp() message_share_v1(c_data["token"], share_msg_id, "Cool message", a_ch_id, -1) sleep(1) dreams_stats = users_stats_v1(a_data["token"])["dreams_stats"] assert dreams_stats["messages_exist"][0]["num_messages_exist"] == 0 assert abs(dreams_stats["messages_exist"][0]["time_stamp"] - init_time_stamp) <= 1 assert dreams_stats["messages_exist"][1]["num_messages_exist"] == 1 assert abs(dreams_stats["messages_exist"][1]["time_stamp"] - a_msg_time_stamp) <= 1 assert dreams_stats["messages_exist"][2]["num_messages_exist"] == 2 assert abs(dreams_stats["messages_exist"][2]["time_stamp"] - b_msg_time_stamp) <= 1 assert dreams_stats["messages_exist"][3]["num_messages_exist"] == 3 assert abs(dreams_stats["messages_exist"][3]["time_stamp"] - b_msgdm_time_stamp) <= 1 assert dreams_stats["messages_exist"][4]["num_messages_exist"] == 4 assert abs(dreams_stats["messages_exist"][4]["time_stamp"] - c_share_time_stamp) <= 1 b_delete_time_stamp = datetime.now().replace(microsecond=0).timestamp() message_remove_v1(b_data["token"], delete_msg_id) sleep(1) dreams_stats = users_stats_v1(a_data["token"])["dreams_stats"] assert dreams_stats["messages_exist"][0]["num_messages_exist"] == 0 assert abs(dreams_stats["messages_exist"][0]["time_stamp"] - init_time_stamp) <= 1 assert dreams_stats["messages_exist"][1]["num_messages_exist"] == 1 assert abs(dreams_stats["messages_exist"][1]["time_stamp"] - a_msg_time_stamp) <= 1 assert dreams_stats["messages_exist"][2]["num_messages_exist"] == 2 assert abs(dreams_stats["messages_exist"][2]["time_stamp"] - b_msg_time_stamp) <= 1 assert dreams_stats["messages_exist"][3]["num_messages_exist"] == 3 assert abs(dreams_stats["messages_exist"][3]["time_stamp"] - b_msgdm_time_stamp) <= 1 assert dreams_stats["messages_exist"][4]["num_messages_exist"] == 4 assert abs(dreams_stats["messages_exist"][4]["time_stamp"] - c_share_time_stamp) <= 1 assert dreams_stats["messages_exist"][5]["num_messages_exist"] == 3 assert abs(dreams_stats["messages_exist"][5]["time_stamp"] - b_delete_time_stamp) <= 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
def test_invalid_token(reg_user): clear_v2() reg_user(0) with pytest.raises(AccessError): users_stats_v1("Invalid_token")