From 5aa65a8c8bdf9ba0ec8d11c1e840c382c4ba1fdd Mon Sep 17 00:00:00 2001 From: Debdut Chakraborty Date: Wed, 10 Aug 2022 00:43:50 +0530 Subject: [PATCH] [command.package] Add tests Signed-off-by: Debdut Chakraborty --- pkg/action/package.go | 12 ++++++++-- pkg/action/package_test.go | 48 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+), 2 deletions(-) diff --git a/pkg/action/package.go b/pkg/action/package.go index 65582a825..633932290 100644 --- a/pkg/action/package.go +++ b/pkg/action/package.go @@ -62,8 +62,8 @@ func (p *Package) Run(path string, vals map[string]interface{}) (string, error) return "", err } - if matched, _ := regexp.MatchString("^[[:lower:][:digit:]-]+$", ch.Name()); !matched { - return "", errors.New(fmt.Sprintf("Invalid chart name \"%s\". Chart names must be lower case letters and numbers with optionally dashes (-) for separator\n", ch.Name())) + if err := validateName(ch.Name()); err != nil { + return "", err } // If version is set, modify the version. @@ -109,6 +109,14 @@ func (p *Package) Run(path string, vals map[string]interface{}) (string, error) return name, err } +// validateName verifies if the chart name has any illegal characters or not +func validateName(name string) error { + if matched, _ := regexp.MatchString("^[[:lower:][:digit:]-]+$", name); !matched { + return errors.New(fmt.Sprintf("Invalid chart name \"%s\". Chart names must be lower case letters and numbers with optionally dashes (-) for separator\n", name)) + } + return nil +} + // validateVersion Verify that version is a Version, and error out if it is not. func validateVersion(ver string) error { if _, err := semver.NewVersion(ver); err != nil { diff --git a/pkg/action/package_test.go b/pkg/action/package_test.go index 5c5fed571..58720170c 100644 --- a/pkg/action/package_test.go +++ b/pkg/action/package_test.go @@ -17,6 +17,7 @@ limitations under the License. package action import ( + "fmt" "io/ioutil" "os" "path" @@ -123,3 +124,50 @@ func TestValidateVersion(t *testing.T) { }) } } + +func TestValidateName(t *testing.T) { + type args struct { + name string + } + expectedError := "Invalid chart name \"%s\". Chart names must be lower case letters and numbers with optionally dashes (-) for separator\n" + tests := []struct { + name string + args + }{ + { + "Uppercase letter in name", + args{ + name: "TestChart", + }, + }, + { + "Whitespace ( ) in name", + args{ + name: "test chart", + }, + }, + { + "Underscore (_) in name", + args{ + name: "test_chart", + }, + }, + { + "dot (.) in name", + args{ + name: "TestChart", + }, + }, + } + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + if err := validateName(test.args.name); err != nil { + er := fmt.Sprintf(expectedError, test.args.name) + if err.Error() != er { + t.Errorf("Expected {%v}, got {%v}", er, err) + } + } + }) + } +}