| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- package conf_test
- import (
- "encoding/json"
- "testing"
- "v2ray.com/core/testing/assert"
- . "v2ray.com/core/tools/conf"
- "v2ray.com/core/transport/internet"
- "v2ray.com/core/transport/internet/headers/http"
- "v2ray.com/core/transport/internet/headers/noop"
- "v2ray.com/core/transport/internet/kcp"
- "v2ray.com/core/transport/internet/tcp"
- "v2ray.com/core/transport/internet/websocket"
- )
- func TestTransportConfig(t *testing.T) {
- assert := assert.On(t)
- rawJson := `{
- "tcpSettings": {
- "connectionReuse": true,
- "header": {
- "type": "http",
- "request": {
- "version": "1.1",
- "method": "GET",
- "path": "/b",
- "headers": {
- "a": "b",
- "c": "d"
- }
- },
- "response": {
- "version": "1.0",
- "status": "404",
- "reason": "Not Found"
- }
- }
- },
- "kcpSettings": {
- "mtu": 1200,
- "header": {
- "type": "none"
- }
- },
- "wsSettings": {
- "path": "/t"
- }
- }`
- var transportSettingsConf TransportConfig
- assert.Error(json.Unmarshal([]byte(rawJson), &transportSettingsConf)).IsNil()
- ts, err := transportSettingsConf.Build()
- assert.Error(err).IsNil()
- assert.Int(len(ts.TransportSettings)).Equals(3)
- var settingsCount uint32
- for _, settingsWithProtocol := range ts.TransportSettings {
- rawSettings, err := settingsWithProtocol.Settings.GetInstance()
- assert.Error(err).IsNil()
- switch settings := rawSettings.(type) {
- case *tcp.Config:
- settingsCount++
- assert.Bool(settingsWithProtocol.Protocol == internet.TransportProtocol_TCP).IsTrue()
- assert.Bool(settings.IsConnectionReuse()).IsTrue()
- rawHeader, err := settings.HeaderSettings.GetInstance()
- assert.Error(err).IsNil()
- header := rawHeader.(*http.Config)
- assert.String(header.Request.GetVersionValue()).Equals("1.1")
- assert.String(header.Request.Uri[0]).Equals("/b")
- assert.String(header.Request.Method.Value).Equals("GET")
- assert.String(header.Request.Header[0].Name).Equals("a")
- assert.String(header.Request.Header[0].Value[0]).Equals("b")
- assert.String(header.Request.Header[1].Name).Equals("c")
- assert.String(header.Request.Header[1].Value[0]).Equals("d")
- assert.String(header.Response.Version.Value).Equals("1.0")
- assert.String(header.Response.Status.Code).Equals("404")
- assert.String(header.Response.Status.Reason).Equals("Not Found")
- case *kcp.Config:
- settingsCount++
- assert.Bool(settingsWithProtocol.Protocol == internet.TransportProtocol_MKCP).IsTrue()
- assert.Uint32(settings.GetMTUValue()).Equals(1200)
- rawHeader, err := settings.HeaderConfig.GetInstance()
- assert.Error(err).IsNil()
- header := rawHeader.(*noop.Config)
- assert.Pointer(header).IsNotNil()
- case *websocket.Config:
- settingsCount++
- assert.Bool(settingsWithProtocol.Protocol == internet.TransportProtocol_WebSocket).IsTrue()
- assert.String(settings.Path).Equals("/t")
- default:
- t.Error("Unknown type of settings.")
- }
- }
- assert.Uint32(settingsCount).Equals(3)
- }
|