Skip to content

Commit c21b599

Browse files
Fix validation of run status; add unit test [issue 1061] (#1171)
* Fix validation of run status; add unit test [issue 1061] validateAdminRunFilterParams in admin_run.go was using RunCostEstimate, a RunIncludeOpt. It should be using RunCostEstimated, a RunStatus. Adds unit test. Some of the RunStatus values were not accepted by validateAdminRunFilterParams - this PR assumes that was a mistake. The validate function has been fixed to accept all status values. * fix changelog
1 parent a299d7e commit c21b599

File tree

3 files changed

+81
-2
lines changed

3 files changed

+81
-2
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
## Enhancements
44
* Adds support for `RegistryModule` VCS source_directory and tag_prefix options, by @jillrami [#1154] (https://github.com/hashicorp/go-tfe/pull/1154)
55

6+
## Bug Fixes
7+
* Fixes issue [1061](https://github.com/hashicorp/go-tfe/issues/1061), validation accepts all RunStatus including `"cost_estimated"` by @KenCox-Hashicorp [#1171](https://github.com/hashicorp/go-tfe/pull/1171)
8+
69
# v1.89.0
710

811
## Enhancements

admin_run.go

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -167,19 +167,31 @@ func validateAdminRunFilterParams(runStatus string) error {
167167
string(RunApplying),
168168
string(RunCanceled),
169169
string(RunConfirmed),
170-
string(RunCostEstimate),
170+
string(RunCostEstimated),
171171
string(RunCostEstimating),
172172
string(RunDiscarded),
173173
string(RunErrored),
174+
string(RunFetching),
175+
string(RunFetchingCompleted),
174176
string(RunPending),
175-
string(RunPlanQueued),
176177
string(RunPlanned),
177178
string(RunPlannedAndFinished),
179+
string(RunPlannedAndSaved),
178180
string(RunPlanning),
181+
string(RunPlanQueued),
179182
string(RunPolicyChecked),
180183
string(RunPolicyChecking),
181184
string(RunPolicyOverride),
182185
string(RunPolicySoftFailed),
186+
string(RunPostPlanAwaitingDecision),
187+
string(RunPostPlanCompleted),
188+
string(RunPostPlanRunning),
189+
string(RunPreApplyRunning),
190+
string(RunPreApplyCompleted),
191+
string(RunPrePlanCompleted),
192+
string(RunPrePlanRunning),
193+
string(RunQueuing),
194+
string(RunQueuingApply),
183195
"":
184196
// do nothing
185197
default:

admin_run_test.go

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
// Copyright (c) HashiCorp, Inc.
2+
// SPDX-License-Identifier: MPL-2.0
3+
4+
package tfe
5+
6+
import (
7+
"fmt"
8+
"testing"
9+
10+
"github.com/stretchr/testify/require"
11+
)
12+
13+
func Test_validateAdminRunFilterParams(t *testing.T) {
14+
// All RunStatus values - keep this in sync with run.go
15+
validRunStatuses := []string{
16+
"applied",
17+
"applying",
18+
"apply_queued",
19+
"canceled",
20+
"confirmed",
21+
"cost_estimated",
22+
"cost_estimating",
23+
"discarded",
24+
"errored",
25+
"fetching",
26+
"fetching_completed",
27+
"pending",
28+
"planned",
29+
"planned_and_finished",
30+
"planned_and_saved",
31+
"planning",
32+
"plan_queued",
33+
"policy_checked",
34+
"policy_checking",
35+
"policy_override",
36+
"policy_soft_failed",
37+
"post_plan_awaiting_decision",
38+
"post_plan_completed",
39+
"post_plan_running",
40+
"pre_apply_running",
41+
"pre_apply_completed",
42+
"pre_plan_completed",
43+
"pre_plan_running",
44+
"queuing",
45+
"queuing_apply",
46+
}
47+
for _, v := range validRunStatuses {
48+
t.Run(v, func(t *testing.T) {
49+
require.NoError(t, validateAdminRunFilterParams(v), fmt.Sprintf("'%s' should be valid", v))
50+
})
51+
}
52+
53+
// empty string is allowed
54+
require.NoError(t, validateAdminRunFilterParams(""), "empty string should be valid")
55+
56+
// comma-separated list, all valid
57+
require.NoError(t, validateAdminRunFilterParams("applied,planned,canceled"), "'applied,planned,canceled' should be valid)")
58+
59+
// invalid values
60+
require.Error(t, validateAdminRunFilterParams("cost_estimate"), "invalid value: cost_estimate")
61+
62+
// comma-separated list, some invalid
63+
require.Error(t, validateAdminRunFilterParams("applied,not-planned,canceled"), "'applied,not-planned,canceled' should be invalid)")
64+
}

0 commit comments

Comments
 (0)