1 package trust
2
3 import (
4 "fmt"
5 "testing"
6
7 "github.com/docker/cli/e2e/internal/fixtures"
8 "github.com/docker/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 revokeImage = "registry:5000/revoke:v1"
18 revokeRepo = "registry:5000/revokerepo"
19 )
20
21 func TestRevokeImage(t *testing.T) {
22 skip.If(t, environment.RemoteDaemon())
23
24 dir := fixtures.SetupConfigFile(t)
25 defer dir.Remove()
26 setupTrustedImagesForRevoke(t, dir)
27 result := icmd.RunCmd(
28 icmd.Command("docker", "trust", "revoke", revokeImage),
29 fixtures.WithPassphrase("root_password", "repo_password"),
30 fixtures.WithNotary, fixtures.WithConfig(dir.Path()))
31 result.Assert(t, icmd.Success)
32 assert.Check(t, is.Contains(result.Stdout(), "Successfully deleted signature for registry:5000/revoke:v1"))
33 }
34
35 func TestRevokeRepo(t *testing.T) {
36 skip.If(t, environment.RemoteDaemon())
37
38 dir := fixtures.SetupConfigFile(t)
39 defer dir.Remove()
40 setupTrustedImagesForRevokeRepo(t, dir)
41 result := icmd.RunCmd(
42 icmd.Command("docker", "trust", "revoke", revokeRepo, "-y"),
43 fixtures.WithPassphrase("root_password", "repo_password"),
44 fixtures.WithNotary, fixtures.WithConfig(dir.Path()))
45 result.Assert(t, icmd.Success)
46 assert.Check(t, is.Contains(result.Stdout(), "Successfully deleted signature for registry:5000/revoke"))
47 }
48
49 func setupTrustedImagesForRevoke(t *testing.T, dir fs.Dir) {
50 t.Helper()
51 icmd.RunCmd(icmd.Command("docker", "pull", fixtures.AlpineImage)).Assert(t, icmd.Success)
52 icmd.RunCommand("docker", "tag", fixtures.AlpineImage, revokeImage).Assert(t, icmd.Success)
53 icmd.RunCmd(
54 icmd.Command("docker", "-D", "trust", "sign", revokeImage),
55 fixtures.WithPassphrase("root_password", "repo_password"),
56 fixtures.WithConfig(dir.Path()), fixtures.WithNotary).Assert(t, icmd.Success)
57 }
58
59 func setupTrustedImagesForRevokeRepo(t *testing.T, dir fs.Dir) {
60 t.Helper()
61 icmd.RunCmd(icmd.Command("docker", "pull", fixtures.AlpineImage)).Assert(t, icmd.Success)
62 icmd.RunCommand("docker", "tag", fixtures.AlpineImage, fmt.Sprintf("%s:v1", revokeRepo)).Assert(t, icmd.Success)
63 icmd.RunCmd(
64 icmd.Command("docker", "-D", "trust", "sign", fmt.Sprintf("%s:v1", revokeRepo)),
65 fixtures.WithPassphrase("root_password", "repo_password"),
66 fixtures.WithConfig(dir.Path()), fixtures.WithNotary).Assert(t, icmd.Success)
67 icmd.RunCmd(icmd.Command("docker", "pull", fixtures.BusyboxImage)).Assert(t, icmd.Success)
68 icmd.RunCommand("docker", "tag", fixtures.BusyboxImage, fmt.Sprintf("%s:v2", revokeRepo)).Assert(t, icmd.Success)
69 icmd.RunCmd(
70 icmd.Command("docker", "-D", "trust", "sign", fmt.Sprintf("%s:v2", revokeRepo)),
71 fixtures.WithPassphrase("root_password", "repo_password"),
72 fixtures.WithConfig(dir.Path()), fixtures.WithNotary).Assert(t, icmd.Success)
73 }
74
View as plain text