mirror of
https://github.com/telanflow/mps.git
synced 2025-09-27 04:45:57 +08:00
64 lines
1.3 KiB
Go
64 lines
1.3 KiB
Go
package mps
|
|
|
|
import (
|
|
"io/ioutil"
|
|
"log"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"net/url"
|
|
"testing"
|
|
)
|
|
|
|
func TestNewHttpProxy(t *testing.T) {
|
|
proxy := NewHttpProxy()
|
|
srv := httptest.NewServer(proxy)
|
|
defer srv.Close()
|
|
|
|
req, _ := http.NewRequest(http.MethodGet, "http://httpbin.org/get", nil)
|
|
http.DefaultClient.Transport = &http.Transport{
|
|
Proxy: func(r *http.Request) (*url.URL, error) {
|
|
return url.Parse(srv.URL)
|
|
},
|
|
}
|
|
|
|
resp, err := http.DefaultClient.Do(req)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer resp.Body.Close()
|
|
|
|
body, _ := ioutil.ReadAll(resp.Body)
|
|
|
|
log.Println(err)
|
|
log.Println(resp.Status)
|
|
log.Println(string(body))
|
|
}
|
|
|
|
func TestMiddlewareFunc(t *testing.T) {
|
|
proxy := NewHttpProxy()
|
|
proxy.UseFunc(func(req *http.Request, ctx *Context) (*http.Response, error) {
|
|
log.Println(req.URL.String())
|
|
return ctx.Next(req)
|
|
})
|
|
srv := httptest.NewServer(proxy)
|
|
defer srv.Close()
|
|
|
|
req, _ := http.NewRequest(http.MethodGet, "https://httpbin.org/get", nil)
|
|
http.DefaultClient.Transport = &http.Transport{
|
|
Proxy: func(r *http.Request) (*url.URL, error) {
|
|
return url.Parse(srv.URL)
|
|
},
|
|
}
|
|
|
|
resp, err := http.DefaultClient.Do(req)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer resp.Body.Close()
|
|
|
|
body, _ := ioutil.ReadAll(resp.Body)
|
|
|
|
log.Println(err)
|
|
log.Println(resp.Status)
|
|
log.Println(string(body))
|
|
} |