From a82c4481f30e5877edd614f6dc7a323b5e4caf67 Mon Sep 17 00:00:00 2001 From: Jordan Liggitt Date: Sun, 22 Jan 2017 13:45:30 -0500 Subject: [PATCH] Distinguish between client and unstructuredclient in fake factory --- pkg/kubectl/cmd/create_test.go | 16 ++++++--------- pkg/kubectl/cmd/delete_test.go | 26 ++++++++++++------------ pkg/kubectl/cmd/get_test.go | 36 ++++++++++++++++----------------- pkg/kubectl/cmd/replace_test.go | 21 ++++++++----------- pkg/kubectl/cmd/testing/fake.go | 23 +++++++++++---------- 5 files changed, 57 insertions(+), 65 deletions(-) diff --git a/pkg/kubectl/cmd/create_test.go b/pkg/kubectl/cmd/create_test.go index 1cbf2fe881a..b68670afcc6 100644 --- a/pkg/kubectl/cmd/create_test.go +++ b/pkg/kubectl/cmd/create_test.go @@ -21,7 +21,6 @@ import ( "net/http" "testing" - "k8s.io/client-go/dynamic" "k8s.io/client-go/rest/fake" "k8s.io/kubernetes/pkg/api" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" @@ -45,11 +44,10 @@ func TestCreateObject(t *testing.T) { rc.Items[0].Name = "redis-master-controller" f, tf, codec, _ := cmdtesting.NewAPIFactory() - ns := dynamic.ContentConfig().NegotiatedSerializer tf.Printer = &testPrinter{} - tf.Client = &fake.RESTClient{ + tf.UnstructuredClient = &fake.RESTClient{ APIRegistry: api.Registry, - NegotiatedSerializer: ns, + NegotiatedSerializer: unstructuredSerializer, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch p, m := req.URL.Path, req.Method; { case p == "/namespaces/test/replicationcontrollers" && m == http.MethodPost: @@ -80,11 +78,10 @@ func TestCreateMultipleObject(t *testing.T) { _, svc, rc := testData() f, tf, codec, _ := cmdtesting.NewAPIFactory() - ns := dynamic.ContentConfig().NegotiatedSerializer tf.Printer = &testPrinter{} - tf.Client = &fake.RESTClient{ + tf.UnstructuredClient = &fake.RESTClient{ APIRegistry: api.Registry, - NegotiatedSerializer: ns, + NegotiatedSerializer: unstructuredSerializer, 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: @@ -119,11 +116,10 @@ func TestCreateDirectory(t *testing.T) { rc.Items[0].Name = "name" f, tf, codec, _ := cmdtesting.NewAPIFactory() - ns := dynamic.ContentConfig().NegotiatedSerializer tf.Printer = &testPrinter{} - tf.Client = &fake.RESTClient{ + tf.UnstructuredClient = &fake.RESTClient{ APIRegistry: api.Registry, - NegotiatedSerializer: ns, + NegotiatedSerializer: unstructuredSerializer, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch p, m := req.URL.Path, req.Method; { case p == "/namespaces/test/replicationcontrollers" && m == http.MethodPost: diff --git a/pkg/kubectl/cmd/delete_test.go b/pkg/kubectl/cmd/delete_test.go index a63d5f15026..748fb961737 100644 --- a/pkg/kubectl/cmd/delete_test.go +++ b/pkg/kubectl/cmd/delete_test.go @@ -43,7 +43,7 @@ func TestDeleteObjectByTuple(t *testing.T) { f, tf, codec, _ := cmdtesting.NewAPIFactory() tf.Printer = &testPrinter{} - tf.Client = &fake.RESTClient{ + tf.UnstructuredClient = &fake.RESTClient{ APIRegistry: api.Registry, NegotiatedSerializer: unstructuredSerializer, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { @@ -76,7 +76,7 @@ func TestDeleteNamedObject(t *testing.T) { f, tf, codec, _ := cmdtesting.NewAPIFactory() tf.Printer = &testPrinter{} - tf.Client = &fake.RESTClient{ + tf.UnstructuredClient = &fake.RESTClient{ APIRegistry: api.Registry, NegotiatedSerializer: unstructuredSerializer, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { @@ -109,7 +109,7 @@ func TestDeleteObject(t *testing.T) { f, tf, codec, _ := cmdtesting.NewAPIFactory() tf.Printer = &testPrinter{} - tf.Client = &fake.RESTClient{ + tf.UnstructuredClient = &fake.RESTClient{ APIRegistry: api.Registry, NegotiatedSerializer: unstructuredSerializer, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { @@ -167,7 +167,7 @@ func TestDeleteObjectGraceZero(t *testing.T) { count := 0 f, tf, codec, _ := cmdtesting.NewAPIFactory() tf.Printer = &testPrinter{} - tf.Client = &fake.RESTClient{ + tf.UnstructuredClient = &fake.RESTClient{ APIRegistry: api.Registry, NegotiatedSerializer: unstructuredSerializer, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { @@ -216,7 +216,7 @@ func TestDeleteObjectGraceZero(t *testing.T) { func TestDeleteObjectNotFound(t *testing.T) { f, tf, _, _ := cmdtesting.NewAPIFactory() tf.Printer = &testPrinter{} - tf.Client = &fake.RESTClient{ + tf.UnstructuredClient = &fake.RESTClient{ APIRegistry: api.Registry, NegotiatedSerializer: unstructuredSerializer, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { @@ -253,7 +253,7 @@ func TestDeleteObjectNotFound(t *testing.T) { func TestDeleteObjectIgnoreNotFound(t *testing.T) { f, tf, _, _ := cmdtesting.NewAPIFactory() tf.Printer = &testPrinter{} - tf.Client = &fake.RESTClient{ + tf.UnstructuredClient = &fake.RESTClient{ APIRegistry: api.Registry, NegotiatedSerializer: unstructuredSerializer, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { @@ -290,7 +290,7 @@ func TestDeleteAllNotFound(t *testing.T) { f, tf, codec, _ := cmdtesting.NewAPIFactory() tf.Printer = &testPrinter{} - tf.Client = &fake.RESTClient{ + tf.UnstructuredClient = &fake.RESTClient{ APIRegistry: api.Registry, NegotiatedSerializer: unstructuredSerializer, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { @@ -339,7 +339,7 @@ func TestDeleteAllIgnoreNotFound(t *testing.T) { notFoundError := &errors.NewNotFound(api.Resource("services"), "foo").ErrStatus tf.Printer = &testPrinter{} - tf.Client = &fake.RESTClient{ + tf.UnstructuredClient = &fake.RESTClient{ APIRegistry: api.Registry, NegotiatedSerializer: unstructuredSerializer, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { @@ -375,7 +375,7 @@ func TestDeleteMultipleObject(t *testing.T) { f, tf, codec, _ := cmdtesting.NewAPIFactory() tf.Printer = &testPrinter{} - tf.Client = &fake.RESTClient{ + tf.UnstructuredClient = &fake.RESTClient{ APIRegistry: api.Registry, NegotiatedSerializer: unstructuredSerializer, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { @@ -410,7 +410,7 @@ func TestDeleteMultipleObjectContinueOnMissing(t *testing.T) { f, tf, codec, _ := cmdtesting.NewAPIFactory() tf.Printer = &testPrinter{} - tf.Client = &fake.RESTClient{ + tf.UnstructuredClient = &fake.RESTClient{ APIRegistry: api.Registry, NegotiatedSerializer: unstructuredSerializer, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { @@ -454,7 +454,7 @@ func TestDeleteMultipleResourcesWithTheSameName(t *testing.T) { _, svc, rc := testData() f, tf, codec, _ := cmdtesting.NewAPIFactory() tf.Printer = &testPrinter{} - tf.Client = &fake.RESTClient{ + tf.UnstructuredClient = &fake.RESTClient{ APIRegistry: api.Registry, NegotiatedSerializer: unstructuredSerializer, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { @@ -492,7 +492,7 @@ func TestDeleteDirectory(t *testing.T) { f, tf, codec, _ := cmdtesting.NewAPIFactory() tf.Printer = &testPrinter{} - tf.Client = &fake.RESTClient{ + tf.UnstructuredClient = &fake.RESTClient{ APIRegistry: api.Registry, NegotiatedSerializer: unstructuredSerializer, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { @@ -524,7 +524,7 @@ func TestDeleteMultipleSelector(t *testing.T) { f, tf, codec, _ := cmdtesting.NewAPIFactory() tf.Printer = &testPrinter{} - tf.Client = &fake.RESTClient{ + tf.UnstructuredClient = &fake.RESTClient{ APIRegistry: api.Registry, NegotiatedSerializer: unstructuredSerializer, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { diff --git a/pkg/kubectl/cmd/get_test.go b/pkg/kubectl/cmd/get_test.go index 72c5c3ccc69..b917f271657 100644 --- a/pkg/kubectl/cmd/get_test.go +++ b/pkg/kubectl/cmd/get_test.go @@ -120,7 +120,7 @@ func TestGetUnknownSchemaObject(t *testing.T) { f, tf, _, _ := cmdtesting.NewAPIFactory() _, _, codec, _ := cmdtesting.NewTestFactory() tf.Printer = &testPrinter{} - tf.Client = &fake.RESTClient{ + tf.UnstructuredClient = &fake.RESTClient{ APIRegistry: api.Registry, NegotiatedSerializer: unstructuredSerializer, Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, cmdtesting.NewInternalType("", "", "foo"))}, @@ -165,7 +165,7 @@ func TestGetSchemaObject(t *testing.T) { tf.Typer = api.Scheme codec := testapi.Default.Codec() tf.Printer = &testPrinter{} - tf.Client = &fake.RESTClient{ + tf.UnstructuredClient = &fake.RESTClient{ APIRegistry: api.Registry, NegotiatedSerializer: unstructuredSerializer, Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, &api.ReplicationController{ObjectMeta: metav1.ObjectMeta{Name: "foo"}})}, @@ -188,7 +188,7 @@ func TestGetObjects(t *testing.T) { f, tf, codec, _ := cmdtesting.NewAPIFactory() tf.Printer = &testPrinter{} - tf.Client = &fake.RESTClient{ + tf.UnstructuredClient = &fake.RESTClient{ APIRegistry: api.Registry, NegotiatedSerializer: unstructuredSerializer, Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, &pods.Items[0])}, @@ -232,7 +232,7 @@ func TestGetSortedObjects(t *testing.T) { f, tf, codec, _ := cmdtesting.NewAPIFactory() tf.Printer = &testPrinter{} - tf.Client = &fake.RESTClient{ + tf.UnstructuredClient = &fake.RESTClient{ APIRegistry: api.Registry, NegotiatedSerializer: unstructuredSerializer, Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, pods)}, @@ -291,7 +291,7 @@ func TestGetObjectsIdentifiedByFile(t *testing.T) { f, tf, codec, _ := cmdtesting.NewAPIFactory() tf.Printer = &testPrinter{} - tf.Client = &fake.RESTClient{ + tf.UnstructuredClient = &fake.RESTClient{ APIRegistry: api.Registry, NegotiatedSerializer: unstructuredSerializer, Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, &pods.Items[0])}, @@ -318,7 +318,7 @@ func TestGetListObjects(t *testing.T) { f, tf, codec, _ := cmdtesting.NewAPIFactory() tf.Printer = &testPrinter{} - tf.Client = &fake.RESTClient{ + tf.UnstructuredClient = &fake.RESTClient{ APIRegistry: api.Registry, NegotiatedSerializer: unstructuredSerializer, Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, pods)}, @@ -361,7 +361,7 @@ func TestGetAllListObjects(t *testing.T) { f, tf, codec, _ := cmdtesting.NewAPIFactory() tf.Printer = &testPrinter{} - tf.Client = &fake.RESTClient{ + tf.UnstructuredClient = &fake.RESTClient{ APIRegistry: api.Registry, NegotiatedSerializer: unstructuredSerializer, Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, pods)}, @@ -391,7 +391,7 @@ func TestGetListComponentStatus(t *testing.T) { f, tf, codec, _ := cmdtesting.NewAPIFactory() tf.Printer = &testPrinter{} - tf.Client = &fake.RESTClient{ + tf.UnstructuredClient = &fake.RESTClient{ APIRegistry: api.Registry, NegotiatedSerializer: unstructuredSerializer, Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, statuses)}, @@ -420,7 +420,7 @@ func TestGetMultipleTypeObjects(t *testing.T) { f, tf, codec, _ := cmdtesting.NewAPIFactory() tf.Printer = &testPrinter{} - tf.Client = &fake.RESTClient{ + tf.UnstructuredClient = &fake.RESTClient{ APIRegistry: api.Registry, NegotiatedSerializer: unstructuredSerializer, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { @@ -459,7 +459,7 @@ func TestGetMultipleTypeObjectsAsList(t *testing.T) { f, tf, codec, _ := cmdtesting.NewAPIFactory() tf.Printer = &testPrinter{} - tf.Client = &fake.RESTClient{ + tf.UnstructuredClient = &fake.RESTClient{ APIRegistry: api.Registry, NegotiatedSerializer: unstructuredSerializer, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { @@ -521,7 +521,7 @@ func TestGetMultipleTypeObjectsWithSelector(t *testing.T) { f, tf, codec, _ := cmdtesting.NewAPIFactory() tf.Printer = &testPrinter{} - tf.Client = &fake.RESTClient{ + tf.UnstructuredClient = &fake.RESTClient{ APIRegistry: api.Registry, NegotiatedSerializer: unstructuredSerializer, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { @@ -573,7 +573,7 @@ func TestGetMultipleTypeObjectsWithDirectReference(t *testing.T) { f, tf, codec, _ := cmdtesting.NewAPIFactory() tf.Printer = &testPrinter{} - tf.Client = &fake.RESTClient{ + tf.UnstructuredClient = &fake.RESTClient{ APIRegistry: api.Registry, NegotiatedSerializer: unstructuredSerializer, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { @@ -610,7 +610,7 @@ func TestGetByNameForcesFlag(t *testing.T) { f, tf, codec, _ := cmdtesting.NewAPIFactory() tf.Printer = &testPrinter{} - tf.Client = &fake.RESTClient{ + tf.UnstructuredClient = &fake.RESTClient{ APIRegistry: api.Registry, NegotiatedSerializer: unstructuredSerializer, Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, &pods.Items[0])}, @@ -710,7 +710,7 @@ func TestWatchSelector(t *testing.T) { ResourceVersion: "10", }, } - tf.Client = &fake.RESTClient{ + tf.UnstructuredClient = &fake.RESTClient{ APIRegistry: api.Registry, NegotiatedSerializer: unstructuredSerializer, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { @@ -752,7 +752,7 @@ func TestWatchResource(t *testing.T) { f, tf, codec, _ := cmdtesting.NewAPIFactory() tf.Printer = &testPrinter{} - tf.Client = &fake.RESTClient{ + tf.UnstructuredClient = &fake.RESTClient{ APIRegistry: api.Registry, NegotiatedSerializer: unstructuredSerializer, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { @@ -790,7 +790,7 @@ func TestWatchResourceIdentifiedByFile(t *testing.T) { f, tf, codec, _ := cmdtesting.NewAPIFactory() tf.Printer = &testPrinter{} - tf.Client = &fake.RESTClient{ + tf.UnstructuredClient = &fake.RESTClient{ APIRegistry: api.Registry, NegotiatedSerializer: unstructuredSerializer, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { @@ -829,7 +829,7 @@ func TestWatchOnlyResource(t *testing.T) { f, tf, codec, _ := cmdtesting.NewAPIFactory() tf.Printer = &testPrinter{} - tf.Client = &fake.RESTClient{ + tf.UnstructuredClient = &fake.RESTClient{ APIRegistry: api.Registry, NegotiatedSerializer: unstructuredSerializer, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { @@ -873,7 +873,7 @@ func TestWatchOnlyList(t *testing.T) { ResourceVersion: "10", }, } - tf.Client = &fake.RESTClient{ + tf.UnstructuredClient = &fake.RESTClient{ APIRegistry: api.Registry, NegotiatedSerializer: unstructuredSerializer, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { diff --git a/pkg/kubectl/cmd/replace_test.go b/pkg/kubectl/cmd/replace_test.go index 40c903b0368..cb54fddf81c 100644 --- a/pkg/kubectl/cmd/replace_test.go +++ b/pkg/kubectl/cmd/replace_test.go @@ -22,7 +22,6 @@ import ( "strings" "testing" - "k8s.io/client-go/dynamic" "k8s.io/client-go/rest/fake" "k8s.io/kubernetes/pkg/api" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" @@ -32,12 +31,11 @@ func TestReplaceObject(t *testing.T) { _, _, rc := testData() f, tf, codec, _ := cmdtesting.NewAPIFactory() - ns := dynamic.ContentConfig().NegotiatedSerializer tf.Printer = &testPrinter{} deleted := false - tf.Client = &fake.RESTClient{ + tf.UnstructuredClient = &fake.RESTClient{ APIRegistry: api.Registry, - NegotiatedSerializer: ns, + NegotiatedSerializer: unstructuredSerializer, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch p, m := req.URL.Path, req.Method; { case p == "/api/v1/namespaces/test" && m == http.MethodGet: @@ -89,13 +87,12 @@ func TestReplaceMultipleObject(t *testing.T) { _, svc, rc := testData() f, tf, codec, _ := cmdtesting.NewAPIFactory() - ns := dynamic.ContentConfig().NegotiatedSerializer tf.Printer = &testPrinter{} redisMasterDeleted := false frontendDeleted := false - tf.Client = &fake.RESTClient{ + tf.UnstructuredClient = &fake.RESTClient{ APIRegistry: api.Registry, - NegotiatedSerializer: ns, + NegotiatedSerializer: unstructuredSerializer, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch p, m := req.URL.Path, req.Method; { case p == "/api/v1/namespaces/test" && m == http.MethodGet: @@ -160,12 +157,11 @@ func TestReplaceDirectory(t *testing.T) { _, _, rc := testData() f, tf, codec, _ := cmdtesting.NewAPIFactory() - ns := dynamic.ContentConfig().NegotiatedSerializer tf.Printer = &testPrinter{} created := map[string]bool{} - tf.Client = &fake.RESTClient{ + tf.UnstructuredClient = &fake.RESTClient{ APIRegistry: api.Registry, - NegotiatedSerializer: ns, + NegotiatedSerializer: unstructuredSerializer, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch p, m := req.URL.Path, req.Method; { case p == "/api/v1/namespaces/test" && m == http.MethodGet: @@ -218,11 +214,10 @@ func TestForceReplaceObjectNotFound(t *testing.T) { _, _, rc := testData() f, tf, codec, _ := cmdtesting.NewAPIFactory() - ns := dynamic.ContentConfig().NegotiatedSerializer tf.Printer = &testPrinter{} - tf.Client = &fake.RESTClient{ + tf.UnstructuredClient = &fake.RESTClient{ APIRegistry: api.Registry, - NegotiatedSerializer: ns, + NegotiatedSerializer: unstructuredSerializer, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch p, m := req.URL.Path, req.Method; { case p == "/api/v1/namespaces/test" && m == http.MethodGet: diff --git a/pkg/kubectl/cmd/testing/fake.go b/pkg/kubectl/cmd/testing/fake.go index 387fe01cf30..035b9276fe2 100644 --- a/pkg/kubectl/cmd/testing/fake.go +++ b/pkg/kubectl/cmd/testing/fake.go @@ -146,15 +146,16 @@ func (d *fakeCachedDiscoveryClient) Invalidate() { } type TestFactory struct { - Mapper meta.RESTMapper - Typer runtime.ObjectTyper - Client kubectl.RESTClient - Describer kubectl.Describer - Printer kubectl.ResourcePrinter - Validator validation.Schema - Namespace string - ClientConfig *restclient.Config - Err error + Mapper meta.RESTMapper + Typer runtime.ObjectTyper + Client kubectl.RESTClient + UnstructuredClient kubectl.RESTClient + Describer kubectl.Describer + Printer kubectl.ResourcePrinter + Validator validation.Schema + Namespace string + ClientConfig *restclient.Config + Err error } type FakeFactory struct { @@ -251,7 +252,7 @@ func (f *FakeFactory) ClientConfigForVersion(requiredVersion *schema.GroupVersio } func (f *FakeFactory) UnstructuredClientForMapping(*meta.RESTMapping) (resource.RESTClient, error) { - return nil, nil + return f.tf.UnstructuredClient, f.tf.Err } func (f *FakeFactory) Describer(*meta.RESTMapping) (kubectl.Describer, error) { @@ -497,7 +498,7 @@ func (f *fakeAPIFactory) ClientForMapping(*meta.RESTMapping) (resource.RESTClien } func (f *fakeAPIFactory) UnstructuredClientForMapping(*meta.RESTMapping) (resource.RESTClient, error) { - return f.tf.Client, f.tf.Err + return f.tf.UnstructuredClient, f.tf.Err } func (f *fakeAPIFactory) Describer(*meta.RESTMapping) (kubectl.Describer, error) {