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