def test_share_pin(test_data): a_data, b_data, _ = test_data a_ch_id = channels_create_v2(a_data["token"], "A channel", True)["channel_id"] channel_join_v2(b_data["token"], a_ch_id) b_dm_id = dm_create_v1(b_data["token"], [a_data["auth_user_id"]])["dm_id"] a_msg_id = message_send_v2(a_data["token"], a_ch_id, "Message to be shared to dm")["message_id"] b_msgdm_id = message_senddm_v1( b_data["token"], b_dm_id, "Message to be shared to channel")["message_id"] a_share_id = message_share_v1(a_data["token"], a_msg_id, "Shared a msg", -1, b_dm_id)["shared_message_id"] b_share_id = message_share_v1(b_data["token"], b_msgdm_id, "Shared a msg", a_ch_id, -1)["shared_message_id"] message_pin_v1(a_data["token"], b_share_id) messages = channel_messages_v2(a_data["token"], a_ch_id, 0)["messages"] assert messages[0]["message_id"] == b_share_id assert messages[0]["is_pinned"] == True message_pin_v1(b_data["token"], a_share_id) messages = dm_messages_v1(b_data["token"], b_dm_id, 0)["messages"] assert messages[0]["message_id"] == a_share_id assert messages[0]["is_pinned"] == True
def test_message_share_neither_ch_id_dm_id_given(): # InputError raised when -1 are passed for both channel id and dm id clear_v1() user = auth_register_v2('*****@*****.**', 'passwod298372', 'Ming', 'Lee') channel = channels_create_v2(user['token'], 'TITLE', True) msg = message_send_v2(user['token'], channel['channel_id'], 'test') with pytest.raises(InputError): message_share_v1(user['token'], msg['message_id'], '', -1, -1)
def test_message_share_invalid_token(): # AccessError raised when invalid token is passed clear_v1() user = auth_register_v2('*****@*****.**', 'passwod298372', 'Ming', 'Lee') channel = channels_create_v2(user['token'], 'TITLE', True) msg = message_send_v2(user['token'], channel['channel_id'], 'test') with pytest.raises(AccessError): message_share_v1('invalid_token', msg['message_id'], '', channel['channel_id'], -1)
def test_message_share_both_ch_id_dm_id_given(): # InputError raised when both channel id and dm id are given clear_v1() user = auth_register_v2('*****@*****.**', 'passwod298372', 'Ming', 'Lee') user2 = auth_register_v2('*****@*****.**', 'passwod298372', 'Bing', 'Lee') channel = channels_create_v2(user['token'], 'TITLE', True) dm = dm_create_v1(user['token'], [user2['auth_user_id']]) msg = message_send_v2(user['token'], channel['channel_id'], 'test') with pytest.raises(InputError): message_share_v1(user['token'], msg['message_id'], '', channel['channel_id'], dm['dm_id'])
def test_message_share_optional_msg_length_ch(): # InputError should be raised if edited message is more than 100 characters clear_v1() user = auth_register_v2('*****@*****.**', 'pasword24323132', 'Melon', 'Fruit') channel = channels_create_v2(user['token'], 'Insert Title Here', True) msg_sent = message_send_v2(user['token'], channel['channel_id'], 'testing123') with pytest.raises(InputError): message_share_v1(user['token'], msg_sent['message_id'], 'l' * 1001, channel['channel_id'], -1)
def test_share_message_not_in_receiving_dm(): clear_v1() user_1 = auth_register_v2('*****@*****.**', 'aaaaaa', 'a', 'a') user_2 = auth_register_v2('*****@*****.**', 'bbbbbb', 'b', 'b') dm_1 = dm_create_v1(user_1['token'], []) dm_2 = dm_create_v1(user_2['token'], []) msg1 = message_senddm_v1(user_1['token'], dm_1['dm_id'], 'Hi DM 1') msg2 = message_senddm_v1(user_2['token'], dm_2['dm_id'], 'Hi DM 2') with pytest.raises(AccessError): message_share_v1(user_1['token'], msg2['message_id'], '', -1, dm_1['dm_id']) message_share_v1(user_2['token'], msg1['message_id'], 'SPAM!', -1, dm_1['dm_id'])
def test_message_share_auth_user_not_member_ch(): # Test if AccessError is raised when user tries to share a message in a group # that they are not a member of clear_v1() user_owner = auth_register_v2('*****@*****.**', 'password2321', 'Irwin', 'Dundee') user = auth_register_v2('*****@*****.**', 'password2321232', 'Roland', 'Tiddle') channel = channels_create_v2(user_owner['token'], 'Irwins Channel', True) msg = message_send_v2(user_owner['token'], channel['channel_id'], 'testing123') with pytest.raises(AccessError): message_share_v1(user['token'], msg['message_id'], '', channel['channel_id'], -1)
def test_message_share_with_tag(): clear_v1() user1 = auth_register_v2("*****@*****.**", "finalpassword", "Eric", "Zheng") user2 = auth_register_v2("*****@*****.**", "validpassword", "Josh", "Hatton") channel1 = channels_create_v2(user1['token'], 'Channel 1', True) channel_join_v2(user2['token'], channel1['channel_id']) channel2 = channels_create_v2(user1['token'], 'Channel 2', True) channel_join_v2(user2['token'], channel2['channel_id']) msg1str = "@joshhatton Hi friend" msg1 = message_send_v2(user1['token'], channel1['channel_id'], msg1str) message_share_v1(user1['token'], msg1['message_id'], '', channel2['channel_id'], -1) assert len(notifications_get_v1(user2['token'])['notifications']) == 2
def test_share_message_not_in_receiving_channel(): clear_v1() user_1 = auth_register_v2('*****@*****.**', 'aaaaaa', 'a', 'a') user_2 = auth_register_v2('*****@*****.**', 'bbbbbb', 'b', 'b') channel_1 = channels_create_v2(user_1['token'], 'Channel 1', True) channel_2 = channels_create_v2(user_2['token'], 'Channel 2', True) msg1 = message_send_v2(user_1['token'], channel_1['channel_id'], 'Hi Chan 1') msg2 = message_send_v2(user_2['token'], channel_2['channel_id'], 'Hi Chan 2') with pytest.raises(AccessError): message_share_v1(user_1['token'], msg2['message_id'], '', channel_2, -1) message_share_v1(user_2['token'], msg1['message_id'], 'SPAM!', channel_1, -1)
def test_common_case_dm(reg_user, crt_dm): clear_v2() # new user new_user = reg_user(0) user_token = new_user['token'] new_user_2 = reg_user(1) # new channel dm_id = crt_dm(user_token, [new_user_2['auth_user_id']])['dm_id'] # new dm new_dm = crt_dm(user_token, [new_user_2['auth_user_id']]) new_dm_id = new_dm['dm_id'] # new message og_message_text = 'Hi !' og_message_id = message_senddm_v1(user_token, dm_id, og_message_text)['message_id'] shared_message_text = "Hello World !" shared_message_id = message_share_v1(user_token, og_message_id, shared_message_text, -1, new_dm_id)['shared_message_id'] messages = dm_messages_v1(user_token, new_dm_id, 0)['messages'] for msg in messages: if msg['message_id'] == shared_message_id: assert msg[ 'message'] == f'{shared_message_text}\n\n{og_message_text}'
def test_common_case(reg_user, create_channel): clear_v2() # new user new_user = reg_user(0) user_token = new_user['token'] user_id = new_user['auth_user_id'] # new channel channel_id = create_channel(user_token)['channel_id'] # new dm new_dm = dm_create_v1(user_token, [user_id]) dm_id = new_dm['dm_id'] # new message og_message_text = 'Hi !' og_message_id = message_send_v2(user_token, channel_id, og_message_text)['message_id'] shared_message_text = "Hello World !" shared_message_id = message_share_v1(user_token, og_message_id, shared_message_text, channel_id, dm_id)['shared_message_id'] channel_messages = channel_messages_v2(user_token, channel_id, 0)['messages'] for msg in channel_messages: if msg['message_id'] == shared_message_id: assert msg[ 'message'] == f'{shared_message_text}\n\n{og_message_text}'
def message_share(): parameters = request.get_json() token = parameters['token'] og_message_id = parameters['og_message_id'] message = parameters['message'] channel_id = parameters['channel_id'] dm_id = parameters['dm_id'] output = message_share_v1(token, og_message_id, message, channel_id, dm_id) return dumps(output)
def test_invalid_token(reg_user, create_channel): clear_v2() message = "Hello World!" # new user new_user = reg_user(0) user_token = new_user['token'] user_id = new_user['auth_user_id'] # new channel channel_id = create_channel(user_token)['channel_id'] # new dm new_dm = dm_create_v1(user_token, [user_id]) dm_id = new_dm['dm_id'] # new message og_message_id = message_send_v2(user_token, channel_id, message) with pytest.raises(AccessError): message_share_v1("invalid_token", og_message_id, message, channel_id, dm_id)
def message_share(): info = request.get_json() token = info["token"] og_message_id = info["og_message_id"] message = info["message"] channel_id = info["channel_id"] dm_id = info["dm_id"] message_share = message_share_v1(token, og_message_id, message, channel_id, dm_id) return dumps(message_share)
def test_share_multiple_message_dm(): clear_v1() user_1 = auth_register_v2('*****@*****.**', 'aaaaaa', 'a', 'a') dm_1 = dm_create_v1(user_1['token'], []) dm_2 = dm_create_v1(user_1['token'], []) msg1 = message_senddm_v1(user_1['token'], dm_1['dm_id'], 'Hi DM 1') msg2 = message_senddm_v1(user_1['token'], dm_2['dm_id'], 'Hi DM 2') msg3 = message_share_v1(user_1['token'], msg1['message_id'], '', -1, dm_2['dm_id']) msg4 = message_share_v1(user_1['token'], msg2['message_id'], 'SPAM!', -1, dm_1['dm_id']) assert dm_messages_v1(user_1['token'], dm_1['dm_id'], 0)['messages'][0]['message'] == "Hi DM 2\nSPAM!" assert dm_messages_v1(user_1['token'], dm_2['dm_id'], 0)['messages'][0]['message'] == "Hi DM 1" assert len(dm_messages_v1(user_1['token'], dm_1['dm_id'], 0)['messages']) == 2 assert len(dm_messages_v1(user_1['token'], dm_2['dm_id'], 0)['messages']) == 2 assert msg1['message_id'] != msg4['shared_message_id'] assert msg1['message_id'] != msg3['shared_message_id'] msg5 = message_senddm_v1(user_1['token'], dm_1['dm_id'], 'DM 1 > DM 2') msg6 = message_senddm_v1(user_1['token'], dm_2['dm_id'], 'DM 1 stinkyyyy') msg7 = message_share_v1(user_1['token'], msg5['message_id'], '123', -1, dm_2['dm_id']) msg8 = message_share_v1(user_1['token'], msg6['message_id'], '', -1, dm_1['dm_id']) assert dm_messages_v1(user_1['token'], dm_1['dm_id'], 0)['messages'][0]['message'] == "DM 1 stinkyyyy" assert dm_messages_v1(user_1['token'], dm_2['dm_id'], 0)['messages'][0]['message'] == "DM 1 > DM 2\n123" assert len(dm_messages_v1(user_1['token'], dm_1['dm_id'], 0)['messages']) == 4 assert len(dm_messages_v1(user_1['token'], dm_2['dm_id'], 0)['messages']) == 4 assert msg5['message_id'] != msg8['shared_message_id'] assert msg5['message_id'] != msg7['shared_message_id']
def test_non_dm_member(reg_user, create_channel): clear_v2() # new user new_user = reg_user(0) user_token = new_user['token'] user_id = new_user['auth_user_id'] new_user_2 = reg_user(1) # new channel channel_id = create_channel(user_token)['channel_id'] # new dm new_dm = dm_create_v1(user_token, [user_id]) dm_id = new_dm['dm_id'] # new message og_message_text = 'Hi !' og_message_id = message_send_v2(user_token, channel_id, og_message_text)['message_id'] shared_message_text = "Hello World !" with pytest.raises(AccessError): message_share_v1(new_user_2['token'], og_message_id, shared_message_text, -1, dm_id)['shared_message_id']
def test_no_dm_channel(reg_user, create_channel): clear_v2() # new user new_user = reg_user(0) user_token = new_user['token'] user_id = new_user['auth_user_id'] # new channel channel_id = create_channel(user_token)['channel_id'] # new dm new_dm = dm_create_v1(user_token, [user_id]) dm_id = new_dm['dm_id'] message = "Hello World !" # new message og_message_id = message_send_v2(user_token, channel_id, message)['message_id'] another_user = auth_register_v2("*****@*****.**", "goodpass123", "Stress", "Puppy") another_token = another_user['token'] with pytest.raises(AccessError): message_share_v1(another_token, og_message_id, message, channel_id, dm_id)
def test_invalid_dm_message_id(): clear_v1() user = auth_register_v2('*****@*****.**', 'passwod298372', 'Ming', 'Lee') user2 = auth_register_v2('*****@*****.**', 'passwod298372', 'Ming', 'Lee') dm = dm_create_v1(user["token"], [user2["auth_user_id"]]) message_senddm_v1(user['token'], dm['dm_id'], 'test') with pytest.raises(InputError): message_share_v1(user["token"], "invalid", "message", -1, dm["dm_id"]) message_share_v1(user["token"], 58181211, "message", -1, dm["dm_id"]) message_share_v1(user["token"], "", "message", -1, dm["dm_id"])
def test_invalid_channel_id(): clear_v1() user = auth_register_v2('*****@*****.**', 'passwod298372', 'Ming', 'Lee') channel = channels_create_v2(user['token'], 'TITLE', True) msg = message_send_v2(user['token'], channel['channel_id'], 'test') with pytest.raises(InputError): message_share_v1(user["token"], msg["message_id"], "message", "invalidid", -1) message_share_v1(user["token"], msg["message_id"], "message", "", -1) message_share_v1(user["token"], msg["message_id"], "message", 74271199, -1)
def test_message_share_simple_case_empty_ch(): # Test a simple case with channel clear_v1() user = auth_register_v2('*****@*****.**', 'pasword24323132', 'Terrence', 'Lin') channel = channels_create_v2(user['token'], 'Title', True) msg = message_send_v2(user['token'], channel['channel_id'], "NEW MESSAGE") msg_share = message_share_v1(user['token'], msg['message_id'], '', channel['channel_id'], -1) # Call top of list msg_list = channel_messages_v2(user['token'], channel['channel_id'], 0) assert len(msg_list['messages']) == 2 assert msg_list['messages'][0]['message_id'] == msg_share[ 'shared_message_id'] assert msg_list['messages'][0]['u_id'] == user['auth_user_id'] # assert msg_list['messages'][0]['message'] == ' ----|NEW MESSAGE|----' assert msg_list['messages'][1]['message_id'] == msg['message_id'] assert msg_list['messages'][1]['u_id'] == user['auth_user_id'] assert msg_list['messages'][1]['message'] == 'NEW MESSAGE'
def test_message_share_simple_case_ch(): # Test a simple case with channel clear_v1() user = auth_register_v2('*****@*****.**', 'pasword24323132', 'Terrence', 'Andrews') channel = channels_create_v2(user['token'], 'Title', True) msg = message_send_v2(user['token'], channel['channel_id'], "Hey Guys!") msg_share = message_share_v1(user['token'], msg['message_id'], 'look guys look', channel['channel_id'], -1) # Call top of list msg_list = channel_messages_v2(user['token'], channel['channel_id'], 0) assert len(msg_list['messages']) == 2 assert msg_list['messages'][0]['message_id'] == msg_share[ 'shared_message_id'] assert msg_list['messages'][0]['u_id'] == user['auth_user_id'] # assert msg_list['messages'][0]['message'] == 'look guys look ----|Hey Guys!|----' assert msg_list['messages'][1]['message_id'] == msg['message_id'] assert msg_list['messages'][1]['u_id'] == user['auth_user_id'] assert msg_list['messages'][1]['message'] == 'Hey Guys!'
def test_message_share_simple_case_empty_dm(): # Test a empty msg share case with dm clear_v1() user = auth_register_v2('*****@*****.**', 'pasword24323132', 'Terrence', 'Andrews') user2 = auth_register_v2('*****@*****.**', 'passwod298372', 'Bing', 'Lee') dm = dm_create_v1(user['token'], [user2['auth_user_id']]) msg = message_senddm_v1(user['token'], dm['dm_id'], "TEST!") msg_share = message_share_v1(user['token'], msg['message_id'], '', -1, dm['dm_id']) # Call top of list msg_list = dm_messages_v1(user['token'], dm['dm_id'], 0) assert len(msg_list['messages']) == 2 assert msg_list['messages'][0]['message_id'] == msg_share[ 'shared_message_id'] assert msg_list['messages'][0]['u_id'] == user['auth_user_id'] assert msg_list['messages'][0]['message'] == ' ----|TEST!|----' assert msg_list['messages'][1]['message_id'] == msg['message_id'] assert msg_list['messages'][1]['u_id'] == user['auth_user_id'] assert msg_list['messages'][1]['message'] == 'TEST!'
def test_auth_user_not_member_dm(): clear_v1() user = auth_register_v2('*****@*****.**', 'passwod298372', 'Ming', 'Lee') user2 = auth_register_v2('*****@*****.**', 'passwod298372', 'Ming', 'Lee') user3 = auth_register_v2('*****@*****.**', 'passwod298372', 'Ming', 'Lee') dm = dm_create_v1(user["token"], [user2["auth_user_id"]]) msg = message_senddm_v1(user['token'], dm['dm_id'], 'test') with pytest.raises(AccessError): message_share_v1(user3["token"], msg["message_id"], "message", -1, dm["dm_id"]) message_share_v1(user3["token"], msg["message_id"], "message", -1, dm["dm_id"]) message_share_v1(user3["token"], msg["message_id"], "message", -1, dm["dm_id"])
def test_message_share_v1_errors(user_setup, channel_setup, dm_setup, message_setup): # Test 1: # invalid token with pytest.raises(AccessError): message_share_v1(make_token(414345), 0, "invalid token error", 0, -1) # "Invalid token" # Test 2: # auhtorised user is not part of channel with pytest.raises(AccessError): message_share_v1(make_token(2), 3, "user not part of channel error", 2, -1) # "Authorised user is not part of the channel" with pytest.raises(AccessError): message_share_v1(make_token(0), 18, "user not part of dm error", -1, 2)
def test_share_multiple_message(): clear_v1() user_1 = auth_register_v2('*****@*****.**', 'aaaaaa', 'a', 'a') channel_1 = channels_create_v2(user_1['token'], 'Channel 1', True) channel_2 = channels_create_v2(user_1['token'], 'Channel 2', True) msg1 = message_send_v2(user_1['token'], channel_1['channel_id'], 'Hi Chan 1') msg2 = message_send_v2(user_1['token'], channel_2['channel_id'], 'Hi Chan 2') msg3 = message_share_v1(user_1['token'], msg1['message_id'], '', channel_2['channel_id'], -1) msg4 = message_share_v1(user_1['token'], msg2['message_id'], 'SPAM!', channel_1['channel_id'], -1) assert channel_messages_v2( user_1['token'], channel_1['channel_id'], 0)['messages'][0]['message'] == "Hi Chan 2\nSPAM!" assert channel_messages_v2(user_1['token'], channel_2['channel_id'], 0)['messages'][0]['message'] == "Hi Chan 1" assert len( channel_messages_v2(user_1['token'], channel_1['channel_id'], 0)['messages']) == 2 assert len( channel_messages_v2(user_1['token'], channel_2['channel_id'], 0)['messages']) == 2 assert msg1['message_id'] != msg4['shared_message_id'] assert msg1['message_id'] != msg3['shared_message_id'] with pytest.raises(InputError): message_share_v1(user_1['token'], msg1['message_id'], 'a' * 991, channel_2['channel_id'], -1) with pytest.raises(InputError): message_share_v1(user_1['token'], msg1['message_id'], 'a' * 1000, channel_2['channel_id'], -1) with pytest.raises(AccessError): message_share_v1(user_1['token'], msg1['message_id'], 'a', -1, -1) with pytest.raises(InputError): message_share_v1(user_1['token'], msg1['message_id'], 'a', channel_2['channel_id'], -2) msg5 = message_send_v2(user_1['token'], channel_1['channel_id'], 'Channel 1 > Channel 2') msg6 = message_send_v2(user_1['token'], channel_2['channel_id'], 'Channel 1 stinkyyyy') msg7 = message_share_v1(user_1['token'], msg5['message_id'], '123', channel_2['channel_id'], -1) msg8 = message_share_v1(user_1['token'], msg6['message_id'], '', channel_1['channel_id'], -1) assert channel_messages_v2( user_1['token'], channel_1['channel_id'], 0)['messages'][0]['message'] == "Channel 1 stinkyyyy" assert channel_messages_v2( user_1['token'], channel_2['channel_id'], 0)['messages'][0]['message'] == "Channel 1 > Channel 2\n123" assert len( channel_messages_v2(user_1['token'], channel_1['channel_id'], 0)['messages']) == 4 assert len( channel_messages_v2(user_1['token'], channel_2['channel_id'], 0)['messages']) == 4 assert msg5['message_id'] != msg8['shared_message_id'] assert msg5['message_id'] != msg7['shared_message_id']
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_message(test_data): a_data, b_data, c_data = test_data a_ch_create_timestamp = datetime.now().replace(microsecond=0).timestamp() a_ch_id = channels_create_v2(a_data["token"], "A channel", True)["channel_id"] sleep(1) b_dm_create_timestamp = datetime.now().replace(microsecond=0).timestamp() b_dm_id = dm_create_v1(b_data["token"], [a_data["auth_user_id"], c_data["auth_user_id"]])["dm_id"] sleep(1) # 1 channel, 1 dm = 2 total user_stats = user_stats_v1(a_data["token"])["user_stats"] assert user_stats["channels_joined"][1]["num_channels_joined"] == 1 assert abs(user_stats["channels_joined"][1]["time_stamp"] - a_ch_create_timestamp) <= 1 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(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"] == 0.5 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"] == 0.5 # a sends 2 messages in ch, b sends 1 in dm # 1 channel, 1 dm, 2msg, 1msgdm = 5 total a1_msg_send_timestamp = datetime.now().replace(microsecond=0).timestamp() a_msg_id = message_send_v2(a_data["token"], a_ch_id, "Im a message")["message_id"] sleep(1) a2_msg_send_timestamp = datetime.now().replace(microsecond=0).timestamp() a2_msg_id = message_send_v2(a_data["token"], a_ch_id, "Im a message to be shared")["message_id"] sleep(1) b1_msgdm_send_timestamp = datetime.now().replace(microsecond=0).timestamp() message_senddm_v1(b_data["token"], b_dm_id, "Im a message again") sleep(1) user_stats = user_stats_v1(a_data["token"])["user_stats"] assert user_stats["channels_joined"][1]["num_channels_joined"] == 1 assert abs(user_stats["channels_joined"][1]["time_stamp"] - a_ch_create_timestamp) <= 1 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["messages_sent"][1]["num_messages_sent"] == 1 assert abs(user_stats["messages_sent"][1]["time_stamp"] - a1_msg_send_timestamp) <= 1 assert user_stats["messages_sent"][2]["num_messages_sent"] == 2 assert abs(user_stats["messages_sent"][2]["time_stamp"] - a2_msg_send_timestamp) <= 1 assert user_stats["involvement_rate"] == 0.80 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["messages_sent"][1]["num_messages_sent"] == 1 assert abs(user_stats["messages_sent"][1]["time_stamp"] - b1_msgdm_send_timestamp) <= 1 assert user_stats["involvement_rate"] == 0.40 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"] == 0.2 # a shares a message # 1 channel, 1 dm, 3msg, 1msgdm = 6 total a_msg_share_timestamp = datetime.now().replace(microsecond=0).timestamp() message_share_v1(a_data["token"], a2_msg_id, "Look at this cool message", -1, b_dm_id) sleep(1) user_stats = user_stats_v1(a_data["token"])["user_stats"] assert user_stats["channels_joined"][1]["num_channels_joined"] == 1 assert abs(user_stats["channels_joined"][1]["time_stamp"] - a_ch_create_timestamp) <= 1 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["messages_sent"][1]["num_messages_sent"] == 1 assert abs(user_stats["messages_sent"][1]["time_stamp"] - a1_msg_send_timestamp) <= 1 assert user_stats["messages_sent"][2]["num_messages_sent"] == 2 assert abs(user_stats["messages_sent"][2]["time_stamp"] - a2_msg_send_timestamp) <= 1 assert user_stats["messages_sent"][3]["num_messages_sent"] == 3 assert abs(user_stats["messages_sent"][3]["time_stamp"] - a_msg_share_timestamp) <= 1 assert user_stats["involvement_rate"] == 0.83 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["messages_sent"][1]["num_messages_sent"] == 1 assert abs(user_stats["messages_sent"][1]["time_stamp"] - b1_msgdm_send_timestamp) <= 1 assert user_stats["involvement_rate"] == 0.33 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"] == 0.17 # a removes a1 message # 1 channel, 1 dm, 2msg, 1msgdm = 5 total message_remove_v1(a_data["token"], a_msg_id) sleep(1) # message send for 'a' never goes down but involvement will change user_stats = user_stats_v1(a_data["token"])["user_stats"] assert user_stats["channels_joined"][1]["num_channels_joined"] == 1 assert abs(user_stats["channels_joined"][1]["time_stamp"] - a_ch_create_timestamp) <= 1 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["messages_sent"][1]["num_messages_sent"] == 1 assert len(user_stats["messages_sent"]) == 4 assert abs(user_stats["messages_sent"][1]["time_stamp"] - a1_msg_send_timestamp) <= 1 assert user_stats["messages_sent"][2]["num_messages_sent"] == 2 assert abs(user_stats["messages_sent"][2]["time_stamp"] - a2_msg_send_timestamp) <= 1 assert user_stats["messages_sent"][3]["num_messages_sent"] == 3 assert abs(user_stats["messages_sent"][3]["time_stamp"] - a_msg_share_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["messages_sent"][1]["num_messages_sent"] == 1 assert abs(user_stats["messages_sent"][1]["time_stamp"] - b1_msgdm_send_timestamp) <= 1 assert user_stats["involvement_rate"] == 0.40 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"] == 0.20
def test_user_stats_message(register_users, channel_setup, dm_setup): message_send_v2(make_token(0), 0, "Hello") assert user_stats_v1(make_token(0)) == { 'user_stats': { "channels_joined": [{ "num_channels_joined": 0, "time_stamp": str(create_timestamp()) }, { "num_channels_joined": 1, "time_stamp": str(create_timestamp()) }, { "num_channels_joined": 2, "time_stamp": str(create_timestamp()) }, { "num_channels_joined": 3, "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()) }, { "num_messages_sent": 1, "time_stamp": str(create_timestamp()) }], "involvement_rate": 1.0 } } message_remove_v1(make_token(0), 0) assert user_stats_v1(make_token(0)) == { 'user_stats': { "channels_joined": [{ "num_channels_joined": 0, "time_stamp": str(create_timestamp()) }, { "num_channels_joined": 1, "time_stamp": str(create_timestamp()) }, { "num_channels_joined": 2, "time_stamp": str(create_timestamp()) }, { "num_channels_joined": 3, "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()) }, { "num_messages_sent": 1, "time_stamp": str(create_timestamp()) }, { "num_messages_sent": 0, "time_stamp": str(create_timestamp()) }], "involvement_rate": 1.0 } } message_send_v2(make_token(0), 0, "Hello") message_share_v1(make_token(0), 0, "Hello again", 0, -1) assert user_stats_v1(make_token(0)) == { 'user_stats': { "channels_joined": [{ "num_channels_joined": 0, "time_stamp": str(create_timestamp()) }, { "num_channels_joined": 1, "time_stamp": str(create_timestamp()) }, { "num_channels_joined": 2, "time_stamp": str(create_timestamp()) }, { "num_channels_joined": 3, "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()) }, { "num_messages_sent": 1, "time_stamp": str(create_timestamp()) }, { "num_messages_sent": 0, "time_stamp": str(create_timestamp()) }, { "num_messages_sent": 1, "time_stamp": str(create_timestamp()) }, { "num_messages_sent": 2, "time_stamp": str(create_timestamp()) }], "involvement_rate": 1.0 } } message_senddm_v1(make_token(0), 0, "Hello") assert user_stats_v1(make_token(0)) == { 'user_stats': { "channels_joined": [{ "num_channels_joined": 0, "time_stamp": str(create_timestamp()) }, { "num_channels_joined": 1, "time_stamp": str(create_timestamp()) }, { "num_channels_joined": 2, "time_stamp": str(create_timestamp()) }, { "num_channels_joined": 3, "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()) }, { "num_messages_sent": 1, "time_stamp": str(create_timestamp()) }, { "num_messages_sent": 0, "time_stamp": str(create_timestamp()) }, { "num_messages_sent": 1, "time_stamp": str(create_timestamp()) }, { "num_messages_sent": 2, "time_stamp": str(create_timestamp()) }, { "num_messages_sent": 3, "time_stamp": str(create_timestamp()) }], "involvement_rate": 1.0 } }