github.com/justincormack/cli@v0.0.0-20201215022714-831ebeae9675/cli/command/context/export-import_test.go (about) 1 package context 2 3 import ( 4 "bytes" 5 "fmt" 6 "io/ioutil" 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 contextDir, err := ioutil.TempDir("", t.Name()+"context") 17 assert.NilError(t, err) 18 defer os.RemoveAll(contextDir) 19 contextFile := filepath.Join(contextDir, "exported") 20 cli, cleanup := makeFakeCli(t) 21 defer cleanup() 22 createTestContextWithKube(t, cli) 23 cli.ErrBuffer().Reset() 24 assert.NilError(t, RunExport(cli, &ExportOptions{ 25 ContextName: "test", 26 Dest: contextFile, 27 })) 28 assert.Equal(t, cli.ErrBuffer().String(), fmt.Sprintf("Written file %q\n", contextFile)) 29 cli.OutBuffer().Reset() 30 cli.ErrBuffer().Reset() 31 assert.NilError(t, RunImport(cli, "test2", contextFile)) 32 context1, err := cli.ContextStore().GetMetadata("test") 33 assert.NilError(t, err) 34 context2, err := cli.ContextStore().GetMetadata("test2") 35 assert.NilError(t, err) 36 assert.DeepEqual(t, context1.Endpoints, context2.Endpoints) 37 assert.DeepEqual(t, context1.Metadata, context2.Metadata) 38 assert.Equal(t, "test", context1.Name) 39 assert.Equal(t, "test2", context2.Name) 40 41 assert.Equal(t, "test2\n", cli.OutBuffer().String()) 42 assert.Equal(t, "Successfully imported context \"test2\"\n", cli.ErrBuffer().String()) 43 } 44 45 func TestExportImportPipe(t *testing.T) { 46 cli, cleanup := makeFakeCli(t) 47 defer cleanup() 48 createTestContextWithKube(t, cli) 49 cli.ErrBuffer().Reset() 50 cli.OutBuffer().Reset() 51 assert.NilError(t, RunExport(cli, &ExportOptions{ 52 ContextName: "test", 53 Dest: "-", 54 })) 55 assert.Equal(t, cli.ErrBuffer().String(), "") 56 cli.SetIn(streams.NewIn(ioutil.NopCloser(bytes.NewBuffer(cli.OutBuffer().Bytes())))) 57 cli.OutBuffer().Reset() 58 cli.ErrBuffer().Reset() 59 assert.NilError(t, RunImport(cli, "test2", "-")) 60 context1, err := cli.ContextStore().GetMetadata("test") 61 assert.NilError(t, err) 62 context2, err := cli.ContextStore().GetMetadata("test2") 63 assert.NilError(t, err) 64 assert.DeepEqual(t, context1.Endpoints, context2.Endpoints) 65 assert.DeepEqual(t, context1.Metadata, context2.Metadata) 66 assert.Equal(t, "test", context1.Name) 67 assert.Equal(t, "test2", context2.Name) 68 69 assert.Equal(t, "test2\n", cli.OutBuffer().String()) 70 assert.Equal(t, "Successfully imported context \"test2\"\n", cli.ErrBuffer().String()) 71 } 72 73 func TestExportKubeconfig(t *testing.T) { 74 contextDir, err := ioutil.TempDir("", t.Name()+"context") 75 assert.NilError(t, err) 76 defer os.RemoveAll(contextDir) 77 contextFile := filepath.Join(contextDir, "exported") 78 cli, cleanup := makeFakeCli(t) 79 defer cleanup() 80 createTestContextWithKube(t, cli) 81 cli.ErrBuffer().Reset() 82 assert.NilError(t, RunExport(cli, &ExportOptions{ 83 ContextName: "test", 84 Dest: contextFile, 85 Kubeconfig: true, 86 })) 87 assert.Equal(t, cli.ErrBuffer().String(), fmt.Sprintf("Written file %q\n", contextFile)) 88 assert.NilError(t, RunCreate(cli, &CreateOptions{ 89 Name: "test2", 90 Kubernetes: map[string]string{ 91 keyKubeconfig: contextFile, 92 }, 93 Docker: map[string]string{}, 94 })) 95 validateTestKubeEndpoint(t, cli.ContextStore(), "test2") 96 } 97 98 func TestExportExistingFile(t *testing.T) { 99 contextDir, err := ioutil.TempDir("", t.Name()+"context") 100 assert.NilError(t, err) 101 defer os.RemoveAll(contextDir) 102 contextFile := filepath.Join(contextDir, "exported") 103 cli, cleanup := makeFakeCli(t) 104 defer cleanup() 105 createTestContextWithKube(t, cli) 106 cli.ErrBuffer().Reset() 107 assert.NilError(t, ioutil.WriteFile(contextFile, []byte{}, 0644)) 108 err = RunExport(cli, &ExportOptions{ContextName: "test", Dest: contextFile}) 109 assert.Assert(t, os.IsExist(err)) 110 }