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