|
8 | 8 | _ "embed" |
9 | 9 | "fmt" |
10 | 10 | "math/rand" |
| 11 | + "strconv" |
11 | 12 | "strings" |
12 | 13 | "testing" |
13 | 14 | "testing/quick" |
@@ -315,6 +316,45 @@ func Test_Rego_EnforceCreateContainer_Same_Container_Twice_Windows(t *testing.T) |
315 | 316 | } |
316 | 317 | } |
317 | 318 |
|
| 319 | +func Test_Rego_EnforceVerifiedCIMSPolicy_Multiple_Instances_Same_Container(t *testing.T) { |
| 320 | + for containersToCreate := 5; containersToCreate <= maxContainersInGeneratedConstraints; containersToCreate++ { |
| 321 | + constraints := new(generatedWindowsConstraints) |
| 322 | + constraints.ctx = context.Background() |
| 323 | + constraints.externalProcesses = generateExternalProcesses(testRand) |
| 324 | + |
| 325 | + for i := 1; i <= containersToCreate; i++ { |
| 326 | + arg := "command " + strconv.Itoa(i) |
| 327 | + c := &securityPolicyWindowsContainer{ |
| 328 | + Command: []string{arg}, |
| 329 | + Layers: []string{"1", "2"}, |
| 330 | + } |
| 331 | + |
| 332 | + constraints.containers = append(constraints.containers, c) |
| 333 | + } |
| 334 | + |
| 335 | + securityPolicy := constraints.toPolicy() |
| 336 | + policy, err := newRegoPolicy(securityPolicy.marshalWindowsRego(), []oci.Mount{}, []oci.Mount{}, testOSType) |
| 337 | + |
| 338 | + if err != nil { |
| 339 | + t.Fatalf("failed create enforcer") |
| 340 | + } |
| 341 | + |
| 342 | + for _, container := range constraints.containers { |
| 343 | + // Reverse container.Layers to satisfy layerHashes_ok ordering |
| 344 | + layerHashes := make([]string, len(container.Layers)) |
| 345 | + for i, layer := range container.Layers { |
| 346 | + layerHashes[len(container.Layers)-1-i] = layer |
| 347 | + } |
| 348 | + |
| 349 | + id := testDataGenerator.uniqueContainerID() |
| 350 | + err = policy.EnforceVerifiedCIMsPolicy(constraints.ctx, id, layerHashes) |
| 351 | + if err != nil { |
| 352 | + t.Fatalf("failed with %d containers", containersToCreate) |
| 353 | + } |
| 354 | + } |
| 355 | + } |
| 356 | +} |
| 357 | + |
318 | 358 | // -- Capabilities/Mount/Rego version tests are removed -- Add back Rego versions test// |
319 | 359 | func Test_Rego_ExecInContainerPolicy_Windows(t *testing.T) { |
320 | 360 | f := func(p *generatedWindowsConstraints) bool { |
|
0 commit comments