mirror of
https://github.com/ScuroNeko/mtg.git
synced 2026-08-31 16:14:02 +03:00
FILE / ScuroNeko/mtg
mtglib/network/socks5_test.go
Исходный файл и его история в репозитории.
87 lines
1.8 KiB
Go
87 lines
1.8 KiB
Go
package network_test
|
|
|
|
import (
|
|
"net"
|
|
"net/http"
|
|
"net/url"
|
|
"testing"
|
|
|
|
"github.com/9seconds/mtg/v2/mtglib/network"
|
|
socks5 "github.com/armon/go-socks5"
|
|
"github.com/stretchr/testify/suite"
|
|
)
|
|
|
|
type Socks5TestSuite struct {
|
|
HTTPServerTestSuite
|
|
|
|
baseDialer network.Dialer
|
|
socksListener net.Listener
|
|
socksProxy *socks5.Server
|
|
}
|
|
|
|
func (suite *Socks5TestSuite) SetupSuite() {
|
|
suite.HTTPServerTestSuite.SetupSuite()
|
|
|
|
socksConf := socks5.Config{
|
|
Credentials: socks5.StaticCredentials{
|
|
"user": "password",
|
|
},
|
|
}
|
|
|
|
suite.socksProxy, _ = socks5.New(&socksConf)
|
|
suite.socksListener, _ = net.Listen("tcp", "127.0.0.1:0")
|
|
suite.baseDialer, _ = network.NewDefaultDialer(0, 0)
|
|
|
|
go suite.socksProxy.Serve(suite.socksListener)
|
|
}
|
|
|
|
func (suite *Socks5TestSuite) TearDownSuite() {
|
|
suite.socksListener.Close()
|
|
|
|
suite.HTTPServerTestSuite.TearDownSuite()
|
|
}
|
|
|
|
func (suite *Socks5TestSuite) TestRequestFailed() {
|
|
proxyURL := &url.URL{
|
|
Scheme: "socks5",
|
|
User: url.UserPassword("user2", "password"),
|
|
Host: suite.socksListener.Addr().String(),
|
|
}
|
|
dialer, _ := network.NewSocks5Dialer(suite.baseDialer, proxyURL)
|
|
|
|
httpClient := http.Client{
|
|
Transport: &http.Transport{
|
|
DialContext: dialer.DialContext,
|
|
},
|
|
}
|
|
|
|
_, err := httpClient.Get(suite.httpServer.URL + "/get")
|
|
|
|
suite.Error(err)
|
|
}
|
|
|
|
func (suite *Socks5TestSuite) TestRequestOk() {
|
|
proxyURL := &url.URL{
|
|
Scheme: "socks5",
|
|
User: url.UserPassword("user", "password"),
|
|
Host: suite.socksListener.Addr().String(),
|
|
}
|
|
dialer, _ := network.NewSocks5Dialer(suite.baseDialer, proxyURL)
|
|
|
|
httpClient := http.Client{
|
|
Transport: &http.Transport{
|
|
DialContext: dialer.DialContext,
|
|
},
|
|
}
|
|
|
|
resp, err := httpClient.Get(suite.httpServer.URL + "/get")
|
|
|
|
suite.NoError(err)
|
|
|
|
resp.Body.Close()
|
|
}
|
|
|
|
func TestSocks5TestSuite(t *testing.T) {
|
|
suite.Run(t, &Socks5TestSuite{})
|
|
}
|