From 55f31e9d55f6cc76d7a2e26394b27f04d354e360 Mon Sep 17 00:00:00 2001 From: Matthew Luckam Date: Tue, 2 Mar 2021 16:33:10 -0500 Subject: [PATCH] updated unit tests to conform with helm best practices Signed-off-by: Matthew Luckam Signed-off-by: pallavJha --- pkg/lint/rules/values_test.go | 56 +++++++++++++++++++++++++++-------- 1 file changed, 43 insertions(+), 13 deletions(-) diff --git a/pkg/lint/rules/values_test.go b/pkg/lint/rules/values_test.go index eb74aee36..23335cc01 100644 --- a/pkg/lint/rules/values_test.go +++ b/pkg/lint/rules/values_test.go @@ -104,7 +104,7 @@ func TestValidateValuesFileSchemaFailure(t *testing.T) { } func TestValidateValuesFileSchemaOverrides(t *testing.T) { - yaml := "username: admin\npassword:" + yaml := "username: admin" overrides := map[string]interface{}{ "password": "swordfish", } @@ -118,21 +118,51 @@ func TestValidateValuesFileSchemaOverrides(t *testing.T) { } } -func TestValidateValuesFileSchemaOverridesFailure(t *testing.T) { - yaml := "username: admin\npassword:" - overrides := map[string]interface{}{ - "username": "anotherUser", +func TestValidateValuesFile(t *testing.T) { + tests := []struct { + name string + yaml string + overrides map[string]interface{} + errorMessage string + }{ + { + name: "value added", + yaml: "username: admin", + overrides: map[string]interface{}{"password": "swordfish"}, + }, + { + name: "value not overridden", + yaml: "username: admin\npassword:", + overrides: map[string]interface{}{"username": "anotherUser"}, + errorMessage: "Expected: string, given: null", + }, + { + name: "value overridden", + yaml: "username: admin\npassword:", + overrides: map[string]interface{}{"username": "anotherUser", "password": "swordfish"}, + }, } - tmpdir := ensure.TempFile(t, "values.yaml", []byte(yaml)) - defer os.RemoveAll(tmpdir) - createTestingSchema(t, tmpdir) - valfile := filepath.Join(tmpdir, "values.yaml") - err := validateValuesFile(valfile, overrides) - if err == nil { - t.Fatalf("expected values file to fail parsing") + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + tmpdir := ensure.TempFile(t, "values.yaml", []byte(tt.yaml)) + defer os.RemoveAll(tmpdir) + createTestingSchema(t, tmpdir) + + valfile := filepath.Join(tmpdir, "values.yaml") + + err := validateValuesFile(valfile, tt.overrides) + + switch { + case err != nil && tt.errorMessage == "": + t.Errorf("Failed validation with %s", err) + case err == nil && tt.errorMessage != "": + t.Error("expected values file to fail parsing") + case err != nil && tt.errorMessage != "": + assert.Contains(t, err.Error(), tt.errorMessage, "Failed with unexpected error") + } + }) } - assert.Contains(t, err.Error(), "Expected: string, given: null", "Null value for password should be caught by schema") } func createTestingSchema(t *testing.T, dir string) string {