| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 | package vmess_testimport (	"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)}
 |