@@ -25,6 +25,11 @@ type AssertArtifactCommandTestSuite struct {
2525 artifactName2 string
2626 artifact2Path string
2727 fingerprint2 string
28+ flowName3 string
29+ trailName string
30+ artifactName3 string
31+ artifact3Path string
32+ fingerprint3 string
2833}
2934
3035func (suite * AssertArtifactCommandTestSuite ) SetupTest () {
@@ -60,6 +65,19 @@ func (suite *AssertArtifactCommandTestSuite) SetupTest() {
6065 require .NoError (suite .Suite .T (), err )
6166 CreateArtifact (suite .flowName1 , suite .fingerprint2 , suite .artifactName2 , suite .Suite .T ())
6267 CreateArtifact (suite .flowName2 , suite .fingerprint2 , suite .artifactName1 , suite .Suite .T ())
68+
69+ // Setup for asserting non-compliant artifact to check error response
70+ suite .flowName3 = "assert-non-compliant-artifact"
71+ suite .trailName = "non-compliant-trail"
72+ suite .artifactName3 = "arti-for-AssertArtifactCommandTestSuite-non-compliant"
73+ suite .artifact3Path = "testdata/artifacts/AssertArtifactCommandTestSuiteArtifact3.txt"
74+ suite .fingerprint3 , err = GetSha256Digest (suite .artifact3Path , fingerprintOptions , logger )
75+ CreateFlow (suite .flowName3 , suite .Suite .T ())
76+ BeginTrail (suite .trailName , suite .flowName3 , "" , suite .Suite .T ())
77+ CreateArtifactOnTrail (suite .flowName3 , suite .trailName , "cli" , suite .fingerprint3 , suite .artifactName3 , suite .Suite .T ())
78+ require .NoError (suite .Suite .T (), err )
79+ CreateGenericArtifactAttestation (suite .flowName3 , suite .trailName , suite .fingerprint3 , "failing-attestation" , false , suite .Suite .T ())
80+ require .NoError (suite .Suite .T (), err )
6381}
6482
6583func (suite * AssertArtifactCommandTestSuite ) TestAssertArtifactCmd () {
@@ -169,6 +187,18 @@ func (suite *AssertArtifactCommandTestSuite) TestAssertArtifactCmd() {
169187 cmd : fmt .Sprintf (`assert artifact --fingerprint %s --environment %s --policy %s %s` , suite .fingerprint1 , suite .envName , suite .policyName1 , suite .defaultKosliArguments ),
170188 golden : "Error: Cannot specify both 'environment_name' and 'policy_name' at the same time\n " ,
171189 },
190+ {
191+ wantError : true ,
192+ name : "16 asserting a single existing non-compliant artifact (using --fingerprint) results in non-zero exit" ,
193+ cmd : fmt .Sprintf (`assert artifact --fingerprint %s %s` , suite .fingerprint3 , suite .defaultKosliArguments ),
194+ goldenRegex : "^Error: NON-COMPLIANT\n " ,
195+ },
196+ {
197+ wantError : true ,
198+ name : "17 asserting a single existing non-compliant artifact (using --artifact-type) results in non-zero exit" ,
199+ cmd : fmt .Sprintf (`assert artifact %s --artifact-type file %s` , suite .artifact3Path , suite .defaultKosliArguments ),
200+ goldenRegex : "^Error: NON-COMPLIANT\n " ,
201+ },
172202 }
173203
174204 runTestCmd (suite .Suite .T (), tests )
0 commit comments