func TestSwitchAccount(t *testing.T) { v2testing.Current(t) sa := &protocol.CommandSwitchAccount{ Port: 1234, ID: uuid.New(), AlterIds: 1024, Level: 128, ValidMin: 16, } buffer := alloc.NewBuffer().Clear() err := MarshalCommand(sa, buffer) assert.Error(err).IsNil() cmd, err := UnmarshalCommand(1, buffer.Value[2:]) assert.Error(err).IsNil() sa2, ok := cmd.(*protocol.CommandSwitchAccount) assert.Bool(ok).IsTrue() assert.Pointer(sa.Host).IsNil() assert.Pointer(sa2.Host).IsNil() netassert.Port(sa.Port).Equals(sa2.Port) assert.String(sa.ID).Equals(sa2.ID.String()) assert.Uint16(sa.AlterIds.Value()).Equals(sa2.AlterIds.Value()) assert.Byte(byte(sa.Level)).Equals(byte(sa2.Level)) assert.Byte(sa.ValidMin).Equals(sa2.ValidMin) }
func TestDokodemoTCP(t *testing.T) { v2testing.Current(t) port := v2nettesting.PickPort() data2Send := "Data to be sent to remote." tcpServer := &tcp.Server{ Port: port, MsgProcessor: func(data []byte) []byte { buffer := make([]byte, 0, 2048) buffer = append(buffer, []byte("Processed: ")...) buffer = append(buffer, data...) return buffer }, } _, err := tcpServer.Start() assert.Error(err).IsNil() pointPort := v2nettesting.PickPort() config := mocks.Config{ PortValue: pointPort, InboundConfigValue: &mocks.ConnectionConfig{ ProtocolValue: "dokodemo-door", SettingsValue: []byte(`{ "address": "127.0.0.1", "port": ` + port.String() + `, "network": "tcp", "timeout": 0 }`), }, OutboundConfigValue: &mocks.ConnectionConfig{ ProtocolValue: "freedom", SettingsValue: nil, }, } point, err := point.NewPoint(&config) assert.Error(err).IsNil() err = point.Start() assert.Error(err).IsNil() tcpClient, err := net.DialTCP("tcp", nil, &net.TCPAddr{ IP: []byte{127, 0, 0, 1}, Port: int(pointPort), Zone: "", }) assert.Error(err).IsNil() tcpClient.Write([]byte(data2Send)) tcpClient.CloseWrite() response := make([]byte, 1024) nBytes, err := tcpClient.Read(response) assert.Error(err).IsNil() tcpClient.Close() assert.StringLiteral("Processed: " + data2Send).Equals(string(response[:nBytes])) }
func TestHttpProxy(t *testing.T) { v2testing.Current(t) httpServer := &v2http.Server{ Port: v2net.Port(50042), PathHandler: make(map[string]http.HandlerFunc), } _, err := httpServer.Start() assert.Error(err).IsNil() defer httpServer.Close() assert.Error(InitializeServerSetOnce("test_5")).IsNil() transport := &http.Transport{ Proxy: func(req *http.Request) (*url.URL, error) { return url.Parse("http://127.0.0.1:50040/") }, } client := &http.Client{ Transport: transport, } resp, err := client.Get("http://127.0.0.1:50042/") assert.Error(err).IsNil() assert.Int(resp.StatusCode).Equals(200) content, err := ioutil.ReadAll(resp.Body) assert.Error(err).IsNil() assert.StringLiteral(string(content)).Equals("Home") CloseAllServers() }
func TestDokodemoUDP(t *testing.T) { v2testing.Current(t) port := v2nettesting.PickPort() data2Send := "Data to be sent to remote." udpServer := &udp.Server{ Port: port, MsgProcessor: func(data []byte) []byte { buffer := make([]byte, 0, 2048) buffer = append(buffer, []byte("Processed: ")...) buffer = append(buffer, data...) return buffer }, } _, err := udpServer.Start() assert.Error(err).IsNil() pointPort := v2nettesting.PickPort() networkList := v2netjson.NetworkList([]string{"udp"}) config := mocks.Config{ PortValue: pointPort, InboundConfigValue: &mocks.ConnectionConfig{ ProtocolValue: "dokodemo-door", SettingsValue: &json.DokodemoConfig{ Host: v2netjson.NewIPHost(net.ParseIP("127.0.0.1")), PortValue: port, NetworkList: &networkList, TimeoutValue: 0, }, }, OutboundConfigValue: &mocks.ConnectionConfig{ ProtocolValue: "freedom", SettingsValue: nil, }, } point, err := point.NewPoint(&config) assert.Error(err).IsNil() err = point.Start() assert.Error(err).IsNil() udpClient, err := net.DialUDP("udp", nil, &net.UDPAddr{ IP: []byte{127, 0, 0, 1}, Port: int(pointPort), Zone: "", }) assert.Error(err).IsNil() udpClient.Write([]byte(data2Send)) response := make([]byte, 1024) nBytes, err := udpClient.Read(response) assert.Error(err).IsNil() udpClient.Close() assert.StringLiteral("Processed: " + data2Send).Equals(string(response[:nBytes])) }
func TestNormalGetRequest(t *testing.T) { assert := assert.On(t) testPacketDispatcher := testdispatcher.NewTestPacketDispatcher(nil) port := v2nettesting.PickPort() httpProxy := NewServer( &Config{}, testPacketDispatcher, &proxy.InboundHandlerMeta{ Address: v2net.LocalHostIP, Port: port, StreamSettings: &internet.StreamSettings{ Type: internet.StreamConnectionTypeRawTCP, }}) defer httpProxy.Close() err := httpProxy.Start() assert.Error(err).IsNil() assert.Port(port).Equals(httpProxy.Port()) httpClient := &http.Client{} resp, err := httpClient.Get("http://127.0.0.1:" + port.String() + "/") assert.Error(err).IsNil() assert.Int(resp.StatusCode).Equals(400) }
func TestSinglePacket(t *testing.T) { v2testing.Current(t) port := v2nettesting.PickPort() tcpServer := &tcp.Server{ Port: port, MsgProcessor: func(data []byte) []byte { buffer := make([]byte, 0, 2048) buffer = append(buffer, []byte("Processed: ")...) buffer = append(buffer, data...) return buffer }, } _, err := tcpServer.Start() assert.Error(err).IsNil() freedom := &FreedomConnection{} traffic := ray.NewRay() data2Send := "Data to be sent to remote" payload := alloc.NewSmallBuffer().Clear().Append([]byte(data2Send)) packet := v2net.NewPacket(v2net.TCPDestination(v2net.IPAddress([]byte{127, 0, 0, 1}), port), payload, false) err = freedom.Dispatch(packet, traffic) assert.Error(err).IsNil() close(traffic.InboundInput()) respPayload := <-traffic.InboundOutput() defer respPayload.Release() assert.Bytes(respPayload.Value).Equals([]byte("Processed: Data to be sent to remote")) _, open := <-traffic.InboundOutput() assert.Bool(open).IsFalse() tcpServer.Close() }
func TestSocksUdpSend(t *testing.T) { v2testing.Current(t) port := v2nettesting.PickPort() connInput := []byte("The data to be returned to socks server.") connOutput := bytes.NewBuffer(make([]byte, 0, 1024)) och := &proxymocks.OutboundConnectionHandler{ ConnInput: bytes.NewReader(connInput), ConnOutput: connOutput, } protocol, err := proxytesting.RegisterOutboundConnectionHandlerCreator("mock_och", func(space app.Space, config interface{}) (v2proxy.OutboundConnectionHandler, error) { return och, nil }) assert.Error(err).IsNil() config := &point.Config{ Port: port, InboundConfig: &point.ConnectionConfig{ Protocol: "socks", Settings: []byte(`{"auth": "noauth", "udp": true}`), }, OutboundConfig: &point.ConnectionConfig{ Protocol: protocol, Settings: nil, }, } point, err := point.NewPoint(config) assert.Error(err).IsNil() err = point.Start() assert.Error(err).IsNil() conn, err := net.DialUDP("udp", nil, &net.UDPAddr{ IP: []byte{127, 0, 0, 1}, Port: int(port), Zone: "", }) assert.Error(err).IsNil() data2Send := []byte("Fake DNS request") buffer := make([]byte, 0, 1024) buffer = append(buffer, 0, 0, 0) buffer = append(buffer, 1, 8, 8, 4, 4, 0, 53) buffer = append(buffer, data2Send...) conn.Write(buffer) response := make([]byte, 1024) nBytes, err := conn.Read(response) assert.Error(err).IsNil() assert.Bytes(response[10:nBytes]).Equals(connInput) assert.Bytes(data2Send).Equals(connOutput.Bytes()) assert.StringLiteral(och.Destination.String()).Equals("udp:8.8.4.4:53") }
func TestBufferedReader(t *testing.T) { v2testing.Current(t) content := alloc.NewLargeBuffer() len := content.Len() reader := NewBufferedReader(content) assert.Bool(reader.Cached()).IsTrue() payload := make([]byte, 16) nBytes, err := reader.Read(payload) assert.Int(nBytes).Equals(16) assert.Error(err).IsNil() len2 := content.Len() assert.Int(len - len2).GreaterThan(16) nBytes, err = reader.Read(payload) assert.Int(nBytes).Equals(16) assert.Error(err).IsNil() assert.Int(content.Len()).Equals(len2) reader.SetCached(false) payload2 := alloc.NewBuffer() reader.Read(payload2.Value) assert.Int(content.Len()).Equals(len2) reader.Read(payload2.Value) assert.Int(content.Len()).LessThan(len2) }
func TestSwitchAccount(t *testing.T) { v2testing.Current(t) sa := &SwitchAccount{ Port: 1234, ID: uuid.New(), AlterIds: 1024, ValidUntil: time.Now(), } cmd, err := CreateResponseCommand(1) assert.Error(err).IsNil() buffer := bytes.NewBuffer(make([]byte, 0, 1024)) nBytes, err := sa.Marshal(buffer) assert.Error(err).IsNil() assert.Int(nBytes).Equals(buffer.Len()) cmd.Unmarshal(buffer.Bytes()) sa2, ok := cmd.(*SwitchAccount) assert.Bool(ok).IsTrue() netassert.Port(sa.Port).Equals(sa2.Port) assert.String(sa.ID).Equals(sa2.ID.String()) assert.Uint16(sa.AlterIds.Value()).Equals(sa2.AlterIds.Value()) assert.Int64(sa.ValidUntil.Unix()).Equals(sa2.ValidUntil.Unix()) }
func TestSocksUdpSend(t *testing.T) { v2testing.Current(t) port := v2nettesting.PickPort() connInput := []byte("The data to be returned to socks server.") connOutput := bytes.NewBuffer(make([]byte, 0, 1024)) och := &proxymocks.OutboundConnectionHandler{ ConnInput: bytes.NewReader(connInput), ConnOutput: connOutput, } connhandler.RegisterOutboundConnectionHandlerFactory("mock_och", och) config := mocks.Config{ PortValue: port, InboundConfigValue: &mocks.ConnectionConfig{ ProtocolValue: "socks", SettingsValue: &json.SocksConfig{ AuthMethod: "noauth", UDP: true, }, }, OutboundConfigValue: &mocks.ConnectionConfig{ ProtocolValue: "mock_och", SettingsValue: nil, }, } point, err := point.NewPoint(&config) assert.Error(err).IsNil() err = point.Start() assert.Error(err).IsNil() conn, err := net.DialUDP("udp", nil, &net.UDPAddr{ IP: []byte{127, 0, 0, 1}, Port: int(port), Zone: "", }) assert.Error(err).IsNil() data2Send := []byte("Fake DNS request") buffer := make([]byte, 0, 1024) buffer = append(buffer, 0, 0, 0) buffer = append(buffer, 1, 8, 8, 4, 4, 0, 53) buffer = append(buffer, data2Send...) conn.Write(buffer) response := make([]byte, 1024) nBytes, err := conn.Read(response) assert.Error(err).IsNil() assert.Bytes(response[10:nBytes]).Equals(connInput) assert.Bytes(data2Send).Equals(connOutput.Bytes()) assert.StringLiteral(och.Destination.String()).Equals("udp:8.8.4.4:53") }
func TestSocksTcpConnectWithUserPass(t *testing.T) { v2testing.Current(t) port := v2nettesting.PickPort() connInput := []byte("The data to be returned to socks server.") connOutput := bytes.NewBuffer(make([]byte, 0, 1024)) och := &proxymocks.OutboundConnectionHandler{ ConnInput: bytes.NewReader(connInput), ConnOutput: connOutput, } connhandler.RegisterOutboundConnectionHandlerFactory("mock_och", och) config := mocks.Config{ PortValue: port, InboundConfigValue: &mocks.ConnectionConfig{ ProtocolValue: "socks", SettingsValue: &json.SocksConfig{ AuthMethod: "password", Accounts: json.SocksAccountMap{ "userx": "passy", }, }, }, OutboundConfigValue: &mocks.ConnectionConfig{ ProtocolValue: "mock_och", SettingsValue: nil, }, } point, err := point.NewPoint(&config) assert.Error(err).IsNil() err = point.Start() assert.Error(err).IsNil() socks5Client, err := proxy.SOCKS5("tcp", fmt.Sprintf("127.0.0.1:%d", port), &proxy.Auth{"userx", "passy"}, proxy.Direct) assert.Error(err).IsNil() targetServer := "1.2.3.4:443" conn, err := socks5Client.Dial("tcp", targetServer) assert.Error(err).IsNil() data2Send := "The data to be sent to remote server." conn.Write([]byte(data2Send)) if tcpConn, ok := conn.(*net.TCPConn); ok { tcpConn.CloseWrite() } dataReturned, err := ioutil.ReadAll(conn) assert.Error(err).IsNil() conn.Close() assert.Bytes([]byte(data2Send)).Equals(connOutput.Bytes()) assert.Bytes(dataReturned).Equals(connInput) assert.StringLiteral(targetServer).Equals(och.Destination.NetAddr()) }
func TestOverRangeIntPort(t *testing.T) { v2testing.Current(t) var portRange PortRange err := json.Unmarshal([]byte("70000"), &portRange) assert.Error(err).Equals(InvalidPortRange) err = json.Unmarshal([]byte("-1"), &portRange) assert.Error(err).Equals(InvalidPortRange) }
func TestUDPSend(t *testing.T) { v2testing.Current(t) data2Send := "Data to be sent to remote" udpServer := &udp.Server{ Port: 0, MsgProcessor: func(data []byte) []byte { buffer := make([]byte, 0, 2048) buffer = append(buffer, []byte("Processed: ")...) buffer = append(buffer, data...) return buffer }, } udpServerAddr, err := udpServer.Start() assert.Error(err).IsNil() connOutput := bytes.NewBuffer(make([]byte, 0, 1024)) ich := &proxymocks.InboundConnectionHandler{ ConnInput: bytes.NewReader([]byte("Not Used")), ConnOutput: connOutput, } protocol, err := proxytesting.RegisterInboundConnectionHandlerCreator("mock_ich", func(space app.Space, config interface{}) (v2proxy.InboundHandler, error) { ich.Space = space return ich, nil }) assert.Error(err).IsNil() pointPort := v2nettesting.PickPort() config := &point.Config{ Port: pointPort, InboundConfig: &point.ConnectionConfig{ Protocol: protocol, Settings: nil, }, OutboundConfig: &point.ConnectionConfig{ Protocol: "freedom", Settings: nil, }, } point, err := point.NewPoint(config) assert.Error(err).IsNil() err = point.Start() assert.Error(err).IsNil() data2SendBuffer := alloc.NewBuffer().Clear() data2SendBuffer.Append([]byte(data2Send)) ich.Communicate(v2net.NewPacket(udpServerAddr, data2SendBuffer, false)) assert.Bytes(connOutput.Bytes()).Equals([]byte("Processed: Data to be sent to remote")) }
func TestVMessSerialization(t *testing.T) { v2testing.Current(t) id, err := uuid.ParseString("2b2966ac-16aa-4fbf-8d81-c5f172a3da51") assert.Error(err).IsNil() userId := vmess.NewID(id) testUser := &vmess.User{ ID: userId, } userSet := protocoltesting.MockUserSet{[]*vmess.User{}, make(map[string]int), make(map[string]Timestamp)} userSet.AddUser(testUser) request := new(VMessRequest) request.Version = byte(0x01) request.User = testUser randBytes := make([]byte, 36) _, err = rand.Read(randBytes) assert.Error(err).IsNil() request.RequestIV = randBytes[:16] request.RequestKey = randBytes[16:32] request.ResponseHeader = randBytes[32:] request.Command = byte(0x01) request.Address = v2net.DomainAddress("v2ray.com") request.Port = v2net.Port(80) mockTime := Timestamp(1823730) buffer, err := request.ToBytes(&FakeTimestampGenerator{timestamp: mockTime}, nil) if err != nil { t.Fatal(err) } userSet.UserHashes[string(buffer.Value[:16])] = 0 userSet.Timestamps[string(buffer.Value[:16])] = mockTime requestReader := NewVMessRequestReader(&userSet) actualRequest, err := requestReader.Read(bytes.NewReader(buffer.Value)) if err != nil { t.Fatal(err) } assert.Byte(actualRequest.Version).Named("Version").Equals(byte(0x01)) assert.String(actualRequest.User.ID).Named("UserId").Equals(request.User.ID.String()) assert.Bytes(actualRequest.RequestIV).Named("RequestIV").Equals(request.RequestIV[:]) assert.Bytes(actualRequest.RequestKey).Named("RequestKey").Equals(request.RequestKey[:]) assert.Bytes(actualRequest.ResponseHeader).Named("ResponseHeader").Equals(request.ResponseHeader[:]) assert.Byte(actualRequest.Command).Named("Command").Equals(request.Command) assert.String(actualRequest.Address).Named("Address").Equals(request.Address.String()) }
func TestParseBytes(t *testing.T) { v2testing.Current(t) str := "2418d087-648d-4990-86e8-19dca1d006d3" bytes := []byte{0x24, 0x18, 0xd0, 0x87, 0x64, 0x8d, 0x49, 0x90, 0x86, 0xe8, 0x19, 0xdc, 0xa1, 0xd0, 0x06, 0xd3} uuid, err := ParseBytes(bytes) assert.Error(err).IsNil() assert.String(uuid).Equals(str) uuid, err = ParseBytes([]byte{1, 3, 2, 4}) assert.Error(err).Equals(ErrorInvalidID) }
func TestDialDomain(t *testing.T) { assert := assert.On(t) server := &tcp.Server{ Port: v2nettesting.PickPort(), } dest, err := server.Start() assert.Error(err).IsNil() defer server.Close() conn, err := DialToDest(nil, v2net.TCPDestination(v2net.DomainAddress("local.v2ray.com"), dest.Port())) assert.Error(err).IsNil() assert.String(conn.RemoteAddr().String()).Equals("127.0.0.1:" + dest.Port().String()) conn.Close() }
func TestDialWithLocalAddr(t *testing.T) { assert := assert.On(t) server := &tcp.Server{ Port: v2nettesting.PickPort(), } dest, err := server.Start() assert.Error(err).IsNil() defer server.Close() conn, err := DialToDest(v2net.LocalHostIP, v2net.TCPDestination(v2net.LocalHostIP, dest.Port())) assert.Error(err).IsNil() assert.String(conn.RemoteAddr().String()).Equals("127.0.0.1:" + dest.Port().String()) conn.Close() }
func TestInsufficientAddressRequest(t *testing.T) { v2testing.Current(t) buffer := alloc.NewSmallBuffer().Clear().AppendBytes(1, 1) _, err := ReadRequest(buffer, nil, false) assert.Error(err).Equals(transport.ErrorCorruptedPacket) buffer = alloc.NewSmallBuffer().Clear().AppendBytes(4, 1) _, err = ReadRequest(buffer, nil, false) assert.Error(err).Equals(transport.ErrorCorruptedPacket) buffer = alloc.NewSmallBuffer().Clear().AppendBytes(3, 255, 1) _, err = ReadRequest(buffer, nil, false) assert.Error(err).Equals(transport.ErrorCorruptedPacket) }
func BenchmarkVMessRequestWriting(b *testing.B) { id, err := uuid.ParseString("2b2966ac-16aa-4fbf-8d81-c5f172a3da51") assert.Error(err).IsNil() userId := vmess.NewID(id) userSet := protocoltesting.MockUserSet{[]*vmess.User{}, make(map[string]int), make(map[string]Timestamp)} testUser := &vmess.User{ ID: userId, } userSet.AddUser(testUser) request := new(VMessRequest) request.Version = byte(0x01) request.User = testUser randBytes := make([]byte, 36) rand.Read(randBytes) request.RequestIV = randBytes[:16] request.RequestKey = randBytes[16:32] request.ResponseHeader = randBytes[32:] request.Command = byte(0x01) request.Address = v2net.DomainAddress("v2ray.com") request.Port = v2net.Port(80) for i := 0; i < b.N; i++ { request.ToBytes(NewRandomTimestampGenerator(Timestamp(time.Now().Unix()), 30), nil) } }
func TestParseString(t *testing.T) { v2testing.Current(t) str := "2418d087-648d-4990-86e8-19dca1d006d3" expectedBytes := []byte{0x24, 0x18, 0xd0, 0x87, 0x64, 0x8d, 0x49, 0x90, 0x86, 0xe8, 0x19, 0xdc, 0xa1, 0xd0, 0x06, 0xd3} uuid, err := ParseString(str) assert.Error(err).IsNil() assert.Bytes(uuid.Bytes()).Equals(expectedBytes) uuid, err = ParseString("2418d087") assert.Error(err).Equals(ErrorInvalidID) uuid, err = ParseString("2418d087-648k-4990-86e8-19dca1d006d3") assert.Error(err).IsNotNil() }
func TestReadSingleByte(t *testing.T) { v2testing.Current(t) reader := NewVMessRequestReader(nil) _, err := reader.Read(bytes.NewReader(make([]byte, 1))) assert.Error(err).Equals(io.EOF) }
func TestZeroAuthenticationMethod(t *testing.T) { assert := assert.On(t) buffer := alloc.NewBuffer().Clear().AppendBytes(5, 0) _, _, err := ReadAuthentication(buffer) assert.Error(err).Equals(proxy.ErrorInvalidAuthentication) }
func TestOverRangeStringPort(t *testing.T) { v2testing.Current(t) var portRange PortRange err := json.Unmarshal([]byte("\"65536\""), &portRange) assert.Error(err).Equals(InvalidPortRange) err = json.Unmarshal([]byte("\"70000-80000\""), &portRange) assert.Error(err).Equals(InvalidPortRange) err = json.Unmarshal([]byte("\"1-90000\""), &portRange) assert.Error(err).Equals(InvalidPortRange) err = json.Unmarshal([]byte("\"700-600\""), &portRange) assert.Error(err).Equals(InvalidPortRange) }
func BenchmarkVMessRequestWriting(b *testing.B) { id, err := uuid.ParseString("2b2966ac-16aa-4fbf-8d81-c5f172a3da51") assert.Error(err).IsNil() userId := vmess.NewID(id) userSet := mocks.MockUserSet{[]vmess.User{}, make(map[string]int), make(map[string]int64)} testUser := &TestUser{ id: userId, } userSet.AddUser(testUser) request := new(VMessRequest) request.Version = byte(0x01) request.User = testUser randBytes := make([]byte, 36) rand.Read(randBytes) request.RequestIV = randBytes[:16] request.RequestKey = randBytes[16:32] request.ResponseHeader = randBytes[32:] request.Command = byte(0x01) request.Address = v2net.DomainAddress("v2ray.com") request.Port = v2net.Port(80) for i := 0; i < b.N; i++ { request.ToBytes(user.NewTimeHash(user.HMACHash{}), user.GenerateRandomInt64InRange, nil) } }
func TestInvalidIdJson(t *testing.T) { assert := assert.On(t) user := new(User) err := json.Unmarshal([]byte(`{"id": "1234"}`), user) assert.Error(err).IsNotNil() }
func TestWrongProtocolVersion(t *testing.T) { assert := assert.On(t) buffer := alloc.NewBuffer().Clear().AppendBytes(6, 1, 0) _, _, err := ReadAuthentication(buffer) assert.Error(err).Equals(proxy.ErrorInvalidProtocolVersion) }
func TestSingleBytePayload(t *testing.T) { v2testing.Current(t) buffer := alloc.NewSmallBuffer().Clear().AppendBytes(1) _, err := ReadRequest(buffer, nil, false) assert.Error(err).Equals(transport.ErrorCorruptedPacket) }
func TestWrongAddressType(t *testing.T) { v2testing.Current(t) buffer := alloc.NewSmallBuffer().Clear().AppendBytes(5) _, err := ReadRequest(buffer, nil, false) assert.Error(err).Equals(transport.ErrorCorruptedPacket) }
func TestRouter(t *testing.T) { v2testing.Current(t) baseDir := "$GOPATH/src/github.com/v2ray/v2ray-core/release/config" pointConfig, err := point.LoadConfig(filepath.Join(baseDir, "vpoint_socks_vmess.json")) assert.Error(err).IsNil() router, err := CreateRouter(pointConfig.RouterConfig.Strategy, pointConfig.RouterConfig.Settings) assert.Error(err).IsNil() dest := v2net.TCPDestination(v2net.IPAddress(net.ParseIP("120.135.126.1")), 80) tag, err := router.TakeDetour(dest) assert.Error(err).IsNil() assert.StringLiteral(tag).Equals("direct") }
func TestInvalidStringLiteralJson(t *testing.T) { v2testing.Current(t) var s StringLiteral err := json.Unmarshal([]byte("1"), &s) assert.Error(err).IsNotNil() }