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(&params)
    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(&params)
    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  }