github.com/qiniu/go-sdk/v7@v7.27.0/internal/clientv2/request_test.go (about) 1 //go:build unit 2 // +build unit 3 4 package clientv2 5 6 import ( 7 "net/http" 8 "testing" 9 ) 10 11 func TestGetJsonRequestBody(t *testing.T) { 12 runTestCase := func(t *testing.T, getBody GetRequestBody) { 13 params := RequestParams{Header: make(http.Header)} 14 readCloser, err := getBody(¶ms) 15 if err != nil { 16 t.Fatal(err) 17 } 18 defer readCloser.Close() 19 20 buf := make([]byte, 1024) 21 n, err := readCloser.Read(buf) 22 if err != nil { 23 t.Fatal(err) 24 } 25 if string(buf[:n]) != `{"v":"value","v2":10}` { 26 t.Fatal("invalid body") 27 } else if params.Header.Get("Content-Type") != "application/json" { 28 t.Fatal("invalid header") 29 } else if params.Header.Get("Content-Length") != "21" { 30 t.Fatal("invalid header") 31 } else if err = readCloser.Close(); err != nil { 32 t.Fatal(err) 33 } 34 } 35 type S struct { 36 V string `json:"v"` 37 V2 int `json:"v2"` 38 } 39 40 getBody, err := GetJsonRequestBody(S{V: "value", V2: 10}) 41 if err != nil { 42 t.Fatal(err) 43 } 44 runTestCase(t, getBody) 45 runTestCase(t, getBody) 46 } 47 48 func TestGetFormRequestBody(t *testing.T) { 49 runTestCase := func(t *testing.T, getBody GetRequestBody) { 50 params := RequestParams{Header: make(http.Header)} 51 readCloser, err := getBody(¶ms) 52 if err != nil { 53 t.Fatal(err) 54 } 55 defer readCloser.Close() 56 57 buf := make([]byte, 1024) 58 n, err := readCloser.Read(buf) 59 if err != nil { 60 t.Fatal(err) 61 } 62 if string(buf[:n]) != `v=value&v2=1&v2=2&v2=3` { 63 t.Fatal("invalid body") 64 } else if params.Header.Get("Content-Type") != "application/x-www-form-urlencoded" { 65 t.Fatal("invalid header") 66 } else if params.Header.Get("Content-Length") != "22" { 67 t.Fatal("invalid header") 68 } else if err = readCloser.Close(); err != nil { 69 t.Fatal(err) 70 } 71 } 72 73 getBody := GetFormRequestBody(map[string][]string{"v": {"value"}, "v2": {"1", "2", "3"}}) 74 runTestCase(t, getBody) 75 runTestCase(t, getBody) 76 }