first to commit project
This commit is contained in:
78
debug/http_test.go
Normal file
78
debug/http_test.go
Normal file
@@ -0,0 +1,78 @@
|
||||
package debug
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
var (
|
||||
// mux is the HTTP request multiplexer used with the test server.
|
||||
mux *http.ServeMux
|
||||
|
||||
// server is a test HTTP server used to provide mock API responses.
|
||||
server *httptest.Server
|
||||
)
|
||||
|
||||
// setup sets up a test HTTP server along with a cos.Client that is
|
||||
// configured to talk to that test server. Tests should register handlers on
|
||||
// mux which provide mock responses for the API method being tested.
|
||||
func setup() {
|
||||
// test server
|
||||
mux = http.NewServeMux()
|
||||
server = httptest.NewServer(mux)
|
||||
}
|
||||
|
||||
// teardown closes the test HTTP server.
|
||||
func teardown() {
|
||||
server.Close()
|
||||
}
|
||||
|
||||
func TestDebugRequestTransport(t *testing.T) {
|
||||
setup()
|
||||
defer teardown()
|
||||
|
||||
mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
|
||||
w.Header().Add("X-Test-Response", "2333")
|
||||
w.WriteHeader(http.StatusBadGateway)
|
||||
w.Write([]byte("test response body"))
|
||||
})
|
||||
|
||||
w := bytes.NewBufferString("")
|
||||
client := http.Client{}
|
||||
|
||||
client.Transport = &DebugRequestTransport{
|
||||
RequestHeader: true,
|
||||
RequestBody: true,
|
||||
ResponseHeader: true,
|
||||
ResponseBody: true,
|
||||
Writer: w,
|
||||
}
|
||||
|
||||
body := bytes.NewReader([]byte("test_request body"))
|
||||
req, _ := http.NewRequest("GET", server.URL, body)
|
||||
req.Header.Add("X-Test-Debug", "123")
|
||||
client.Do(req)
|
||||
|
||||
b := make([]byte, 800)
|
||||
w.Read(b)
|
||||
info := string(b)
|
||||
if !strings.Contains(info, "GET / HTTP/1.1\r\n") ||
|
||||
!strings.Contains(info, "X-Test-Debug: 123\r\n") {
|
||||
t.Errorf("DebugRequestTransport debug info %#v don't contains request header", info)
|
||||
}
|
||||
if !strings.Contains(info, "\r\n\r\ntest_request body") {
|
||||
t.Errorf("DebugRequestTransport debug info %#v don't contains request body", info)
|
||||
}
|
||||
|
||||
if !strings.Contains(info, "HTTP/1.1 502 Bad Gateway\r\n") ||
|
||||
!strings.Contains(info, "X-Test-Response: 2333\r\n") {
|
||||
t.Errorf("DebugRequestTransport debug info %#v don't contains response header", info)
|
||||
}
|
||||
|
||||
if !strings.Contains(info, "\r\n\r\ntest response body") {
|
||||
t.Errorf("DebugRequestTransport debug info %#v don't contains response body", info)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user