diff --git a/common/protocol/server_spec.go b/common/protocol/server_spec.go index ee6a062b4..f6eefa1ce 100644 --- a/common/protocol/server_spec.go +++ b/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{} } diff --git a/common/protocol/server_spec_test.go b/common/protocol/server_spec_test.go index ee53c351e..40211f0b8 100644 --- a/common/protocol/server_spec_test.go +++ b/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() +}