@@ -30,6 +30,7 @@ func TestParse(t *testing.T) {
3030 {name : "http" , input : "http://proxy.example.com:8080" , want : ModeProxy },
3131 {name : "https" , input : "https://proxy.example.com:8443" , want : ModeProxy },
3232 {name : "socks5" , input : "socks5://proxy.example.com:1080" , want : ModeProxy },
33+ {name : "socks5h" , input : "socks5h://proxy.example.com:1080" , want : ModeProxy },
3334 {name : "invalid" , input : "bad-value" , want : ModeInvalid , wantErr : true },
3435 }
3536
@@ -137,3 +138,24 @@ func TestBuildHTTPTransportSOCKS5ProxyInheritsDefaultTransportSettings(t *testin
137138 t .Fatalf ("TLSHandshakeTimeout = %v, want %v" , transport .TLSHandshakeTimeout , defaultTransport .TLSHandshakeTimeout )
138139 }
139140}
141+
142+ func TestBuildHTTPTransportSOCKS5HProxy (t * testing.T ) {
143+ t .Parallel ()
144+
145+ transport , mode , errBuild := BuildHTTPTransport ("socks5h://proxy.example.com:1080" )
146+ if errBuild != nil {
147+ t .Fatalf ("BuildHTTPTransport returned error: %v" , errBuild )
148+ }
149+ if mode != ModeProxy {
150+ t .Fatalf ("mode = %d, want %d" , mode , ModeProxy )
151+ }
152+ if transport == nil {
153+ t .Fatal ("expected transport, got nil" )
154+ }
155+ if transport .Proxy != nil {
156+ t .Fatal ("expected SOCKS5H transport to bypass http proxy function" )
157+ }
158+ if transport .DialContext == nil {
159+ t .Fatal ("expected SOCKS5H transport to have custom DialContext" )
160+ }
161+ }
0 commit comments