github.com/ali-iotechsys/cli@v20.10.0+incompatible/cli/command/manifest/push_test.go (about)

     1  package manifest
     2  
     3  import (
     4  	"context"
     5  	"io/ioutil"
     6  	"testing"
     7  
     8  	manifesttypes "github.com/docker/cli/cli/manifest/types"
     9  	"github.com/docker/cli/internal/test"
    10  	"github.com/docker/distribution/reference"
    11  	"github.com/pkg/errors"
    12  	"gotest.tools/v3/assert"
    13  )
    14  
    15  func newFakeRegistryClient() *fakeRegistryClient {
    16  	return &fakeRegistryClient{
    17  		getManifestFunc: func(_ context.Context, _ reference.Named) (manifesttypes.ImageManifest, error) {
    18  			return manifesttypes.ImageManifest{}, errors.New("")
    19  		},
    20  		getManifestListFunc: func(_ context.Context, _ reference.Named) ([]manifesttypes.ImageManifest, error) {
    21  			return nil, errors.Errorf("")
    22  		},
    23  	}
    24  }
    25  
    26  func TestManifestPushErrors(t *testing.T) {
    27  	testCases := []struct {
    28  		args          []string
    29  		expectedError string
    30  	}{
    31  		{
    32  			args:          []string{"one-arg", "extra-arg"},
    33  			expectedError: "requires exactly 1 argument",
    34  		},
    35  		{
    36  			args:          []string{"th!si'sa/fa!ke/li$t/-name"},
    37  			expectedError: "invalid reference format",
    38  		},
    39  	}
    40  
    41  	for _, tc := range testCases {
    42  		cli := test.NewFakeCli(nil)
    43  		cmd := newPushListCommand(cli)
    44  		cmd.SetArgs(tc.args)
    45  		cmd.SetOut(ioutil.Discard)
    46  		assert.ErrorContains(t, cmd.Execute(), tc.expectedError)
    47  	}
    48  }
    49  
    50  func TestManifestPush(t *testing.T) {
    51  	store, sCleanup := newTempManifestStore(t)
    52  	defer sCleanup()
    53  
    54  	registry := newFakeRegistryClient()
    55  
    56  	cli := test.NewFakeCli(nil)
    57  	cli.SetManifestStore(store)
    58  	cli.SetRegistryClient(registry)
    59  
    60  	namedRef := ref(t, "alpine:3.0")
    61  	imageManifest := fullImageManifest(t, namedRef)
    62  	err := store.Save(ref(t, "list:v1"), namedRef, imageManifest)
    63  	assert.NilError(t, err)
    64  
    65  	cmd := newPushListCommand(cli)
    66  	cmd.SetArgs([]string{"example.com/list:v1"})
    67  	err = cmd.Execute()
    68  	assert.NilError(t, err)
    69  }