1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
|
//go:build darwin
// +build darwin
package ieproxy
import (
"net/http"
"reflect"
"testing"
)
func TestPacfile(t *testing.T) {
listener, err := listenAndServeWithClose("127.0.0.1:0", http.FileServer(http.Dir("pacfile_examples")))
serverBase := "http://" + listener.Addr().String() + "/"
if err != nil {
t.Fatal(err)
}
// test inactive proxy
proxy := ProxyScriptConf{
Active: false,
PreConfiguredURL: serverBase + "simple.pac",
}
out := proxy.FindProxyForURL("http://google.com")
if out != "" {
t.Error("Got: ", out, "Expected: ", "")
}
proxy.Active = true
pacSet := []struct {
pacfile string
url string
expected string
}{
{
serverBase + "direct.pac",
"http://google.com",
"",
},
{
serverBase + "404.pac",
"http://google.com",
"",
},
{
serverBase + "simple.pac",
"http://google.com",
"127.0.0.1:8",
},
{
serverBase + "multiple.pac",
"http://google.com",
"127.0.0.1:8081",
},
{
serverBase + "except.pac",
"http://imgur.com",
"localhost:9999",
},
{
serverBase + "except.pac",
"http://example.com",
"",
},
{
"",
"http://example.com",
"",
},
{
" ",
"http://example.com",
"",
},
{
"wrong_format",
"http://example.com",
"",
},
}
for _, p := range pacSet {
proxy.PreConfiguredURL = p.pacfile
out := proxy.FindProxyForURL(p.url)
if out != p.expected {
t.Error("Got: ", out, "Expected: ", p.expected)
}
}
listener.Close()
}
var multipleMap map[string]string
func init() {
multipleMap = make(map[string]string)
multipleMap["http"] = "127.0.0.1"
multipleMap["ftp"] = "128"
}
func TestOverrideEnv(t *testing.T) {
var callStack []string
pseudoSetEnv := func(key, value string) error {
if value != "" {
callStack = append(callStack, key)
callStack = append(callStack, value)
}
return nil
}
overrideSet := []struct {
in ProxyConf
callStack []string
}{
{
callStack: []string{},
},
{
in: ProxyConf{
Static: StaticProxyConf{
Active: true,
Protocols: multipleMap,
},
},
callStack: []string{"http_proxy", "127.0.0.1"},
},
{
in: ProxyConf{
Static: StaticProxyConf{
Active: true,
NoProxy: "example.com,microsoft.com",
},
},
callStack: []string{"no_proxy", "example.com,microsoft.com"},
},
}
for _, o := range overrideSet {
callStack = []string{}
overrideEnvWithStaticProxy(o.in, pseudoSetEnv)
if !reflect.DeepEqual(o.callStack, callStack) {
t.Error("Got: ", callStack, "Expected: ", o.callStack)
}
}
}
|