@@ -306,6 +306,7 @@ func TestGeneratePolicyDisablePlacement(t *testing.T) {
306306
307307 p .PolicyDefaults .Namespace = "my-policies"
308308 p .PolicyDefaults .MetadataComplianceType = "musthave"
309+ p .PolicyDefaults .Placement .PlacementName = "my-placement"
309310 policyConf := types.PolicyConfig {
310311 Name : "policy-app-config" ,
311312 Manifests : []types.Manifest {
@@ -373,6 +374,97 @@ spec:
373374 assertEqual (t , string (output ), expected )
374375}
375376
377+ func TestGeneratePolicyDisablePlacementOverride (t * testing.T ) {
378+ t .Parallel ()
379+ tmpDir := t .TempDir ()
380+ createConfigMap (t , tmpDir , "configmap.yaml" )
381+
382+ p := Plugin {}
383+ var err error
384+
385+ p .baseDirectory , err = filepath .EvalSymlinks (tmpDir )
386+ if err != nil {
387+ t .Fatal (err .Error ())
388+ }
389+
390+ p .PolicyDefaults .Namespace = "my-policies"
391+ p .PolicyDefaults .MetadataComplianceType = "musthave"
392+ p .PolicyDefaults .Placement .PlacementName = "my-placement"
393+ policyConf := types.PolicyConfig {
394+ Name : "policy-app-config" ,
395+ Manifests : []types.Manifest {
396+ {
397+ Path : path .Join (tmpDir , "configmap.yaml" ),
398+ },
399+ },
400+ PolicyOptions : types.PolicyOptions {
401+ GeneratePolicyPlacement : false ,
402+ Placement : types.PlacementConfig {
403+ PlacementName : "my-placement" ,
404+ },
405+ },
406+ }
407+ p .Policies = append (p .Policies , policyConf )
408+ p .applyDefaults (map [string ]interface {}{
409+ "policies" : []interface {}{
410+ map [string ]interface {}{
411+ "generatePolicyPlacement" : false ,
412+ },
413+ },
414+ })
415+ assertEqual (t , p .Policies [0 ].GeneratePolicyPlacement , false )
416+ // Default all policy ConsolidateManifests flags are set to true
417+ // unless explicitly set
418+ assertEqual (t , p .Policies [0 ].ConsolidateManifests , true )
419+
420+ if err := p .assertValidConfig (); err != nil {
421+ t .Fatal (err .Error ())
422+ }
423+
424+ expected := `
425+ ---
426+ apiVersion: policy.open-cluster-management.io/v1
427+ kind: Policy
428+ metadata:
429+ annotations:
430+ policy.open-cluster-management.io/categories: CM Configuration Management
431+ policy.open-cluster-management.io/controls: CM-2 Baseline Configuration
432+ policy.open-cluster-management.io/standards: NIST SP 800-53
433+ name: policy-app-config
434+ namespace: my-policies
435+ spec:
436+ disabled: false
437+ policy-templates:
438+ - objectDefinition:
439+ apiVersion: policy.open-cluster-management.io/v1
440+ kind: ConfigurationPolicy
441+ metadata:
442+ name: policy-app-config
443+ spec:
444+ object-templates:
445+ - complianceType: musthave
446+ metadataComplianceType: musthave
447+ objectDefinition:
448+ apiVersion: v1
449+ data:
450+ game.properties: enemies=potato
451+ kind: ConfigMap
452+ metadata:
453+ name: my-configmap
454+ remediationAction: inform
455+ severity: low
456+ remediationAction: inform
457+ `
458+ expected = strings .TrimPrefix (expected , "\n " )
459+
460+ output , err := p .Generate ()
461+ if err != nil {
462+ t .Fatal (err .Error ())
463+ }
464+
465+ assertEqual (t , string (output ), expected )
466+ }
467+
376468func TestGeneratePolicyExistingPlacementRuleName (t * testing.T ) {
377469 t .Parallel ()
378470 tmpDir := t .TempDir ()
0 commit comments