mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-04 09:49:50 +00:00
Cleaning up client request unit tests
1. Closing test servers that we open. 2. Remove dependency on Config and just call NewRESTClient directly 3. Remove auth tests as they are redundant to the tests in transport_test.go
This commit is contained in:
parent
6383a3bc75
commit
7f6d2e8305
@ -708,7 +708,7 @@ func TestDoRequestNewWay(t *testing.T) {
|
|||||||
}
|
}
|
||||||
testServer := httptest.NewServer(&fakeHandler)
|
testServer := httptest.NewServer(&fakeHandler)
|
||||||
defer testServer.Close()
|
defer testServer.Close()
|
||||||
c := NewOrDie(&Config{Host: testServer.URL, Version: testapi.Default.Version(), Username: "user", Password: "pass"})
|
c := testRESTClient(t, testServer)
|
||||||
obj, err := c.Verb("POST").
|
obj, err := c.Verb("POST").
|
||||||
Prefix("foo", "bar").
|
Prefix("foo", "bar").
|
||||||
Suffix("baz").
|
Suffix("baz").
|
||||||
@ -727,9 +727,6 @@ func TestDoRequestNewWay(t *testing.T) {
|
|||||||
requestURL := testapi.Default.ResourcePathWithPrefix("foo/bar", "", "", "baz")
|
requestURL := testapi.Default.ResourcePathWithPrefix("foo/bar", "", "", "baz")
|
||||||
requestURL += "?timeout=1s"
|
requestURL += "?timeout=1s"
|
||||||
fakeHandler.ValidateRequest(t, requestURL, "POST", &reqBody)
|
fakeHandler.ValidateRequest(t, requestURL, "POST", &reqBody)
|
||||||
if fakeHandler.RequestReceived.Header["Authorization"] == nil {
|
|
||||||
t.Errorf("Request is missing authorization header: %#v", *fakeHandler.RequestReceived)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestCheckRetryClosesBody(t *testing.T) {
|
func TestCheckRetryClosesBody(t *testing.T) {
|
||||||
@ -748,7 +745,7 @@ func TestCheckRetryClosesBody(t *testing.T) {
|
|||||||
}))
|
}))
|
||||||
defer testServer.Close()
|
defer testServer.Close()
|
||||||
|
|
||||||
c := NewOrDie(&Config{Host: testServer.URL, Version: testapi.Default.Version(), Username: "user", Password: "pass"})
|
c := testRESTClient(t, testServer)
|
||||||
_, err := c.Verb("POST").
|
_, err := c.Verb("POST").
|
||||||
Prefix("foo", "bar").
|
Prefix("foo", "bar").
|
||||||
Suffix("baz").
|
Suffix("baz").
|
||||||
@ -780,7 +777,7 @@ func TestCheckRetryHandles429And5xx(t *testing.T) {
|
|||||||
}))
|
}))
|
||||||
defer testServer.Close()
|
defer testServer.Close()
|
||||||
|
|
||||||
c := NewOrDie(&Config{Host: testServer.URL, Version: testapi.Default.Version(), Username: "user", Password: "pass"})
|
c := testRESTClient(t, testServer)
|
||||||
_, err := c.Verb("POST").
|
_, err := c.Verb("POST").
|
||||||
Prefix("foo", "bar").
|
Prefix("foo", "bar").
|
||||||
Suffix("baz").
|
Suffix("baz").
|
||||||
@ -796,7 +793,7 @@ func TestCheckRetryHandles429And5xx(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func BenchmarkCheckRetryClosesBody(t *testing.B) {
|
func BenchmarkCheckRetryClosesBody(b *testing.B) {
|
||||||
count := 0
|
count := 0
|
||||||
testServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
|
testServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
|
||||||
count++
|
count++
|
||||||
@ -809,16 +806,16 @@ func BenchmarkCheckRetryClosesBody(t *testing.B) {
|
|||||||
}))
|
}))
|
||||||
defer testServer.Close()
|
defer testServer.Close()
|
||||||
|
|
||||||
c := NewOrDie(&Config{Host: testServer.URL, Version: testapi.Default.Version(), Username: "user", Password: "pass"})
|
c := testRESTClient(b, testServer)
|
||||||
r := c.Verb("POST").
|
r := c.Verb("POST").
|
||||||
Prefix("foo", "bar").
|
Prefix("foo", "bar").
|
||||||
Suffix("baz").
|
Suffix("baz").
|
||||||
Timeout(time.Second).
|
Timeout(time.Second).
|
||||||
Body([]byte(strings.Repeat("abcd", 1000)))
|
Body([]byte(strings.Repeat("abcd", 1000)))
|
||||||
|
|
||||||
for i := 0; i < t.N; i++ {
|
for i := 0; i < b.N; i++ {
|
||||||
if _, err := r.DoRaw(); err != nil {
|
if _, err := r.DoRaw(); err != nil {
|
||||||
t.Fatalf("Unexpected error: %v %#v", err, err)
|
b.Fatalf("Unexpected error: %v %#v", err, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -838,7 +835,8 @@ func TestDoRequestNewWayReader(t *testing.T) {
|
|||||||
T: t,
|
T: t,
|
||||||
}
|
}
|
||||||
testServer := httptest.NewServer(&fakeHandler)
|
testServer := httptest.NewServer(&fakeHandler)
|
||||||
c := NewOrDie(&Config{Host: testServer.URL, Version: testapi.Default.Version(), Username: "user", Password: "pass"})
|
defer testServer.Close()
|
||||||
|
c := testRESTClient(t, testServer)
|
||||||
obj, err := c.Verb("POST").
|
obj, err := c.Verb("POST").
|
||||||
Resource("bar").
|
Resource("bar").
|
||||||
Name("baz").
|
Name("baz").
|
||||||
@ -860,9 +858,6 @@ func TestDoRequestNewWayReader(t *testing.T) {
|
|||||||
requestURL := testapi.Default.ResourcePathWithPrefix("foo", "bar", "", "baz")
|
requestURL := testapi.Default.ResourcePathWithPrefix("foo", "bar", "", "baz")
|
||||||
requestURL += "?" + unversioned.LabelSelectorQueryParam(testapi.Default.Version()) + "=name%3Dfoo&timeout=1s"
|
requestURL += "?" + unversioned.LabelSelectorQueryParam(testapi.Default.Version()) + "=name%3Dfoo&timeout=1s"
|
||||||
fakeHandler.ValidateRequest(t, requestURL, "POST", &tmpStr)
|
fakeHandler.ValidateRequest(t, requestURL, "POST", &tmpStr)
|
||||||
if fakeHandler.RequestReceived.Header["Authorization"] == nil {
|
|
||||||
t.Errorf("Request is missing authorization header: %#v", *fakeHandler.RequestReceived)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestDoRequestNewWayObj(t *testing.T) {
|
func TestDoRequestNewWayObj(t *testing.T) {
|
||||||
@ -880,7 +875,8 @@ func TestDoRequestNewWayObj(t *testing.T) {
|
|||||||
T: t,
|
T: t,
|
||||||
}
|
}
|
||||||
testServer := httptest.NewServer(&fakeHandler)
|
testServer := httptest.NewServer(&fakeHandler)
|
||||||
c := NewOrDie(&Config{Host: testServer.URL, Version: testapi.Default.Version(), Username: "user", Password: "pass"})
|
defer testServer.Close()
|
||||||
|
c := testRESTClient(t, testServer)
|
||||||
obj, err := c.Verb("POST").
|
obj, err := c.Verb("POST").
|
||||||
Suffix("baz").
|
Suffix("baz").
|
||||||
Name("bar").
|
Name("bar").
|
||||||
@ -902,9 +898,6 @@ func TestDoRequestNewWayObj(t *testing.T) {
|
|||||||
requestURL := testapi.Default.ResourcePath("foo", "", "bar/baz")
|
requestURL := testapi.Default.ResourcePath("foo", "", "bar/baz")
|
||||||
requestURL += "?" + unversioned.LabelSelectorQueryParam(testapi.Default.Version()) + "=name%3Dfoo&timeout=1s"
|
requestURL += "?" + unversioned.LabelSelectorQueryParam(testapi.Default.Version()) + "=name%3Dfoo&timeout=1s"
|
||||||
fakeHandler.ValidateRequest(t, requestURL, "POST", &tmpStr)
|
fakeHandler.ValidateRequest(t, requestURL, "POST", &tmpStr)
|
||||||
if fakeHandler.RequestReceived.Header["Authorization"] == nil {
|
|
||||||
t.Errorf("Request is missing authorization header: %#v", *fakeHandler.RequestReceived)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestDoRequestNewWayFile(t *testing.T) {
|
func TestDoRequestNewWayFile(t *testing.T) {
|
||||||
@ -936,7 +929,8 @@ func TestDoRequestNewWayFile(t *testing.T) {
|
|||||||
T: t,
|
T: t,
|
||||||
}
|
}
|
||||||
testServer := httptest.NewServer(&fakeHandler)
|
testServer := httptest.NewServer(&fakeHandler)
|
||||||
c := NewOrDie(&Config{Host: testServer.URL, Version: testapi.Default.Version(), Username: "user", Password: "pass"})
|
defer testServer.Close()
|
||||||
|
c := testRESTClient(t, testServer)
|
||||||
wasCreated := true
|
wasCreated := true
|
||||||
obj, err := c.Verb("POST").
|
obj, err := c.Verb("POST").
|
||||||
Prefix("foo/bar", "baz").
|
Prefix("foo/bar", "baz").
|
||||||
@ -959,9 +953,6 @@ func TestDoRequestNewWayFile(t *testing.T) {
|
|||||||
requestURL := testapi.Default.ResourcePathWithPrefix("foo/bar/baz", "", "", "")
|
requestURL := testapi.Default.ResourcePathWithPrefix("foo/bar/baz", "", "", "")
|
||||||
requestURL += "?timeout=1s"
|
requestURL += "?timeout=1s"
|
||||||
fakeHandler.ValidateRequest(t, requestURL, "POST", &tmpStr)
|
fakeHandler.ValidateRequest(t, requestURL, "POST", &tmpStr)
|
||||||
if fakeHandler.RequestReceived.Header["Authorization"] == nil {
|
|
||||||
t.Errorf("Request is missing authorization header: %#v", *fakeHandler.RequestReceived)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestWasCreated(t *testing.T) {
|
func TestWasCreated(t *testing.T) {
|
||||||
@ -983,7 +974,8 @@ func TestWasCreated(t *testing.T) {
|
|||||||
T: t,
|
T: t,
|
||||||
}
|
}
|
||||||
testServer := httptest.NewServer(&fakeHandler)
|
testServer := httptest.NewServer(&fakeHandler)
|
||||||
c := NewOrDie(&Config{Host: testServer.URL, Version: testapi.Default.Version(), Username: "user", Password: "pass"})
|
defer testServer.Close()
|
||||||
|
c := testRESTClient(t, testServer)
|
||||||
wasCreated := false
|
wasCreated := false
|
||||||
obj, err := c.Verb("PUT").
|
obj, err := c.Verb("PUT").
|
||||||
Prefix("foo/bar", "baz").
|
Prefix("foo/bar", "baz").
|
||||||
@ -1007,13 +999,10 @@ func TestWasCreated(t *testing.T) {
|
|||||||
requestURL := testapi.Default.ResourcePathWithPrefix("foo/bar/baz", "", "", "")
|
requestURL := testapi.Default.ResourcePathWithPrefix("foo/bar/baz", "", "", "")
|
||||||
requestURL += "?timeout=1s"
|
requestURL += "?timeout=1s"
|
||||||
fakeHandler.ValidateRequest(t, requestURL, "PUT", &tmpStr)
|
fakeHandler.ValidateRequest(t, requestURL, "PUT", &tmpStr)
|
||||||
if fakeHandler.RequestReceived.Header["Authorization"] == nil {
|
|
||||||
t.Errorf("Request is missing authorization header: %#v", *fakeHandler.RequestReceived)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestVerbs(t *testing.T) {
|
func TestVerbs(t *testing.T) {
|
||||||
c := NewOrDie(&Config{})
|
c := testRESTClient(t, nil)
|
||||||
if r := c.Post(); r.verb != "POST" {
|
if r := c.Post(); r.verb != "POST" {
|
||||||
t.Errorf("Post verb is wrong")
|
t.Errorf("Post verb is wrong")
|
||||||
}
|
}
|
||||||
@ -1030,7 +1019,7 @@ func TestVerbs(t *testing.T) {
|
|||||||
|
|
||||||
func TestAbsPath(t *testing.T) {
|
func TestAbsPath(t *testing.T) {
|
||||||
expectedPath := "/bar/foo"
|
expectedPath := "/bar/foo"
|
||||||
c := NewOrDie(&Config{})
|
c := testRESTClient(t, nil)
|
||||||
r := c.Post().Prefix("/foo").AbsPath(expectedPath)
|
r := c.Post().Prefix("/foo").AbsPath(expectedPath)
|
||||||
if r.path != expectedPath {
|
if r.path != expectedPath {
|
||||||
t.Errorf("unexpected path: %s, expected %s", r.path, expectedPath)
|
t.Errorf("unexpected path: %s, expected %s", r.path, expectedPath)
|
||||||
@ -1049,8 +1038,8 @@ func TestUintParam(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, item := range table {
|
for _, item := range table {
|
||||||
c := NewOrDie(&Config{})
|
u, _ := url.Parse("http://localhost")
|
||||||
r := c.Get().AbsPath("").UintParam(item.name, item.testVal)
|
r := NewRequest(nil, "GET", u, "test", nil).AbsPath("").UintParam(item.name, item.testVal)
|
||||||
if e, a := item.expectStr, r.URL().String(); e != a {
|
if e, a := item.expectStr, r.URL().String(); e != a {
|
||||||
t.Errorf("expected %v, got %v", e, a)
|
t.Errorf("expected %v, got %v", e, a)
|
||||||
}
|
}
|
||||||
@ -1067,7 +1056,7 @@ func TestUnacceptableParamNames(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, item := range table {
|
for _, item := range table {
|
||||||
c := NewOrDie(&Config{})
|
c := testRESTClient(t, nil)
|
||||||
r := c.Get().setParam(item.name, item.testVal)
|
r := c.Get().setParam(item.name, item.testVal)
|
||||||
if e, a := item.expectSuccess, r.err == nil; e != a {
|
if e, a := item.expectSuccess, r.err == nil; e != a {
|
||||||
t.Errorf("expected %v, got %v (%v)", e, a, r.err)
|
t.Errorf("expected %v, got %v (%v)", e, a, r.err)
|
||||||
@ -1090,7 +1079,7 @@ func TestBody(t *testing.T) {
|
|||||||
}
|
}
|
||||||
f.Close()
|
f.Close()
|
||||||
|
|
||||||
c := NewOrDie(&Config{})
|
c := testRESTClient(t, nil)
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
input interface{}
|
input interface{}
|
||||||
expected string
|
expected string
|
||||||
@ -1126,17 +1115,6 @@ func TestBody(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// checkAuth sets errors if the auth found in r doesn't match the expectation.
|
|
||||||
// TODO: Move to util, test in more places.
|
|
||||||
func checkAuth(t *testing.T, expectedUser, expectedPass string, r *http.Request) {
|
|
||||||
user, pass, found := r.BasicAuth()
|
|
||||||
if !found {
|
|
||||||
t.Errorf("no auth found")
|
|
||||||
} else if user != expectedUser || pass != expectedPass {
|
|
||||||
t.Fatalf("Wrong basic auth: wanted %s:%s, got %s:%s", expectedUser, expectedPass, user, pass)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestWatch(t *testing.T) {
|
func TestWatch(t *testing.T) {
|
||||||
var table = []struct {
|
var table = []struct {
|
||||||
t watch.EventType
|
t watch.EventType
|
||||||
@ -1148,7 +1126,6 @@ func TestWatch(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
testServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
testServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
checkAuth(t, "user", "pass", r)
|
|
||||||
flusher, ok := w.(http.Flusher)
|
flusher, ok := w.(http.Flusher)
|
||||||
if !ok {
|
if !ok {
|
||||||
panic("need flusher!")
|
panic("need flusher!")
|
||||||
@ -1166,17 +1143,9 @@ func TestWatch(t *testing.T) {
|
|||||||
flusher.Flush()
|
flusher.Flush()
|
||||||
}
|
}
|
||||||
}))
|
}))
|
||||||
|
defer testServer.Close()
|
||||||
|
|
||||||
s, err := New(&Config{
|
s := testRESTClient(t, testServer)
|
||||||
Host: testServer.URL,
|
|
||||||
Version: testapi.Default.Version(),
|
|
||||||
Username: "user",
|
|
||||||
Password: "pass",
|
|
||||||
})
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("unexpected error: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
watching, err := s.Get().Prefix("path/to/watch/thing").Watch()
|
watching, err := s.Get().Prefix("path/to/watch/thing").Watch()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Unexpected error")
|
t.Fatalf("Unexpected error")
|
||||||
@ -1205,7 +1174,6 @@ func TestStream(t *testing.T) {
|
|||||||
expectedBody := "expected body"
|
expectedBody := "expected body"
|
||||||
|
|
||||||
testServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
testServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
checkAuth(t, "user", "pass", r)
|
|
||||||
flusher, ok := w.(http.Flusher)
|
flusher, ok := w.(http.Flusher)
|
||||||
if !ok {
|
if !ok {
|
||||||
panic("need flusher!")
|
panic("need flusher!")
|
||||||
@ -1215,16 +1183,9 @@ func TestStream(t *testing.T) {
|
|||||||
w.Write([]byte(expectedBody))
|
w.Write([]byte(expectedBody))
|
||||||
flusher.Flush()
|
flusher.Flush()
|
||||||
}))
|
}))
|
||||||
|
defer testServer.Close()
|
||||||
|
|
||||||
s, err := New(&Config{
|
s := testRESTClient(t, testServer)
|
||||||
Host: testServer.URL,
|
|
||||||
Version: testapi.Default.Version(),
|
|
||||||
Username: "user",
|
|
||||||
Password: "pass",
|
|
||||||
})
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("unexpected error: %v", err)
|
|
||||||
}
|
|
||||||
readCloser, err := s.Get().Prefix("path/to/stream/thing").Stream()
|
readCloser, err := s.Get().Prefix("path/to/stream/thing").Stream()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("unexpected error: %v", err)
|
t.Fatalf("unexpected error: %v", err)
|
||||||
@ -1238,3 +1199,16 @@ func TestStream(t *testing.T) {
|
|||||||
t.Errorf("Expected %s, got %s", expectedBody, resultBody)
|
t.Errorf("Expected %s, got %s", expectedBody, resultBody)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func testRESTClient(t testing.TB, srv *httptest.Server) *RESTClient {
|
||||||
|
baseURL, _ := url.Parse("http://localhost")
|
||||||
|
if srv != nil {
|
||||||
|
var err error
|
||||||
|
baseURL, err = url.Parse(srv.URL)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("failed to parse test URL: %v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
baseURL.Path = testapi.Default.ResourcePath("", "", "")
|
||||||
|
return NewRESTClient(baseURL, testapi.Default.Version(), testapi.Default.Codec(), 0, 0)
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user