server_spec_test.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package protocol_test
  2. import (
  3. "testing"
  4. "time"
  5. "v2ray.com/core/common/net"
  6. . "v2ray.com/core/common/protocol"
  7. "v2ray.com/core/common/serial"
  8. "v2ray.com/core/common/uuid"
  9. "v2ray.com/core/proxy/vmess"
  10. . "v2ray.com/ext/assert"
  11. )
  12. func TestAlwaysValidStrategy(t *testing.T) {
  13. assert := With(t)
  14. strategy := AlwaysValid()
  15. assert(strategy.IsValid(), IsTrue)
  16. strategy.Invalidate()
  17. assert(strategy.IsValid(), IsTrue)
  18. }
  19. func TestTimeoutValidStrategy(t *testing.T) {
  20. assert := With(t)
  21. strategy := BeforeTime(time.Now().Add(2 * time.Second))
  22. assert(strategy.IsValid(), IsTrue)
  23. time.Sleep(3 * time.Second)
  24. assert(strategy.IsValid(), IsFalse)
  25. strategy = BeforeTime(time.Now().Add(2 * time.Second))
  26. strategy.Invalidate()
  27. assert(strategy.IsValid(), IsFalse)
  28. }
  29. func TestUserInServerSpec(t *testing.T) {
  30. assert := With(t)
  31. uuid1 := uuid.New()
  32. uuid2 := uuid.New()
  33. spec := NewServerSpec(net.Destination{}, AlwaysValid(), &User{
  34. Email: "test1@v2ray.com",
  35. Account: serial.ToTypedMessage(&vmess.Account{Id: uuid1.String()}),
  36. })
  37. assert(spec.HasUser(&User{
  38. Email: "test1@v2ray.com",
  39. Account: serial.ToTypedMessage(&vmess.Account{Id: uuid2.String()}),
  40. }), IsFalse)
  41. spec.AddUser(&User{Email: "test2@v2ray.com"})
  42. assert(spec.HasUser(&User{
  43. Email: "test1@v2ray.com",
  44. Account: serial.ToTypedMessage(&vmess.Account{Id: uuid1.String()}),
  45. }), IsTrue)
  46. }
  47. func TestPickUser(t *testing.T) {
  48. assert := With(t)
  49. spec := NewServerSpec(net.Destination{}, AlwaysValid(), &User{Email: "test1@v2ray.com"}, &User{Email: "test2@v2ray.com"}, &User{Email: "test3@v2ray.com"})
  50. user := spec.PickUser()
  51. assert(user.Email, HasSuffix, "@v2ray.com")
  52. }