35 lines
1.1 KiB
Go
35 lines
1.1 KiB
Go
package oci
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
func TestTransportForStageTimeouts(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
spec *ProxySpec
|
|
wantProxy bool // CONNECT 分支应设 Proxy 函数
|
|
}{
|
|
{name: "http CONNECT 代理", spec: &ProxySpec{Type: "http", Host: "127.0.0.1", Port: 8080}, wantProxy: true},
|
|
{name: "https CONNECT 代理", spec: &ProxySpec{Type: "https", Host: "127.0.0.1", Port: 8443}, wantProxy: true},
|
|
{name: "socks5 代理", spec: &ProxySpec{Type: "socks5", Host: "127.0.0.1", Port: 1080, Username: "u", Password: "p"}},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
tr := transportFor(tt.spec)
|
|
if tr == nil {
|
|
t.Fatal("transportFor 返回 nil")
|
|
}
|
|
if (tr.Proxy != nil) != tt.wantProxy {
|
|
t.Fatalf("Proxy 函数存在性 = %v, 期望 %v", tr.Proxy != nil, tt.wantProxy)
|
|
}
|
|
if tr.DialContext == nil {
|
|
t.Fatal("应设置带超时的 DialContext")
|
|
}
|
|
if tr.TLSHandshakeTimeout != proxyTLSHandshakeTimeout {
|
|
t.Fatalf("TLSHandshakeTimeout = %v, 期望 %v", tr.TLSHandshakeTimeout, proxyTLSHandshakeTimeout)
|
|
}
|
|
})
|
|
}
|
|
}
|