示例#1
0
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
示例#2
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
示例#3
0
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
示例#4
0
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
示例#5
0
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")