Forráskód Böngészése

test code for validation strategy

v2ray 9 éve
szülő
commit
f4aa50a160
2 módosított fájl, 26 hozzáadás és 3 törlés
  1. 2 2
      common/protocol/server_spec.go
  2. 24 1
      common/protocol/server_spec_test.go

+ 2 - 2
common/protocol/server_spec.go

@@ -30,7 +30,7 @@ type TimeoutValidStrategy struct {
 }
 
 func BeforeTime(t time.Time) ValidationStrategy {
-	return TimeoutValidStrategy{
+	return &TimeoutValidStrategy{
 		until: t,
 	}
 }
@@ -39,7 +39,7 @@ func (this TimeoutValidStrategy) IsValid() bool {
 	return this.until.After(time.Now())
 }
 
-func (this TimeoutValidStrategy) Invalidate() {
+func (this *TimeoutValidStrategy) Invalidate() {
 	this.until = time.Time{}
 }
 

+ 24 - 1
common/protocol/server_spec_test.go

@@ -2,6 +2,7 @@ package protocol_test
 
 import (
 	"testing"
+	"time"
 
 	v2net "github.com/v2ray/v2ray-core/common/net"
 	. "github.com/v2ray/v2ray-core/common/protocol"
@@ -16,7 +17,7 @@ func (this *TestAccount) Equals(account Account) bool {
 	return account.(*TestAccount).id == this.id
 }
 
-func TestReceiverUser(t *testing.T) {
+func TestServerSpecUser(t *testing.T) {
 	assert := assert.On(t)
 
 	account := &TestAccount{
@@ -37,3 +38,25 @@ func TestReceiverUser(t *testing.T) {
 	rec.AddUser(user2)
 	assert.Bool(rec.HasUser(user2)).IsTrue()
 }
+
+func TestAlwaysValidStrategy(t *testing.T) {
+	assert := assert.On(t)
+
+	strategy := AlwaysValid()
+	assert.Bool(strategy.IsValid()).IsTrue()
+	strategy.Invalidate()
+	assert.Bool(strategy.IsValid()).IsTrue()
+}
+
+func TestTimeoutValidStrategy(t *testing.T) {
+	assert := assert.On(t)
+
+	strategy := BeforeTime(time.Now().Add(2 * time.Second))
+	assert.Bool(strategy.IsValid()).IsTrue()
+	time.Sleep(3 * time.Second)
+	assert.Bool(strategy.IsValid()).IsFalse()
+
+	strategy = BeforeTime(time.Now().Add(2 * time.Second))
+	strategy.Invalidate()
+	assert.Bool(strategy.IsValid()).IsFalse()
+}