| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- 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": {
- "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()
- 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")
- var va, vc string
- for _, h := range header.Request.Header {
- switch h.Name {
- case "a":
- va = h.Value[0]
- case "c":
- vc = h.Value[0]
- default:
- t.Error("Unknown header ", h.String())
- }
- }
- assert.String(va).Equals("b")
- assert.String(vc).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)
- }
|