18
18
19
19
import pytest
20
20
21
+ from enum import Enum
21
22
from acktest .k8s import condition
22
23
from acktest .k8s import resource as k8s
23
24
from acktest .resources import random_suffix_name
25
+ from acktest .adoption import ADOPT_ADOPTION_POLICY , ADOPT_OR_CREATE_ADOPTION_POLICY
24
26
from e2e import service_marker , CRD_GROUP , CRD_VERSION , load_resource
25
27
from e2e .bootstrap_resources import get_bootstrap_resources
26
28
from e2e .common .types import POLICY_RESOURCE_PLURAL
35
37
MODIFY_WAIT_AFTER_SECONDS = 20
36
38
CREATE_WAIT_AFTER_SECONDS = 10
37
39
38
-
39
40
@pytest .fixture (scope = "module" )
40
41
def simple_policy ():
41
42
policy_name = random_suffix_name ("my-simple-policy" , 24 )
@@ -79,17 +80,30 @@ def simple_policy():
79
80
80
81
policy .wait_until_deleted (policy_arn )
81
82
82
- @pytest .fixture ( scope = "module" )
83
- def adopt_policy ():
84
- resource_arn = get_bootstrap_resources (). AdoptedPolicy . arns [ 0 ]
85
- resource_name = random_suffix_name ( "adopted-policy" , 24 )
83
+ @pytest .fixture
84
+ def adopt_policy (request ):
85
+ filename = ""
86
+ resource_name = ""
86
87
replacements = REPLACEMENT_VALUES .copy ()
88
+
89
+ marker = request .node .get_closest_marker ("resource_data" )
90
+ assert marker is not None
91
+ data = marker .args [0 ]
92
+ assert 'adoption-policy' in data
93
+ replacements ["ADOPTION_POLICY" ] = data ['adoption-policy' ]
94
+ assert 'filename' in data
95
+ filename = data ['filename' ]
96
+ assert 'resource_name' in data
97
+ resource_name = data ['resource_name' ]
98
+
99
+ resource_name = random_suffix_name (resource_name , 24 )
100
+ resource_arn = get_bootstrap_resources ().AdoptedPolicy .arns [0 ]
87
101
replacements ["POLICY_ADOPTION_NAME" ] = resource_name
88
- replacements ["ADOPTION_POLICY" ] = "adopt"
89
102
replacements ["ADOPTION_FIELDS" ] = f"{{\\ \" arn\\ \" : \\ \" { resource_arn } \\ \" }}"
103
+ replacements ["POLICY_ADOPTION_NAME" ] = resource_name
90
104
91
105
resource_data = load_resource (
92
- "policy_adoption" ,
106
+ filename ,
93
107
additional_replacements = replacements ,
94
108
)
95
109
@@ -227,10 +241,11 @@ def test_crud(self, simple_policy):
227
241
after_doc = after_pv ["Document" ]
228
242
assert after_doc == new_policy_doc
229
243
244
+ @pytest .mark .resource_data ({'adoption-policy' : ADOPT_ADOPTION_POLICY , 'filename' : 'policy_adopt' , 'resource_name' : 'adopt' })
230
245
def test_policy_adopt_update (self , adopt_policy ):
231
246
ref , cr , policy_arn = adopt_policy
232
247
233
- condition . assert_synced (ref )
248
+ k8s . wait_on_condition (ref , "ACK.ResourceSynced" , "True" , wait_periods = 5 )
234
249
235
250
assert cr is not None
236
251
assert 'status' in cr
@@ -262,3 +277,17 @@ def test_policy_adopt_update(self, adopt_policy):
262
277
263
278
policy_doc = policy .get_version (policy_arn , "v2" )["Document" ]
264
279
assert policy_doc == new_policy_doc
280
+
281
+ @pytest .mark .resource_data ({'adoption-policy' : ADOPT_OR_CREATE_ADOPTION_POLICY , 'filename' : 'policy_adopt_or_create' , 'resource_name' : 'adopt-or-create' })
282
+ def test_policy_adopt_or_create (self , adopt_policy ):
283
+ ref , cr , policy_arn = adopt_policy
284
+
285
+ k8s .wait_on_condition (ref , "ACK.ResourceSynced" , "True" , wait_periods = 5 )
286
+
287
+ assert cr is not None
288
+ assert 'status' in cr
289
+ assert 'defaultVersionID' in cr ['status' ]
290
+ assert cr ['status' ]['defaultVersionID' ] == 'v1'
291
+ assert 'ackResourceMetadata' in cr ['status' ]
292
+ assert 'arn' in cr ['status' ]['ackResourceMetadata' ]
293
+ assert cr ['status' ]['ackResourceMetadata' ]['arn' ] == policy_arn
0 commit comments