server_spec_test.go 1.6 KB

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