@@ -46,6 +46,9 @@ pub struct Disconnect {
4646 /// traffic may still route over DoubleZero briefly after this returns.
4747 #[ arg( long, default_value_t = false ) ]
4848 pub no_wait : bool ,
49+ /// Access pass for a legacy user that matches multiple passes
50+ #[ arg( long) ]
51+ pub access_pass : Option < Pubkey > ,
4952 #[ arg( value_enum) ]
5053 pub dz_mode : Option < DzMode > ,
5154}
@@ -167,7 +170,7 @@ impl Disconnect {
167170
168171 spinner. inc ( 1 ) ;
169172 writeln ! ( out, "⚡ Removing account: {pubkey}" ) ?;
170- match ledger. delete_user ( * pubkey) {
173+ match ledger. delete_user ( * pubkey, self . access_pass ) {
171174 Ok ( _) => {
172175 writeln ! ( out, " Account deletion submitted" ) ?;
173176 }
@@ -289,6 +292,7 @@ mod tests {
289292 client_ip : None ,
290293 verbose : false ,
291294 no_wait : false ,
295+ access_pass : None ,
292296 dz_mode : None ,
293297 }
294298 }
@@ -486,6 +490,7 @@ mod tests {
486490 let mut ledger = MockLedgerClient :: new ( ) ;
487491 let payer = Pubkey :: new_unique ( ) ;
488492 let feed_authority = Pubkey :: new_unique ( ) ;
493+ let accesspass_pk = Pubkey :: new_unique ( ) ;
489494 let ip = Ipv4Addr :: new ( 10 , 0 , 0 , 1 ) ;
490495
491496 let user_pk = Pubkey :: new_unique ( ) ;
@@ -501,14 +506,21 @@ mod tests {
501506 // delete_user SHOULD be called for self-owned user.
502507 ledger
503508 . expect_delete_user ( )
509+ . with (
510+ mockall:: predicate:: eq ( user_pk) ,
511+ mockall:: predicate:: eq ( Some ( accesspass_pk) ) ,
512+ )
504513 . once ( )
505- . returning ( |_| Err ( eyre:: eyre!( "simulated not found" ) ) ) ;
514+ . returning ( |_, _ | Err ( eyre:: eyre!( "simulated not found" ) ) ) ;
506515 // get_user for poll_for_user_closed — return "not found" immediately.
507516 ledger
508517 . expect_get_user ( )
509518 . returning ( |_| Err ( eyre:: eyre!( "User not found" ) ) ) ;
510519
511- let cmd = test_cmd ( ) ;
520+ let cmd = Disconnect {
521+ access_pass : Some ( accesspass_pk) ,
522+ ..test_cmd ( )
523+ } ;
512524 let spinner = hidden_spinner ( ) ;
513525 let mut out = Vec :: new ( ) ;
514526 let result = cmd. delete_users ( & ledger, ip, feed_authority, & spinner, & mut out) ;
@@ -577,7 +589,7 @@ mod tests {
577589 ledger
578590 . expect_delete_user ( )
579591 . once ( )
580- . returning ( |_| Err ( eyre:: eyre!( "simulated not found" ) ) ) ;
592+ . returning ( |_, _ | Err ( eyre:: eyre!( "simulated not found" ) ) ) ;
581593 ledger
582594 . expect_get_user ( )
583595 . returning ( |_| Err ( eyre:: eyre!( "User not found" ) ) ) ;
@@ -634,7 +646,7 @@ mod tests {
634646 ledger
635647 . expect_list_user ( )
636648 . returning ( move || Ok ( users. clone ( ) ) ) ;
637- ledger. expect_delete_user ( ) . once ( ) . returning ( |_| Ok ( ( ) ) ) ;
649+ ledger. expect_delete_user ( ) . once ( ) . returning ( |_, _ | Ok ( ( ) ) ) ;
638650 ledger
639651 . expect_get_user ( )
640652 . returning ( |_| Err ( eyre:: eyre!( "User not found" ) ) ) ;
0 commit comments