diff --git a/pkg/kubectl/cmd/BUILD b/pkg/kubectl/cmd/BUILD index 8b23ff97dad..2a084765457 100644 --- a/pkg/kubectl/cmd/BUILD +++ b/pkg/kubectl/cmd/BUILD @@ -160,6 +160,7 @@ go_test( "create_configmap_test.go", "create_deployment_test.go", "create_namespace_test.go", + "create_pdb_test.go", "create_quota_test.go", "create_role_test.go", "create_rolebinding_test.go", diff --git a/pkg/kubectl/cmd/create_pdb_test.go b/pkg/kubectl/cmd/create_pdb_test.go new file mode 100644 index 00000000000..aabf0590f98 --- /dev/null +++ b/pkg/kubectl/cmd/create_pdb_test.go @@ -0,0 +1,59 @@ +/* +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 cmd + +import ( + "bytes" + "io/ioutil" + "net/http" + "testing" + + restclient "k8s.io/client-go/rest" + "k8s.io/client-go/rest/fake" + "k8s.io/kubernetes/pkg/api" + cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" +) + +func TestCreatePdb(t *testing.T) { + pdbName := "my-pdb" + f, tf, _, ns := cmdtesting.NewAPIFactory() + tf.Client = &fake.RESTClient{ + APIRegistry: api.Registry, + NegotiatedSerializer: ns, + Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { + return &http.Response{ + StatusCode: http.StatusOK, + Body: ioutil.NopCloser(&bytes.Buffer{}), + }, nil + }), + } + tf.ClientConfig = &restclient.Config{} + tf.Printer = &testPrinter{} + tf.Namespace = "test" + buf := bytes.NewBuffer([]byte{}) + + cmd := NewCmdCreatePodDisruptionBudget(f, buf) + cmd.Flags().Set("min-available", "1") + cmd.Flags().Set("selector", "app=rails") + cmd.Flags().Set("dry-run", "true") + cmd.Flags().Set("output", "name") + CreatePodDisruptionBudget(f, buf, cmd, []string{pdbName}) + expectedOutput := "poddisruptionbudget/" + pdbName + "\n" + if buf.String() != expectedOutput { + t.Errorf("expected output: %s, but got: %s", expectedOutput, buf.String()) + } +}