def test_message_unreact_invalid_msg_id(): # Invalid message id raises InputError clear_v1() user = auth_register_v2("*****@*****.**", "password", "bob", "williams") channel = channels_create_v2(user['token'], 'channel example', True) msg = message_send_v2(user["token"], channel['channel_id'], 'helo world') message_react_v1(user['token'], msg["message_id"], 1) with pytest.raises(InputError): message_unreact_v1(user['token'], "invalid message id", 1)
def test_not_react(reg_user, create_channel): clear_v2() # new user new_user = reg_user(0) user_token = new_user['token'] # new channel channel_id = create_channel(user_token)['channel_id'] # new message message = "Hello World !" message_id = message_send_v2(user_token, channel_id, message)['message_id'] react_id = 1 with pytest.raises(InputError): message_unreact_v1(user_token, message_id, react_id)
def message_unreact(): parameters = request.get_json() token = parameters['token'] message_id = parameters['message_id'] react_id = parameters['react_id'] output = message_unreact_v1(token, message_id, react_id) return dumps(output)
def test_message_unreact_not_reacted(): # Unreacting to an unreacted message by user raises InputError clear_v1() user = auth_register_v2("*****@*****.**", "password", "bob", "williams") user2 = auth_register_v2("*****@*****.**", "password", "bob", "williams") channel = channels_create_v2(user['token'], 'channel example', True) msg = message_send_v2(user["token"], channel['channel_id'], 'helo world') with pytest.raises(InputError): message_unreact_v1(user["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") with pytest.raises(InputError): message_unreact_v1(user["token"], msg["message_id"], 1)
def message_unreact(): data = request.get_json() token = data['token'] message_id = data['message_id'] react_id = data['react_id'] output = message_unreact_v1(token, message_id, react_id) return dumps(output)
def message_unreact(): info = request.get_json() token = info["token"] message_id = info["message_id"] react_id = info["react_id"] message_unreact = message_unreact_v1(token, message_id, react_id) return dumps(message_unreact)
def test_invalid_token(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 dm new_dm = dm_create_v1(user_token, [user_id]) dm_id = new_dm['dm_id'] # new message message = "Hello World !" message_id = message_senddm_v1(user_token, dm_id, message)['message_id'] react_id = 1 message_react_v1(user_token, message_id, react_id) with pytest.raises(AccessError): message_unreact_v1("invalid_token", message_id, react_id)
def test_invaild_message_id_dm(reg_user): clear_v2() # new user new_user = reg_user(0) user_token = new_user['token'] user_id = new_user['auth_user_id'] # new dm new_dm = dm_create_v1(user_token, [user_id]) dm_id = new_dm['dm_id'] # new message message = "Hello World !" message_id = message_senddm_v1(user_token, dm_id, message)['message_id'] react_id = 1 message_react_v1(user_token, message_id, react_id) with pytest.raises(InputError): message_unreact_v1(user_token, message_id + 1, react_id)
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_message_unreact_simple_case_dm(): # Message already reacted to by user raises InputError clear_v1() user = auth_register_v2("*****@*****.**", "password", "bob", "williams") user2 = auth_register_v2("*****@*****.**", "password", "billy", "williams") dm = dm_create_v1(user['token'], [user2['auth_user_id']]) message_senddm_v1(user["token"], dm['dm_id'], 'message to dilute the history') msg = message_senddm_v1(user["token"], dm['dm_id'], 'helo world') message_react_v1(user['token'], msg["message_id"], 1) message_react_v1(user2['token'], msg["message_id"], 1) message_unreact_v1(user['token'], msg["message_id"], 1) msg_list = dm_messages_v1(user2['token'], dm['dm_id'], 0)['messages'] assert msg_list[0]['reacts'] == [{ 'react_id': 1, 'u_ids': [user2['auth_user_id']], 'is_this_user_reacted': True, }]
def test_no_channel(reg_user, create_channel): clear_v2() # new user new_user = reg_user(0) user_token = new_user['token'] # new channel channel_id = create_channel(user_token)['channel_id'] # new message message = "Hello World !" message_id = message_send_v2(user_token, channel_id, message)['message_id'] # anthor user another_user = reg_user(1) another_token = another_user['token'] react_id = 1 message_react_v1(user_token, message_id, react_id) with pytest.raises(AccessError): message_unreact_v1(another_token, message_id, react_id)
def test_message_unreact_simple_case_channel(): # Message already reacted to by user raises InputError 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']) message_send_v2(user["token"], channel['channel_id'], 'message to dilute the history') msg = message_send_v2(user["token"], channel['channel_id'], 'helo world') message_react_v1(user['token'], msg["message_id"], 1) message_react_v1(user2['token'], msg["message_id"], 1) message_unreact_v1(user2['token'], msg["message_id"], 1) msg_list = channel_messages_v2(user2['token'], channel['channel_id'], 0)['messages'] assert msg_list[0]['reacts'] == [{ 'react_id': 1, 'u_ids': [user['auth_user_id']], 'is_this_user_reacted': False, }]
def test_no_dm(reg_user): clear_v2() # new user new_user = reg_user(0) user_token = new_user['token'] user_id = new_user['auth_user_id'] # new dm new_dm = dm_create_v1(user_token, [user_id]) dm_id = new_dm['dm_id'] # new message message = "Hello World !" message_id = message_senddm_v1(user_token, dm_id, message)['message_id'] # anthor user another_user = reg_user(1) another_token = another_user['token'] react_id = 1 message_react_v1(user_token, message_id, react_id) with pytest.raises(AccessError): message_unreact_v1(another_token, message_id, react_id)
def test_message_unreact_errors(user_setup, dm_setup, channel_setup, message_setup): with pytest.raises(AccessError): message_unreact_v1(make_token(10000), 0, 1) # message_id is not a valid message within a channel or DM that the authorised user has joined with pytest.raises(InputError): message_unreact_v1(make_token(1), 100, 1) # react_id is not a valid React ID with pytest.raises(InputError): message_unreact_v1(make_token(2), 0, 5) # Message with ID message_id does not contain an active React with/ # ID react_id from the authorised user with pytest.raises(InputError): message_unreact_v1(make_token(2), 0, 1) # The authorised user is not a member of the channel or DM that the message is within message_send_v2(make_token(0), 2, "yuh") message_react_v1(make_token(0), 20, 1) with pytest.raises(AccessError): message_react_v1(make_token(1), 20, 1)
def test_dm_member(reg_user, crt_dm, send_dm): clear_v2() # new user new_user = reg_user(0) user_token = new_user['token'] # anthor user another_user = reg_user(1) another_token = another_user['token'] # new channel dm_id = crt_dm(user_token, [another_user['auth_user_id']])['dm_id'] # new message message = "Hello World !" message_id = send_dm(user_token, dm_id, message)['message_id'] react_id = 1 message_react_v1(another_token, message_id, react_id) assert message_unreact_v1(another_token, message_id, react_id) == {}
def test_react_and_unreact_v1(user_setup, dm_setup, channel_setup): # react to the message in the channel message_send_v2(make_token(2), 0, "0") assert message_react_v1(make_token(2), 0, 1) == {} # react to the message in the dm message_senddm_v1(make_token(2), 0, "1") assert message_react_v1(make_token(2), 1, 1) == {} 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': [2], 'is_this_user_reacted': True }], 'is_pinned': False }, ], "start": 0, "end": -1, } assert dm_messages_v1(make_token(2), 0, 0) == { "messages": [ { "message_id": 1, "u_id": 2, "message": "1", "time_created": create_timestamp(), "channel_id": -1, "dm_id": 0, 'reacts': [{ 'react_id': 1, 'u_ids': [2], 'is_this_user_reacted': True }], 'is_pinned': False }, ], "start": 0, "end": -1, } # remove all the reacts assert message_unreact_v1(make_token(2), 0, 1) == {} assert message_unreact_v1(make_token(2), 1, 1) == {} 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, }