e2e: add a test for `context ls`

I'm about to refactor the code which includes the Kubernetes support in a way
which relies on something vendoring `./cli/context/kubernetes/` in order to
trigger the inclusion of support for the Kubernetes endpoint in the final
binary.

In practice anything which is interested in Kubernetes must import that package
(e.g. `./cli/command/context.list` does for the `EndpointFromContext`
function). However if it was somehow possible to build without that import then
the `KUBERNETES ENDPOINT` column would be mysteriously empty.

Out of an abundance of caution add a specific check on the final binary.

Signed-off-by: Ian Campbell <ijc@docker.com>
This commit is contained in:
Ian Campbell 2019-05-16 13:19:30 +01:00
Родитель d84e278aac
Коммит d5d693aa6e
6 изменённых файлов: 69 добавлений и 0 удалений

Просмотреть файл

@ -0,0 +1,21 @@
package context
import (
"testing"
"gotest.tools/golden"
"gotest.tools/icmd"
)
func TestContextList(t *testing.T) {
cmd := icmd.Command("docker", "context", "ls")
cmd.Env = append(cmd.Env,
"DOCKER_CONFIG=./testdata/test-dockerconfig",
"KUBECONFIG=./testdata/test-kubeconfig",
)
result := icmd.RunCmd(cmd).Assert(t, icmd.Expected{
Err: icmd.None,
ExitCode: 0,
})
golden.Assert(t, result.Stdout(), "context-ls.golden")
}

17
e2e/context/main_test.go Normal file
Просмотреть файл

@ -0,0 +1,17 @@
package context
import (
"fmt"
"os"
"testing"
"github.com/docker/cli/internal/test/environment"
)
func TestMain(m *testing.M) {
if err := environment.Setup(); err != nil {
fmt.Println(err.Error())
os.Exit(3)
}
os.Exit(m.Run())
}

3
e2e/context/testdata/context-ls.golden поставляемый Normal file
Просмотреть файл

@ -0,0 +1,3 @@
NAME DESCRIPTION DOCKER ENDPOINT KUBERNETES ENDPOINT ORCHESTRATOR
default * Current DOCKER_HOST based configuration unix:///var/run/docker.sock https://someserver (zoinx) swarm
remote my remote cluster ssh://someserver https://someserver (default) kubernetes

7
e2e/context/testdata/test-dockerconfig/config.json поставляемый Normal file
Просмотреть файл

@ -0,0 +1,7 @@
{
"auths": {},
"HttpHeaders": {
"User-Agent": "Docker-Client/19.09.0-dev (linux)"
},
"credsStore": "secretservice"
}

Просмотреть файл

@ -0,0 +1 @@
{"Name":"remote","Metadata":{"Description":"my remote cluster","StackOrchestrator":"kubernetes"},"Endpoints":{"docker":{"Host":"ssh://someserver","SkipTLSVerify":false},"kubernetes":{"Host":"https://someserver","SkipTLSVerify":false,"DefaultNamespace":"default","Exec":{"command":"heptio-authenticator-aws","args":["token","-i","eks-cf"],"env":null,"apiVersion":"client.authentication.k8s.io/v1alpha1"}}}}

20
e2e/context/testdata/test-kubeconfig поставляемый Normal file
Просмотреть файл

@ -0,0 +1,20 @@
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: dGhlLWNh
server: https://someserver
name: test-cluster
contexts:
- context:
cluster: test-cluster
user: test-user
namespace: zoinx
name: test
current-context: test
kind: Config
preferences: {}
users:
- name: test-user
user:
client-certificate-data: dGhlLWNlcnQ=
client-key-data: dGhlLWtleQ==