mirror of
https://github.com/opentofu/opentofu.git
synced 2025-02-25 18:45:20 -06:00
Always unmark value in test commands in favor of sensitive values (#263)
This commit is contained in:
parent
12897327b6
commit
0d69b56cc2
@ -123,6 +123,10 @@ func (ctx *TestContext) evaluate(state *states.SyncState, changes *plans.Changes
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// The condition result may be marked if the expression refers to a
|
||||||
|
// sensitive value.
|
||||||
|
runVal, _ = runVal.Unmark()
|
||||||
|
|
||||||
if runVal.IsNull() {
|
if runVal.IsNull() {
|
||||||
run.Status = run.Status.Merge(moduletest.Error)
|
run.Status = run.Status.Merge(moduletest.Error)
|
||||||
run.Diagnostics = run.Diagnostics.Append(&hcl.Diagnostic{
|
run.Diagnostics = run.Diagnostics.Append(&hcl.Diagnostic{
|
||||||
|
@ -10,6 +10,7 @@ import (
|
|||||||
|
|
||||||
"github.com/placeholderplaceholderplaceholder/opentf/internal/addrs"
|
"github.com/placeholderplaceholderplaceholder/opentf/internal/addrs"
|
||||||
"github.com/placeholderplaceholderplaceholder/opentf/internal/configs/configschema"
|
"github.com/placeholderplaceholderplaceholder/opentf/internal/configs/configschema"
|
||||||
|
"github.com/placeholderplaceholderplaceholder/opentf/internal/lang/marks"
|
||||||
"github.com/placeholderplaceholderplaceholder/opentf/internal/moduletest"
|
"github.com/placeholderplaceholderplaceholder/opentf/internal/moduletest"
|
||||||
"github.com/placeholderplaceholderplaceholder/opentf/internal/plans"
|
"github.com/placeholderplaceholderplaceholder/opentf/internal/plans"
|
||||||
"github.com/placeholderplaceholderplaceholder/opentf/internal/providers"
|
"github.com/placeholderplaceholderplaceholder/opentf/internal/providers"
|
||||||
@ -79,6 +80,64 @@ run "test_case" {
|
|||||||
},
|
},
|
||||||
expectedStatus: moduletest.Pass,
|
expectedStatus: moduletest.Pass,
|
||||||
},
|
},
|
||||||
|
"basic_passing_with_sensitive_value": {
|
||||||
|
configs: map[string]string{
|
||||||
|
"main.tf": `
|
||||||
|
resource "test_resource" "a" {
|
||||||
|
sensitive_value = "Shhhhh!"
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
"main.tftest.hcl": `
|
||||||
|
run "test_case" {
|
||||||
|
assert {
|
||||||
|
condition = test_resource.a.sensitive_value == "Shhhhh!"
|
||||||
|
error_message = "invalid value"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
},
|
||||||
|
state: states.BuildState(func(state *states.SyncState) {
|
||||||
|
state.SetResourceInstanceCurrent(
|
||||||
|
addrs.Resource{
|
||||||
|
Mode: addrs.ManagedResourceMode,
|
||||||
|
Type: "test_resource",
|
||||||
|
Name: "a",
|
||||||
|
}.Instance(addrs.NoKey).Absolute(addrs.RootModuleInstance),
|
||||||
|
&states.ResourceInstanceObjectSrc{
|
||||||
|
Status: states.ObjectReady,
|
||||||
|
AttrsJSON: encodeCtyValue(t, cty.ObjectVal(map[string]cty.Value{
|
||||||
|
"sensitive_value": cty.StringVal("Shhhhh!"),
|
||||||
|
})),
|
||||||
|
AttrSensitivePaths: []cty.PathValueMarks{
|
||||||
|
{
|
||||||
|
Path: cty.GetAttrPath("sensitive_value"),
|
||||||
|
Marks: cty.NewValueMarks(marks.Sensitive),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
addrs.AbsProviderConfig{
|
||||||
|
Module: addrs.RootModule,
|
||||||
|
Provider: addrs.NewDefaultProvider("test"),
|
||||||
|
})
|
||||||
|
}),
|
||||||
|
provider: &MockProvider{
|
||||||
|
GetProviderSchemaResponse: &providers.GetProviderSchemaResponse{
|
||||||
|
ResourceTypes: map[string]providers.Schema{
|
||||||
|
"test_resource": {
|
||||||
|
Block: &configschema.Block{
|
||||||
|
Attributes: map[string]*configschema.Attribute{
|
||||||
|
"sensitive_value": {
|
||||||
|
Type: cty.String,
|
||||||
|
Required: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
expectedStatus: moduletest.Pass,
|
||||||
|
},
|
||||||
"with_variables": {
|
"with_variables": {
|
||||||
configs: map[string]string{
|
configs: map[string]string{
|
||||||
"main.tf": `
|
"main.tf": `
|
||||||
|
Loading…
Reference in New Issue
Block a user