Highly-opinionated (ex-bullshit-free) MTPROTO proxy for Telegram. If you use v1.0 or upgrade broke you proxy, please read the chapter Version 2
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

noop_test.go 2.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. package events_test
  2. import (
  3. "context"
  4. "net"
  5. "testing"
  6. "time"
  7. "github.com/9seconds/mtg/v2/events"
  8. "github.com/9seconds/mtg/v2/mtglib"
  9. "github.com/stretchr/testify/suite"
  10. )
  11. type NoopTestSuite struct {
  12. suite.Suite
  13. testData map[string]mtglib.Event
  14. ctx context.Context
  15. }
  16. func (suite *NoopTestSuite) SetupSuite() {
  17. suite.testData = map[string]mtglib.Event{
  18. "start": mtglib.EventStart{
  19. CreatedAt: time.Now(),
  20. ConnID: "connID",
  21. RemoteIP: net.ParseIP("127.0.0.1"),
  22. },
  23. "connected-to-dc": mtglib.EventConnectedToDC{
  24. CreatedAt: time.Now(),
  25. ConnID: "connID",
  26. RemoteIP: net.ParseIP("127.1.0.1"),
  27. DC: 2,
  28. },
  29. "domain-fronting": mtglib.EventDomainFronting{
  30. CreatedAt: time.Now(),
  31. ConnID: "connID",
  32. },
  33. "traffic": mtglib.EventTraffic{
  34. CreatedAt: time.Now(),
  35. ConnID: "connID",
  36. Traffic: 1000,
  37. IsRead: true,
  38. },
  39. "finish": mtglib.EventFinish{
  40. CreatedAt: time.Now(),
  41. ConnID: "connID",
  42. },
  43. "concurrency-limited": mtglib.EventConcurrencyLimited{
  44. CreatedAt: time.Now(),
  45. },
  46. "ip-blacklisted": mtglib.EventIPBlocklisted{
  47. RemoteIP: net.ParseIP("10.0.0.10"),
  48. CreatedAt: time.Now(),
  49. },
  50. "replay-attack": mtglib.EventReplayAttack{
  51. CreatedAt: time.Now(),
  52. ConnID: "connID",
  53. },
  54. }
  55. suite.ctx = context.Background()
  56. }
  57. func (suite *NoopTestSuite) TestStream() {
  58. stream := events.NewNoopStream()
  59. for name, v := range suite.testData {
  60. value := v
  61. suite.T().Run(name, func(t *testing.T) {
  62. stream.Send(suite.ctx, value)
  63. })
  64. }
  65. }
  66. func (suite *NoopTestSuite) TestObserver() {
  67. observer := events.NewNoopObserver()
  68. for name, v := range suite.testData {
  69. value := v
  70. suite.T().Run(name, func(t *testing.T) {
  71. switch typedEvt := value.(type) {
  72. case mtglib.EventStart:
  73. observer.EventStart(typedEvt)
  74. case mtglib.EventConnectedToDC:
  75. observer.EventConnectedToDC(typedEvt)
  76. case mtglib.EventDomainFronting:
  77. observer.EventDomainFronting(typedEvt)
  78. case mtglib.EventFinish:
  79. observer.EventFinish(typedEvt)
  80. case mtglib.EventConcurrencyLimited:
  81. observer.EventConcurrencyLimited(typedEvt)
  82. case mtglib.EventIPBlocklisted:
  83. observer.EventIPBlocklisted(typedEvt)
  84. case mtglib.EventReplayAttack:
  85. observer.EventReplayAttack(typedEvt)
  86. }
  87. })
  88. }
  89. observer.Shutdown()
  90. }
  91. func TestNoop(t *testing.T) {
  92. t.Parallel()
  93. suite.Run(t, &NoopTestSuite{})
  94. }