mirror of
https://github.com/opentofu/opentofu.git
synced 2025-02-25 18:45:20 -06:00
Merge pull request #26832 from hashicorp/pselle/validate-sensitive-output
Mark variables as sensitive (if relevant) in validate
This commit is contained in:
commit
e38e8e2e61
@ -1250,6 +1250,46 @@ resource "aws_instance" "foo" {
|
||||
}
|
||||
}
|
||||
|
||||
func TestContext2Validate_invalidSensitiveModuleOutput(t *testing.T) {
|
||||
m := testModuleInline(t, map[string]string{
|
||||
"child/main.tf": `
|
||||
variable "foo" {
|
||||
default = "xyz"
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
output "out" {
|
||||
value = var.foo
|
||||
}`,
|
||||
"main.tf": `
|
||||
module "child" {
|
||||
source = "./child"
|
||||
}
|
||||
|
||||
resource "aws_instance" "foo" {
|
||||
foo = module.child.out
|
||||
}`,
|
||||
})
|
||||
|
||||
p := testProvider("aws")
|
||||
ctx := testContext2(t, &ContextOpts{
|
||||
Config: m,
|
||||
Providers: map[addrs.Provider]providers.Factory{
|
||||
addrs.NewDefaultProvider("aws"): testProviderFuncFixed(p),
|
||||
},
|
||||
})
|
||||
|
||||
diags := ctx.Validate()
|
||||
if !diags.HasErrors() {
|
||||
t.Fatal("succeeded; want errors")
|
||||
}
|
||||
// Should get this error:
|
||||
// Output refers to sensitive values: Expressions used in outputs can only refer to sensitive values if the sensitive attribute is true.
|
||||
if got, want := diags.Err().Error(), "Output refers to sensitive values"; strings.Index(got, want) == -1 {
|
||||
t.Fatalf("wrong error:\ngot: %s\nwant: message containing %q", got, want)
|
||||
}
|
||||
}
|
||||
|
||||
func TestContext2Validate_legacyResourceCount(t *testing.T) {
|
||||
m := testModuleInline(t, map[string]string{
|
||||
"main.tf": `
|
||||
|
@ -260,6 +260,10 @@ func (d *evaluationStateData) GetInputVariable(addr addrs.InputVariable, rng tfd
|
||||
// being liberal in what it accepts because the subsequent plan walk has
|
||||
// more information available and so can be more conservative.
|
||||
if d.Operation == walkValidate {
|
||||
// Ensure variable sensitivity is captured in the validate walk
|
||||
if config.Sensitive {
|
||||
return cty.UnknownVal(wantType).Mark("sensitive"), diags
|
||||
}
|
||||
return cty.UnknownVal(wantType), diags
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user