From 7fad75d2b2b7fb6753add65ea95f7c714558347e Mon Sep 17 00:00:00 2001 From: Peter Chen Date: Wed, 29 Apr 2026 12:10:23 -0400 Subject: [PATCH] add test --- src/test/app/Invariants_test.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/test/app/Invariants_test.cpp b/src/test/app/Invariants_test.cpp index 6060fc8950..059120cdfb 100644 --- a/src/test/app/Invariants_test.cpp +++ b/src/test/app/Invariants_test.cpp @@ -4354,6 +4354,25 @@ class Invariants_test : public beast::unit_test::suite {tecINVARIANT_FAILED, tecINVARIANT_FAILED}, precloseConfidential); + // Send/MergeInbox must not change OutstandingAmount (coaDelta == 0) + doInvariantCheck( + {"Invariant failed: OutstandingAmount changed " + "by confidential transaction that should not " + "modify it for MPT"}, + [&mptID](Account const& A1, Account const& A2, ApplyContext& ac) { + auto sleIssuance = ac.view().peek(keylet::mptIssuance(mptID)); + if (!sleIssuance) + return false; + sleIssuance->setFieldU64( + sfOutstandingAmount, sleIssuance->getFieldU64(sfOutstandingAmount) + 1); + ac.view().update(sleIssuance); + return true; + }, + XRPAmount{}, + STTx{ttCONFIDENTIAL_MPT_SEND, [](STObject&) {}}, + {tecINVARIANT_FAILED, tecINVARIANT_FAILED}, + precloseConfidential); + // badVersion doInvariantCheck( {"MPToken sfConfidentialBalanceVersion not updated when sfConfidentialBalanceSpending "