@@ -37,33 +37,38 @@ func (suite *EvaluateTrailCommandTestSuite) SetupTest() {
3737func (suite * EvaluateTrailCommandTestSuite ) TestEvaluateTrailCmd () {
3838 tests := []cmdTestCase {
3939 {
40- wantError : true ,
41- name : "missing trail name argument fails" ,
42- cmd : fmt .Sprintf (`evaluate trail --flow %s %s` , suite .flowName , suite .defaultKosliArguments ),
43- golden : "Error: accepts 1 arg(s), received 0\n " ,
40+ wantError : true ,
41+ wantExitCode : 4 ,
42+ name : "missing trail name argument fails" ,
43+ cmd : fmt .Sprintf (`evaluate trail --flow %s %s` , suite .flowName , suite .defaultKosliArguments ),
44+ golden : "Error: accepts 1 arg(s), received 0\n " ,
4445 },
4546 {
46- wantError : true ,
47- name : "providing more than one argument fails" ,
48- cmd : fmt .Sprintf (`evaluate trail %s xxx --flow %s %s` , suite .trailName , suite .flowName , suite .defaultKosliArguments ),
49- golden : "Error: accepts 1 arg(s), received 2\n " ,
47+ wantError : true ,
48+ wantExitCode : 4 ,
49+ name : "providing more than one argument fails" ,
50+ cmd : fmt .Sprintf (`evaluate trail %s xxx --flow %s %s` , suite .trailName , suite .flowName , suite .defaultKosliArguments ),
51+ golden : "Error: accepts 1 arg(s), received 2\n " ,
5052 },
5153 {
52- wantError : true ,
53- name : "missing --flow flag fails" ,
54- cmd : fmt .Sprintf (`evaluate trail %s %s` , suite .trailName , suite .defaultKosliArguments ),
55- golden : "Error: required flag(s) \" flow\" , \" policy\" not set\n " ,
54+ wantError : true ,
55+ wantExitCode : 4 ,
56+ name : "missing --flow flag fails" ,
57+ cmd : fmt .Sprintf (`evaluate trail %s %s` , suite .trailName , suite .defaultKosliArguments ),
58+ golden : "Error: required flag(s) \" flow\" , \" policy\" not set\n " ,
5659 },
5760 {
58- wantError : true ,
59- name : "missing --policy flag fails" ,
60- cmd : fmt .Sprintf (`evaluate trail %s --flow %s %s` , suite .trailName , suite .flowName , suite .defaultKosliArguments ),
61- golden : "Error: required flag(s) \" policy\" not set\n " ,
61+ wantError : true ,
62+ wantExitCode : 4 ,
63+ name : "missing --policy flag fails" ,
64+ cmd : fmt .Sprintf (`evaluate trail %s --flow %s %s` , suite .trailName , suite .flowName , suite .defaultKosliArguments ),
65+ golden : "Error: required flag(s) \" policy\" not set\n " ,
6266 },
6367 {
64- wantError : true ,
65- name : "missing --api-token fails" ,
66- cmd : fmt .Sprintf (`evaluate trail %s --flow %s --policy testdata/policies/allow-all.rego --org orgX` , suite .trailName , suite .flowName ),
68+ wantError : true ,
69+ wantExitCode : 4 ,
70+ name : "missing --api-token fails" ,
71+ cmd : fmt .Sprintf (`evaluate trail %s --flow %s --policy testdata/policies/allow-all.rego --org orgX` , suite .trailName , suite .flowName ),
6772 },
6873 {
6974 wantError : true ,
@@ -76,9 +81,10 @@ func (suite *EvaluateTrailCommandTestSuite) TestEvaluateTrailCmd() {
7681 cmd : fmt .Sprintf (`evaluate trail %s --flow %s --policy testdata/policies/allow-all.rego %s` , suite .trailName , suite .flowName , suite .defaultKosliArguments ),
7782 },
7883 {
79- wantError : true ,
80- name : "with --policy deny-all exits 1" ,
81- cmd : fmt .Sprintf (`evaluate trail %s --flow %s --policy testdata/policies/deny-all.rego %s` , suite .trailName , suite .flowName , suite .defaultKosliArguments ),
84+ wantError : true ,
85+ wantExitCode : 1 ,
86+ name : "with --policy deny-all exits 1" ,
87+ cmd : fmt .Sprintf (`evaluate trail %s --flow %s --policy testdata/policies/deny-all.rego %s` , suite .trailName , suite .flowName , suite .defaultKosliArguments ),
8288 },
8389 {
8490 wantError : true ,
@@ -96,21 +102,23 @@ func (suite *EvaluateTrailCommandTestSuite) TestEvaluateTrailCmd() {
96102 goldenJson : []jsonCheck {{"allow" , true }},
97103 },
98104 {
99- wantError : true ,
100- name : "with --policy deny-all --output json prints JSON with allow false and violations" ,
101- cmd : fmt .Sprintf (`evaluate trail %s --flow %s --policy testdata/policies/deny-all.rego --output json %s` , suite .trailName , suite .flowName , suite .defaultKosliArguments ),
102- goldenRegex : `(?s)"allow":\s*false.*"violations":\s*\[.*"always denied"` ,
105+ wantError : true ,
106+ wantExitCode : 1 ,
107+ name : "with --policy deny-all --output json prints JSON with allow false and violations" ,
108+ cmd : fmt .Sprintf (`evaluate trail %s --flow %s --policy testdata/policies/deny-all.rego --output json %s` , suite .trailName , suite .flowName , suite .defaultKosliArguments ),
109+ goldenRegex : `(?s)"allow":\s*false.*"violations":\s*\[.*"always denied"` ,
103110 },
104111 {
105112 name : "with --policy allow-all --output table prints allowed text" ,
106113 cmd : fmt .Sprintf (`evaluate trail %s --flow %s --policy testdata/policies/allow-all.rego --output table %s` , suite .trailName , suite .flowName , suite .defaultKosliArguments ),
107114 goldenRegex : `RESULT:\s+ALLOWED` ,
108115 },
109116 {
110- wantError : true ,
111- name : "with --policy deny-all --output table prints denied text with violations" ,
112- cmd : fmt .Sprintf (`evaluate trail %s --flow %s --policy testdata/policies/deny-all.rego --output table %s` , suite .trailName , suite .flowName , suite .defaultKosliArguments ),
113- goldenRegex : `RESULT:\s+DENIED\nVIOLATIONS:\s+always denied` ,
117+ wantError : true ,
118+ wantExitCode : 1 ,
119+ name : "with --policy deny-all --output table prints denied text with violations" ,
120+ cmd : fmt .Sprintf (`evaluate trail %s --flow %s --policy testdata/policies/deny-all.rego --output table %s` , suite .trailName , suite .flowName , suite .defaultKosliArguments ),
121+ goldenRegex : `RESULT:\s+DENIED\nVIOLATIONS:\s+always denied` ,
114122 },
115123 {
116124 name : "with --policy allow-all and no --output defaults to table output" ,
@@ -129,10 +137,11 @@ func (suite *EvaluateTrailCommandTestSuite) TestEvaluateTrailCmd() {
129137 goldenJson : []jsonCheck {{"allow" , true }, {"input.trail.name" , suite .trailName }},
130138 },
131139 {
132- wantError : true ,
133- name : "with --policy deny-all --output json --show-input includes input alongside allow and violations" ,
134- cmd : fmt .Sprintf (`evaluate trail %s --flow %s --policy testdata/policies/deny-all.rego --output json --show-input %s` , suite .trailName , suite .flowName , suite .defaultKosliArguments ),
135- goldenRegex : `(?s)"allow":\s*false.*"input":\s*\{.*"trail".*"violations":\s*\[.*"always denied"` ,
140+ wantError : true ,
141+ wantExitCode : 1 ,
142+ name : "with --policy deny-all --output json --show-input includes input alongside allow and violations" ,
143+ cmd : fmt .Sprintf (`evaluate trail %s --flow %s --policy testdata/policies/deny-all.rego --output json --show-input %s` , suite .trailName , suite .flowName , suite .defaultKosliArguments ),
144+ goldenRegex : `(?s)"allow":\s*false.*"input":\s*\{.*"trail".*"violations":\s*\[.*"always denied"` ,
136145 },
137146 {
138147 name : "with --policy allow-all --output table --show-input ignores show-input" ,
0 commit comments