@@ -1105,6 +1105,165 @@ spec:
11051105 assertEqual (t , output , expected )
11061106}
11071107
1108+ func TestCreatePolicyWithLabels (t * testing.T ) {
1109+ t .Parallel ()
1110+ tmpDir := t .TempDir ()
1111+ createConfigMap (t , tmpDir , "configmap.yaml" )
1112+
1113+ p := Plugin {}
1114+ p .PolicyDefaults .Namespace = "my-policies"
1115+ p .PolicyDefaults .PolicyLabels = map [string ]string {"test-default-label" : "default" }
1116+
1117+ policyConf := types.PolicyConfig {
1118+ Name : "policy-app-config" ,
1119+ Manifests : []types.Manifest {
1120+ {Path : path .Join (tmpDir , "configmap.yaml" )},
1121+ },
1122+ }
1123+ p .Policies = append (p .Policies , policyConf )
1124+ p .applyDefaults (map [string ]interface {}{})
1125+
1126+ err := p .createPolicy (& p .Policies [0 ])
1127+ if err != nil {
1128+ t .Fatal (err .Error ())
1129+ }
1130+
1131+ output := p .outputBuffer .String ()
1132+ expected := `
1133+ ---
1134+ apiVersion: policy.open-cluster-management.io/v1
1135+ kind: Policy
1136+ metadata:
1137+ annotations:
1138+ policy.open-cluster-management.io/categories: CM Configuration Management
1139+ policy.open-cluster-management.io/controls: CM-2 Baseline Configuration
1140+ policy.open-cluster-management.io/standards: NIST SP 800-53
1141+ labels:
1142+ test-default-label: default
1143+ name: policy-app-config
1144+ namespace: my-policies
1145+ spec:
1146+ disabled: false
1147+ policy-templates:
1148+ - objectDefinition:
1149+ apiVersion: policy.open-cluster-management.io/v1
1150+ kind: ConfigurationPolicy
1151+ metadata:
1152+ name: policy-app-config
1153+ spec:
1154+ object-templates:
1155+ - complianceType: musthave
1156+ objectDefinition:
1157+ apiVersion: v1
1158+ data:
1159+ game.properties: enemies=potato
1160+ kind: ConfigMap
1161+ metadata:
1162+ name: my-configmap
1163+ remediationAction: inform
1164+ severity: low
1165+ remediationAction: inform
1166+ `
1167+ expected = strings .TrimPrefix (expected , "\n " )
1168+ assertEqual (t , output , expected )
1169+
1170+ // Check for override default policy with empty map to skip default annotations from the policy
1171+ p .outputBuffer .Reset ()
1172+ p .Policies [0 ].PolicyLabels = map [string ]string {}
1173+ p .applyDefaults (map [string ]interface {}{})
1174+
1175+ err = p .createPolicy (& p .Policies [0 ])
1176+ if err != nil {
1177+ t .Fatal (err .Error ())
1178+ }
1179+
1180+ output = p .outputBuffer .String ()
1181+ expected = `
1182+ ---
1183+ apiVersion: policy.open-cluster-management.io/v1
1184+ kind: Policy
1185+ metadata:
1186+ annotations:
1187+ policy.open-cluster-management.io/categories: CM Configuration Management
1188+ policy.open-cluster-management.io/controls: CM-2 Baseline Configuration
1189+ policy.open-cluster-management.io/standards: NIST SP 800-53
1190+ name: policy-app-config
1191+ namespace: my-policies
1192+ spec:
1193+ disabled: false
1194+ policy-templates:
1195+ - objectDefinition:
1196+ apiVersion: policy.open-cluster-management.io/v1
1197+ kind: ConfigurationPolicy
1198+ metadata:
1199+ name: policy-app-config
1200+ spec:
1201+ object-templates:
1202+ - complianceType: musthave
1203+ objectDefinition:
1204+ apiVersion: v1
1205+ data:
1206+ game.properties: enemies=potato
1207+ kind: ConfigMap
1208+ metadata:
1209+ name: my-configmap
1210+ remediationAction: inform
1211+ severity: low
1212+ remediationAction: inform
1213+ `
1214+ expected = strings .TrimPrefix (expected , "\n " )
1215+ assertEqual (t , output , expected )
1216+
1217+ // Check for override default policy annotation
1218+ p .outputBuffer .Reset ()
1219+ p .Policies [0 ].PolicyLabels = map [string ]string {"test-wave-label" : "100" }
1220+ p .applyDefaults (map [string ]interface {}{})
1221+
1222+ err = p .createPolicy (& p .Policies [0 ])
1223+ if err != nil {
1224+ t .Fatal (err .Error ())
1225+ }
1226+
1227+ output = p .outputBuffer .String ()
1228+ expected = `
1229+ ---
1230+ apiVersion: policy.open-cluster-management.io/v1
1231+ kind: Policy
1232+ metadata:
1233+ annotations:
1234+ policy.open-cluster-management.io/categories: CM Configuration Management
1235+ policy.open-cluster-management.io/controls: CM-2 Baseline Configuration
1236+ policy.open-cluster-management.io/standards: NIST SP 800-53
1237+ labels:
1238+ test-wave-label: "100"
1239+ name: policy-app-config
1240+ namespace: my-policies
1241+ spec:
1242+ disabled: false
1243+ policy-templates:
1244+ - objectDefinition:
1245+ apiVersion: policy.open-cluster-management.io/v1
1246+ kind: ConfigurationPolicy
1247+ metadata:
1248+ name: policy-app-config
1249+ spec:
1250+ object-templates:
1251+ - complianceType: musthave
1252+ objectDefinition:
1253+ apiVersion: v1
1254+ data:
1255+ game.properties: enemies=potato
1256+ kind: ConfigMap
1257+ metadata:
1258+ name: my-configmap
1259+ remediationAction: inform
1260+ severity: low
1261+ remediationAction: inform
1262+ `
1263+ expected = strings .TrimPrefix (expected , "\n " )
1264+ assertEqual (t , output , expected )
1265+ }
1266+
11081267func TestCreatePolicyFromIamPolicyTypeManifest (t * testing.T ) {
11091268 t .Parallel ()
11101269 tmpDir := t .TempDir ()
0 commit comments