12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- package protocol_test
- import (
- "strings"
- "testing"
- "time"
- "github.com/xtls/xray-core/common"
- "github.com/xtls/xray-core/common/net"
- . "github.com/xtls/xray-core/common/protocol"
- "github.com/xtls/xray-core/common/uuid"
- "github.com/xtls/xray-core/proxy/vmess"
- )
- func TestAlwaysValidStrategy(t *testing.T) {
- strategy := AlwaysValid()
- if !strategy.IsValid() {
- t.Error("strategy not valid")
- }
- strategy.Invalidate()
- if !strategy.IsValid() {
- t.Error("strategy not valid")
- }
- }
- func TestTimeoutValidStrategy(t *testing.T) {
- strategy := BeforeTime(time.Now().Add(2 * time.Second))
- if !strategy.IsValid() {
- t.Error("strategy not valid")
- }
- time.Sleep(3 * time.Second)
- if strategy.IsValid() {
- t.Error("strategy is valid")
- }
- strategy = BeforeTime(time.Now().Add(2 * time.Second))
- strategy.Invalidate()
- if strategy.IsValid() {
- t.Error("strategy is valid")
- }
- }
- func TestUserInServerSpec(t *testing.T) {
- uuid1 := uuid.New()
- uuid2 := uuid.New()
- toAccount := func(a *vmess.Account) Account {
- account, err := a.AsAccount()
- common.Must(err)
- return account
- }
- spec := NewServerSpec(net.Destination{}, AlwaysValid(), &MemoryUser{
- Email: "[email protected]",
- Account: toAccount(&vmess.Account{Id: uuid1.String()}),
- })
- if spec.HasUser(&MemoryUser{
- Email: "[email protected]",
- Account: toAccount(&vmess.Account{Id: uuid2.String()}),
- }) {
- t.Error("has user: ", uuid2)
- }
- spec.AddUser(&MemoryUser{Email: "[email protected]"})
- if !spec.HasUser(&MemoryUser{
- Email: "[email protected]",
- Account: toAccount(&vmess.Account{Id: uuid1.String()}),
- }) {
- t.Error("not having user: ", uuid1)
- }
- }
- func TestPickUser(t *testing.T) {
- spec := NewServerSpec(net.Destination{}, AlwaysValid(), &MemoryUser{Email: "[email protected]"}, &MemoryUser{Email: "[email protected]"}, &MemoryUser{Email: "[email protected]"})
- user := spec.PickUser()
- if !strings.HasSuffix(user.Email, "@example.com") {
- t.Error("user: ", user.Email)
- }
- }
|