diff --git a/pkg/kubectl/cmd/create_service_test.go b/pkg/kubectl/cmd/create_service_test.go index d7858d7f580..75fa4ae1340 100644 --- a/pkg/kubectl/cmd/create_service_test.go +++ b/pkg/kubectl/cmd/create_service_test.go @@ -55,3 +55,63 @@ func TestCreateService(t *testing.T) { t.Errorf("expected output: %s, but got: %s", expectedOutput, buf.String()) } } + +func TestCreateServiceNodePort(t *testing.T) { + service := &api.Service{} + service.Name = "my-node-port-service" + f, tf, codec, negSer := cmdtesting.NewAPIFactory() + tf.Printer = &testPrinter{} + tf.Client = &fake.RESTClient{ + APIRegistry: api.Registry, + NegotiatedSerializer: negSer, + Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { + switch p, m := req.URL.Path, req.Method; { + case p == "/namespaces/test/services" && m == http.MethodPost: + return &http.Response{StatusCode: http.StatusCreated, Header: defaultHeader(), Body: objBody(codec, service)}, nil + default: + t.Fatalf("unexpected request: %#v\n%#v", req.URL, req) + return nil, nil + } + }), + } + tf.Namespace = "test" + buf := bytes.NewBuffer([]byte{}) + cmd := NewCmdCreateServiceNodePort(f, buf) + cmd.Flags().Set("output", "name") + cmd.Flags().Set("tcp", "30000:8000") + cmd.Run(cmd, []string{service.Name}) + expectedOutput := "service/" + service.Name + "\n" + if buf.String() != expectedOutput { + t.Errorf("expected output: %s, but got: %s", expectedOutput, buf.String()) + } +} + +func TestCreateServiceExternalName(t *testing.T) { + service := &api.Service{} + service.Name = "my-external-name-service" + f, tf, codec, negSer := cmdtesting.NewAPIFactory() + tf.Printer = &testPrinter{} + tf.Client = &fake.RESTClient{ + APIRegistry: api.Registry, + NegotiatedSerializer: negSer, + Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { + switch p, m := req.URL.Path, req.Method; { + case p == "/namespaces/test/services" && m == http.MethodPost: + return &http.Response{StatusCode: http.StatusCreated, Header: defaultHeader(), Body: objBody(codec, service)}, nil + default: + t.Fatalf("unexpected request: %#v\n%#v", req.URL, req) + return nil, nil + } + }), + } + tf.Namespace = "test" + buf := bytes.NewBuffer([]byte{}) + cmd := NewCmdCreateServiceExternalName(f, buf) + cmd.Flags().Set("output", "name") + cmd.Flags().Set("external-name", "name") + cmd.Run(cmd, []string{service.Name}) + expectedOutput := "service/" + service.Name + "\n" + if buf.String() != expectedOutput { + t.Errorf("expected output: %s, but got: %s", expectedOutput, buf.String()) + } +}