| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- package vmess_test
- import (
- "testing"
- "time"
- "v2ray.com/core/common"
- "v2ray.com/core/common/protocol"
- "v2ray.com/core/common/uuid"
- "v2ray.com/core/common/vio"
- . "v2ray.com/core/proxy/vmess"
- . "v2ray.com/ext/assert"
- )
- func TestUserValidator(t *testing.T) {
- assert := With(t)
- hasher := protocol.DefaultIDHash
- v := NewTimedUserValidator(hasher)
- defer common.Close(v)
- toAccount := func(a *Account) protocol.Account {
- account, err := a.AsAccount()
- common.Must(err)
- return account
- }
- id := uuid.New()
- user := &protocol.MemoryUser{
- Email: "test",
- Account: toAccount(&Account{
- Id: id.String(),
- AlterId: 8,
- }),
- }
- common.Must(v.Add(user))
- {
- testSmallLag := func(lag time.Duration) {
- ts := protocol.Timestamp(time.Now().Add(time.Second * lag).Unix())
- idHash := hasher(id.Bytes())
- common.Must2(vio.WriteUint64(idHash, uint64(ts)))
- userHash := idHash.Sum(nil)
- euser, ets, found := v.Get(userHash)
- assert(found, IsTrue)
- assert(euser.Email, Equals, user.Email)
- assert(int64(ets), Equals, int64(ts))
- }
- testSmallLag(0)
- testSmallLag(40)
- testSmallLag(-40)
- testSmallLag(80)
- testSmallLag(-80)
- testSmallLag(120)
- testSmallLag(-120)
- }
- {
- testBigLag := func(lag time.Duration) {
- ts := protocol.Timestamp(time.Now().Add(time.Second * lag).Unix())
- idHash := hasher(id.Bytes())
- common.Must2(vio.WriteUint64(idHash, uint64(ts)))
- userHash := idHash.Sum(nil)
- euser, _, found := v.Get(userHash)
- assert(found, IsFalse)
- assert(euser, IsNil)
- }
- testBigLag(121)
- testBigLag(-121)
- testBigLag(310)
- testBigLag(-310)
- testBigLag(500)
- testBigLag(-500)
- }
- assert(v.Remove(user.Email), IsTrue)
- assert(v.Remove(user.Email), IsFalse)
- }
|