github.com/docker/docker-ce@v17.12.1-ce-rc2+incompatible/components/cli/e2e/image/pull_test.go (about)

     1  package image
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	"github.com/docker/cli/e2e/internal/fixtures"
     8  	"github.com/gotestyourself/gotestyourself/golden"
     9  	"github.com/gotestyourself/gotestyourself/icmd"
    10  )
    11  
    12  const registryPrefix = "registry:5000"
    13  
    14  func TestPullWithContentTrust(t *testing.T) {
    15  	image := createMaskedTrustedRemoteImage(t, "trust", "latest")
    16  
    17  	result := icmd.RunCmd(icmd.Command("docker", "pull", image), fixtures.WithTrust, fixtures.WithNotary)
    18  	result.Assert(t, icmd.Success)
    19  	golden.Assert(t, result.Stderr(), "pull-with-content-trust-err.golden")
    20  	golden.Assert(t, result.Stdout(), "pull-with-content-trust.golden")
    21  }
    22  
    23  // createMaskedTrustedRemoteImage creates a remote image that is signed with
    24  // content trust, then pushes a different untrusted image at the same tag.
    25  func createMaskedTrustedRemoteImage(t *testing.T, repo, tag string) string {
    26  	image := createTrustedRemoteImage(t, repo, tag)
    27  	createNamedUnsignedImageFromBusyBox(t, image)
    28  	return image
    29  }
    30  
    31  func createTrustedRemoteImage(t *testing.T, repo, tag string) string {
    32  	image := fmt.Sprintf("%s/%s:%s", registryPrefix, repo, tag)
    33  	icmd.RunCommand("docker", "pull", fixtures.AlpineImage).Assert(t, icmd.Success)
    34  	icmd.RunCommand("docker", "tag", fixtures.AlpineImage, image).Assert(t, icmd.Success)
    35  	result := icmd.RunCmd(
    36  		icmd.Command("docker", "push", image),
    37  		fixtures.WithPassphrase("root_password", "repo_password"), fixtures.WithTrust, fixtures.WithNotary)
    38  	result.Assert(t, icmd.Success)
    39  	icmd.RunCommand("docker", "rmi", image).Assert(t, icmd.Success)
    40  	return image
    41  }
    42  
    43  func createNamedUnsignedImageFromBusyBox(t *testing.T, image string) {
    44  	icmd.RunCommand("docker", "pull", fixtures.BusyboxImage).Assert(t, icmd.Success)
    45  	icmd.RunCommand("docker", "tag", fixtures.BusyboxImage, image).Assert(t, icmd.Success)
    46  	icmd.RunCommand("docker", "push", image).Assert(t, icmd.Success)
    47  	icmd.RunCommand("docker", "rmi", image).Assert(t, icmd.Success)
    48  }