github.1git.de/docker/cli@v26.1.3+incompatible/cli/command/context/export-import_test.go (about)

     1  package context
     2  
     3  import (
     4  	"bytes"
     5  	"fmt"
     6  	"io"
     7  	"os"
     8  	"path/filepath"
     9  	"testing"
    10  
    11  	"github.com/docker/cli/cli/streams"
    12  	"gotest.tools/v3/assert"
    13  )
    14  
    15  func TestExportImportWithFile(t *testing.T) {
    16  	contextFile := filepath.Join(t.TempDir(), "exported")
    17  	cli := makeFakeCli(t)
    18  	createTestContext(t, cli, "test")
    19  	cli.ErrBuffer().Reset()
    20  	assert.NilError(t, RunExport(cli, &ExportOptions{
    21  		ContextName: "test",
    22  		Dest:        contextFile,
    23  	}))
    24  	assert.Equal(t, cli.ErrBuffer().String(), fmt.Sprintf("Written file %q\n", contextFile))
    25  	cli.OutBuffer().Reset()
    26  	cli.ErrBuffer().Reset()
    27  	assert.NilError(t, RunImport(cli, "test2", contextFile))
    28  	context1, err := cli.ContextStore().GetMetadata("test")
    29  	assert.NilError(t, err)
    30  	context2, err := cli.ContextStore().GetMetadata("test2")
    31  	assert.NilError(t, err)
    32  	assert.DeepEqual(t, context1.Endpoints, context2.Endpoints)
    33  	assert.DeepEqual(t, context1.Metadata, context2.Metadata)
    34  	assert.Equal(t, "test", context1.Name)
    35  	assert.Equal(t, "test2", context2.Name)
    36  
    37  	assert.Equal(t, "test2\n", cli.OutBuffer().String())
    38  	assert.Equal(t, "Successfully imported context \"test2\"\n", cli.ErrBuffer().String())
    39  }
    40  
    41  func TestExportImportPipe(t *testing.T) {
    42  	cli := makeFakeCli(t)
    43  	createTestContext(t, cli, "test")
    44  	cli.ErrBuffer().Reset()
    45  	cli.OutBuffer().Reset()
    46  	assert.NilError(t, RunExport(cli, &ExportOptions{
    47  		ContextName: "test",
    48  		Dest:        "-",
    49  	}))
    50  	assert.Equal(t, cli.ErrBuffer().String(), "")
    51  	cli.SetIn(streams.NewIn(io.NopCloser(bytes.NewBuffer(cli.OutBuffer().Bytes()))))
    52  	cli.OutBuffer().Reset()
    53  	cli.ErrBuffer().Reset()
    54  	assert.NilError(t, RunImport(cli, "test2", "-"))
    55  	context1, err := cli.ContextStore().GetMetadata("test")
    56  	assert.NilError(t, err)
    57  	context2, err := cli.ContextStore().GetMetadata("test2")
    58  	assert.NilError(t, err)
    59  	assert.DeepEqual(t, context1.Endpoints, context2.Endpoints)
    60  	assert.DeepEqual(t, context1.Metadata, context2.Metadata)
    61  	assert.Equal(t, "test", context1.Name)
    62  	assert.Equal(t, "test2", context2.Name)
    63  
    64  	assert.Equal(t, "test2\n", cli.OutBuffer().String())
    65  	assert.Equal(t, "Successfully imported context \"test2\"\n", cli.ErrBuffer().String())
    66  }
    67  
    68  func TestExportExistingFile(t *testing.T) {
    69  	contextFile := filepath.Join(t.TempDir(), "exported")
    70  	cli := makeFakeCli(t)
    71  	cli.ErrBuffer().Reset()
    72  	assert.NilError(t, os.WriteFile(contextFile, []byte{}, 0o644))
    73  	err := RunExport(cli, &ExportOptions{ContextName: "test", Dest: contextFile})
    74  	assert.Assert(t, os.IsExist(err))
    75  }