github.com/keysonZZZ/kmg@v0.0.0-20151121023212-05317bfd7d39/kmgNet/kmgHttp/goHttp_test.go (about)

     1  package kmgHttp
     2  
     3  import (
     4  	"bytes"
     5  	"net/http"
     6  	"testing"
     7  
     8  	"net/http/httptest"
     9  
    10  	. "github.com/bronze1man/kmg/kmgTest"
    11  )
    12  
    13  func TestMustRequestToStringCanRead(ot *testing.T) {
    14  	body := bytes.NewReader([]byte("123"))
    15  	req, err := http.NewRequest("POST", "http://foo.com", body)
    16  	Equal(err, nil)
    17  	s1 := MustRequestToStringCanRead(req)
    18  	Equal(s1, "POST / HTTP/1.1\r\n"+
    19  		"Host: foo.com\r\n"+
    20  		"User-Agent: Go 1.1 package http\r\n"+
    21  		"Content-Length: 3\r\n"+
    22  		"\r\n"+
    23  		"123")
    24  	s2 := MustRequestToStringCanRead(req)
    25  	Equal(s1, s2)
    26  	req2 := MustRequestFromString(s1)
    27  	Equal(req2.Host, req.Host)
    28  }
    29  
    30  func TestAddFileToHttpPathToServeMux(t *testing.T) {
    31  	{
    32  		mux := http.NewServeMux()
    33  		MustAddFileToHttpPathToServeMux(mux, "/test/", "test")
    34  		MustAddFileToHttpPathToServeMux(mux, "/test3", "test")
    35  		MustAddFileToHttpPathToServeMux(mux, "test4", "test")
    36  		MustAddFileToHttpPathToServeMux(mux, "/test2/2.html", "test/1.html")
    37  		mux.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) {
    38  			panic("should not run to here " + req.URL.String())
    39  		})
    40  		ts := httptest.NewServer(mux)
    41  		defer ts.Close()
    42  
    43  		b := MustUrlGetContent(ts.URL + "/test/1.html")
    44  		Equal(b, []byte("1.html"))
    45  
    46  		b = MustUrlGetContent(ts.URL + "/test2/2.html")
    47  		Equal(b, []byte("1.html"))
    48  
    49  		b = MustUrlGetContent(ts.URL + "/test3/1.html")
    50  		Equal(b, []byte("1.html"))
    51  
    52  		b = MustUrlGetContent(ts.URL + "/test4/1.html")
    53  		Equal(b, []byte("1.html"))
    54  
    55  		resp, err := http.Get(ts.URL + "/test/2.html")
    56  		Equal(err, nil)
    57  		Equal(resp.StatusCode, 404)
    58  	}
    59  
    60  	{
    61  		mux := http.NewServeMux()
    62  		MustAddFileToHttpPathToServeMux(mux, "/test/1.html", "test/1.html")
    63  		ts := httptest.NewServer(mux)
    64  		defer ts.Close()
    65  
    66  		b := MustUrlGetContent(ts.URL + "/test/1.html")
    67  		Equal(b, []byte("1.html"))
    68  	}
    69  }