From d5a3c22cb80c4c5f77b7c1cc0d02f47e3e6a9cd5 Mon Sep 17 00:00:00 2001 From: zhengjiajin <393926893@qq.com> Date: Mon, 17 Apr 2017 16:20:33 +0800 Subject: [PATCH] add test code for kubectl config set --- pkg/kubectl/cmd/config/BUILD | 1 + pkg/kubectl/cmd/config/set_test.go | 88 ++++++++++++++++++++++++++++++ 2 files changed, 89 insertions(+) create mode 100644 pkg/kubectl/cmd/config/set_test.go diff --git a/pkg/kubectl/cmd/config/BUILD b/pkg/kubectl/cmd/config/BUILD index c9739fc05eb..a24bf06c6d6 100644 --- a/pkg/kubectl/cmd/config/BUILD +++ b/pkg/kubectl/cmd/config/BUILD @@ -56,6 +56,7 @@ go_test( "get_clusters_test.go", "get_contexts_test.go", "navigation_step_parser_test.go", + "set_test.go", "unset_test.go", "use_context_test.go", ], diff --git a/pkg/kubectl/cmd/config/set_test.go b/pkg/kubectl/cmd/config/set_test.go new file mode 100644 index 00000000000..192285b669f --- /dev/null +++ b/pkg/kubectl/cmd/config/set_test.go @@ -0,0 +1,88 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package config + +import ( + "bytes" + "io/ioutil" + "os" + "testing" + + "reflect" + + "k8s.io/client-go/tools/clientcmd" + clientcmdapi "k8s.io/client-go/tools/clientcmd/api" +) + +type setConfigTest struct { + description string + config clientcmdapi.Config + args []string + expected string + expectedConfig clientcmdapi.Config +} + +func TestSetConfigCurrentContext(t *testing.T) { + conf := clientcmdapi.Config{ + Kind: "Config", + APIVersion: "v1", + CurrentContext: "minikube", + } + expectedConfig := *clientcmdapi.NewConfig() + expectedConfig.CurrentContext = "my-cluster" + test := setConfigTest{ + description: "Testing for kubectl config set current-context", + config: conf, + args: []string{"current-context", "my-cluster"}, + expected: `Property "current-context" set.` + "\n", + expectedConfig: expectedConfig, + } + test.run(t) +} + +func (test setConfigTest) run(t *testing.T) { + fakeKubeFile, err := ioutil.TempFile("", "") + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + defer os.Remove(fakeKubeFile.Name()) + err = clientcmd.WriteToFile(test.config, fakeKubeFile.Name()) + if err != nil { + t.Fatalf("unexpected error: %v", err) + } + pathOptions := clientcmd.NewDefaultPathOptions() + pathOptions.GlobalFile = fakeKubeFile.Name() + pathOptions.EnvVar = "" + buf := bytes.NewBuffer([]byte{}) + cmd := NewCmdConfigSet(buf, pathOptions) + cmd.SetArgs(test.args) + if err := cmd.Execute(); err != nil { + t.Fatalf("unexpected error executing command: %v", err) + } + config, err := clientcmd.LoadFromFile(fakeKubeFile.Name()) + if err != nil { + t.Fatalf("unexpected error loading kubeconfig file: %v", err) + } + if len(test.expected) != 0 { + if buf.String() != test.expected { + t.Errorf("Failded in:%q\n expected %v\n but got %v", test.description, test.expected, buf.String()) + } + } + if !reflect.DeepEqual(*config, test.expectedConfig) { + t.Errorf("Failed in: %q\n expected %v\n but got %v", test.description, *config, test.expectedConfig) + } +}