mirror of https://github.com/v2ray/v2ray-core
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.2 KiB
59 lines
1.2 KiB
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)
|
|
}
|