github.com/qiniu/x@v1.11.9/bytes/seekable/seekable_test.go (about) 1 package seekable 2 3 import ( 4 "bytes" 5 "net/http" 6 "testing" 7 ) 8 9 func assertEqual(t *testing.T, a, b interface{}) { 10 if a != b { 11 t.Fatal("assertEqual:", a, b) 12 } 13 } 14 15 func assertNoError(t *testing.T, err error) { 16 if err != nil { 17 t.Fatal("assertNoError:", err) 18 } 19 } 20 21 func TestSeekable_EOFIfReqAlreadyParsed(t *testing.T) { 22 body := "a=1" 23 req, err := http.NewRequest("POST", "/a", bytes.NewBufferString(body)) 24 assertNoError(t, err) 25 req.Header.Set("Content-Type", "application/x-www-form-urlencoded") 26 req.Header.Set("Content-Length", "3") 27 req.ParseForm() 28 _, err = New(req) 29 assertEqual(t, err.Error(), "EOF") 30 } 31 32 func TestSeekable_WorkaroundForEOF(t *testing.T) { 33 body := "a=1" 34 req, err := http.NewRequest("POST", "/a", bytes.NewBufferString(body)) 35 assertNoError(t, err) 36 req.Header.Set("Content-Type", "application/x-www-form-urlencoded") 37 req.Header.Set("Content-Length", "3") 38 _, _ = New(req) 39 req.ParseForm() 40 assertEqual(t, req.FormValue("a"), "1") 41 _, err = New(req) 42 assertNoError(t, err) 43 } 44 45 func TestSeekable(t *testing.T) { 46 body := "a=1" 47 req, err := http.NewRequest("POST", "/a", bytes.NewBufferString(body)) 48 assertNoError(t, err) 49 req.Header.Set("Content-Type", "application/x-www-form-urlencoded") 50 req.Header.Set("Content-Length", "3") 51 _, err = New(req) 52 assertNoError(t, err) 53 }