mirror of
https://github.com/kyverno/kyverno.git
synced 2025-03-06 16:06:56 +00:00
The io/ioutil package has been deprecated as of Go 1.16 [1]. This commit replaces the existing io/ioutil functions with their new definitions in io and os packages. Signed-off-by: Eng Zer Jun <engzerjun@gmail.com>
70 lines
2.2 KiB
Go
70 lines
2.2 KiB
Go
package testrunner
|
|
|
|
import (
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/kyverno/kyverno/pkg/engine/response"
|
|
"gopkg.in/yaml.v3"
|
|
"gotest.tools/assert"
|
|
)
|
|
|
|
var sourceYAML = `
|
|
input:
|
|
policy: test/best_practices/disallow_bind_mounts.yaml
|
|
resource: test/resources/disallow_host_filesystem.yaml
|
|
expected:
|
|
validation:
|
|
policyresponse:
|
|
policy:
|
|
namespace: ''
|
|
name: disallow-bind-mounts
|
|
resource:
|
|
kind: Pod
|
|
apiVersion: v1
|
|
namespace: ''
|
|
name: image-with-hostpath
|
|
rules:
|
|
- name: validate-hostPath
|
|
type: Validation
|
|
status: fail
|
|
`
|
|
|
|
func Test_parse_yaml(t *testing.T) {
|
|
var s TestCase
|
|
if err := yaml.Unmarshal([]byte(sourceYAML), &s); err != nil {
|
|
t.Errorf("failed to parse YAML: %v", err)
|
|
return
|
|
}
|
|
|
|
assert.Equal(t, s.Expected.Validation.PolicyResponse.Policy.Name, "disallow-bind-mounts")
|
|
assert.Equal(t, 1, len(s.Expected.Validation.PolicyResponse.Rules), "invalid rule count")
|
|
assert.Equal(t, response.RuleStatusFail, s.Expected.Validation.PolicyResponse.Rules[0].Status, "invalid status")
|
|
}
|
|
|
|
func Test_parse_file(t *testing.T) {
|
|
s, err := loadScenario(t, "test/scenarios/samples/best_practices/disallow_bind_mounts_fail.yaml")
|
|
assert.NilError(t, err)
|
|
|
|
assert.Equal(t, 1, len(s.TestCases))
|
|
assert.Equal(t, s.TestCases[0].Expected.Validation.PolicyResponse.Policy.Name, "disallow-bind-mounts")
|
|
assert.Equal(t, 1, len(s.TestCases[0].Expected.Validation.PolicyResponse.Rules), "invalid rule count")
|
|
assert.Equal(t, response.RuleStatusFail, s.TestCases[0].Expected.Validation.PolicyResponse.Rules[0].Status, "invalid status")
|
|
}
|
|
|
|
func Test_parse_file2(t *testing.T) {
|
|
path := getRelativePath("test/scenarios/samples/best_practices/disallow_bind_mounts_fail.yaml")
|
|
data, err := os.ReadFile(path)
|
|
assert.NilError(t, err)
|
|
|
|
strData := string(data)
|
|
var s TestCase
|
|
if err := yaml.Unmarshal([]byte(strData), &s); err != nil {
|
|
t.Errorf("failed to parse YAML: %v", err)
|
|
return
|
|
}
|
|
|
|
assert.Equal(t, s.Expected.Validation.PolicyResponse.Policy.Name, "disallow-bind-mounts")
|
|
assert.Equal(t, 1, len(s.Expected.Validation.PolicyResponse.Rules), "invalid rule count")
|
|
assert.Equal(t, response.RuleStatusFail, s.Expected.Validation.PolicyResponse.Rules[0].Status, "invalid status")
|
|
}
|