github.com/linapex/ethereum-go-chinese@v0.0.0-20190316121929-f8b7a73c3fa1/swarm/api/http/roundtripper_test.go (about)

     1  
     2  //<developer>
     3  //    <name>linapex 曹一峰</name>
     4  //    <email>linapex@163.com</email>
     5  //    <wx>superexc</wx>
     6  //    <qqgroup>128148617</qqgroup>
     7  //    <url>https://jsq.ink</url>
     8  //    <role>pku engineer</role>
     9  //    <date>2019-03-16 19:16:43</date>
    10  //</624450111962877952>
    11  
    12  
    13  package http
    14  
    15  import (
    16  	"io/ioutil"
    17  	"net"
    18  	"net/http"
    19  	"net/http/httptest"
    20  	"strings"
    21  	"testing"
    22  	"time"
    23  )
    24  
    25  func TestRoundTripper(t *testing.T) {
    26  	serveMux := http.NewServeMux()
    27  	serveMux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
    28  		if r.Method == "GET" {
    29  			w.Header().Set("Content-Type", "text/plain")
    30  			http.ServeContent(w, r, "", time.Unix(0, 0), strings.NewReader(r.RequestURI))
    31  		} else {
    32  			http.Error(w, "Method "+r.Method+" is not supported.", http.StatusMethodNotAllowed)
    33  		}
    34  	})
    35  
    36  	srv := httptest.NewServer(serveMux)
    37  	defer srv.Close()
    38  
    39  	host, port, _ := net.SplitHostPort(srv.Listener.Addr().String())
    40  	rt := &RoundTripper{Host: host, Port: port}
    41  	trans := &http.Transport{}
    42  	trans.RegisterProtocol("bzz", rt)
    43  	client := &http.Client{Transport: trans}
    44  resp, err := client.Get("bzz://COM/PATH“测试”
    45  	if err != nil {
    46  		t.Errorf("expected no error, got %v", err)
    47  		return
    48  	}
    49  
    50  	defer func() {
    51  		if resp != nil {
    52  			resp.Body.Close()
    53  		}
    54  	}()
    55  
    56  	content, err := ioutil.ReadAll(resp.Body)
    57  	if err != nil {
    58  		t.Errorf("expected no error, got %v", err)
    59  		return
    60  	}
    61  	if string(content) != "/HTTP/1.1:/test.com/path" {
    62  		t.Errorf("incorrect response from http server: expected '%v', got '%v'", "/HTTP/1.1:/test.com/path", string(content))
    63  	}
    64  
    65  }
    66