From 8a6441a7a5fce33ff700ea1a917cffa828ef9d7f Mon Sep 17 00:00:00 2001 From: Megan Marsh Date: Mon, 20 Aug 2018 16:32:47 -0700 Subject: [PATCH] add tests for SensitiveVars --- packer/core.go | 2 +- packer/core_test.go | 55 +++++++++++++++++++ packer/test-fixtures/sensitive-variables.json | 12 ++++ template/parse.go | 1 - 4 files changed, 68 insertions(+), 2 deletions(-) create mode 100644 packer/test-fixtures/sensitive-variables.json diff --git a/packer/core.go b/packer/core.go index 1aa20b3dd..86994ca29 100644 --- a/packer/core.go +++ b/packer/core.go @@ -312,7 +312,7 @@ func (c *Core) init() error { def, err := interpolate.Render(v.Default, ctx) if err != nil { return fmt.Errorf( - "error interpolating default value for '%s': %s", + "error interpolating default value for '%#v': %s", v, err) } c.secrets = append(c.secrets, def) diff --git a/packer/core_test.go b/packer/core_test.go index 6edf63c16..fb3774d7b 100644 --- a/packer/core_test.go +++ b/packer/core_test.go @@ -516,12 +516,67 @@ func TestCoreValidate(t *testing.T) { Variables: tc.Vars, Version: "1.0.0", }) + if (err != nil) != tc.Err { t.Fatalf("err: %s\n\n%s", tc.File, err) } } } +func TestSensitiveVars(t *testing.T) { + cases := []struct { + File string + Vars map[string]string + SensitiveVars []string + Expected string + Err bool + }{ + // hardcoded + { + "sensitive-variables.json", + map[string]string{"foo": "bar"}, + []string{"foo"}, + "bar", + false, + }, + // interpolated + { + "sensitive-variables.json", + map[string]string{"foo": "{{build_name}}"}, + []string{"foo"}, + "test", + false, + }, + } + + for _, tc := range cases { + f, err := os.Open(fixtureDir(tc.File)) + if err != nil { + t.Fatalf("err: %s", err) + } + + tpl, err := template.Parse(f) + f.Close() + if err != nil { + t.Fatalf("err: %s\n\n%s", tc.File, err) + } + + _, err = NewCore(&CoreConfig{ + Template: tpl, + Variables: tc.Vars, + Version: "1.0.0", + }) + + if (err != nil) != tc.Err { + t.Fatalf("err: %s\n\n%s", tc.File, err) + } + filtered := LogSecretFilter.get() + if filtered[0] != tc.Expected && len(filtered) != 1 { + t.Fatalf("not filtering sensitive vars; filtered is %#v", filtered) + } + } +} + func testComponentFinder() *ComponentFinder { builderFactory := func(n string) (Builder, error) { return new(MockBuilder), nil } ppFactory := func(n string) (PostProcessor, error) { return new(MockPostProcessor), nil } diff --git a/packer/test-fixtures/sensitive-variables.json b/packer/test-fixtures/sensitive-variables.json new file mode 100644 index 000000000..1052740bb --- /dev/null +++ b/packer/test-fixtures/sensitive-variables.json @@ -0,0 +1,12 @@ +{ + "variables": { + "foo": "bar" + }, + "sensitive-variables": [ + "foo" + ], + "builders": [{ + "type": "test", + "value": "{{build_name}}" + }] +} diff --git a/template/parse.go b/template/parse.go index d36cb9dc9..e0d06a2b4 100644 --- a/template/parse.go +++ b/template/parse.go @@ -7,7 +7,6 @@ import ( "fmt" "io" "io/ioutil" - "log" "os" "path/filepath" "sort"