| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 | package protocol_testimport (	"testing"	"time"	"v2ray.com/core/common/net"	. "v2ray.com/core/common/protocol"	"v2ray.com/core/common/serial"	"v2ray.com/core/common/uuid"	"v2ray.com/core/proxy/vmess"	. "v2ray.com/ext/assert")func TestAlwaysValidStrategy(t *testing.T) {	assert := With(t)	strategy := AlwaysValid()	assert(strategy.IsValid(), IsTrue)	strategy.Invalidate()	assert(strategy.IsValid(), IsTrue)}func TestTimeoutValidStrategy(t *testing.T) {	assert := With(t)	strategy := BeforeTime(time.Now().Add(2 * time.Second))	assert(strategy.IsValid(), IsTrue)	time.Sleep(3 * time.Second)	assert(strategy.IsValid(), IsFalse)	strategy = BeforeTime(time.Now().Add(2 * time.Second))	strategy.Invalidate()	assert(strategy.IsValid(), IsFalse)}func TestUserInServerSpec(t *testing.T) {	assert := With(t)	uuid1 := uuid.New()	uuid2 := uuid.New()	spec := NewServerSpec(net.Destination{}, AlwaysValid(), &User{		Email:   "test1@v2ray.com",		Account: serial.ToTypedMessage(&vmess.Account{Id: uuid1.String()}),	})	assert(spec.HasUser(&User{		Email:   "test1@v2ray.com",		Account: serial.ToTypedMessage(&vmess.Account{Id: uuid2.String()}),	}), IsFalse)	spec.AddUser(&User{Email: "test2@v2ray.com"})	assert(spec.HasUser(&User{		Email:   "test1@v2ray.com",		Account: serial.ToTypedMessage(&vmess.Account{Id: uuid1.String()}),	}), IsTrue)}func TestPickUser(t *testing.T) {	assert := With(t)	spec := NewServerSpec(net.Destination{}, AlwaysValid(), &User{Email: "test1@v2ray.com"}, &User{Email: "test2@v2ray.com"}, &User{Email: "test3@v2ray.com"})	user := spec.PickUser()	assert(user.Email, HasSuffix, "@v2ray.com")}
 |