From c50174235fd29e16f66d044f11f457b40e73dea9 Mon Sep 17 00:00:00 2001 From: cyan317 <120398799+cindyyan317@users.noreply.github.com> Date: Wed, 24 May 2023 15:38:27 +0100 Subject: [PATCH] Fix (#647) Fixs #609 #610 #611 --- src/rpc/RPCHelpers.cpp | 4 ++-- unittests/rpc/RPCHelpersTest.cpp | 13 +++++-------- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/src/rpc/RPCHelpers.cpp b/src/rpc/RPCHelpers.cpp index 999874f5..9e86767a 100644 --- a/src/rpc/RPCHelpers.cpp +++ b/src/rpc/RPCHelpers.cpp @@ -706,8 +706,8 @@ traverseOwnedNodes( if (auto const& indexes = sle.getFieldV256(ripple::sfIndexes); std::find(std::begin(indexes), std::end(indexes), hexMarker) == std::end(indexes)) { - // result in empty dataset - return AccountCursor({beast::zero, 0}); + // the index specified by marker is not in the page specified by marker + return Status(ripple::rpcINVALID_PARAMS, "Invalid marker"); } currentIndex = hintIndex; diff --git a/unittests/rpc/RPCHelpersTest.cpp b/unittests/rpc/RPCHelpersTest.cpp index 1efd7f22..8ecb6c8e 100644 --- a/unittests/rpc/RPCHelpersTest.cpp +++ b/unittests/rpc/RPCHelpersTest.cpp @@ -311,7 +311,7 @@ TEST_F(RPCHelpersTest, TraverseOwnedNodesWithMarkerReturnSamePageMarker) } // Send a valid marker, but marker contain an unexisting index -// return empty +// return invalid params error TEST_F(RPCHelpersTest, TraverseOwnedNodesWithUnexistingIndexMarker) { MockBackend* rawBackendPtr = static_cast(mockBackendPtr.get()); @@ -345,13 +345,10 @@ TEST_F(RPCHelpersTest, TraverseOwnedNodesWithUnexistingIndexMarker) auto count = 0; auto ret = traverseOwnedNodes( *mockBackendPtr, account, 9, limit, fmt::format("{},{}", INDEX2, pageNum), yield, [&](auto) { count++; }); - auto cursor = std::get_if(&ret); - EXPECT_TRUE(cursor != nullptr); - EXPECT_EQ(count, 0); - EXPECT_EQ( - cursor->toString(), - "00000000000000000000000000000000000000000000000000000000000000" - "00,0"); + auto status = std::get_if(&ret); + EXPECT_TRUE(status != nullptr); + EXPECT_EQ(*status, ripple::rpcINVALID_PARAMS); + EXPECT_EQ(status->message, "Invalid marker"); }); ctx.run(); }