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