@@ -67,20 +67,49 @@ var expectedPolicy = &audit.Policy{
67
67
}
68
68
69
69
func TestParser (t * testing.T ) {
70
- // Create a policy file.
71
- f , err := ioutil .TempFile ("" , "policy.yaml" )
70
+ f , err := writePolicy (policyDef , t )
72
71
require .NoError (t , err )
73
- defer os .Remove (f . Name () )
72
+ defer os .Remove (f )
74
73
75
- _ , err = f .WriteString (policyDef )
76
- require .NoError (t , err )
77
- require .NoError (t , f .Close ())
78
-
79
- policy , err := LoadPolicyFromFile (f .Name ())
74
+ policy , err := LoadPolicyFromFile (f )
80
75
require .NoError (t , err )
81
76
82
77
assert .Len (t , policy .Rules , 3 ) // Sanity check.
83
78
if ! reflect .DeepEqual (policy , expectedPolicy ) {
84
79
t .Errorf ("Unexpected policy! Diff:\n %s" , diff .ObjectDiff (policy , expectedPolicy ))
85
80
}
86
81
}
82
+
83
+ func TestPolicyCntCheck (t * testing.T ) {
84
+ //a set of testCases
85
+ var testCases = []struct {
86
+ caseName , policy string
87
+ }{
88
+ {
89
+ "policyWithNoRule" ,
90
+ `apiVersion: audit.k8s.io/v1beta1
91
+ kind: Policy` ,
92
+ },
93
+ {"emptyPolicyFile" , "" },
94
+ }
95
+
96
+ for _ , tc := range testCases {
97
+ f , err := writePolicy (tc .policy , t )
98
+ require .NoError (t , err )
99
+ defer os .Remove (f )
100
+
101
+ _ , err = LoadPolicyFromFile (f )
102
+ assert .Error (t , err , "loaded illegal policy with 0 rules from testCase %s" , tc .caseName )
103
+ }
104
+ }
105
+
106
+ func writePolicy (policy string , t * testing.T ) (string , error ) {
107
+ f , err := ioutil .TempFile ("" , "policy.yaml" )
108
+ require .NoError (t , err )
109
+
110
+ _ , err = f .WriteString (policy )
111
+ require .NoError (t , err )
112
+ require .NoError (t , f .Close ())
113
+
114
+ return f .Name (), nil
115
+ }
0 commit comments