-
Notifications
You must be signed in to change notification settings - Fork 8
/
server_test.go
98 lines (94 loc) · 2.12 KB
/
server_test.go
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
95
96
97
98
package mwgp_test
import (
_ "embed"
"encoding/json"
"github.com/flynn/json5"
"github.com/haruue-net/mwgp"
"testing"
)
func TestServerConfigMarshal(t *testing.T) {
var err error
var sk mwgp.NoisePrivateKey
err = sk.FromBase64("UAIk/C+zXnbmvYpoDmtdE4SXuxFe8bdE1Oa3FGA2VVE=")
if err != nil {
t.Fatal(err)
}
var pk1, pk2, pk3 mwgp.NoisePublicKey
err = pk1.FromBase64("BQEK/C+zXnbmvYpoDmtdE4SXuxFe8bdE1Oa3FGA2VVE=")
if err != nil {
t.Fatal(err)
}
err = pk2.FromBase64("aLnqWMZbSG5jVOtubYyEjwFzPU9qhmHZKWI7vHWIF2k=")
if err != nil {
t.Fatal(err)
}
err = pk3.FromBase64("QEvSeYfcRQTL2gKdxIzviEv/voZu8V8k4XLxplJrZGI=")
if err != nil {
t.Fatal(err)
}
c := mwgp.ServerConfig{
Listen: ":2333",
Timeout: 300,
Servers: []*mwgp.ServerConfigServer{
{
PrivateKey: &sk,
Address: "192.0.2.1",
Peers: []*mwgp.ServerConfigPeer{
{
ForwardTo: ":1232",
ClientSourceValidateLevel: 2,
ServerSourceValidateLevel: 0,
ClientPublicKey: &pk1,
},
{
ForwardTo: ":1233",
ClientSourceValidateLevel: 2,
ServerSourceValidateLevel: 0,
ClientPublicKey: &pk2,
},
{
ForwardTo: "192.0.2.2:1233",
ClientSourceValidateLevel: 0,
ServerSourceValidateLevel: 0,
ClientPublicKey: &pk3,
},
{
ForwardTo: ":1234",
ClientSourceValidateLevel: 0,
ServerSourceValidateLevel: 1,
ClientPublicKey: nil,
},
},
ClientSourceValidateLevel: 0,
ServerSourceValidateLevel: 2,
},
},
}
bs, err := json.MarshalIndent(&c, "", " ")
if err != nil {
t.Fatal(err)
}
t.Log(string(bs))
}
//go:embed server.test.json
var exampleServerConfig []byte
func TestServerConfigUnmarshal(t *testing.T) {
var err error
var c mwgp.ServerConfig
err = json5.Unmarshal(exampleServerConfig, &c)
if err != nil {
t.Fatal(err)
}
for _, s := range c.Servers {
err = s.Initialize()
if err != nil {
t.Fatal(err)
}
}
t.Logf("%#v\n", c)
for _, s := range c.Servers {
for _, p := range s.Peers {
t.Logf("%#v\n", *p)
}
}
}