diff --git a/cmd/helm/fetch.go b/cmd/helm/fetch.go index cd729e64c6884685ddd76f341a4536564ff4c176..9a533d12e51f1047d8895889215c13c6edf95ada 100644 --- a/cmd/helm/fetch.go +++ b/cmd/helm/fetch.go @@ -124,7 +124,7 @@ func (f *fetchCmd) run() error { } if f.verify { - fmt.Fprintf(f.out, "Verification: %v", v) + fmt.Fprintf(f.out, "Verification: %v\n", v) } // After verification, untar the chart into the requested directory. diff --git a/cmd/helm/fetch_test.go b/cmd/helm/fetch_test.go index 286537a7d0b536b712a757e324f4782478d767d0..9b050af0d5f12ec44ece98a7235e98502a27b7b8 100644 --- a/cmd/helm/fetch_test.go +++ b/cmd/helm/fetch_test.go @@ -18,8 +18,10 @@ package main import ( "bytes" + "fmt" "os" "path/filepath" + "regexp" "testing" "k8s.io/helm/pkg/repo/repotest" @@ -39,13 +41,14 @@ func TestFetchCmd(t *testing.T) { // all flags will get "--home=TMDIR -d outdir" appended. tests := []struct { - name string - chart string - flags []string - fail bool - failExpect string - expectFile string - expectDir bool + name string + chart string + flags []string + fail bool + failExpect string + expectFile string + expectDir bool + expectVerify bool }{ { name: "Basic chart fetch", @@ -72,10 +75,11 @@ func TestFetchCmd(t *testing.T) { fail: true, }, { - name: "Fetch and verify", - chart: "test/signtest", - flags: []string{"--verify", "--keyring", "testdata/helm-test-key.pub"}, - expectFile: "./signtest-0.1.0.tgz", + name: "Fetch and verify", + chart: "test/signtest", + flags: []string{"--verify", "--keyring", "testdata/helm-test-key.pub"}, + expectFile: "./signtest-0.1.0.tgz", + expectVerify: true, }, { name: "Fetch and fail verify", @@ -87,16 +91,17 @@ func TestFetchCmd(t *testing.T) { { name: "Fetch and untar", chart: "test/signtest", - flags: []string{"--verify", "--keyring", "testdata/helm-test-key.pub", "--untar", "--untardir", "signtest"}, + flags: []string{"--untar", "--untardir", "signtest"}, expectFile: "./signtest", expectDir: true, }, { - name: "Fetch, verify, untar", - chart: "test/signtest", - flags: []string{"--verify", "--keyring", "testdata/helm-test-key.pub", "--untar", "--untardir", "signtest"}, - expectFile: "./signtest", - expectDir: true, + name: "Fetch, verify, untar", + chart: "test/signtest", + flags: []string{"--verify", "--keyring", "testdata/helm-test-key.pub", "--untar", "--untardir", "signtest"}, + expectFile: "./signtest", + expectDir: true, + expectVerify: true, }, } @@ -126,6 +131,15 @@ func TestFetchCmd(t *testing.T) { t.Errorf("%q reported error: %s", tt.name, err) continue } + if tt.expectVerify { + pointerAddressPattern := "0[xX][A-Fa-f0-9]+" + sha256Pattern := "[A-Fa-f0-9]{64}" + verificationRegex := regexp.MustCompile( + fmt.Sprintf("Verification: &{%s sha256:%s signtest-0.1.0.tgz}\n", pointerAddressPattern, sha256Pattern)) + if !verificationRegex.MatchString(buf.String()) { + t.Errorf("%q: expected match for regex %s, got %s", tt.name, verificationRegex, buf.String()) + } + } ef := filepath.Join(outdir, tt.expectFile) fi, err := os.Stat(ef)