package vmess_test import ( "testing" "time" "v2ray.com/core/common" "v2ray.com/core/common/serial" "v2ray.com/core/common/uuid" "v2ray.com/core/common/protocol" . "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) id := uuid.New() user := &protocol.User{ Email: "test", Account: serial.ToTypedMessage(&Account{ Id: id.String(), AlterId: 8, }), } common.Must(v.Add(user)) { ts := protocol.Timestamp(time.Now().Unix()) idHash := hasher(id.Bytes()) idHash.Write(ts.Bytes(nil)) 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)) } { ts := protocol.Timestamp(time.Now().Add(time.Second * 500).Unix()) idHash := hasher(id.Bytes()) idHash.Write(ts.Bytes(nil)) userHash := idHash.Sum(nil) euser, _, found := v.Get(userHash) assert(found, IsFalse) assert(euser, IsNil) } assert(v.Remove(user.Email), IsTrue) assert(v.Remove(user.Email), IsFalse) }