github.com/khulnasoft/cli@v0.0.0-20240402070845-01bcad7beefa/e2e/trust/sign_test.go (about) 1 package trust 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/khulnasoft/cli/e2e/internal/fixtures" 8 "github.com/khulnasoft/cli/internal/test/environment" 9 "gotest.tools/v3/assert" 10 is "gotest.tools/v3/assert/cmp" 11 "gotest.tools/v3/fs" 12 "gotest.tools/v3/icmd" 13 "gotest.tools/v3/skip" 14 ) 15 16 const ( 17 localImage = "registry:5000/signlocal:v1" 18 signImage = "registry:5000/sign:v1" 19 ) 20 21 func TestSignLocalImage(t *testing.T) { 22 skip.If(t, environment.RemoteDaemon()) 23 // Digests in golden files are linux/amd64 specific. 24 // TODO: Fix this test and make it work on all platforms. 25 environment.SkipIfNotPlatform(t, "linux/amd64") 26 27 dir := fixtures.SetupConfigFile(t) 28 defer dir.Remove() 29 icmd.RunCmd(icmd.Command("docker", "pull", fixtures.AlpineImage)).Assert(t, icmd.Success) 30 icmd.RunCommand("docker", "tag", fixtures.AlpineImage, signImage).Assert(t, icmd.Success) 31 result := icmd.RunCmd( 32 icmd.Command("docker", "trust", "sign", signImage), 33 fixtures.WithPassphrase("root_password", "repo_password"), 34 fixtures.WithConfig(dir.Path()), fixtures.WithNotary) 35 result.Assert(t, icmd.Success) 36 assert.Check(t, is.Contains(result.Stdout(), fmt.Sprintf("v1: digest: sha256:%s", fixtures.AlpineSha))) 37 } 38 39 func TestSignWithLocalFlag(t *testing.T) { 40 skip.If(t, environment.RemoteDaemon()) 41 // Digests in golden files are linux/amd64 specific. 42 // TODO: Fix this test and make it work on all platforms. 43 environment.SkipIfNotPlatform(t, "linux/amd64") 44 45 dir := fixtures.SetupConfigFile(t) 46 defer dir.Remove() 47 setupTrustedImageForOverwrite(t, dir) 48 result := icmd.RunCmd( 49 icmd.Command("docker", "trust", "sign", "--local", localImage), 50 fixtures.WithPassphrase("root_password", "repo_password"), 51 fixtures.WithConfig(dir.Path()), fixtures.WithNotary) 52 result.Assert(t, icmd.Success) 53 assert.Check(t, is.Contains(result.Stdout(), fmt.Sprintf("v1: digest: sha256:%s", fixtures.BusyboxSha))) 54 } 55 56 func setupTrustedImageForOverwrite(t *testing.T, dir fs.Dir) { 57 t.Helper() 58 icmd.RunCmd(icmd.Command("docker", "pull", fixtures.AlpineImage)).Assert(t, icmd.Success) 59 icmd.RunCommand("docker", "tag", fixtures.AlpineImage, localImage).Assert(t, icmd.Success) 60 result := icmd.RunCmd( 61 icmd.Command("docker", "-D", "trust", "sign", localImage), 62 fixtures.WithPassphrase("root_password", "repo_password"), 63 fixtures.WithConfig(dir.Path()), fixtures.WithNotary) 64 result.Assert(t, icmd.Success) 65 assert.Check(t, is.Contains(result.Stdout(), fmt.Sprintf("v1: digest: sha256:%s", fixtures.AlpineSha))) 66 icmd.RunCmd(icmd.Command("docker", "pull", fixtures.BusyboxImage)).Assert(t, icmd.Success) 67 icmd.RunCommand("docker", "tag", fixtures.BusyboxImage, localImage).Assert(t, icmd.Success) 68 }