mirror of
https://github.com/aquasecurity/trivy.git
synced 2025-12-22 15:16:33 -08:00
fix(terraform): add aws_region name to presets (#7184)
This commit is contained in:
@@ -1745,3 +1745,42 @@ func TestTFVarsFileDoesNotExist(t *testing.T) {
|
|||||||
_, _, err := parser.EvaluateAll(context.TODO())
|
_, _, err := parser.EvaluateAll(context.TODO())
|
||||||
assert.ErrorContains(t, err, "file does not exist")
|
assert.ErrorContains(t, err, "file does not exist")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func Test_AWSRegionNameDefined(t *testing.T) {
|
||||||
|
|
||||||
|
fs := testutil.CreateFS(t, map[string]string{
|
||||||
|
"code/test.tf": `
|
||||||
|
data "aws_region" "current" {}
|
||||||
|
|
||||||
|
data "aws_region" "other" {
|
||||||
|
name = "us-east-2"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "something" "blah" {
|
||||||
|
r1 = data.aws_region.current.name
|
||||||
|
r2 = data.aws_region.other.name
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
})
|
||||||
|
|
||||||
|
parser := New(fs, "", OptionStopOnHCLError(true))
|
||||||
|
require.NoError(t, parser.ParseFS(context.TODO(), "code"))
|
||||||
|
modules, _, err := parser.EvaluateAll(context.TODO())
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.Len(t, modules, 1)
|
||||||
|
rootModule := modules[0]
|
||||||
|
|
||||||
|
blocks := rootModule.GetResourcesByType("something")
|
||||||
|
require.Len(t, blocks, 1)
|
||||||
|
block := blocks[0]
|
||||||
|
|
||||||
|
r1 := block.GetAttribute("r1")
|
||||||
|
require.NotNil(t, r1)
|
||||||
|
assert.True(t, r1.IsResolvable())
|
||||||
|
assert.Equal(t, "current-region", r1.Value().AsString())
|
||||||
|
|
||||||
|
r2 := block.GetAttribute("r2")
|
||||||
|
require.NotNil(t, r2)
|
||||||
|
assert.True(t, r2.IsResolvable())
|
||||||
|
assert.Equal(t, "us-east-2", r2.Value().AsString())
|
||||||
|
}
|
||||||
|
|||||||
@@ -19,13 +19,16 @@ func createPresetValues(b *Block) map[string]cty.Value {
|
|||||||
presets["arn"] = cty.StringVal(b.ID())
|
presets["arn"] = cty.StringVal(b.ID())
|
||||||
}
|
}
|
||||||
|
|
||||||
// workaround for weird iam feature
|
|
||||||
switch b.TypeLabel() {
|
switch b.TypeLabel() {
|
||||||
|
// workaround for weird iam feature
|
||||||
case "aws_iam_policy_document":
|
case "aws_iam_policy_document":
|
||||||
presets["json"] = cty.StringVal(b.ID())
|
presets["json"] = cty.StringVal(b.ID())
|
||||||
// If the user leaves the name blank, Terraform will automatically generate a unique name
|
// If the user leaves the name blank, Terraform will automatically generate a unique name
|
||||||
case "aws_launch_template":
|
case "aws_launch_template":
|
||||||
presets["name"] = cty.StringVal(uuid.New().String())
|
presets["name"] = cty.StringVal(uuid.New().String())
|
||||||
|
// allow referencing the current region name
|
||||||
|
case "aws_region":
|
||||||
|
presets["name"] = cty.StringVal("current-region")
|
||||||
}
|
}
|
||||||
|
|
||||||
return presets
|
return presets
|
||||||
|
|||||||
Reference in New Issue
Block a user