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 }