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
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

noop_test.go 2.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. package events_test
  2. import (
  3. "context"
  4. "net"
  5. "testing"
  6. "github.com/9seconds/mtg/v2/events"
  7. "github.com/9seconds/mtg/v2/mtglib"
  8. "github.com/stretchr/testify/suite"
  9. )
  10. type NoopTestSuite struct {
  11. suite.Suite
  12. testData map[string]mtglib.Event
  13. ctx context.Context
  14. }
  15. func (suite *NoopTestSuite) SetupSuite() {
  16. suite.testData = map[string]mtglib.Event{
  17. "start": mtglib.NewEventStart("connID", net.ParseIP("127.0.0.1")),
  18. "connected-to-dc": mtglib.NewEventConnectedToDC("connID", net.ParseIP("127.1.0.1"), 2),
  19. "domain-fronting": mtglib.NewEventDomainFronting("connID"),
  20. "traffic": mtglib.NewEventTraffic("connID", 1000, true),
  21. "finish": mtglib.NewEventFinish("connID"),
  22. "concurrency-limited": mtglib.NewEventConcurrencyLimited(),
  23. "ip-blacklisted": mtglib.NewEventIPBlocklisted(net.ParseIP("10.0.0.10")),
  24. "replay-attack": mtglib.NewEventReplayAttack("connID"),
  25. "ip-list-size": mtglib.NewEventIPListSize(10, true),
  26. }
  27. suite.ctx = context.Background()
  28. }
  29. func (suite *NoopTestSuite) TestStream() {
  30. stream := events.NewNoopStream()
  31. for name, v := range suite.testData {
  32. value := v
  33. suite.T().Run(name, func(t *testing.T) {
  34. stream.Send(suite.ctx, value)
  35. })
  36. }
  37. }
  38. func (suite *NoopTestSuite) TestObserver() {
  39. observer := events.NewNoopObserver()
  40. for name, v := range suite.testData {
  41. value := v
  42. suite.T().Run(name, func(t *testing.T) {
  43. switch typedEvt := value.(type) {
  44. case mtglib.EventStart:
  45. observer.EventStart(typedEvt)
  46. case mtglib.EventConnectedToDC:
  47. observer.EventConnectedToDC(typedEvt)
  48. case mtglib.EventDomainFronting:
  49. observer.EventDomainFronting(typedEvt)
  50. case mtglib.EventFinish:
  51. observer.EventFinish(typedEvt)
  52. case mtglib.EventConcurrencyLimited:
  53. observer.EventConcurrencyLimited(typedEvt)
  54. case mtglib.EventIPBlocklisted:
  55. observer.EventIPBlocklisted(typedEvt)
  56. case mtglib.EventReplayAttack:
  57. observer.EventReplayAttack(typedEvt)
  58. case mtglib.EventIPListSize:
  59. observer.EventIPListSize(typedEvt)
  60. }
  61. })
  62. }
  63. observer.Shutdown()
  64. }
  65. func TestNoop(t *testing.T) {
  66. t.Parallel()
  67. suite.Run(t, &NoopTestSuite{})
  68. }