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  }