Przeglądaj źródła

more json test cases

Darien Raymond 9 lat temu
rodzic
commit
c74bcc9c50

+ 9 - 0
common/net/address_json_test.go

@@ -35,3 +35,12 @@ func TestDomainParsing(t *testing.T) {
 	assert.Bool(address.Address.IsDomain()).IsTrue()
 	assert.StringLiteral(address.Address.Domain()).Equals("v2ray.com")
 }
+
+func TestInvalidJson(t *testing.T) {
+	v2testing.Current(t)
+
+	rawJson := "1234"
+	var address AddressJson
+	err := json.Unmarshal([]byte(rawJson), &address)
+	assert.Error(err).IsNotNil()
+}

+ 8 - 0
common/net/network_json_test.go

@@ -30,3 +30,11 @@ func TestStringNetworkList(t *testing.T) {
 	assert.Bool(list.HasNetwork(Network("tcp"))).IsTrue()
 	assert.Bool(list.HasNetwork(Network("udp"))).IsFalse()
 }
+
+func TestInvalidJson(t *testing.T) {
+	v2testing.Current(t)
+
+	var list NetworkList
+	err := json.Unmarshal([]byte("0"), &list)
+	assert.Error(err).IsNotNil()
+}

+ 43 - 0
common/protocol/user_json_test.go

@@ -0,0 +1,43 @@
+// +build json
+
+package protocol_test
+
+import (
+	"encoding/json"
+	"testing"
+
+	. "github.com/v2ray/v2ray-core/common/protocol"
+	v2testing "github.com/v2ray/v2ray-core/testing"
+	"github.com/v2ray/v2ray-core/testing/assert"
+)
+
+func TestUserParsing(t *testing.T) {
+	v2testing.Current(t)
+
+	user := new(User)
+	err := json.Unmarshal([]byte(`{
+    "id": "96edb838-6d68-42ef-a933-25f7ac3a9d09",
+    "email": "love@v2ray.com",
+    "level": 1,
+    "alterId": 100
+  }`), user)
+	assert.Error(err).IsNil()
+	assert.String(user.ID).Equals("96edb838-6d68-42ef-a933-25f7ac3a9d09")
+	assert.Byte(byte(user.Level)).Equals(1)
+}
+
+func TestInvalidUserJson(t *testing.T) {
+	v2testing.Current(t)
+
+	user := new(User)
+	err := json.Unmarshal([]byte(`{"id": 1234}`), user)
+	assert.Error(err).IsNotNil()
+}
+
+func TestInvalidIdJson(t *testing.T) {
+	v2testing.Current(t)
+
+	user := new(User)
+	err := json.Unmarshal([]byte(`{"id": "1234"}`), user)
+	assert.Error(err).IsNotNil()
+}

+ 8 - 8
shell/point/config_json.go

@@ -95,6 +95,14 @@ func (this *InboundDetourAllocationConfig) UnmarshalJSON(data []byte) error {
 	this.Strategy = jsonConfig.Strategy
 	this.Concurrency = jsonConfig.Concurrency
 	this.Refresh = jsonConfig.RefreshMin
+	if this.Strategy == AllocationStrategyRandom {
+		if this.Refresh == 0 {
+			this.Refresh = 5
+		}
+		if this.Concurrency == 0 {
+			this.Concurrency = 3
+		}
+	}
 	if this.Refresh == 0 {
 		this.Refresh = DefaultRefreshMinute
 	}
@@ -128,14 +136,6 @@ func (this *InboundDetourConfig) UnmarshalJSON(data []byte) error {
 			Refresh:  DefaultRefreshMinute,
 		}
 	}
-	if this.Allocation.Strategy == AllocationStrategyRandom {
-		if this.Allocation.Refresh == DefaultRefreshMinute {
-			this.Allocation.Refresh = 5
-		}
-		if this.Allocation.Concurrency == 0 {
-			this.Allocation.Concurrency = 3
-		}
-	}
 	return nil
 }