Hunter0x7c7
2022-08-11 b8230139fb40edea387617b6accd8371e37eda58
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
package v4_test
 
import (
    "testing"
 
    "github.com/v2fly/v2ray-core/v5/common/net"
    "github.com/v2fly/v2ray-core/v5/common/protocol"
    "github.com/v2fly/v2ray-core/v5/common/serial"
    "github.com/v2fly/v2ray-core/v5/infra/conf/cfgcommon"
    "github.com/v2fly/v2ray-core/v5/infra/conf/cfgcommon/testassist"
    v4 "github.com/v2fly/v2ray-core/v5/infra/conf/v4"
    "github.com/v2fly/v2ray-core/v5/proxy/socks"
)
 
func TestSocksInboundConfig(t *testing.T) {
    creator := func() cfgcommon.Buildable {
        return new(v4.SocksServerConfig)
    }
 
    testassist.RunMultiTestCase(t, []testassist.TestCase{
        {
            Input: `{
                "auth": "password",
                "accounts": [
                    {
                        "user": "my-username",
                        "pass": "my-password"
                    }
                ],
                "udp": false,
                "ip": "127.0.0.1",
                "timeout": 5,
                "userLevel": 1
            }`,
            Parser: testassist.LoadJSON(creator),
            Output: &socks.ServerConfig{
                AuthType: socks.AuthType_PASSWORD,
                Accounts: map[string]string{
                    "my-username": "my-password",
                },
                UdpEnabled: false,
                Address: &net.IPOrDomain{
                    Address: &net.IPOrDomain_Ip{
                        Ip: []byte{127, 0, 0, 1},
                    },
                },
                Timeout:   5,
                UserLevel: 1,
            },
        },
    })
}
 
func TestSocksOutboundConfig(t *testing.T) {
    creator := func() cfgcommon.Buildable {
        return new(v4.SocksClientConfig)
    }
 
    testassist.RunMultiTestCase(t, []testassist.TestCase{
        {
            Input: `{
                "servers": [{
                    "address": "127.0.0.1",
                    "port": 1234,
                    "users": [
                        {"user": "test user", "pass": "test pass", "email": "test@email.com"}
                    ]
                }]
            }`,
            Parser: testassist.LoadJSON(creator),
            Output: &socks.ClientConfig{
                Server: []*protocol.ServerEndpoint{
                    {
                        Address: &net.IPOrDomain{
                            Address: &net.IPOrDomain_Ip{
                                Ip: []byte{127, 0, 0, 1},
                            },
                        },
                        Port: 1234,
                        User: []*protocol.User{
                            {
                                Email: "test@email.com",
                                Account: serial.ToTypedMessage(&socks.Account{
                                    Username: "test user",
                                    Password: "test pass",
                                }),
                            },
                        },
                    },
                },
            },
        },
    })
}