Files
AdGuardHome/mitmproxy/mitm_test.go
Simon Zolin f85de51452 MITM proxy
2020-08-18 19:23:33 +03:00

58 lines
1.1 KiB
Go

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()
}