@@ -124,3 +124,67 @@ func TestEvaluate(t *testing.T) {
124124 assert .Contains (t , err .Error (), "invalid material kind" )
125125 })
126126}
127+
128+ func TestEvaluateSimplifiedPolicies (t * testing.T ) {
129+ tempDir := t .TempDir ()
130+ logger := zerolog .New (os .Stderr )
131+
132+ sbomContent , err := os .ReadFile ("testdata/test-sbom.json" )
133+ require .NoError (t , err )
134+ sbomPath := filepath .Join (tempDir , "test-sbom.json" )
135+ require .NoError (t , os .WriteFile (sbomPath , sbomContent , 0600 ))
136+
137+ t .Run ("sbom min components policy" , func (t * testing.T ) {
138+ opts := & EvalOptions {
139+ PolicyPath : "testdata/sbom-min-components-policy.yaml" ,
140+ MaterialPath : sbomPath ,
141+ }
142+
143+ result , err := Evaluate (opts , logger )
144+ require .NoError (t , err )
145+ require .NotNil (t , result )
146+ assert .False (t , result .Result .Skipped )
147+ assert .Len (t , result .Result .Violations , 1 )
148+ assert .Contains (t , result .Result .Violations [0 ], "at least 2 components" )
149+ })
150+
151+ t .Run ("sbom metadata component policy" , func (t * testing.T ) {
152+ opts := & EvalOptions {
153+ PolicyPath : "testdata/sbom-metadata-component-policy.yaml" ,
154+ MaterialPath : sbomPath ,
155+ }
156+
157+ result , err := Evaluate (opts , logger )
158+ require .NoError (t , err )
159+ require .NotNil (t , result )
160+ assert .False (t , result .Result .Skipped )
161+ assert .Len (t , result .Result .Violations , 0 )
162+ })
163+
164+ t .Run ("sbom valid cyclonedx policy" , func (t * testing.T ) {
165+ opts := & EvalOptions {
166+ PolicyPath : "testdata/sbom-valid-cyclonedx-policy.yaml" ,
167+ MaterialPath : sbomPath ,
168+ }
169+
170+ result , err := Evaluate (opts , logger )
171+ require .NoError (t , err )
172+ require .NotNil (t , result )
173+ assert .False (t , result .Result .Skipped )
174+ assert .Len (t , result .Result .Violations , 0 )
175+ })
176+
177+ t .Run ("sbom multiple checks policy" , func (t * testing.T ) {
178+ opts := & EvalOptions {
179+ PolicyPath : "testdata/sbom-multiple-checks-policy.yaml" ,
180+ MaterialPath : sbomPath ,
181+ }
182+
183+ result , err := Evaluate (opts , logger )
184+ require .NoError (t , err )
185+ require .NotNil (t , result )
186+ assert .False (t , result .Result .Skipped )
187+ assert .Len (t , result .Result .Violations , 1 )
188+ assert .Contains (t , result .Result .Violations [0 ], "too few components" )
189+ })
190+ }
0 commit comments