58 lines
1.1 KiB
Go
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()
|
|
}
|