def test_list_host_requests_active_filter(db): user1, token1 = generate_user() user2, token2 = generate_user() today_plus_2 = (today() + timedelta(days=2)).isoformat() today_plus_3 = (today() + timedelta(days=3)).isoformat() with requests_session(token1) as api: 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 api.RespondHostRequest( requests_pb2.RespondHostRequestReq( host_request_id=request_id, status=conversations_pb2.HOST_REQUEST_STATUS_CANCELLED)) with requests_session(token2) as api: res = api.ListHostRequests( requests_pb2.ListHostRequestsReq(only_received=True)) assert len(res.host_requests) == 1 res = api.ListHostRequests( requests_pb2.ListHostRequestsReq(only_active=True)) assert len(res.host_requests) == 0
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_list_requests(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_1 = 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 host_request_2 = api.CreateHostRequest( requests_pb2.CreateHostRequestReq( to_user_id=user3.id, from_date=today_plus_2, to_date=today_plus_3, text="Test request 2")).host_request_id res = api.ListHostRequests( requests_pb2.ListHostRequestsReq(only_sent=True)) assert res.no_more assert len(res.host_requests) == 2 with requests_session(token2) as api: res = api.ListHostRequests( requests_pb2.ListHostRequestsReq(only_received=True)) assert res.no_more assert len(res.host_requests) == 1 assert res.host_requests[ 0].latest_message.text.text == "Test request 1" assert res.host_requests[0].from_user_id == user1.id assert res.host_requests[0].to_user_id == user2.id assert res.host_requests[ 0].status == conversations_pb2.HOST_REQUEST_STATUS_PENDING add_message(db, "Test request 1 message 1", user2.id, host_request_1) add_message(db, "Test request 1 message 2", user2.id, host_request_1) add_message(db, "Test request 1 message 3", user2.id, host_request_1) res = api.ListHostRequests( requests_pb2.ListHostRequestsReq(only_received=True)) assert res.host_requests[ 0].latest_message.text.text == "Test request 1 message 3" api.CreateHostRequest( requests_pb2.CreateHostRequestReq(to_user_id=user1.id, from_date=today_plus_2, to_date=today_plus_3, text="Test request 3")) add_message(db, "Test request 2 message 1", user1.id, host_request_2) add_message(db, "Test request 2 message 2", user3.id, host_request_2) with requests_session(token3) as api: res = api.ListHostRequests( requests_pb2.ListHostRequestsReq(only_received=True)) assert res.no_more assert len(res.host_requests) == 1 assert res.host_requests[ 0].latest_message.text.text == "Test request 2 message 2" with requests_session(token1) as api: res = api.ListHostRequests( requests_pb2.ListHostRequestsReq(only_received=True)) assert len(res.host_requests) == 1 res = api.ListHostRequests(requests_pb2.ListHostRequestsReq()) assert len(res.host_requests) == 3
def test_create_request(db): user1, token1 = generate_user() user2, token2 = generate_user() today_plus_2 = (today() + timedelta(days=2)).isoformat() today_plus_3 = (today() + timedelta(days=3)).isoformat() today_minus_2 = (today() - timedelta(days=2)).isoformat() today_minus_3 = (today() - timedelta(days=3)).isoformat() with requests_session(token1) as api: with pytest.raises(grpc.RpcError) as e: api.CreateHostRequest( requests_pb2.CreateHostRequestReq(to_user_id=user1.id, from_date=today_plus_2, to_date=today_plus_3, text="Test request")) assert e.value.code() == grpc.StatusCode.INVALID_ARGUMENT assert e.value.details() == errors.CANT_REQUEST_SELF with pytest.raises(grpc.RpcError) as e: api.CreateHostRequest( requests_pb2.CreateHostRequestReq(to_user_id=999, from_date=today_plus_2, to_date=today_plus_3, text="Test request")) assert e.value.code() == grpc.StatusCode.NOT_FOUND assert e.value.details() == errors.USER_NOT_FOUND with pytest.raises(grpc.RpcError) as e: api.CreateHostRequest( requests_pb2.CreateHostRequestReq(to_user_id=user2.id, from_date=today_plus_3, to_date=today_plus_2, text="Test request")) assert e.value.code() == grpc.StatusCode.INVALID_ARGUMENT assert e.value.details() == errors.DATE_FROM_AFTER_TO with pytest.raises(grpc.RpcError) as e: api.CreateHostRequest( requests_pb2.CreateHostRequestReq(to_user_id=user2.id, from_date=today_minus_3, to_date=today_plus_2, text="Test request")) assert e.value.code() == grpc.StatusCode.INVALID_ARGUMENT assert e.value.details() == errors.DATE_FROM_BEFORE_TODAY with pytest.raises(grpc.RpcError) as e: api.CreateHostRequest( requests_pb2.CreateHostRequestReq(to_user_id=user2.id, from_date=today_plus_2, to_date=today_minus_2, text="Test request")) assert e.value.code() == grpc.StatusCode.INVALID_ARGUMENT assert e.value.details() == errors.DATE_FROM_AFTER_TO with pytest.raises(grpc.RpcError) as e: api.CreateHostRequest( requests_pb2.CreateHostRequestReq(to_user_id=user2.id, from_date="2020-00-06", to_date=today_minus_2, text="Test request")) assert e.value.code() == grpc.StatusCode.INVALID_ARGUMENT assert e.value.details() == errors.INVALID_DATE res = api.CreateHostRequest( requests_pb2.CreateHostRequestReq(to_user_id=user2.id, from_date=today_plus_2, to_date=today_plus_3, text="Test request")) assert (api.ListHostRequests( requests_pb2.ListHostRequestsReq(only_sent=True)).host_requests[0]. latest_message.text.text == "Test request") today_ = today() today_plus_one_year = today_.replace(year=today_.year + 1) today_plus_one_year_plus_2 = (today_plus_one_year + timedelta(days=2)).isoformat() today_plus_one_year_plus_3 = (today_plus_one_year + timedelta(days=3)).isoformat() with pytest.raises(grpc.RpcError) as e: api.CreateHostRequest( requests_pb2.CreateHostRequestReq( to_user_id=user2.id, from_date=today_plus_one_year_plus_2, to_date=today_plus_one_year_plus_3, text="Test from date after one year", )) assert e.value.code() == grpc.StatusCode.INVALID_ARGUMENT assert e.value.details() == errors.DATE_FROM_AFTER_ONE_YEAR with pytest.raises(grpc.RpcError) as e: api.CreateHostRequest( requests_pb2.CreateHostRequestReq( to_user_id=user2.id, from_date=today_plus_2, to_date=today_plus_one_year_plus_3, text="Test to date one year after from date", )) assert e.value.code() == grpc.StatusCode.INVALID_ARGUMENT assert e.value.details() == errors.DATE_TO_AFTER_ONE_YEAR
def test_create_request(db): user1, token1 = generate_user(db) user2, token2 = 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") today_minus_2 = (now() - timedelta(days=2)).strftime("%Y-%m-%d") today_minus_3 = (now() - timedelta(days=3)).strftime("%Y-%m-%d") with requests_session(db, token1) as api: with pytest.raises(grpc.RpcError) as e: api.CreateHostRequest( requests_pb2.CreateHostRequestReq(to_user_id=user1.id, from_date=today_plus_2, to_date=today_plus_3, text="Test request")) assert e.value.code() == grpc.StatusCode.INVALID_ARGUMENT assert e.value.details() == errors.CANT_REQUEST_SELF with pytest.raises(grpc.RpcError) as e: api.CreateHostRequest( requests_pb2.CreateHostRequestReq(to_user_id=999, from_date=today_plus_2, to_date=today_plus_3, text="Test request")) assert e.value.code() == grpc.StatusCode.NOT_FOUND assert e.value.details() == errors.USER_NOT_FOUND with pytest.raises(grpc.RpcError) as e: api.CreateHostRequest( requests_pb2.CreateHostRequestReq(to_user_id=user2.id, from_date=today_plus_3, to_date=today_plus_2, text="Test request")) assert e.value.code() == grpc.StatusCode.INVALID_ARGUMENT assert e.value.details() == errors.DATE_FROM_AFTER_TO with pytest.raises(grpc.RpcError) as e: api.CreateHostRequest( requests_pb2.CreateHostRequestReq(to_user_id=user2.id, from_date=today_minus_3, to_date=today_minus_2, text="Test request")) assert e.value.code() == grpc.StatusCode.INVALID_ARGUMENT assert e.value.details() == errors.DATE_TO_BEFORE_TODAY with pytest.raises(grpc.RpcError) as e: api.CreateHostRequest( requests_pb2.CreateHostRequestReq(to_user_id=user2.id, from_date="2020-00-06", to_date=today_minus_2, text="Test request")) assert e.value.code() == grpc.StatusCode.INVALID_ARGUMENT assert e.value.details() == errors.INVALID_DATE res = api.CreateHostRequest( requests_pb2.CreateHostRequestReq(to_user_id=user2.id, from_date=today_plus_2, to_date=today_plus_3, text="Test request")) assert (api.ListHostRequests( requests_pb2.ListHostRequestsReq(only_sent=True)).host_requests[0]. latest_message.text.text == "Test request")