@@ -56,6 +56,9 @@ func TestAddPolicyAndRoleAssetsAllowsDuplicateVersions(t *testing.T) {
5656 UniqueRoleDefinitions : defaultUniqueRoleDefinitions ,
5757 })
5858
59+ // We prime the alzlib with an existing policy and policy set definition
60+ // that has the same name and version as those being added in the processor result.
61+ // This tests that **IDENTICAL** duplicate versions are allowed regardless of the AllowOverwrite setting.
5962 existingPolicyDefs := assets .NewPolicyDefinitionVersions ()
6063 require .NoError (t , existingPolicyDefs .Add (testPolicyDefinition (t , "dup-policy" , "1.0.0" ), false ))
6164 az .policyDefinitions ["dup-policy" ] = existingPolicyDefs
@@ -65,15 +68,31 @@ func TestAddPolicyAndRoleAssetsAllowsDuplicateVersions(t *testing.T) {
6568 az .policySetDefinitions ["dup-policy-set" ] = existingPolicySetDefs
6669
6770 res := processor .NewResult ()
68- dupPolicyDefs := assets .NewPolicyDefinitionVersions ()
69- require .NoError (t , dupPolicyDefs .Add (testPolicyDefinition (t , "dup-policy" , "1.0.0" ), false ))
70- res .PolicyDefinitions ["dup-policy" ] = dupPolicyDefs
71+ dupPolicyDefsIdenical := assets .NewPolicyDefinitionVersions ()
72+ require .NoError (t , dupPolicyDefsIdenical .Add (testPolicyDefinition (t , "dup-policy" , "1.0.0" ), false ))
73+ res .PolicyDefinitions ["dup-policy" ] = dupPolicyDefsIdenical
7174
72- dupPolicySetDefs := assets .NewPolicySetDefinitionVersions ()
73- require .NoError (t , dupPolicySetDefs .Add (testPolicySetDefinition (t , "dup-policy-set" , "1.0.0" ), false ))
74- res .PolicySetDefinitions ["dup-policy-set" ] = dupPolicySetDefs
75+ dupPolicySetDefsIdentical := assets .NewPolicySetDefinitionVersions ()
76+ require .NoError (t , dupPolicySetDefsIdentical .Add (testPolicySetDefinition (t , "dup-policy-set" , "1.0.0" ), false ))
77+ res .PolicySetDefinitions ["dup-policy-set" ] = dupPolicySetDefsIdentical
7578
7679 require .NoError (t , az .addPolicyAndRoleAssets (res ))
80+
81+ // Now we attempt to add duplicate versions that are different.
82+ dupPolicyDefsDifferent := assets .NewPolicyDefinitionVersions ()
83+ testPd := testPolicyDefinition (t , "dup-policy" , "1.0.0" )
84+ testPd .Properties .Description = to .Ptr ("A different description to make this policy definition different" )
85+ require .NoError (t , dupPolicyDefsDifferent .Add (testPd , false ))
86+
87+ res = processor .NewResult ()
88+ res .PolicyDefinitions ["dup-policy" ] = dupPolicyDefsDifferent
89+
90+ switch tc .allowOverwrite {
91+ case true :
92+ require .NoError (t , az .addPolicyAndRoleAssets (res ))
93+ case false :
94+ require .Error (t , az .addPolicyAndRoleAssets (res ))
95+ }
7796 })
7897 }
7998}
0 commit comments