56 lines
1.3 KiB
Go
Executable File
56 lines
1.3 KiB
Go
Executable File
package main
|
|
|
|
import (
|
|
"local/fproxy/fproxy"
|
|
"testing"
|
|
)
|
|
|
|
func Test_StandaloneClient(t *testing.T) {
|
|
conf := map[string]string{
|
|
"toaddr": "",
|
|
"mycrt": "./testdata/mainserver.crt",
|
|
"mykey": "./testdata/mainserver.key",
|
|
"tocrt": "",
|
|
"fromcrt": "./testdata/interclient.crt",
|
|
"port": fproxy.GetPort(),
|
|
"whitelist": "google.com,,plex.tv",
|
|
"bypass": "plex.tv",
|
|
"secure": "",
|
|
"secret": "secret",
|
|
}
|
|
fp := fproxy.New(conf["port"])
|
|
if err := fp.Apply(conf); err != nil {
|
|
t.Fatalf("error applying conf: %v", err)
|
|
}
|
|
|
|
client, err := fproxy.NewClient("./testdata/interclient.crt", "./testdata/interclient.key", "./testdata/mainserver.crt", conf["port"])
|
|
if err != nil {
|
|
t.Fatalf("cannot make client: %v", err)
|
|
}
|
|
|
|
ready := make(chan struct{})
|
|
go func() {
|
|
fp.Start()
|
|
ready <- struct{}{}
|
|
<-ready
|
|
fp.Close()
|
|
ready <- struct{}{}
|
|
}()
|
|
<-ready
|
|
|
|
if resp, err := client.Get("http://google.com"); err != nil {
|
|
t.Errorf("client cannot get: %v", err)
|
|
} else if resp.StatusCode > 399 {
|
|
t.Errorf("client status > 399: %v", resp.StatusCode)
|
|
}
|
|
|
|
if resp, err := client.Get("https://google.com"); err != nil {
|
|
t.Errorf("client cannot get: %v", err)
|
|
} else if resp.StatusCode > 399 {
|
|
t.Errorf("client status > 399: %v", resp.StatusCode)
|
|
}
|
|
|
|
ready <- struct{}{}
|
|
<-ready
|
|
}
|