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