github.com/linapex/ethereum-dpos-chinese@v0.0.0-20190316121959-b78b3a4a1ece/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 12:09:46</date>
    10  //</624342669362991104>
    11  
    12  //
    13  //
    14  //
    15  //
    16  //
    17  //
    18  //
    19  //
    20  //
    21  //
    22  //
    23  //
    24  //
    25  //
    26  //
    27  
    28  package http
    29  
    30  import (
    31  	"io/ioutil"
    32  	"net"
    33  	"net/http"
    34  	"net/http/httptest"
    35  	"strings"
    36  	"testing"
    37  	"time"
    38  )
    39  
    40  func TestRoundTripper(t *testing.T) {
    41  	serveMux := http.NewServeMux()
    42  	serveMux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
    43  		if r.Method == "GET" {
    44  			w.Header().Set("Content-Type", "text/plain")
    45  			http.ServeContent(w, r, "", time.Unix(0, 0), strings.NewReader(r.RequestURI))
    46  		} else {
    47  			http.Error(w, "Method "+r.Method+" is not supported.", http.StatusMethodNotAllowed)
    48  		}
    49  	})
    50  
    51  	srv := httptest.NewServer(serveMux)
    52  	defer srv.Close()
    53  
    54  	host, port, _ := net.SplitHostPort(srv.Listener.Addr().String())
    55  	rt := &RoundTripper{Host: host, Port: port}
    56  	trans := &http.Transport{}
    57  	trans.RegisterProtocol("bzz", rt)
    58  	client := &http.Client{Transport: trans}
    59  resp, err := client.Get("bzz://
    60  	if err != nil {
    61  		t.Errorf("expected no error, got %v", err)
    62  		return
    63  	}
    64  
    65  	defer func() {
    66  		if resp != nil {
    67  			resp.Body.Close()
    68  		}
    69  	}()
    70  
    71  	content, err := ioutil.ReadAll(resp.Body)
    72  	if err != nil {
    73  		t.Errorf("expected no error, got %v", err)
    74  		return
    75  	}
    76  	if string(content) != "/HTTP/1.1:/test.com/path" {
    77  		t.Errorf("incorrect response from http server: expected '%v', got '%v'", "/HTTP/1.1:/test.com/path", string(content))
    78  	}
    79  
    80  }
    81