github.1git.de/docker/cli@v26.1.3+incompatible/e2e/plugin/trust_test.go (about)

     1  package plugin
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  	"testing"
     7  
     8  	"github.com/docker/cli/e2e/internal/fixtures"
     9  	"github.com/docker/cli/e2e/testutils"
    10  	"github.com/docker/cli/internal/test/environment"
    11  	"github.com/docker/docker/api/types/versions"
    12  	"gotest.tools/v3/icmd"
    13  	"gotest.tools/v3/skip"
    14  )
    15  
    16  const registryPrefix = "registry:5000"
    17  
    18  func TestInstallWithContentTrust(t *testing.T) {
    19  	// TODO(krissetto): remove this skip once the fix (see https://github.com/moby/moby/pull/47299) is deployed to moby versions < 25
    20  	skip.If(t, versions.LessThan(environment.DaemonAPIVersion(t), "1.44"))
    21  	skip.If(t, environment.SkipPluginTests())
    22  
    23  	pluginName := fmt.Sprintf("%s/plugin-content-trust", registryPrefix)
    24  
    25  	dir := fixtures.SetupConfigFile(t)
    26  	defer dir.Remove()
    27  
    28  	ctx, cancel := context.WithCancel(context.Background())
    29  	t.Cleanup(cancel)
    30  
    31  	pluginDir := testutils.SetupPlugin(t, ctx)
    32  	t.Cleanup(pluginDir.Remove)
    33  
    34  	icmd.RunCommand("docker", "plugin", "create", pluginName, pluginDir.Path()).Assert(t, icmd.Success)
    35  	result := icmd.RunCmd(icmd.Command("docker", "plugin", "push", pluginName),
    36  		fixtures.WithConfig(dir.Path()),
    37  		fixtures.WithTrust,
    38  		fixtures.WithNotary,
    39  		fixtures.WithPassphrase("foo", "bar"),
    40  	)
    41  	result.Assert(t, icmd.Expected{
    42  		Out: "Signing and pushing trust metadata",
    43  	})
    44  
    45  	icmd.RunCommand("docker", "plugin", "rm", "-f", pluginName).Assert(t, icmd.Success)
    46  
    47  	result = icmd.RunCmd(icmd.Command("docker", "plugin", "install", "--grant-all-permissions", pluginName),
    48  		fixtures.WithConfig(dir.Path()),
    49  		fixtures.WithTrust,
    50  		fixtures.WithNotary,
    51  	)
    52  	result.Assert(t, icmd.Expected{
    53  		Out: fmt.Sprintf("Installed plugin %s", pluginName),
    54  	})
    55  }
    56  
    57  func TestInstallWithContentTrustUntrusted(t *testing.T) {
    58  	skip.If(t, environment.SkipPluginTests())
    59  
    60  	dir := fixtures.SetupConfigFile(t)
    61  	defer dir.Remove()
    62  
    63  	result := icmd.RunCmd(icmd.Command("docker", "plugin", "install", "--grant-all-permissions", "tiborvass/sample-volume-plugin:latest"),
    64  		fixtures.WithConfig(dir.Path()),
    65  		fixtures.WithTrust,
    66  		fixtures.WithNotary,
    67  	)
    68  	result.Assert(t, icmd.Expected{
    69  		ExitCode: 1,
    70  		Err:      "Error: remote trust data does not exist",
    71  	})
    72  }