| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 | 
							- package proxy_test
 
- import (
 
- 	"testing"
 
- 	"v2ray.com/core/app"
 
- 	. "v2ray.com/core/app/proxy"
 
- 	"v2ray.com/core/app/proxyman"
 
- 	"v2ray.com/core/app/proxyman/outbound"
 
- 	v2net "v2ray.com/core/common/net"
 
- 	"v2ray.com/core/proxy"
 
- 	"v2ray.com/core/proxy/freedom"
 
- 	"v2ray.com/core/testing/assert"
 
- 	"v2ray.com/core/testing/servers/tcp"
 
- 	"v2ray.com/core/transport/internet"
 
- )
 
- func TestProxyDial(t *testing.T) {
 
- 	assert := assert.On(t)
 
- 	space := app.NewSpace()
 
- 	outboundManager := outbound.New()
 
- 	outboundManager.SetHandler("tag", freedom.New(&freedom.Config{}, space, &proxy.OutboundHandlerMeta{
 
- 		Tag: "tag",
 
- 		StreamSettings: &internet.StreamConfig{
 
- 			Network: v2net.Network_RawTCP,
 
- 		},
 
- 	}))
 
- 	space.BindApp(proxyman.APP_ID_OUTBOUND_MANAGER, outboundManager)
 
- 	proxy := NewOutboundProxy(space)
 
- 	space.BindApp(APP_ID, proxy)
 
- 	assert.Error(space.Initialize()).IsNil()
 
- 	xor := func(b []byte) []byte {
 
- 		for idx, x := range b {
 
- 			b[idx] = x ^ 'c'
 
- 		}
 
- 		return b
 
- 	}
 
- 	tcpServer := &tcp.Server{
 
- 		MsgProcessor: xor,
 
- 	}
 
- 	dest, err := tcpServer.Start()
 
- 	assert.Error(err).IsNil()
 
- 	conn, err := proxy.Dial(v2net.LocalHostIP, dest, internet.DialerOptions{
 
- 		Stream: &internet.StreamConfig{
 
- 			Network: v2net.Network_RawTCP,
 
- 		},
 
- 		Proxy: &internet.ProxyConfig{
 
- 			Tag: "tag",
 
- 		},
 
- 	})
 
- 	assert.Error(err).IsNil()
 
- 	_, err = conn.Write([]byte{'a', 'b', 'c', 'd'})
 
- 	assert.Error(err).IsNil()
 
- 	b := make([]byte, 10)
 
- 	nBytes, err := conn.Read(b)
 
- 	assert.Error(err).IsNil()
 
- 	assert.Bytes(xor(b[:nBytes])).Equals([]byte{'a', 'b', 'c', 'd'})
 
- 	conn.Close()
 
- 	tcpServer.Close()
 
- }
 
 
  |