| package plugin |
| |
| import ( |
| "context" |
| "testing" |
| |
| "github.com/docker/cli/e2e/internal/fixtures" |
| "github.com/docker/cli/e2e/testutils" |
| "github.com/docker/cli/internal/test/environment" |
| "github.com/docker/docker/api/types/versions" |
| "gotest.tools/v3/icmd" |
| "gotest.tools/v3/skip" |
| ) |
| |
| const registryPrefix = "registry:5000" |
| |
| func TestInstallWithContentTrust(t *testing.T) { |
| // TODO(krissetto): remove this skip once the fix (see https://github.com/moby/moby/pull/47299) is deployed to moby versions < 25 |
| skip.If(t, versions.LessThan(environment.DaemonAPIVersion(t), "1.44")) |
| skip.If(t, environment.SkipPluginTests()) |
| |
| const pluginName = registryPrefix + "/plugin-content-trust" |
| |
| dir := fixtures.SetupConfigFile(t) |
| defer dir.Remove() |
| |
| ctx, cancel := context.WithCancel(context.Background()) |
| t.Cleanup(cancel) |
| |
| pluginDir := testutils.SetupPlugin(t, ctx) |
| t.Cleanup(pluginDir.Remove) |
| |
| icmd.RunCommand("docker", "plugin", "create", pluginName, pluginDir.Path()).Assert(t, icmd.Success) |
| result := icmd.RunCmd(icmd.Command("docker", "plugin", "push", pluginName), |
| fixtures.WithConfig(dir.Path()), |
| fixtures.WithTrust, |
| fixtures.WithNotary, |
| fixtures.WithPassphrase("foo", "bar"), |
| ) |
| result.Assert(t, icmd.Expected{ |
| Out: "Signing and pushing trust metadata", |
| }) |
| |
| icmd.RunCommand("docker", "plugin", "rm", "-f", pluginName).Assert(t, icmd.Success) |
| |
| result = icmd.RunCmd(icmd.Command("docker", "plugin", "install", "--grant-all-permissions", pluginName), |
| fixtures.WithConfig(dir.Path()), |
| fixtures.WithTrust, |
| fixtures.WithNotary, |
| ) |
| result.Assert(t, icmd.Expected{ |
| Out: "Installed plugin " + pluginName, |
| }) |
| } |
| |
| func TestInstallWithContentTrustUntrusted(t *testing.T) { |
| skip.If(t, environment.SkipPluginTests()) |
| |
| dir := fixtures.SetupConfigFile(t) |
| defer dir.Remove() |
| |
| result := icmd.RunCmd(icmd.Command("docker", "plugin", "install", "--grant-all-permissions", "tiborvass/sample-volume-plugin:latest"), |
| fixtures.WithConfig(dir.Path()), |
| fixtures.WithTrust, |
| fixtures.WithNotary, |
| ) |
| result.Assert(t, icmd.Expected{ |
| ExitCode: 1, |
| Err: "Error: remote trust data does not exist", |
| }) |
| } |