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_pin_v1_dm_invalid_message_id(reg_user, basic_message): clear_v2() token_1 = reg_user(0)['token'] auth_user_id_receiver = reg_user(1)['auth_user_id'] dm_id = dm_create_v1(token_1, [auth_user_id_receiver])['dm_id'] message = basic_message message_id = message_senddm_v1(token_1, dm_id, message)['message_id'] with pytest.raises(InputError): message_pin_v1(token_1, message_id + 1)
def test_message_pin_v1_token_dm(reg_user, basic_message): clear_v2() token_1 = reg_user(0)['token'] auth_user_id_receiver = reg_user(1)['auth_user_id'] dm_id = dm_create_v1(token_1, [auth_user_id_receiver])['dm_id'] message = basic_message message_id = message_senddm_v1(token_1, dm_id, message)['message_id'] fake_token = 'random values r32fecaswd' with pytest.raises(AccessError): message_pin_v1(fake_token, message_id)
def test_message_pin_v1_channel_invalid_message_id(reg_user, basic_channel_name, basic_message): clear_v2() token_1 = reg_user(0)['token'] channel_name = basic_channel_name channel_id = channels_create_v2(token_1, channel_name, True)['channel_id'] message = basic_message message_id = message_send_v2(token_1, channel_id, message)['message_id'] with pytest.raises(InputError): message_pin_v1(token_1, message_id + 1)
def test_message_pin_auth_user_is_non_owner_of_dm(reg_user, basic_message): clear_v2() token_1 = reg_user(0)['token'] non_owner_of_dm = reg_user(1) dm_id = dm_create_v1(token_1, [non_owner_of_dm['auth_user_id']])['dm_id'] message = basic_message message_id = message_senddm_v1(token_1, dm_id, message)['message_id'] with pytest.raises(AccessError): message_pin_v1( non_owner_of_dm['token'], message_id) # The authorised user is not an owner of the dm
def test_message_pin_v1_token_channel(reg_user, basic_channel_name, basic_message): clear_v2() token_1 = reg_user(0)['token'] channel_name = basic_channel_name channel_id = channels_create_v2(token_1, channel_name, True)['channel_id'] message = basic_message message_id = message_send_v2(token_1, channel_id, message)['message_id'] fake_token = 'random values r32fecaswd' with pytest.raises(AccessError): message_pin_v1(fake_token, message_id)
def test_message_pin_v1_dm_message_already_pinned(reg_user, basic_message): clear_v2() token_1 = reg_user(0)['token'] auth_user_id_receiver = reg_user(1)['auth_user_id'] dm_id = dm_create_v1(token_1, [auth_user_id_receiver])['dm_id'] message = basic_message message_id = message_senddm_v1(token_1, dm_id, message)['message_id'] message_pin_v1(token_1, message_id) with pytest.raises(InputError): message_pin_v1( token_1, message_id) # Message with ID message_id is already pinned
def test_message_pin_v1_auth_user_not_part_of_dm(reg_user, basic_message): clear_v2() token_1 = reg_user(0)['token'] auth_user_id_receiver = reg_user(1)['auth_user_id'] non_member_of_dm_token = reg_user(2)['token'] dm_id = dm_create_v1(token_1, [auth_user_id_receiver])['dm_id'] message = basic_message message_id = message_senddm_v1(token_1, dm_id, message)['message_id'] with pytest.raises(AccessError): message_pin_v1( non_member_of_dm_token, message_id) # The authorised user is not a member of the dm
def test_message_pin_dm_basic(reg_user, basic_message): clear_v2() token_1 = reg_user(0)['token'] auth_user_id_receiver = reg_user(1)['auth_user_id'] dm_id = dm_create_v1(token_1, [auth_user_id_receiver])['dm_id'] message = basic_message message_id = message_senddm_v1(token_1, dm_id, message)['message_id'] message_pin_v1(token_1, message_id) start = 0 messages = dm_messages_v1(token_1, dm_id, start)['messages'] assert messages[0]['message_id'] == message_id assert messages[0]['is_pinned'] == True
def test_message_pin_channel_basic(reg_user, basic_channel_name, basic_message): clear_v2() token_1 = reg_user(0)['token'] channel_name = basic_channel_name channel_id = channels_create_v2(token_1, channel_name, True)['channel_id'] message = basic_message message_id = message_send_v2(token_1, channel_id, message)['message_id'] message_pin_v1(token_1, message_id) start = 0 messages = channel_messages_v2(token_1, channel_id, start)['messages'] assert messages[0]['message_id'] == message_id assert messages[0]['is_pinned'] == True
def test_auth_user_not_owner(test_data): a_data, b_data, c_data = test_data # channel 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_id = message_send_v2(a_data["token"], a_ch_id, "A message")["message_id"] with pytest.raises(AccessError): message_pin_v1(b_data["token"], a_msg_id) message_pin_v1(c_data["token"], a_msg_id) # dm a_dm_id = dm_create_v1( a_data["token"], [b_data["auth_user_id"], c_data["auth_user_id"]])["dm_id"] a_msgdm_id = message_senddm_v1(a_data["token"], a_dm_id, "A message")["message_id"] with pytest.raises(AccessError): message_pin_v1(b_data["token"], a_msgdm_id) message_pin_v1(c_data["token"], a_msgdm_id)
def test_message_pin_v1_channel_message_already_pinned(reg_user, basic_channel_name, basic_message): clear_v2() token_1 = reg_user(0)['token'] channel_name = basic_channel_name channel_id = channels_create_v2(token_1, channel_name, True)['channel_id'] message = basic_message message_id = message_send_v2(token_1, channel_id, message)['message_id'] message_pin_v1(token_1, message_id) with pytest.raises(InputError): message_pin_v1( token_1, message_id) # Message with ID message_id is already pinned
def test_message_pin_v1_auth_user_not_part_of_channel(reg_user, basic_channel_name, basic_message): clear_v2() token_1 = reg_user(0)['token'] non_member_of_channel_token = reg_user(1)['token'] channel_name = basic_channel_name channel_id = channels_create_v2(token_1, channel_name, True)['channel_id'] message = basic_message message_id = message_send_v2(token_1, channel_id, message)['message_id'] with pytest.raises(AccessError): message_pin_v1( non_member_of_channel_token, message_id) # The authorised user is not a member of the channel
def message_pin(): info = request.get_json() token = info["token"] message_id = info["message_id"] message_pin = message_pin_v1(token, message_id) return dumps(message_pin)
def message_pin(): data = request.get_json() token = data['token'] message_id = data['message_id'] output = message_pin_v1(token, message_id) return dumps(output)
def test_message_unpin_auth_user_is_non_owner_of_channel( reg_user, basic_channel_name, basic_message): clear_v2() token_1 = reg_user(0)['token'] non_owner_of_channel_token = reg_user(1)['token'] channel_name = basic_channel_name channel_id = channels_create_v2(token_1, channel_name, True)['channel_id'] channel_join_v2(non_owner_of_channel_token, channel_id) #second user joinned the channel message = basic_message message_id = message_send_v2(token_1, channel_id, message)['message_id'] message_pin_v1(token_1, message_id) with pytest.raises(AccessError): message_unpin_v1( non_owner_of_channel_token, message_id) # The authorised user is not an owner of the channel
def test_already_unpinned(test_data): a_data, b_data, c_data = test_data a_ch_id = channels_create_v2(a_data["token"], "A channel", True)["channel_id"] channel_join_v2(c_data["token"], a_ch_id) channel_join_v2(b_data["token"], a_ch_id) channel_addowner_v1(a_data["token"], a_ch_id, c_data["auth_user_id"]) channel_addowner_v1(a_data["token"], a_ch_id, b_data["auth_user_id"]) a1_msg_id = message_send_v2(a_data["token"], a_ch_id, "My own message")["message_id"] message_pin_v1(a_data["token"], a1_msg_id) message_unpin_v1(a_data["token"], a1_msg_id) with pytest.raises(InputError): message_unpin_v1(a_data["token"], a1_msg_id) message_unpin_v1(b_data["token"], a1_msg_id) message_unpin_v1(c_data["token"], a1_msg_id)
def test_invalid_token(test_data): a_data, _, _ = test_data a_ch_id = channels_create_v2(a_data["token"], "A channel", True)["channel_id"] a_msg_id = message_send_v2(a_data["token"], a_ch_id, "A message")["message_id"] message_pin_v1(a_data["token"], a_msg_id) with pytest.raises(AccessError): message_unpin_v1("", a_msg_id) message_unpin_v1(0, a_msg_id) message_unpin_v1(4612152, a_msg_id) message_unpin_v1(-63, a_msg_id) message_unpin_v1("0986621", a_msg_id) message_unpin_v1("invalid.token.101", a_msg_id) message_unpin_v1("bytudfawuydasasawfawfdsadqafwa", a_msg_id) message_unpin_v1("ANIUFNawfoABSFAsdfoADsawm", a_msg_id) message_unpin_v1("ABI124YdAWan9d2ASNd219213091dn", a_msg_id) message_unpin_v1(")*@%&!)&%!@$&$", a_msg_id)
def test_invalid_message_id(test_data): a_data, _, _ = test_data a_ch_id = channels_create_v2(a_data["token"], "A channel", True)["channel_id"] a_msg_id = message_send_v2(a_data["token"], a_ch_id, "Pin me!")["message_id"] message_pin_v1(a_data["token"], a_msg_id) with pytest.raises(InputError): message_unpin_v1(a_data["token"], -1234456) message_unpin_v1(a_data["token"], 99999) message_unpin_v1(a_data["token"], "") message_unpin_v1(a_data["token"], " ") message_unpin_v1(a_data["token"], "AHWHDHAWFJASFJA") message_unpin_v1(a_data["token"], "asbduafwdz") message_unpin_v1(a_data["token"], "DUBAWDIDAasdawdawfd") message_unpin_v1(a_data["token"], "9021417") message_unpin_v1(a_data["token"], "10(%!#*(@19402!@()$") message_unpin_v1(a_data["token"], "adcuiwbACWd 0d1aSDQ92d1a")
def test_auth_user_not_in_channel_dm(test_data): a_data, b_data, c_data = test_data # not member in channel a_ch_id = channels_create_v2(a_data["token"], "A channel", True)["channel_id"] a_msg_id = message_send_v2(a_data["token"], a_ch_id, "A message")["message_id"] message_pin_v1(a_data["token"], a_msg_id) with pytest.raises(AccessError): message_unpin_v1(b_data["token"], a_msg_id) message_unpin_v1(c_data["token"], a_msg_id) # not member in dm b_dm_id = dm_create_v1(b_data["token"], [a_data["auth_user_id"]])["dm_id"] b_msg_id = message_senddm_v1(b_data["token"], b_dm_id, "A message")["message_id"] message_pin_v1(b_data["token"], b_msg_id) with pytest.raises(AccessError): message_unpin_v1(c_data["token"], b_msg_id)
def test_message_unpin_errors(user_setup, dm_setup, channel_setup, message_setup): with pytest.raises(AccessError): message_unpin_v1(make_token(10000), 0) # message_id is not a valid message with pytest.raises(InputError): message_unpin_v1(make_token(0), 25) # Message with ID message_id is already unpinned with pytest.raises(InputError): message_unpin_v1(make_token(2), 0) # The authorised user is not a member of the channel or DM that the message is within message_pin_v1(make_token(2), 0) with pytest.raises(AccessError): message_unpin_v1(make_token(0), 0) # The authorised user is not an owner of the channel or DM with pytest.raises(AccessError): message_unpin_v1(make_token(3), 0)
def test_channel_pin(test_data): a_data, b_data, c_data = test_data a_ch_id = channels_create_v2(a_data["token"], "A channel", True)["channel_id"] b_ch_id = channels_create_v2(b_data["token"], "B channel", True)["channel_id"] channel_join_v2(c_data["token"], a_ch_id) channel_join_v2(c_data["token"], b_ch_id) # pin own message a1_msg_id = message_send_v2(a_data["token"], a_ch_id, "My own message")["message_id"] message_pin_v1(a_data["token"], a1_msg_id) messages = channel_messages_v2(a_data["token"], a_ch_id, 0)["messages"] # we know there is only one message sent, so it must be index 0 of messages assert messages[0]["message_id"] == a1_msg_id assert messages[0]["is_pinned"] == True # pin someone elses message c1_msg_id = message_send_v2(c_data["token"], a_ch_id, "C's message")["message_id"] message_pin_v1(a_data["token"], c1_msg_id) messages = channel_messages_v2(a_data["token"], a_ch_id, 0)["messages"] # channel_messages is most recent message first assert messages[0]["message_id"] == c1_msg_id assert messages[0]["is_pinned"] == True # b_ch b1_msg_id = message_send_v2(b_data["token"], b_ch_id, "B's message whoo")["message_id"] message_pin_v1(b_data["token"], b1_msg_id) messages = channel_messages_v2(b_data["token"], b_ch_id, 0)["messages"] assert messages[0]["message_id"] == b1_msg_id assert messages[0]["is_pinned"] == True channel_addowner_v1(b_data["token"], b_ch_id, c_data["auth_user_id"]) c2_msg_id = message_send_v2(c_data["token"], b_ch_id, "C's second message whoo")["message_id"] message_pin_v1(c_data["token"], c2_msg_id) messages = channel_messages_v2(c_data["token"], b_ch_id, 0)["messages"] assert messages[0]["message_id"] == c2_msg_id assert messages[0]["is_pinned"] == True
def test_dm_pin(test_data): a_data, b_data, c_data = test_data a_dm_id = dm_create_v1(a_data["token"], [c_data["auth_user_id"]])["dm_id"] b_dm_id = dm_create_v1(b_data["token"], [c_data["auth_user_id"]])["dm_id"] # pin own message a1_msg_id = message_senddm_v1(a_data["token"], a_dm_id, "My own message")["message_id"] message_pin_v1(a_data["token"], a1_msg_id) messages = dm_messages_v1(a_data["token"], a_dm_id, 0)["messages"] assert messages[0]["message_id"] == a1_msg_id assert messages[0]["is_pinned"] == True # pin someone elses message c1_msg_id = message_senddm_v1(c_data["token"], a_dm_id, "C's message")["message_id"] message_pin_v1(a_data["token"], c1_msg_id) messages = dm_messages_v1(a_data["token"], a_dm_id, 0)["messages"] assert messages[0]["message_id"] == c1_msg_id assert messages[0]["is_pinned"] == True # b_ch b1_msg_id = message_senddm_v1(b_data["token"], b_dm_id, "B's message whoo")["message_id"] message_pin_v1(b_data["token"], b1_msg_id) messages = dm_messages_v1(b_data["token"], b_dm_id, 0)["messages"] assert messages[0]["message_id"] == b1_msg_id assert messages[0]["is_pinned"] == True c2_msg_id = message_senddm_v1(c_data["token"], b_dm_id, "C's second message whoo")["message_id"] message_pin_v1(b_data["token"], c2_msg_id) messages = dm_messages_v1(c_data["token"], b_dm_id, 0)["messages"] assert messages[0]["message_id"] == c2_msg_id assert messages[0]["is_pinned"] == True
def message_pin(): parameters = request.get_json() token = parameters['token'] message_id = parameters['message_id'] message_pin_v1(token, message_id) return dumps({})
def test_message_pin_and_unpin(user_setup, dm_setup, channel_setup): message_send_v2(make_token(2), 0, "0") assert message_pin_v1(make_token(2), 0) == {} assert channel_messages_v2(make_token(2), 0, 0) == { "messages": [ { "message_id": 0, "u_id": 2, "message": "0", "time_created": create_timestamp(), "channel_id": 0, "dm_id": -1, 'reacts': [{ 'react_id': 1, 'u_ids': [], 'is_this_user_reacted': False }], 'is_pinned': True }, ], "start": 0, "end": -1, } assert message_unpin_v1(make_token(2), 0) == {} assert channel_messages_v2(make_token(2), 0, 0) == { "messages": [ { "message_id": 0, "u_id": 2, "message": "0", "time_created": create_timestamp(), "channel_id": 0, "dm_id": -1, 'reacts': [{ 'react_id': 1, 'u_ids': [], 'is_this_user_reacted': False }], 'is_pinned': False }, ], "start": 0, "end": -1, }