def test_GetHostRequest(db): user1, token1 = generate_user() user2, token2 = generate_user() user3, token3 = generate_user() today_plus_2 = (today() + timedelta(days=2)).isoformat() today_plus_3 = (today() + timedelta(days=3)).isoformat() with requests_session(token1) as api: host_request_id = api.CreateHostRequest( requests_pb2.CreateHostRequestReq( to_user_id=user2.id, from_date=today_plus_2, to_date=today_plus_3, text="Test request 1")).host_request_id with pytest.raises(grpc.RpcError) as e: api.GetHostRequest( requests_pb2.GetHostRequestReq(host_request_id=999)) assert e.value.code() == grpc.StatusCode.NOT_FOUND assert e.value.details() == errors.HOST_REQUEST_NOT_FOUND api.SendHostRequestMessage( requests_pb2.SendHostRequestMessageReq( host_request_id=host_request_id, text="Test message 1")) res = api.GetHostRequest( requests_pb2.GetHostRequestReq(host_request_id=host_request_id)) assert res.latest_message.text.text == "Test message 1"
def test_get_host_request(db): user1, token1 = generate_user(db) user2, token2 = generate_user(db) user3, token3 = generate_user(db) today_plus_2 = (now() + timedelta(days=2)).strftime("%Y-%m-%d") today_plus_3 = (now() + timedelta(days=3)).strftime("%Y-%m-%d") with requests_session(db, token1) as api: host_request_id = api.CreateHostRequest( requests_pb2.CreateHostRequestReq( to_user_id=user2.id, from_date=today_plus_2, to_date=today_plus_3, text="Test request 1")).host_request_id with pytest.raises(grpc.RpcError) as e: api.GetHostRequest( requests_pb2.GetHostRequestReq(host_request_id=999)) assert e.value.code() == grpc.StatusCode.NOT_FOUND api.SendHostRequestMessage( requests_pb2.SendHostRequestMessageReq( host_request_id=host_request_id, text="Test message 1")) res = api.GetHostRequest( requests_pb2.GetHostRequestReq(host_request_id=host_request_id)) assert res.latest_message.text.text == "Test message 1"
def test_mark_last_seen(db): user1, token1 = generate_user() user2, token2 = generate_user() user3, token3 = generate_user() today_plus_2 = (today() + timedelta(days=2)).isoformat() today_plus_3 = (today() + timedelta(days=3)).isoformat() with requests_session(token1) as api: host_request_id = api.CreateHostRequest( requests_pb2.CreateHostRequestReq( to_user_id=user2.id, from_date=today_plus_2, to_date=today_plus_3, text="Test message 0")).host_request_id host_request_id_2 = api.CreateHostRequest( requests_pb2.CreateHostRequestReq( to_user_id=user2.id, from_date=today_plus_2, to_date=today_plus_3, text="Test message 0a")).host_request_id api.SendHostRequestMessage( requests_pb2.SendHostRequestMessageReq( host_request_id=host_request_id, text="Test message 1")) api.SendHostRequestMessage( requests_pb2.SendHostRequestMessageReq( host_request_id=host_request_id, text="Test message 2")) api.RespondHostRequest( requests_pb2.RespondHostRequestReq( host_request_id=host_request_id, status=conversations_pb2.HOST_REQUEST_STATUS_CANCELLED, text="Test message 3", )) # test Ping unseen host request count, should be automarked after sending with api_session(token1) as api: assert api.Ping( api_pb2.PingReq()).unseen_received_host_request_count == 0 assert api.Ping(api_pb2.PingReq()).unseen_sent_host_request_count == 0 with api_session(token2) as api: assert api.Ping( api_pb2.PingReq()).unseen_received_host_request_count == 2 assert api.Ping(api_pb2.PingReq()).unseen_sent_host_request_count == 0 with requests_session(token2) as api: assert api.ListHostRequests(requests_pb2.ListHostRequestsReq( )).host_requests[0].last_seen_message_id == 0 api.MarkLastSeenHostRequest( requests_pb2.MarkLastSeenHostRequestReq( host_request_id=host_request_id, last_seen_message_id=3)) assert api.ListHostRequests(requests_pb2.ListHostRequestsReq( )).host_requests[0].last_seen_message_id == 3 with pytest.raises(grpc.RpcError) as e: api.MarkLastSeenHostRequest( requests_pb2.MarkLastSeenHostRequestReq( host_request_id=host_request_id, last_seen_message_id=1)) assert e.value.code() == grpc.StatusCode.FAILED_PRECONDITION assert e.value.details() == errors.CANT_UNSEE_MESSAGES # this will be used to test sent request notifications host_request_id_3 = api.CreateHostRequest( requests_pb2.CreateHostRequestReq( to_user_id=user1.id, from_date=today_plus_2, to_date=today_plus_3, text="Another test request")).host_request_id # this should make id_2 all read api.SendHostRequestMessage( requests_pb2.SendHostRequestMessageReq( host_request_id=host_request_id_2, text="Test")) with api_session(token2) as api: assert api.Ping( api_pb2.PingReq()).unseen_received_host_request_count == 1 assert api.Ping(api_pb2.PingReq()).unseen_sent_host_request_count == 0 # make sure sent and received count for unseen notifications with requests_session(token1) as api: api.SendHostRequestMessage( requests_pb2.SendHostRequestMessageReq( host_request_id=host_request_id_3, text="Test message")) with api_session(token2) as api: assert api.Ping( api_pb2.PingReq()).unseen_received_host_request_count == 1 assert api.Ping(api_pb2.PingReq()).unseen_sent_host_request_count == 1
def test_get_updates(db): user1, token1 = generate_user() user2, token2 = generate_user() user3, token3 = generate_user() today_plus_2 = (today() + timedelta(days=2)).isoformat() today_plus_3 = (today() + timedelta(days=3)).isoformat() with requests_session(token1) as api: host_request_id = api.CreateHostRequest( requests_pb2.CreateHostRequestReq( to_user_id=user2.id, from_date=today_plus_2, to_date=today_plus_3, text="Test message 0")).host_request_id api.SendHostRequestMessage( requests_pb2.SendHostRequestMessageReq( host_request_id=host_request_id, text="Test message 1")) api.SendHostRequestMessage( requests_pb2.SendHostRequestMessageReq( host_request_id=host_request_id, text="Test message 2")) api.RespondHostRequest( requests_pb2.RespondHostRequestReq( host_request_id=host_request_id, status=conversations_pb2.HOST_REQUEST_STATUS_CANCELLED, text="Test message 3", )) api.CreateHostRequest( requests_pb2.CreateHostRequestReq(to_user_id=user2.id, from_date=today_plus_2, to_date=today_plus_3, text="Test message 4")) res = api.GetHostRequestMessages( requests_pb2.GetHostRequestMessagesReq( host_request_id=host_request_id)) assert len(res.messages) == 6 assert res.messages[0].text.text == "Test message 3" assert res.messages[ 1].host_request_status_changed.status == conversations_pb2.HOST_REQUEST_STATUS_CANCELLED assert res.messages[2].text.text == "Test message 2" assert res.messages[3].text.text == "Test message 1" assert res.messages[4].text.text == "Test message 0" message_id_3 = res.messages[0].message_id message_id_cancel = res.messages[1].message_id message_id_2 = res.messages[2].message_id message_id_1 = res.messages[3].message_id message_id_0 = res.messages[4].message_id with pytest.raises(grpc.RpcError) as e: api.GetHostRequestUpdates( requests_pb2.GetHostRequestUpdatesReq(newest_message_id=0)) assert e.value.code() == grpc.StatusCode.INVALID_ARGUMENT res = api.GetHostRequestUpdates( requests_pb2.GetHostRequestUpdatesReq( newest_message_id=message_id_1)) assert res.no_more assert len(res.updates) == 5 assert res.updates[0].message.text.text == "Test message 2" assert (res.updates[1].message.host_request_status_changed.status == conversations_pb2.HOST_REQUEST_STATUS_CANCELLED) assert res.updates[ 1].status == conversations_pb2.HOST_REQUEST_STATUS_CANCELLED assert res.updates[2].message.text.text == "Test message 3" assert res.updates[3].message.WhichOneof("content") == "chat_created" assert res.updates[ 3].status == conversations_pb2.HOST_REQUEST_STATUS_PENDING assert res.updates[4].message.text.text == "Test message 4" res = api.GetHostRequestUpdates( requests_pb2.GetHostRequestUpdatesReq( newest_message_id=message_id_1, number=1)) assert not res.no_more assert len(res.updates) == 1 assert res.updates[0].message.text.text == "Test message 2" assert res.updates[ 0].status == conversations_pb2.HOST_REQUEST_STATUS_CANCELLED with requests_session(token3) as api: # other user can't access res = api.GetHostRequestUpdates( requests_pb2.GetHostRequestUpdatesReq( newest_message_id=message_id_1)) assert len(res.updates) == 0
def test_SendHostRequestMessage(db): user1, token1 = generate_user() user2, token2 = generate_user() user3, token3 = generate_user() today_plus_2 = (today() + timedelta(days=2)).isoformat() today_plus_3 = (today() + timedelta(days=3)).isoformat() with requests_session(token1) as api: host_request_id = api.CreateHostRequest( requests_pb2.CreateHostRequestReq( to_user_id=user2.id, from_date=today_plus_2, to_date=today_plus_3, text="Test request 1")).host_request_id with pytest.raises(grpc.RpcError) as e: api.SendHostRequestMessage( requests_pb2.SendHostRequestMessageReq(host_request_id=999, text="Test message 1")) assert e.value.code() == grpc.StatusCode.NOT_FOUND with pytest.raises(grpc.RpcError) as e: api.SendHostRequestMessage( requests_pb2.SendHostRequestMessageReq( host_request_id=host_request_id, text="")) assert e.value.code() == grpc.StatusCode.INVALID_ARGUMENT assert e.value.details() == errors.INVALID_MESSAGE api.SendHostRequestMessage( requests_pb2.SendHostRequestMessageReq( host_request_id=host_request_id, text="Test message 1")) res = api.GetHostRequestMessages( requests_pb2.GetHostRequestMessagesReq( host_request_id=host_request_id)) assert res.messages[0].text.text == "Test message 1" assert res.messages[0].author_user_id == user1.id with requests_session(token3) as api: # other user can't send with pytest.raises(grpc.RpcError) as e: api.SendHostRequestMessage( requests_pb2.SendHostRequestMessageReq( host_request_id=host_request_id, text="Test message 2")) assert e.value.code() == grpc.StatusCode.NOT_FOUND assert e.value.details() == errors.HOST_REQUEST_NOT_FOUND with requests_session(token2) as api: api.SendHostRequestMessage( requests_pb2.SendHostRequestMessageReq( host_request_id=host_request_id, text="Test message 2")) res = api.GetHostRequestMessages( requests_pb2.GetHostRequestMessagesReq( host_request_id=host_request_id)) # including 2 for creation control message and message assert len(res.messages) == 4 assert res.messages[0].text.text == "Test message 2" assert res.messages[0].author_user_id == user2.id # can't send messages to a rejected, confirmed or cancelled request, but can for accepted api.RespondHostRequest( requests_pb2.RespondHostRequestReq( host_request_id=host_request_id, status=conversations_pb2.HOST_REQUEST_STATUS_REJECTED)) with pytest.raises(grpc.RpcError) as e: api.SendHostRequestMessage( requests_pb2.SendHostRequestMessageReq( host_request_id=host_request_id, text="Test message 3")) assert e.value.code() == grpc.StatusCode.PERMISSION_DENIED assert e.value.details() == errors.HOST_REQUEST_CLOSED api.RespondHostRequest( requests_pb2.RespondHostRequestReq( host_request_id=host_request_id, status=conversations_pb2.HOST_REQUEST_STATUS_ACCEPTED)) with requests_session(token1) as api: api.RespondHostRequest( requests_pb2.RespondHostRequestReq( host_request_id=host_request_id, status=conversations_pb2.HOST_REQUEST_STATUS_CONFIRMED)) api.SendHostRequestMessage( requests_pb2.SendHostRequestMessageReq( host_request_id=host_request_id, text="Test message 3")) api.RespondHostRequest( requests_pb2.RespondHostRequestReq( host_request_id=host_request_id, status=conversations_pb2.HOST_REQUEST_STATUS_CANCELLED)) with pytest.raises(grpc.RpcError) as e: api.SendHostRequestMessage( requests_pb2.SendHostRequestMessageReq( host_request_id=host_request_id, text="Test message 3")) assert e.value.code() == grpc.StatusCode.PERMISSION_DENIED assert e.value.details() == errors.HOST_REQUEST_CLOSED