5
5
from rest_framework .test import APIClient
6
6
7
7
from aap_eda .core import enums , models
8
+ from tests .integration .conftest import DUMMY_GPG_KEY
8
9
from tests .integration .constants import api_url_v1
9
10
10
11
DATA_DIR = Path (__file__ ).parent .parent .parent / "unit/data"
36
37
}
37
38
38
39
40
+ @pytest .mark .parametrize (
41
+ "inputs" , [{}, {"username" : "adam" , "password" : "secret" }]
42
+ )
39
43
@pytest .mark .django_db
40
44
def test_create_eda_credential (
41
45
client : APIClient ,
42
46
credential_type : models .CredentialType ,
47
+ inputs ,
43
48
):
44
49
data_in = {
45
50
"name" : "eda-credential" ,
46
- "inputs" : { "username" : "adam" , "password" : "secret" } ,
51
+ "inputs" : inputs ,
47
52
"credential_type_id" : credential_type .id ,
48
53
}
49
54
response = client .post (f"{ api_url_v1 } /eda-credentials/" , data = data_in )
@@ -111,24 +116,6 @@ def test_create_eda_credential_with_type(
111
116
}
112
117
113
118
114
- @pytest .mark .django_db
115
- def test_create_eda_credential_with_empty_required_field (
116
- client : APIClient , preseed_credential_types
117
- ):
118
- credential_type = models .CredentialType .objects .get (
119
- name = enums .DefaultCredentialType .REGISTRY
120
- )
121
-
122
- data_in = {
123
- "name" : "eda-credential" ,
124
- "inputs" : {"host" : "" },
125
- "credential_type_id" : credential_type .id ,
126
- }
127
- response = client .post (f"{ api_url_v1 } /eda-credentials/" , data = data_in )
128
- assert response .status_code == status .HTTP_400_BAD_REQUEST
129
- assert "Cannot be blank" in response .data ["inputs.host" ]
130
-
131
-
132
119
@pytest .mark .parametrize (
133
120
("credential_type" , "status_code" , "key" , "error_message" ),
134
121
[
@@ -349,7 +336,7 @@ def test_delete_managed_eda_credential(client: APIClient):
349
336
350
337
351
338
@pytest .mark .django_db
352
- def test_partial_update_eda_credential (
339
+ def test_partial_update_eda_credential_without_inputs (
353
340
client : APIClient , credential_type : models .CredentialType
354
341
):
355
342
obj = models .EdaCredential .objects .create (
@@ -371,8 +358,72 @@ def test_partial_update_eda_credential(
371
358
}
372
359
373
360
361
+ @pytest .mark .parametrize (
362
+ ("credential_type" , "inputs" ),
363
+ [
364
+ (enums .DefaultCredentialType .VAULT , {}),
365
+ (
366
+ enums .DefaultCredentialType .VAULT ,
367
+ {"vault_password" : "new_password" },
368
+ ),
369
+ (enums .DefaultCredentialType .AAP , {}),
370
+ (
371
+ enums .DefaultCredentialType .AAP ,
372
+ {"host" : "new_host" , "username" : "new user" },
373
+ ),
374
+ (enums .DefaultCredentialType .GPG , {}),
375
+ (enums .DefaultCredentialType .GPG , {"gpg_public_key" : DUMMY_GPG_KEY }),
376
+ (enums .DefaultCredentialType .REGISTRY , {}),
377
+ (
378
+ enums .DefaultCredentialType .REGISTRY ,
379
+ {"host" : "new_host" , "username" : "new user" , "verify_ssl" : True },
380
+ ),
381
+ (enums .DefaultCredentialType .SOURCE_CONTROL , {}),
382
+ (
383
+ enums .DefaultCredentialType .SOURCE_CONTROL ,
384
+ {"username" : "new user" , "password" : "new password" },
385
+ ),
386
+ ],
387
+ )
388
+ @pytest .mark .django_db
389
+ def test_partial_update_eda_credentials (
390
+ client : APIClient ,
391
+ preseed_credential_types ,
392
+ credential_type ,
393
+ inputs ,
394
+ ):
395
+ old_inputs = {"keep" : "data" }
396
+ credential_type = models .CredentialType .objects .get (name = credential_type )
397
+ obj = models .EdaCredential .objects .create (
398
+ name = "eda-credential" ,
399
+ inputs = old_inputs ,
400
+ credential_type_id = credential_type .id ,
401
+ )
402
+ new_name = "new-eda-credential"
403
+ new_description = "new-eda-credential description"
404
+ # update name, description with empty inputs
405
+ data = {"name" : new_name , "description" : new_description , "inputs" : inputs }
406
+ response = client .patch (
407
+ f"{ api_url_v1 } /eda-credentials/{ obj .id } /" , data = data
408
+ )
409
+ assert response .status_code == status .HTTP_200_OK
410
+ result = response .data
411
+ assert result ["name" ] == new_name
412
+ assert result ["description" ] == new_description
413
+
414
+ data = {"inputs" : inputs }
415
+ # update inputs
416
+ response = client .patch (
417
+ f"{ api_url_v1 } /eda-credentials/{ obj .id } /" , data = data
418
+ )
419
+ result = response .data
420
+ assert result ["inputs" ]["keep" ] == old_inputs ["keep" ]
421
+ for key in inputs .keys ():
422
+ assert result ["inputs" ][key ] is not None
423
+
424
+
374
425
@pytest .mark .django_db
375
- def test_partial_update_eda_credential_name (
426
+ def test_partial_update_eda_credential_with_encrypted_output (
376
427
client : APIClient , credential_type : models .CredentialType
377
428
):
378
429
obj = models .EdaCredential .objects .create (
0 commit comments