MITM proxy
This commit is contained in:
57
mitmproxy/mitm_test.go
Normal file
57
mitmproxy/mitm_test.go
Normal file
@@ -0,0 +1,57 @@
|
||||
package mitmproxy
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"net/url"
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
"github.com/AdguardTeam/AdGuardHome/filters"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func prepareTestDir() string {
|
||||
const dir = "./agh-test"
|
||||
_ = os.RemoveAll(dir)
|
||||
_ = os.MkdirAll(dir, 0755)
|
||||
return dir
|
||||
}
|
||||
|
||||
func TestMITM(t *testing.T) {
|
||||
dir := prepareTestDir()
|
||||
defer func() { _ = os.RemoveAll(dir) }()
|
||||
|
||||
fconf := filters.Conf{}
|
||||
fconf.FilterDir = dir
|
||||
fconf.HTTPClient = http.DefaultClient
|
||||
filters := filters.New(fconf)
|
||||
|
||||
conf := Config{}
|
||||
conf.Enabled = true
|
||||
conf.CertDir = dir
|
||||
conf.RegenCert = true
|
||||
conf.ListenAddr = "127.0.0.1:8081"
|
||||
conf.Filter = filters
|
||||
s := New(conf)
|
||||
assert.NotNil(t, s)
|
||||
|
||||
err := s.Start()
|
||||
assert.Nil(t, err)
|
||||
|
||||
proxyURL, _ := url.Parse("http://127.0.0.1:8081")
|
||||
transport := &http.Transport{
|
||||
Proxy: http.ProxyURL(proxyURL),
|
||||
}
|
||||
c := http.Client{
|
||||
Transport: transport,
|
||||
}
|
||||
resp, err := c.Get("http://example.com/")
|
||||
assert.Nil(t, err)
|
||||
assert.Equal(t, http.StatusOK, resp.StatusCode)
|
||||
|
||||
resp, err = c.Get("http://adguardhome.api/cert.crt")
|
||||
assert.Nil(t, err)
|
||||
assert.Equal(t, http.StatusOK, resp.StatusCode)
|
||||
|
||||
s.Close()
|
||||
}
|
||||
Reference in New Issue
Block a user