@@ -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 {
0 commit comments