def test_search_v2_token(reg_user): clear_v2() query_str = 'x' * 200 reg_user(0) fake_token = 'random values r32fecaswd' with pytest.raises(AccessError): search_v2(fake_token, query_str)
def test_search_no_match(register_users): assert search_v2(make_token(0), "Ciao") == {"messages": []} channels_create_v2(make_token(0), "PublicChannel1", True) dm_create_v1(make_token(0), [1, 2]) # dm_id 0 message_send_v2(make_token(0), 0, "Hello") message_senddm_v1(make_token(0), 0, "Goodbye") assert search_v2(make_token(0), "Ciao") == {"messages": []}
def test_search_v2_invalid_query_str_channel(): clear_v1() auth_user_1_data = auth_register_v2("*****@*****.**", "123456", "Andy", "Dandy") auth_user_1_token = auth_user_1_data["token"] channel_1_data = channels_create_v2(auth_user_1_token, "Andys channel", True) channels_1_id = channel_1_data["channel_id"] message_send_v2(auth_user_1_token, channels_1_id, "l" * 1000) with pytest.raises(InputError): search_v2(auth_user_1_token, "l" * 9999)
def test_message_sendlaterdm_valid_case(): clear_v1() user = auth_register_v2('*****@*****.**', 'pasword24323132', 'Terrence', 'Andrews') user2 = auth_register_v2('*****@*****.**', 'password1234', 'Terry', 'Lurr') dm = dm_create_v1(user['token'], [user2['auth_user_id']]) # 3 seconds time = datetime.now().replace(microsecond=0) + timedelta(0, 3) time_sent = time.timestamp() # 5 seconds time_later = datetime.now().replace(microsecond=0) + timedelta(0, 5) time_sent_later = time_later.timestamp() def test_sent_empty(message): messages = search_v2(user['token'], message) assert messages == {'messages': []} # Check if messages is empty 2 seconds after the first message_sendlaterdm has been called timer = threading.Timer(2, test_sent_empty, args=('Hey Guys!')) timer.start() def test_sent_later_empty(): messages = search_v2(user['token'], '2 seconds later') assert messages == {'messages': []} # Check 2nd message has been sent yet timer = threading.Timer(2, test_sent_later_empty) timer.start() msg = message_sendlaterdm_v1(user['token'], dm['dm_id'], "Hey Guys!", time_sent) msg_search = search_v2(user['token'], 'Hey Guys!') assert msg_search['messages'][0]['message_id'] == msg['message_id'] assert msg_search['messages'][0]['time_created'] == time_sent # Second message sent msg_later = message_sendlaterdm_v1(user['token'], dm['dm_id'], "2 seconds later", time_sent_later) msg_search = search_v2(user['token'], '2 seconds later') assert msg_search['messages'][0]['message_id'] == msg_later['message_id'] assert msg_search['messages'][0]['time_created'] == time_sent_later
def test_search_v2_invalid_query_str_dm(): 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_1_data = dm_create_v1(auth_user_1_token, [auth_user_2_id, auth_user_3_id]) dm_id_1 = dm_1_data["dm_id"] message_senddm_v1(auth_user_1_token, dm_id_1, "l" * 1000) with pytest.raises(InputError): search_v2(auth_user_1_token, "l" * 9999)
def test_search_v2_find_apples_channel(reg_user): clear_v2() query_str = 'apples' #find messages that have the same text as this user_register1 = reg_user(0) channel_id = channels_create_v2(user_register1['token'], 'nice channel', True)['channel_id'] message = 'i love bananas, dont like apples' message_2 = 'i love bananas' for _ in range(0, 20): message_send_v2(user_register1['token'], channel_id, message_2) message_send_v2(user_register1['token'], channel_id, message) messages = search_v2(user_register1['token'], query_str)['messages'] for single_message in messages: assert single_message['message'] != message_2 assert single_message['message'] == message
def test_search_v2_non_case_sensitive_dm(reg_user): clear_v2() query_str = 'APPLES' #find messages that have the same text as this user_register1 = reg_user(0) auth_user_id_receiver = reg_user(1)['auth_user_id'] dm_id = dm_create_v1(user_register1['token'], [auth_user_id_receiver])['dm_id'] message = 'i love bananas, dont like apples' message_2 = 'i love bananas' for _ in range(0, 20): message_senddm_v1(user_register1['token'], dm_id, message_2) message_senddm_v1(user_register1['token'], dm_id, message) messages = search_v2(user_register1['token'], query_str)['messages'] for single_message in messages: assert single_message['message'] != message_2 assert single_message['message'] == message
def test_remove_dm_with_messages(reg_user, crt_dm, send_dm): clear_v2() user = reg_user(0) token = user['token'] u_id = user['auth_user_id'] message = "Apple" dm_id = crt_dm(token, [u_id])['dm_id'] send_dm(token, dm_id, message) # Send message containing string "Apple" dm_remove_v1(token, dm_id) assert search_v2(token, message)['messages'] == []
def test_search_v2(): clear_v1() auth_user_1_data = auth_register_v2("*****@*****.**", "123456", "Andy", "Dandy") auth_user_1_token = auth_user_1_data["token"] auth_user_1_id = auth_user_1_data["auth_user_id"] 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"] channel_1_data = channels_create_v2(auth_user_1_token, "Andys channel", True) channels_1_id = channel_1_data["channel_id"] message_1_data = message_send_v2(auth_user_1_token, channels_1_id, "Hello") message_1_id = message_1_data["message_id"] dm_1_data = dm_create_v1(auth_user_1_token, [auth_user_2_id, auth_user_3_id]) dm_id_1 = dm_1_data["dm_id"] message_2_data = message_senddm_v1(auth_user_1_token, dm_id_1, "World") message_2_id = message_2_data["message_id"] search_data = search_v2(auth_user_1_token, "l") assert search_data["messages"][0]["message_id"] == message_1_id assert search_data["messages"][0]["u_id"] == auth_user_1_id assert search_data["messages"][0]["message"] == "Hello" assert search_data["messages"][1]["message_id"] == message_2_id assert search_data["messages"][1]["u_id"] == auth_user_1_id assert search_data["messages"][1]["message"] == "World"
def search(): parameters = request.args token = parameters['token'] query_str = parameters['query_str'] output = search_v2(token, query_str) return dumps(output)
def test_search_v2_above_1000_characters(reg_user): clear_v2() query_str = 'x' * 1001 token_1 = reg_user(0)['token'] with pytest.raises(InputError): search_v2(token_1, query_str)
def test_search_success(register_users): channels_create_v2(make_token(0), "PublicChannel1", True) dm_create_v1(make_token(0), [1, 2]) # dm_id 0 message_send_v2(make_token(0), 0, "Hello") message_senddm_v1(make_token(0), 0, "Goodbye") assert search_v2(make_token(0), "Hello") == { "messages": [{ "message_id": 0, "u_id": 0, "message": "Hello", "time_created": str(create_timestamp()), "channel_id": 0, "dm_id": -1, "reacts": [{ "react_id": 1, "u_ids": [], "is_this_user_reacted": False }], "is_pinned": False }] } assert search_v2(make_token(0), "Good") == { "messages": [{ "message_id": 1, "u_id": 0, "message": "Goodbye", "time_created": str(create_timestamp()), "channel_id": -1, "dm_id": 0, "reacts": [{ "react_id": 1, "u_ids": [], "is_this_user_reacted": False }], "is_pinned": False }] } assert search_v2(make_token(0), "o") == { "messages": [{ "message_id": 0, "u_id": 0, "message": "Hello", "time_created": str(create_timestamp()), "channel_id": 0, "dm_id": -1, "reacts": [{ "react_id": 1, "u_ids": [], "is_this_user_reacted": False }], "is_pinned": False }, { "message_id": 1, "u_id": 0, "message": "Goodbye", "time_created": str(create_timestamp()), "channel_id": -1, "dm_id": 0, "reacts": [{ "react_id": 1, "u_ids": [], "is_this_user_reacted": False }], "is_pinned": False }] } clear_v1()
def test_invalid_tokens(): with pytest.raises(AccessError): search_v2(make_token(5), "Hello") admin_userpermission_change_v1(make_token(5), 0, 0) admin_user_remove_v1(make_token(5), 1) notifications_get_v1(make_token(5))
def search(): token = request.args.get('token') query_str = request.args.get('query_str') return dumps(search_v2(token, query_str))
def test_sent_later_empty(): messages = search_v2(user['token'], '2 seconds later') assert messages == {'messages': []}
def test_sent_empty(message): messages = search_v2(user['token'], message) assert messages == {'messages': []}