diff --git a/pkg/client/transport/round_trippers_test.go b/pkg/client/transport/round_trippers_test.go index 5b146b4f1d8..94a2a7d2e7d 100644 --- a/pkg/client/transport/round_trippers_test.go +++ b/pkg/client/transport/round_trippers_test.go @@ -48,17 +48,25 @@ func TestBearerAuthRoundTripper(t *testing.T) { } func TestBasicAuthRoundTripper(t *testing.T) { - rt := &testRoundTripper{} - req := &http.Request{} - newBasicAuthRoundTripper("user", "pass", rt).RoundTrip(req) - if rt.Request == nil { - t.Fatalf("unexpected nil request: %v", rt) - } - if rt.Request == req { - t.Fatalf("round tripper should have copied request object: %#v", rt.Request) - } - if user, pass, found := rt.Request.BasicAuth(); !found || user != "user" || pass != "pass" { - t.Errorf("unexpected authorization header: %#v", rt.Request) + for n, tc := range map[string]struct { + user string + pass string + }{ + "basic": {user: "user", pass: "pass"}, + "no pass": {user: "user"}, + } { + rt := &testRoundTripper{} + req := &http.Request{} + newBasicAuthRoundTripper(tc.user, tc.pass, rt).RoundTrip(req) + if rt.Request == nil { + t.Fatalf("%s: unexpected nil request: %v", n, rt) + } + if rt.Request == req { + t.Fatalf("%s: round tripper should have copied request object: %#v", n, rt.Request) + } + if user, pass, found := rt.Request.BasicAuth(); !found || user != tc.user || pass != tc.pass { + t.Errorf("%s: unexpected authorization header: %#v", n, rt.Request) + } } } diff --git a/pkg/client/unversioned/helper_test.go b/pkg/client/unversioned/helper_test.go index 86bc2f5eef1..9788203ea4b 100644 --- a/pkg/client/unversioned/helper_test.go +++ b/pkg/client/unversioned/helper_test.go @@ -26,6 +26,7 @@ import ( "k8s.io/kubernetes/pkg/api/testapi" "k8s.io/kubernetes/pkg/api/unversioned" + "k8s.io/kubernetes/pkg/runtime" ) func TestIsConfigTransportTLS(t *testing.T) { @@ -191,3 +192,81 @@ func TestHelperGetServerAPIVersions(t *testing.T) { t.Errorf("expected %v, got %v", e, a) } } + +func TestSetsCodec(t *testing.T) { + testCases := map[string]struct { + Err bool + Prefix string + Codec runtime.Codec + }{ + testapi.Default.Version(): {false, "/api/" + testapi.Default.Version() + "/", testapi.Default.Codec()}, + "invalidVersion": {true, "", nil}, + } + for version, expected := range testCases { + client, err := New(&Config{Host: "127.0.0.1", GroupVersion: &unversioned.GroupVersion{Version: version}}) + switch { + case err == nil && expected.Err: + t.Errorf("expected error but was nil") + continue + case err != nil && !expected.Err: + t.Errorf("unexpected error %v", err) + continue + case err != nil: + continue + } + if e, a := expected.Prefix, client.RESTClient.baseURL.Path; e != a { + t.Errorf("expected %#v, got %#v", e, a) + } + if e, a := expected.Codec, client.RESTClient.Codec; e != a { + t.Errorf("expected %#v, got %#v", e, a) + } + } +} + +func TestRESTClientRequires(t *testing.T) { + if _, err := RESTClientFor(&Config{Host: "127.0.0.1", Codec: testapi.Default.Codec()}); err == nil { + t.Errorf("unexpected non-error") + } + if _, err := RESTClientFor(&Config{Host: "127.0.0.1", GroupVersion: testapi.Default.GroupVersion()}); err == nil { + t.Errorf("unexpected non-error") + } + if _, err := RESTClientFor(&Config{Host: "127.0.0.1", GroupVersion: testapi.Default.GroupVersion(), Codec: testapi.Default.Codec()}); err != nil { + t.Errorf("unexpected error: %v", err) + } +} + +func TestValidatesHostParameter(t *testing.T) { + testCases := []struct { + Host string + Prefix string + + URL string + Err bool + }{ + {"127.0.0.1", "", "http://127.0.0.1/" + testapi.Default.Version(), false}, + {"127.0.0.1:8080", "", "http://127.0.0.1:8080/" + testapi.Default.Version(), false}, + {"foo.bar.com", "", "http://foo.bar.com/" + testapi.Default.Version(), false}, + {"http://host/prefix", "", "http://host/prefix/" + testapi.Default.Version(), false}, + {"http://host", "", "http://host/" + testapi.Default.Version(), false}, + {"http://host", "/", "http://host/" + testapi.Default.Version(), false}, + {"http://host", "/other", "http://host/other/" + testapi.Default.Version(), false}, + {"host/server", "", "", true}, + } + for i, testCase := range testCases { + u, err := DefaultServerURL(testCase.Host, testCase.Prefix, *testapi.Default.GroupVersion(), false) + switch { + case err == nil && testCase.Err: + t.Errorf("expected error but was nil") + continue + case err != nil && !testCase.Err: + t.Errorf("unexpected error %v", err) + continue + case err != nil: + continue + } + if e, a := testCase.URL, u.String(); e != a { + t.Errorf("%d: expected host %s, got %s", i, e, a) + continue + } + } +} diff --git a/pkg/client/unversioned/restclient_test.go b/pkg/client/unversioned/restclient_test.go index 873168b8a4a..b0f66458f5f 100644 --- a/pkg/client/unversioned/restclient_test.go +++ b/pkg/client/unversioned/restclient_test.go @@ -24,156 +24,9 @@ import ( "k8s.io/kubernetes/pkg/api/testapi" "k8s.io/kubernetes/pkg/api/unversioned" - "k8s.io/kubernetes/pkg/runtime" "k8s.io/kubernetes/pkg/util" ) -func TestSetsCodec(t *testing.T) { - testCases := map[string]struct { - Err bool - Prefix string - Codec runtime.Codec - }{ - testapi.Default.Version(): {false, "/api/" + testapi.Default.Version() + "/", testapi.Default.Codec()}, - "invalidVersion": {true, "", nil}, - } - for version, expected := range testCases { - client, err := New(&Config{Host: "127.0.0.1", GroupVersion: &unversioned.GroupVersion{Version: version}}) - switch { - case err == nil && expected.Err: - t.Errorf("expected error but was nil") - continue - case err != nil && !expected.Err: - t.Errorf("unexpected error %v", err) - continue - case err != nil: - continue - } - if e, a := expected.Prefix, client.RESTClient.baseURL.Path; e != a { - t.Errorf("expected %#v, got %#v", e, a) - } - if e, a := expected.Codec, client.RESTClient.Codec; e != a { - t.Errorf("expected %#v, got %#v", e, a) - } - } -} - -func TestRESTClientRequires(t *testing.T) { - if _, err := RESTClientFor(&Config{Host: "127.0.0.1", Codec: testapi.Default.Codec()}); err == nil { - t.Errorf("unexpected non-error") - } - if _, err := RESTClientFor(&Config{Host: "127.0.0.1", GroupVersion: testapi.Default.GroupVersion()}); err == nil { - t.Errorf("unexpected non-error") - } - if _, err := RESTClientFor(&Config{Host: "127.0.0.1", GroupVersion: testapi.Default.GroupVersion(), Codec: testapi.Default.Codec()}); err != nil { - t.Errorf("unexpected error: %v", err) - } -} - -func TestValidatesHostParameter(t *testing.T) { - testCases := []struct { - Host string - Prefix string - - URL string - Err bool - }{ - {"127.0.0.1", "", "http://127.0.0.1/" + testapi.Default.Version() + "/", false}, - {"127.0.0.1:8080", "", "http://127.0.0.1:8080/" + testapi.Default.Version() + "/", false}, - {"foo.bar.com", "", "http://foo.bar.com/" + testapi.Default.Version() + "/", false}, - {"http://host/prefix", "", "http://host/prefix/" + testapi.Default.Version() + "/", false}, - {"http://host", "", "http://host/" + testapi.Default.Version() + "/", false}, - {"http://host", "/", "http://host/" + testapi.Default.Version() + "/", false}, - {"http://host", "/other", "http://host/other/" + testapi.Default.Version() + "/", false}, - {"host/server", "", "", true}, - } - for i, testCase := range testCases { - c, err := RESTClientFor(&Config{Host: testCase.Host, Prefix: testCase.Prefix, GroupVersion: testapi.Default.GroupVersion(), Codec: testapi.Default.Codec()}) - switch { - case err == nil && testCase.Err: - t.Errorf("expected error but was nil") - continue - case err != nil && !testCase.Err: - t.Errorf("unexpected error %v", err) - continue - case err != nil: - continue - } - if e, a := testCase.URL, c.baseURL.String(); e != a { - t.Errorf("%d: expected host %s, got %s", i, e, a) - continue - } - } -} - -func TestDoRequestBearer(t *testing.T) { - status := &unversioned.Status{Status: unversioned.StatusFailure} - expectedBody, _ := testapi.Default.Codec().Encode(status) - fakeHandler := util.FakeHandler{ - StatusCode: 400, - ResponseBody: string(expectedBody), - T: t, - } - testServer := httptest.NewServer(&fakeHandler) - defer testServer.Close() - request, _ := http.NewRequest("GET", testServer.URL, nil) - c, err := RESTClientFor(&Config{ - Host: testServer.URL, - GroupVersion: testapi.Default.GroupVersion(), - Codec: testapi.Default.Codec(), - BearerToken: "test", - }) - if err != nil { - t.Fatalf("unexpected error: %v", err) - } - err = c.Get().Do().Error() - if err == nil { - t.Fatalf("unexpected non-error: %v", err) - } - if fakeHandler.RequestReceived.Header.Get("Authorization") != "Bearer test" { - t.Errorf("Request is missing authorization header: %#v", *request) - } -} - -func TestDoRequestWithoutPassword(t *testing.T) { - status := &unversioned.Status{Status: unversioned.StatusFailure} - expectedBody, _ := testapi.Default.Codec().Encode(status) - fakeHandler := util.FakeHandler{ - StatusCode: 400, - ResponseBody: string(expectedBody), - T: t, - } - testServer := httptest.NewServer(&fakeHandler) - defer testServer.Close() - c, err := RESTClientFor(&Config{ - Host: testServer.URL, - GroupVersion: testapi.Default.GroupVersion(), - Codec: testapi.Default.Codec(), - Username: "test", - }) - if err != nil { - t.Fatalf("unexpected error: %v", err) - } - body, err := c.Get().Prefix("test").Do().Raw() - if err == nil { - t.Fatalf("Unexpected non-error") - } - if fakeHandler.RequestReceived.Header["Authorization"] == nil { - t.Errorf("Request is missing authorization header: %#v", fakeHandler.RequestReceived) - } - se, ok := err.(APIStatus) - if !ok { - t.Fatalf("Unexpected kind of error: %#v", err) - } - if !reflect.DeepEqual(se.Status(), *status) { - t.Errorf("Unexpected status: %#v %#v", se.Status(), status) - } - if body != nil { - t.Errorf("Expected nil body, but saw: '%s'", string(body)) - } - fakeHandler.ValidateRequest(t, "/"+testapi.Default.Version()+"/test", "GET", nil) -} - func TestDoRequestSuccess(t *testing.T) { status := &unversioned.Status{Status: unversioned.StatusSuccess} expectedBody, _ := testapi.Default.Codec().Encode(status)