| 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)
 
- }
 
 
  |