github.com/cspotcode/docker-cli@v20.10.0-rc1.0.20201201121459-3faad7acc5b8+incompatible/cli/command/context/use_test.go (about)

     1  package context
     2  
     3  import (
     4  	"io/ioutil"
     5  	"os"
     6  	"path/filepath"
     7  	"testing"
     8  
     9  	"github.com/docker/cli/cli/config"
    10  	"github.com/docker/cli/cli/config/configfile"
    11  	"github.com/docker/cli/cli/context/store"
    12  	"gotest.tools/v3/assert"
    13  )
    14  
    15  func TestUse(t *testing.T) {
    16  	configDir, err := ioutil.TempDir("", t.Name()+"config")
    17  	assert.NilError(t, err)
    18  	defer os.RemoveAll(configDir)
    19  	configFilePath := filepath.Join(configDir, "config.json")
    20  	testCfg := configfile.New(configFilePath)
    21  	cli, cleanup := makeFakeCli(t, withCliConfig(testCfg))
    22  	defer cleanup()
    23  	err = RunCreate(cli, &CreateOptions{
    24  		Name:   "test",
    25  		Docker: map[string]string{},
    26  	})
    27  	assert.NilError(t, err)
    28  	assert.NilError(t, newUseCommand(cli).RunE(nil, []string{"test"}))
    29  	reloadedConfig, err := config.Load(configDir)
    30  	assert.NilError(t, err)
    31  	assert.Equal(t, "test", reloadedConfig.CurrentContext)
    32  
    33  	// switch back to default
    34  	cli.OutBuffer().Reset()
    35  	cli.ErrBuffer().Reset()
    36  	assert.NilError(t, newUseCommand(cli).RunE(nil, []string{"default"}))
    37  	reloadedConfig, err = config.Load(configDir)
    38  	assert.NilError(t, err)
    39  	assert.Equal(t, "", reloadedConfig.CurrentContext)
    40  	assert.Equal(t, "default\n", cli.OutBuffer().String())
    41  	assert.Equal(t, "Current context is now \"default\"\n", cli.ErrBuffer().String())
    42  }
    43  
    44  func TestUseNoExist(t *testing.T) {
    45  	cli, cleanup := makeFakeCli(t)
    46  	defer cleanup()
    47  	err := newUseCommand(cli).RunE(nil, []string{"test"})
    48  	assert.Check(t, store.IsErrContextDoesNotExist(err))
    49  }