1818
1919import pytest
2020
21+ from enum import Enum
2122from acktest .k8s import condition
2223from acktest .k8s import resource as k8s
2324from acktest .resources import random_suffix_name
25+ from acktest .adoption import ADOPT_ADOPTION_POLICY , ADOPT_OR_CREATE_ADOPTION_POLICY
2426from e2e import service_marker , CRD_GROUP , CRD_VERSION , load_resource
2527from e2e .bootstrap_resources import get_bootstrap_resources
2628from e2e .common .types import POLICY_RESOURCE_PLURAL
3537MODIFY_WAIT_AFTER_SECONDS = 20
3638CREATE_WAIT_AFTER_SECONDS = 10
3739
38-
3940@pytest .fixture (scope = "module" )
4041def simple_policy ():
4142 policy_name = random_suffix_name ("my-simple-policy" , 24 )
@@ -79,17 +80,30 @@ def simple_policy():
7980
8081 policy .wait_until_deleted (policy_arn )
8182
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 = ""
8687 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 ]
87101 replacements ["POLICY_ADOPTION_NAME" ] = resource_name
88- replacements ["ADOPTION_POLICY" ] = "adopt"
89102 replacements ["ADOPTION_FIELDS" ] = f"{{\\ \" arn\\ \" : \\ \" { resource_arn } \\ \" }}"
103+ replacements ["POLICY_ADOPTION_NAME" ] = resource_name
90104
91105 resource_data = load_resource (
92- "policy_adoption" ,
106+ filename ,
93107 additional_replacements = replacements ,
94108 )
95109
@@ -227,10 +241,11 @@ def test_crud(self, simple_policy):
227241 after_doc = after_pv ["Document" ]
228242 assert after_doc == new_policy_doc
229243
244+ @pytest .mark .resource_data ({'adoption-policy' : ADOPT_ADOPTION_POLICY , 'filename' : 'policy_adopt' , 'resource_name' : 'adopt' })
230245 def test_policy_adopt_update (self , adopt_policy ):
231246 ref , cr , policy_arn = adopt_policy
232247
233- condition . assert_synced (ref )
248+ k8s . wait_on_condition (ref , "ACK.ResourceSynced" , "True" , wait_periods = 5 )
234249
235250 assert cr is not None
236251 assert 'status' in cr
@@ -262,3 +277,17 @@ def test_policy_adopt_update(self, adopt_policy):
262277
263278 policy_doc = policy .get_version (policy_arn , "v2" )["Document" ]
264279 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