From 85ede3e422ed9a29575a582ad81b0c96d06dddb5 Mon Sep 17 00:00:00 2001 From: JCW Date: Mon, 23 Mar 2026 17:45:23 +0000 Subject: [PATCH] Add unit tests for invariant checks Signed-off-by: JCW --- src/test/app/Invariants_test.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/test/app/Invariants_test.cpp b/src/test/app/Invariants_test.cpp index 5be316c73e..e9fdeb3a07 100644 --- a/src/test/app/Invariants_test.cpp +++ b/src/test/app/Invariants_test.cpp @@ -1987,6 +1987,7 @@ class Invariants_test : public beast::unit_test::suite [](SLE::pointer& sle) { sle->at(sfManagementFeeRate) += 1; }, [](SLE::pointer& sle) { sle->at(sfCoverRateMinimum) += 1; }, [](SLE::pointer& sle) { sle->at(sfCoverRateLiquidation) += 1; }, + [](SLE::pointer& sle) { sle->setFlag(lsfLoanBrokerPrivate); }, [](SLE::pointer& sle) { sle->at(sfLedgerEntryType) += 1; }, [](SLE::pointer& sle) { sle->at(sfLedgerIndex) = sle->at(sfVaultID).value(); }, }); @@ -2251,6 +2252,25 @@ class Invariants_test : public beast::unit_test::suite STTx{ttLOAN_BROKER_SET, [](STObject& tx) {}}, {tecINVARIANT_FAILED, tefINVARIANT_FAILED}, createLoanBroker); + + doInvariantCheck( + {{"DomainID is set on public Loan Broker"}}, + [&](Account const& A1, Account const& A2, ApplyContext& ac) { + if (loanBrokerKeylet.type != ltLOAN_BROKER) + return false; + auto sleBroker = ac.view().peek(loanBrokerKeylet); + if (!sleBroker) + return false; + // Set DomainID without lsfLoanBrokerPrivate flag + sleBroker->clearFlag(lsfLoanBrokerPrivate); + sleBroker->at(sfDomainID) = uint256(42); + ac.view().update(sleBroker); + return true; + }, + XRPAmount{}, + STTx{ttLOAN_BROKER_SET, [](STObject& tx) {}}, + {tecINVARIANT_FAILED, tefINVARIANT_FAILED}, + createLoanBroker); } }