Skip to content

Commit 6c6f8cd

Browse files
committed
Merge remote-tracking branch 'upstream/develop' into develop3
2 parents fb1311e + 0510574 commit 6c6f8cd

File tree

17 files changed

+499
-160
lines changed

17 files changed

+499
-160
lines changed

src/test/app/Vault_test.cpp

Lines changed: 82 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2273,6 +2273,8 @@ class Vault_test : public beast::unit_test::suite
22732273
env(pay(issuer, owner, asset(500)));
22742274
env.trust(asset(1000), depositor);
22752275
env(pay(issuer, depositor, asset(500)));
2276+
env.trust(asset(1000), charlie);
2277+
env(pay(issuer, charlie, asset(5)));
22762278
env.close();
22772279

22782280
auto [tx, keylet] = vault.create(
@@ -2362,7 +2364,7 @@ class Vault_test : public beast::unit_test::suite
23622364
env(credentials::create(depositor, credIssuer1, credType));
23632365
env(credentials::accept(depositor, credIssuer1, credType));
23642366
env(credentials::create(charlie, credIssuer1, credType));
2365-
env(credentials::accept(charlie, credIssuer1, credType));
2367+
// charlie's credential not accepted
23662368
env.close();
23672369
auto credSle = env.le(credKeylet);
23682370
BEAST_EXPECT(credSle != nullptr);
@@ -2376,14 +2378,16 @@ class Vault_test : public beast::unit_test::suite
23762378

23772379
tx = vault.deposit(
23782380
{.depositor = charlie, .id = keylet.key, .amount = asset(50)});
2379-
env(tx, ter{tecINSUFFICIENT_FUNDS});
2381+
env(tx, ter{tecNO_AUTH});
23802382
env.close();
23812383
}
23822384

23832385
{
23842386
testcase("private vault depositor lost authorization");
23852387
env(credentials::deleteCred(
23862388
credIssuer1, depositor, credIssuer1, credType));
2389+
env(credentials::deleteCred(
2390+
credIssuer1, charlie, credIssuer1, credType));
23872391
env.close();
23882392
auto credSle = env.le(credKeylet);
23892393
BEAST_EXPECT(credSle == nullptr);
@@ -2396,18 +2400,84 @@ class Vault_test : public beast::unit_test::suite
23962400
env.close();
23972401
}
23982402

2403+
auto const shares = [&env, keylet = keylet, this]() -> Asset {
2404+
auto const vault = env.le(keylet);
2405+
BEAST_EXPECT(vault != nullptr);
2406+
return MPTIssue(vault->at(sfShareMPTID));
2407+
}();
2408+
23992409
{
2400-
testcase("private vault depositor new authorization");
2401-
env(credentials::create(depositor, credIssuer2, credType));
2402-
env(credentials::accept(depositor, credIssuer2, credType));
2403-
env.close();
2410+
testcase("private vault expired authorization");
2411+
uint32_t const closeTime = env.current()
2412+
->info()
2413+
.parentCloseTime.time_since_epoch()
2414+
.count();
2415+
{
2416+
auto tx0 =
2417+
credentials::create(depositor, credIssuer2, credType);
2418+
tx0[sfExpiration] = closeTime + 20;
2419+
env(tx0);
2420+
tx0 = credentials::create(charlie, credIssuer2, credType);
2421+
tx0[sfExpiration] = closeTime + 20;
2422+
env(tx0);
2423+
env.close();
24042424

2405-
auto tx = vault.deposit(
2406-
{.depositor = depositor,
2407-
.id = keylet.key,
2408-
.amount = asset(50)});
2409-
env(tx);
2410-
env.close();
2425+
env(credentials::accept(depositor, credIssuer2, credType));
2426+
env(credentials::accept(charlie, credIssuer2, credType));
2427+
env.close();
2428+
}
2429+
2430+
{
2431+
auto tx1 = vault.deposit(
2432+
{.depositor = depositor,
2433+
.id = keylet.key,
2434+
.amount = asset(50)});
2435+
env(tx1);
2436+
env.close();
2437+
2438+
auto const tokenKeylet = keylet::mptoken(
2439+
shares.get<MPTIssue>().getMptID(), depositor.id());
2440+
BEAST_EXPECT(env.le(tokenKeylet) != nullptr);
2441+
}
2442+
2443+
{
2444+
// time advance
2445+
env.close();
2446+
env.close();
2447+
env.close();
2448+
2449+
auto const credsKeylet =
2450+
credentials::keylet(depositor, credIssuer2, credType);
2451+
BEAST_EXPECT(env.le(credsKeylet) != nullptr);
2452+
2453+
auto tx2 = vault.deposit(
2454+
{.depositor = depositor,
2455+
.id = keylet.key,
2456+
.amount = asset(1)});
2457+
env(tx2, ter{tecEXPIRED});
2458+
env.close();
2459+
2460+
BEAST_EXPECT(env.le(credsKeylet) == nullptr);
2461+
}
2462+
2463+
{
2464+
auto const credsKeylet =
2465+
credentials::keylet(charlie, credIssuer2, credType);
2466+
BEAST_EXPECT(env.le(credsKeylet) != nullptr);
2467+
auto const tokenKeylet = keylet::mptoken(
2468+
shares.get<MPTIssue>().getMptID(), charlie.id());
2469+
BEAST_EXPECT(env.le(tokenKeylet) == nullptr);
2470+
2471+
auto tx3 = vault.deposit(
2472+
{.depositor = charlie,
2473+
.id = keylet.key,
2474+
.amount = asset(2)});
2475+
env(tx3, ter{tecEXPIRED});
2476+
2477+
env.close();
2478+
BEAST_EXPECT(env.le(credsKeylet) == nullptr);
2479+
BEAST_EXPECT(env.le(tokenKeylet) == nullptr);
2480+
}
24112481
}
24122482

24132483
{

src/test/jtx/Env.h

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -589,13 +589,16 @@ class Env
589589
}
590590

591591
/** Return metadata for the last JTx.
592-
593-
Effects:
594-
595-
The open ledger is closed as if by a call
596-
to close(). The metadata for the last
597-
transaction ID, if any, is returned.
598-
*/
592+
*
593+
* NOTE: this has a side effect of closing the open ledger.
594+
* The ledger will only be closed if it includes transactions.
595+
*
596+
* Effects:
597+
*
598+
* The open ledger is closed as if by a call
599+
* to close(). The metadata for the last
600+
* transaction ID, if any, is returned.
601+
*/
599602
std::shared_ptr<STObject const>
600603
meta();
601604

src/test/jtx/impl/Env.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -446,7 +446,12 @@ Env::postconditions(
446446
std::shared_ptr<STObject const>
447447
Env::meta()
448448
{
449-
close();
449+
if (current()->txCount() != 0)
450+
{
451+
// close the ledger if it has not already been closed
452+
// (metadata is not finalized until the ledger is closed)
453+
close();
454+
}
450455
auto const item = closed()->txRead(txid_);
451456
return item.second;
452457
}

src/test/overlay/compression_test.cpp

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -473,17 +473,14 @@ class compression_test : public beast::unit_test::suite
473473
Config c;
474474
std::stringstream str;
475475
str << "[reduce_relay]\n"
476-
<< "vp_enable=1\n"
477-
<< "vp_squelch=1\n"
476+
<< "vp_base_squelch_enable=1\n"
478477
<< "[compression]\n"
479478
<< enable << "\n";
480479
c.loadFromString(str.str());
481480
auto env = std::make_shared<jtx::Env>(*this);
482481
env->app().config().COMPRESSION = c.COMPRESSION;
483-
env->app().config().VP_REDUCE_RELAY_ENABLE =
484-
c.VP_REDUCE_RELAY_ENABLE;
485-
env->app().config().VP_REDUCE_RELAY_SQUELCH =
486-
c.VP_REDUCE_RELAY_SQUELCH;
482+
env->app().config().VP_REDUCE_RELAY_BASE_SQUELCH_ENABLE =
483+
c.VP_REDUCE_RELAY_BASE_SQUELCH_ENABLE;
487484
return env;
488485
};
489486
auto handshake = [&](int outboundEnable, int inboundEnable) {
@@ -496,7 +493,7 @@ class compression_test : public beast::unit_test::suite
496493
env->app().config().COMPRESSION,
497494
false,
498495
env->app().config().TX_REDUCE_RELAY_ENABLE,
499-
env->app().config().VP_REDUCE_RELAY_ENABLE);
496+
env->app().config().VP_REDUCE_RELAY_BASE_SQUELCH_ENABLE);
500497
http_request_type http_request;
501498
http_request.version(request.version());
502499
http_request.base() = request.base();

0 commit comments

Comments
 (0)