diff --git a/pkg/client/fake.go b/pkg/client/fake.go index 00c81c1bb05..3eb7d6b9b59 100644 --- a/pkg/client/fake.go +++ b/pkg/client/fake.go @@ -17,7 +17,11 @@ limitations under the License. package client import ( + "net/http" + "net/url" + "github.com/GoogleCloudPlatform/kubernetes/pkg/api" + "github.com/GoogleCloudPlatform/kubernetes/pkg/runtime" "github.com/GoogleCloudPlatform/kubernetes/pkg/version" "github.com/GoogleCloudPlatform/kubernetes/pkg/watch" ) @@ -75,3 +79,38 @@ func (c *Fake) ServerAPIVersions() (*api.APIVersions, error) { c.Actions = append(c.Actions, FakeAction{Action: "get-apiversions", Value: nil}) return &api.APIVersions{Versions: []string{"v1beta1", "v1beta2"}}, nil } + +type HttpClientFunc func(*http.Request) (*http.Response, error) + +func (f HttpClientFunc) Do(req *http.Request) (*http.Response, error) { + return f(req) +} + +// FakeRESTClient provides a fake RESTClient interface. +type FakeRESTClient struct { + Client HTTPClient + Codec runtime.Codec + Req *http.Request + Resp *http.Response + Err error +} + +func (c *FakeRESTClient) Get() *Request { + return NewRequest(c, "GET", &url.URL{Host: "localhost"}, c.Codec) +} +func (c *FakeRESTClient) Put() *Request { + return NewRequest(c, "PUT", &url.URL{Host: "localhost"}, c.Codec) +} +func (c *FakeRESTClient) Post() *Request { + return NewRequest(c, "POST", &url.URL{Host: "localhost"}, c.Codec) +} +func (c *FakeRESTClient) Delete() *Request { + return NewRequest(c, "DELETE", &url.URL{Host: "localhost"}, c.Codec) +} +func (c *FakeRESTClient) Do(req *http.Request) (*http.Response, error) { + c.Req = req + if c.Client != HTTPClient(nil) { + return c.Client.Do(req) + } + return c.Resp, c.Err +} diff --git a/pkg/kubectl/resthelper_test.go b/pkg/kubectl/resthelper_test.go index 42cb6b23a70..4509211d033 100644 --- a/pkg/kubectl/resthelper_test.go +++ b/pkg/kubectl/resthelper_test.go @@ -22,7 +22,6 @@ import ( "io" "io/ioutil" "net/http" - "net/url" "reflect" "strings" "testing" @@ -34,39 +33,6 @@ import ( "github.com/GoogleCloudPlatform/kubernetes/pkg/runtime" ) -type httpClientFunc func(*http.Request) (*http.Response, error) - -func (f httpClientFunc) Do(req *http.Request) (*http.Response, error) { - return f(req) -} - -type FakeRESTClient struct { - Client client.HTTPClient - Req *http.Request - Resp *http.Response - Err error -} - -func (c *FakeRESTClient) Get() *client.Request { - return client.NewRequest(c, "GET", &url.URL{Host: "localhost"}, testapi.Codec()) -} -func (c *FakeRESTClient) Put() *client.Request { - return client.NewRequest(c, "PUT", &url.URL{Host: "localhost"}, testapi.Codec()) -} -func (c *FakeRESTClient) Post() *client.Request { - return client.NewRequest(c, "POST", &url.URL{Host: "localhost"}, testapi.Codec()) -} -func (c *FakeRESTClient) Delete() *client.Request { - return client.NewRequest(c, "DELETE", &url.URL{Host: "localhost"}, testapi.Codec()) -} -func (c *FakeRESTClient) Do(req *http.Request) (*http.Response, error) { - c.Req = req - if c.Client != client.HTTPClient(nil) { - return c.Client.Do(req) - } - return c.Resp, c.Err -} - func objBody(obj runtime.Object) io.ReadCloser { return ioutil.NopCloser(bytes.NewReader([]byte(runtime.EncodeOrDie(testapi.Codec(), obj)))) } @@ -112,9 +78,10 @@ func TestRESTHelperDelete(t *testing.T) { }, } for _, test := range tests { - client := &FakeRESTClient{ - Resp: test.Resp, - Err: test.HttpErr, + client := &client.FakeRESTClient{ + Codec: testapi.Codec(), + Resp: test.Resp, + Err: test.HttpErr, } modifier := &RESTHelper{ RESTClient: client, @@ -147,7 +114,7 @@ func TestRESTHelperCreate(t *testing.T) { tests := []struct { Resp *http.Response - RespFunc httpClientFunc + RespFunc client.HttpClientFunc HttpErr error Modify bool Object runtime.Object @@ -192,9 +159,10 @@ func TestRESTHelperCreate(t *testing.T) { }, } for i, test := range tests { - client := &FakeRESTClient{ - Resp: test.Resp, - Err: test.HttpErr, + client := &client.FakeRESTClient{ + Codec: testapi.Codec(), + Resp: test.Resp, + Err: test.HttpErr, } if test.RespFunc != nil { client.Client = test.RespFunc @@ -275,9 +243,10 @@ func TestRESTHelperGet(t *testing.T) { }, } for _, test := range tests { - client := &FakeRESTClient{ - Resp: test.Resp, - Err: test.HttpErr, + client := &client.FakeRESTClient{ + Codec: testapi.Codec(), + Resp: test.Resp, + Err: test.HttpErr, } modifier := &RESTHelper{ RESTClient: client, @@ -317,7 +286,7 @@ func TestRESTHelperUpdate(t *testing.T) { tests := []struct { Resp *http.Response - RespFunc httpClientFunc + RespFunc client.HttpClientFunc HttpErr error Overwrite bool Object runtime.Object @@ -368,9 +337,10 @@ func TestRESTHelperUpdate(t *testing.T) { }, } for i, test := range tests { - client := &FakeRESTClient{ - Resp: test.Resp, - Err: test.HttpErr, + client := &client.FakeRESTClient{ + Codec: testapi.Codec(), + Resp: test.Resp, + Err: test.HttpErr, } if test.RespFunc != nil { client.Client = test.RespFunc