@@ -138,16 +138,19 @@ fn list_keys() {
138
138
139
139
assert ! ( keys. is_empty( ) ) ;
140
140
141
- let key1 = String :: from ( "list_keys1" ) ;
142
- let key2 = String :: from ( "list_keys2" ) ;
143
- let key3 = String :: from ( "list_keys3" ) ;
144
-
145
- client. set_provider ( ProviderID :: MbedCrypto ) ;
146
- client. generate_rsa_sign_key ( key1. clone ( ) ) . unwrap ( ) ;
147
- client. set_provider ( ProviderID :: Pkcs11 ) ;
148
- client. generate_rsa_sign_key ( key2. clone ( ) ) . unwrap ( ) ;
149
- client. set_provider ( ProviderID :: Tpm ) ;
150
- client. generate_rsa_sign_key ( key3. clone ( ) ) . unwrap ( ) ;
141
+ let providers = client. list_providers ( ) . expect ( "Failed to list providers" ) ;
142
+ let mut suitable_providers = vec ! [ ] ;
143
+
144
+ for provider in providers. iter ( ) {
145
+ client. set_provider ( provider. id ) ;
146
+ if !client. is_operation_supported ( Opcode :: PsaGenerateKey ) {
147
+ continue ;
148
+ }
149
+ suitable_providers. push ( provider. clone ( ) ) ;
150
+ client
151
+ . generate_rsa_sign_key ( format ! ( "list_keys_{}" , provider. id) )
152
+ . unwrap ( ) ;
153
+ }
151
154
152
155
let key_names: Vec < ( String , ProviderID ) > = client
153
156
. list_keys ( )
@@ -156,10 +159,11 @@ fn list_keys() {
156
159
. map ( |k| ( k. name , k. provider_id ) )
157
160
. collect ( ) ;
158
161
159
- assert_eq ! ( key_names. len( ) , 3 ) ;
160
- assert ! ( key_names. contains( & ( key1. clone( ) , ProviderID :: MbedCrypto ) ) ) ;
161
- assert ! ( key_names. contains( & ( key2. clone( ) , ProviderID :: Pkcs11 ) ) ) ;
162
- assert ! ( key_names. contains( & ( key3. clone( ) , ProviderID :: Tpm ) ) ) ;
162
+ assert_eq ! ( key_names. len( ) , suitable_providers. len( ) ) ;
163
+
164
+ for provider in suitable_providers. iter ( ) {
165
+ assert ! ( key_names. contains( & ( format!( "list_keys_{}" , provider. id) , provider. id) ) ) ;
166
+ }
163
167
}
164
168
165
169
#[ test]
@@ -197,27 +201,46 @@ fn invalid_provider_list_clients() {
197
201
fn list_and_delete_clients ( ) {
198
202
let mut client = TestClient :: new ( ) ;
199
203
client. do_not_destroy_keys ( ) ;
200
- client. set_default_auth ( Some ( "list_clients test" . to_string ( ) ) ) ;
204
+
205
+ let all_providers_user = "list_clients test" . to_string ( ) ;
206
+ client. set_default_auth ( Some ( all_providers_user. clone ( ) ) ) ;
201
207
202
208
let clients = client. list_clients ( ) . expect ( "list_clients failed" ) ;
203
- assert ! ( !clients. contains( & "list_clients test" . to_string( ) ) ) ;
209
+ assert ! ( !clients. contains( & all_providers_user) ) ;
210
+
211
+ let providers = client. list_providers ( ) . expect ( "Failed to list providers" ) ;
212
+ let mut suitable_providers = vec ! [ ] ;
204
213
205
- let key1 = String :: from ( "list_clients1" ) ;
206
- let key2 = String :: from ( "list_keys2" ) ;
207
- let key3 = String :: from ( "list_keys3" ) ;
214
+ for provider in providers. iter ( ) {
215
+ client. set_provider ( provider. id ) ;
216
+ if !client. is_operation_supported ( Opcode :: PsaGenerateKey ) {
217
+ continue ;
218
+ }
219
+ suitable_providers. push ( provider. clone ( ) ) ;
208
220
209
- client. set_provider ( ProviderID :: MbedCrypto ) ;
210
- client. generate_rsa_sign_key ( key1. clone ( ) ) . unwrap ( ) ;
211
- client. set_provider ( ProviderID :: Pkcs11 ) ;
212
- client. generate_rsa_sign_key ( key2. clone ( ) ) . unwrap ( ) ;
213
- client. set_provider ( ProviderID :: Tpm ) ;
214
- client. generate_rsa_sign_key ( key3. clone ( ) ) . unwrap ( ) ;
221
+ client. set_default_auth ( Some ( all_providers_user. clone ( ) ) ) ;
222
+ client
223
+ . generate_rsa_sign_key ( "all-providers-user-key" . to_string ( ) )
224
+ . unwrap ( ) ;
225
+
226
+ client. set_default_auth ( Some ( format ! ( "user_{}" , provider. id) ) ) ;
227
+ client
228
+ . generate_rsa_sign_key ( format ! ( "user_{}-key" , provider. id) )
229
+ . unwrap ( ) ;
230
+ }
231
+
232
+ client. set_default_auth ( Some ( all_providers_user. clone ( ) ) ) ;
215
233
216
234
let clients = client. list_clients ( ) . expect ( "list_clients failed" ) ;
217
- assert ! ( clients. contains( & "list_clients test" . to_string( ) ) ) ;
218
- client
219
- . delete_client ( "list_clients test" . to_string ( ) )
220
- . unwrap ( ) ;
235
+
236
+ assert ! ( clients. contains( & all_providers_user) ) ;
237
+ client. delete_client ( all_providers_user) . unwrap ( ) ;
238
+
239
+ for provider in suitable_providers. iter ( ) {
240
+ let username = format ! ( "user_{}" , provider. id) ;
241
+ assert ! ( clients. contains( & username) ) ;
242
+ client. delete_client ( username) . unwrap ( ) ;
243
+ }
221
244
222
245
let keys = client. list_keys ( ) . expect ( "list_keys failed" ) ;
223
246
0 commit comments