File tree 2 files changed +28
-2
lines changed
src/cargo/util/credential
2 files changed +28
-2
lines changed Original file line number Diff line number Diff line change @@ -200,8 +200,17 @@ impl<'a> Credential for PasetoCredential<'a> {
200
200
Ok ( CredentialResponse :: Login )
201
201
}
202
202
Action :: Logout => {
203
- config:: save_credentials ( self . config , None , & sid) ?;
204
- Ok ( CredentialResponse :: Logout )
203
+ if reg_cfg. and_then ( |c| c. secret_key ) . is_some ( ) {
204
+ config:: save_credentials ( self . config , None , & sid) ?;
205
+ let reg_name = sid. display_registry_name ( ) ;
206
+ let _ = self . config . shell ( ) . status (
207
+ "Logout" ,
208
+ format ! ( "secret-key for `{reg_name}` has been removed from local storage" ) ,
209
+ ) ;
210
+ Ok ( CredentialResponse :: Logout )
211
+ } else {
212
+ Err ( Error :: NotFound )
213
+ }
205
214
}
206
215
_ => Err ( Error :: OperationNotSupported ) ,
207
216
}
Original file line number Diff line number Diff line change @@ -102,3 +102,20 @@ fn default_registry_configured() {
102
102
. with_stderr ( "[LOGOUT] not currently logged in to `dummy-registry`" )
103
103
. run ( ) ;
104
104
}
105
+
106
+ #[ cargo_test]
107
+ fn logout_asymmetric ( ) {
108
+ let _registry = registry:: RegistryBuilder :: new ( )
109
+ . token ( cargo_test_support:: registry:: Token :: rfc_key ( ) )
110
+ . build ( ) ;
111
+
112
+ cargo_process ( "logout --registry crates-io -Zasymmetric-token" )
113
+ . masquerade_as_nightly_cargo ( & [ "asymmetric-token" ] )
114
+ . with_stderr ( "[LOGOUT] secret-key for `crates-io` has been removed from local storage" )
115
+ . run ( ) ;
116
+
117
+ cargo_process ( "logout --registry crates-io -Zasymmetric-token" )
118
+ . masquerade_as_nightly_cargo ( & [ "asymmetric-token" ] )
119
+ . with_stderr ( "[LOGOUT] not currently logged in to `crates-io`" )
120
+ . run ( ) ;
121
+ }
You can’t perform that action at this time.
0 commit comments