diff --git a/src/etl/NFTHelpers.cpp b/src/etl/NFTHelpers.cpp index 4925683de..db510339e 100644 --- a/src/etl/NFTHelpers.cpp +++ b/src/etl/NFTHelpers.cpp @@ -18,7 +18,6 @@ //============================================================================== #include "data/DBHelpers.hpp" -#include "data/Types.hpp" #include #include @@ -55,7 +54,7 @@ getNFTsURIChanges(ripple::TxMeta const& txMeta, ripple::STTx const& sttx) auto const tokenID = sttx.getFieldH256(ripple::sfNFTokenID); // note: sfURI is optional, if it is absent, we will update the uri as empty string - return {{std::move(tx)}, NFTsData(tokenID, txMeta, sttx.getFieldVL(ripple::sfURI))}; + return {{tx}, NFTsData(tokenID, txMeta, sttx.getFieldVL(ripple::sfURI))}; } std::pair, std::optional> diff --git a/src/etl/NFTHelpers.hpp b/src/etl/NFTHelpers.hpp index 6497d4d0e..9d80da0a4 100644 --- a/src/etl/NFTHelpers.hpp +++ b/src/etl/NFTHelpers.hpp @@ -34,13 +34,13 @@ namespace etl { /** - * @brief Get the NFT URI change data from a transaction + * @brief Get the NFT URI change data from a NFToken Modify transaction * * @param txMeta Transaction metadata * @param sttx The transaction - * @return NFT URI change data as an optional NFTsData + * @return NFT URI change data as a pair of transactions and optional NFTsData */ -std::optional +std::pair, std::optional> getNFTsURIChanges(ripple::TxMeta const& txMeta, ripple::STTx const& sttx); /** diff --git a/tests/unit/etl/NFTHelpersTests.cpp b/tests/unit/etl/NFTHelpersTests.cpp index af6d79b92..45d17c072 100644 --- a/tests/unit/etl/NFTHelpersTests.cpp +++ b/tests/unit/etl/NFTHelpersTests.cpp @@ -368,6 +368,19 @@ TEST_F(NFTHelpersTest, NFTAcceptSellerOfferCheckFail) ); } +TEST_F(NFTHelpersTest, NFTAcceptSellerOfferNotInMeta) +{ + auto const tx = CreateAcceptNFTSellerOfferTxWithMetadata(ACCOUNT, 1, 2, NFTID, OFFER_ID, PAGE_INDEX, true); + ripple::TxMeta txMeta(ripple::uint256(TX), 1, tx.metadata); + // inject a different offer id + txMeta.getNodes()[0].setFieldH256(ripple::sfLedgerIndex, ripple::uint256(PAGE_INDEX)); + + EXPECT_THROW( + etl::getNFTDataFromTx(txMeta, ripple::STTx(ripple::SerialIter{tx.transaction.data(), tx.transaction.size()})), + std::runtime_error + ); +} + TEST_F(NFTHelpersTest, NFTAcceptSellerOfferZeroMetaNode) { auto const tx = CreateAcceptNFTSellerOfferTxWithMetadata(ACCOUNT2, 1, 2, NFTID, OFFER_ID, PAGE_INDEX, true);