github.com/stefanmcshane/helm@v0.0.0-20221213002717-88a4a2c6e77d/pkg/action/package_test.go (about) 1 /* 2 Copyright The Helm Authors. 3 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 you may not use this file except in compliance with the License. 6 You may obtain a copy of the License at 7 8 http://www.apache.org/licenses/LICENSE-2.0 9 10 Unless required by applicable law or agreed to in writing, software 11 distributed under the License is distributed on an "AS IS" BASIS, 12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 See the License for the specific language governing permissions and 14 limitations under the License. 15 */ 16 17 package action 18 19 import ( 20 "io/ioutil" 21 "os" 22 "path" 23 "testing" 24 25 "github.com/Masterminds/semver/v3" 26 27 "github.com/stefanmcshane/helm/internal/test/ensure" 28 ) 29 30 func TestPassphraseFileFetcher(t *testing.T) { 31 secret := "secret" 32 directory := ensure.TempFile(t, "passphrase-file", []byte(secret)) 33 defer os.RemoveAll(directory) 34 35 fetcher, err := passphraseFileFetcher(path.Join(directory, "passphrase-file"), nil) 36 if err != nil { 37 t.Fatal("Unable to create passphraseFileFetcher", err) 38 } 39 40 passphrase, err := fetcher("key") 41 if err != nil { 42 t.Fatal("Unable to fetch passphrase") 43 } 44 45 if string(passphrase) != secret { 46 t.Errorf("Expected %s got %s", secret, string(passphrase)) 47 } 48 } 49 50 func TestPassphraseFileFetcher_WithLineBreak(t *testing.T) { 51 secret := "secret" 52 directory := ensure.TempFile(t, "passphrase-file", []byte(secret+"\n\n.")) 53 defer os.RemoveAll(directory) 54 55 fetcher, err := passphraseFileFetcher(path.Join(directory, "passphrase-file"), nil) 56 if err != nil { 57 t.Fatal("Unable to create passphraseFileFetcher", err) 58 } 59 60 passphrase, err := fetcher("key") 61 if err != nil { 62 t.Fatal("Unable to fetch passphrase") 63 } 64 65 if string(passphrase) != secret { 66 t.Errorf("Expected %s got %s", secret, string(passphrase)) 67 } 68 } 69 70 func TestPassphraseFileFetcher_WithInvalidStdin(t *testing.T) { 71 directory := ensure.TempDir(t) 72 defer os.RemoveAll(directory) 73 74 stdin, err := ioutil.TempFile(directory, "non-existing") 75 if err != nil { 76 t.Fatal("Unable to create test file", err) 77 } 78 79 if _, err := passphraseFileFetcher("-", stdin); err == nil { 80 t.Error("Expected passphraseFileFetcher returning an error") 81 } 82 } 83 84 func TestValidateVersion(t *testing.T) { 85 type args struct { 86 ver string 87 } 88 tests := []struct { 89 name string 90 args args 91 wantErr error 92 }{ 93 { 94 "normal semver version", 95 args{ 96 ver: "1.1.3-23658", 97 }, 98 nil, 99 }, 100 { 101 "Pre version number starting with 0", 102 args{ 103 ver: "1.1.3-023658", 104 }, 105 semver.ErrSegmentStartsZero, 106 }, 107 { 108 "Invalid version number", 109 args{ 110 ver: "1.1.3.sd.023658", 111 }, 112 semver.ErrInvalidSemVer, 113 }, 114 } 115 for _, tt := range tests { 116 t.Run(tt.name, func(t *testing.T) { 117 if err := validateVersion(tt.args.ver); err != nil { 118 if err != tt.wantErr { 119 t.Errorf("Expected {%v}, got {%v}", tt.wantErr, err) 120 } 121 122 } 123 }) 124 } 125 }