mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-29 14:37:00 +00:00
Merge pull request #17517 from krousey/request_tests
Auto commit by PR queue bot
This commit is contained in:
commit
203f119579
@ -708,7 +708,7 @@ func TestDoRequestNewWay(t *testing.T) {
|
||||
}
|
||||
testServer := httptest.NewServer(&fakeHandler)
|
||||
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").
|
||||
Prefix("foo", "bar").
|
||||
Suffix("baz").
|
||||
@ -727,9 +727,6 @@ func TestDoRequestNewWay(t *testing.T) {
|
||||
requestURL := testapi.Default.ResourcePathWithPrefix("foo/bar", "", "", "baz")
|
||||
requestURL += "?timeout=1s"
|
||||
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) {
|
||||
@ -748,7 +745,7 @@ func TestCheckRetryClosesBody(t *testing.T) {
|
||||
}))
|
||||
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").
|
||||
Prefix("foo", "bar").
|
||||
Suffix("baz").
|
||||
@ -780,7 +777,7 @@ func TestCheckRetryHandles429And5xx(t *testing.T) {
|
||||
}))
|
||||
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").
|
||||
Prefix("foo", "bar").
|
||||
Suffix("baz").
|
||||
@ -796,7 +793,7 @@ func TestCheckRetryHandles429And5xx(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func BenchmarkCheckRetryClosesBody(t *testing.B) {
|
||||
func BenchmarkCheckRetryClosesBody(b *testing.B) {
|
||||
count := 0
|
||||
testServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
|
||||
count++
|
||||
@ -809,16 +806,16 @@ func BenchmarkCheckRetryClosesBody(t *testing.B) {
|
||||
}))
|
||||
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").
|
||||
Prefix("foo", "bar").
|
||||
Suffix("baz").
|
||||
Timeout(time.Second).
|
||||
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 {
|
||||
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,
|
||||
}
|
||||
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").
|
||||
Resource("bar").
|
||||
Name("baz").
|
||||
@ -860,9 +858,6 @@ func TestDoRequestNewWayReader(t *testing.T) {
|
||||
requestURL := testapi.Default.ResourcePathWithPrefix("foo", "bar", "", "baz")
|
||||
requestURL += "?" + unversioned.LabelSelectorQueryParam(testapi.Default.Version()) + "=name%3Dfoo&timeout=1s"
|
||||
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) {
|
||||
@ -880,7 +875,8 @@ func TestDoRequestNewWayObj(t *testing.T) {
|
||||
T: t,
|
||||
}
|
||||
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").
|
||||
Suffix("baz").
|
||||
Name("bar").
|
||||
@ -902,9 +898,6 @@ func TestDoRequestNewWayObj(t *testing.T) {
|
||||
requestURL := testapi.Default.ResourcePath("foo", "", "bar/baz")
|
||||
requestURL += "?" + unversioned.LabelSelectorQueryParam(testapi.Default.Version()) + "=name%3Dfoo&timeout=1s"
|
||||
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) {
|
||||
@ -936,7 +929,8 @@ func TestDoRequestNewWayFile(t *testing.T) {
|
||||
T: t,
|
||||
}
|
||||
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
|
||||
obj, err := c.Verb("POST").
|
||||
Prefix("foo/bar", "baz").
|
||||
@ -959,9 +953,6 @@ func TestDoRequestNewWayFile(t *testing.T) {
|
||||
requestURL := testapi.Default.ResourcePathWithPrefix("foo/bar/baz", "", "", "")
|
||||
requestURL += "?timeout=1s"
|
||||
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) {
|
||||
@ -983,7 +974,8 @@ func TestWasCreated(t *testing.T) {
|
||||
T: t,
|
||||
}
|
||||
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
|
||||
obj, err := c.Verb("PUT").
|
||||
Prefix("foo/bar", "baz").
|
||||
@ -1007,13 +999,10 @@ func TestWasCreated(t *testing.T) {
|
||||
requestURL := testapi.Default.ResourcePathWithPrefix("foo/bar/baz", "", "", "")
|
||||
requestURL += "?timeout=1s"
|
||||
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) {
|
||||
c := NewOrDie(&Config{})
|
||||
c := testRESTClient(t, nil)
|
||||
if r := c.Post(); r.verb != "POST" {
|
||||
t.Errorf("Post verb is wrong")
|
||||
}
|
||||
@ -1030,7 +1019,7 @@ func TestVerbs(t *testing.T) {
|
||||
|
||||
func TestAbsPath(t *testing.T) {
|
||||
expectedPath := "/bar/foo"
|
||||
c := NewOrDie(&Config{})
|
||||
c := testRESTClient(t, nil)
|
||||
r := c.Post().Prefix("/foo").AbsPath(expectedPath)
|
||||
if 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 {
|
||||
c := NewOrDie(&Config{})
|
||||
r := c.Get().AbsPath("").UintParam(item.name, item.testVal)
|
||||
u, _ := url.Parse("http://localhost")
|
||||
r := NewRequest(nil, "GET", u, "test", nil).AbsPath("").UintParam(item.name, item.testVal)
|
||||
if e, a := item.expectStr, r.URL().String(); e != a {
|
||||
t.Errorf("expected %v, got %v", e, a)
|
||||
}
|
||||
@ -1067,7 +1056,7 @@ func TestUnacceptableParamNames(t *testing.T) {
|
||||
}
|
||||
|
||||
for _, item := range table {
|
||||
c := NewOrDie(&Config{})
|
||||
c := testRESTClient(t, nil)
|
||||
r := c.Get().setParam(item.name, item.testVal)
|
||||
if e, a := item.expectSuccess, r.err == nil; e != a {
|
||||
t.Errorf("expected %v, got %v (%v)", e, a, r.err)
|
||||
@ -1090,7 +1079,7 @@ func TestBody(t *testing.T) {
|
||||
}
|
||||
f.Close()
|
||||
|
||||
c := NewOrDie(&Config{})
|
||||
c := testRESTClient(t, nil)
|
||||
tests := []struct {
|
||||
input interface{}
|
||||
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) {
|
||||
var table = []struct {
|
||||
t watch.EventType
|
||||
@ -1148,7 +1126,6 @@ func TestWatch(t *testing.T) {
|
||||
}
|
||||
|
||||
testServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
checkAuth(t, "user", "pass", r)
|
||||
flusher, ok := w.(http.Flusher)
|
||||
if !ok {
|
||||
panic("need flusher!")
|
||||
@ -1166,17 +1143,9 @@ func TestWatch(t *testing.T) {
|
||||
flusher.Flush()
|
||||
}
|
||||
}))
|
||||
defer testServer.Close()
|
||||
|
||||
s, err := New(&Config{
|
||||
Host: testServer.URL,
|
||||
Version: testapi.Default.Version(),
|
||||
Username: "user",
|
||||
Password: "pass",
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
}
|
||||
|
||||
s := testRESTClient(t, testServer)
|
||||
watching, err := s.Get().Prefix("path/to/watch/thing").Watch()
|
||||
if err != nil {
|
||||
t.Fatalf("Unexpected error")
|
||||
@ -1205,7 +1174,6 @@ func TestStream(t *testing.T) {
|
||||
expectedBody := "expected body"
|
||||
|
||||
testServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
checkAuth(t, "user", "pass", r)
|
||||
flusher, ok := w.(http.Flusher)
|
||||
if !ok {
|
||||
panic("need flusher!")
|
||||
@ -1215,16 +1183,9 @@ func TestStream(t *testing.T) {
|
||||
w.Write([]byte(expectedBody))
|
||||
flusher.Flush()
|
||||
}))
|
||||
defer testServer.Close()
|
||||
|
||||
s, err := New(&Config{
|
||||
Host: testServer.URL,
|
||||
Version: testapi.Default.Version(),
|
||||
Username: "user",
|
||||
Password: "pass",
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
}
|
||||
s := testRESTClient(t, testServer)
|
||||
readCloser, err := s.Get().Prefix("path/to/stream/thing").Stream()
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
@ -1238,3 +1199,16 @@ func TestStream(t *testing.T) {
|
||||
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