mirror of
https://github.com/ScuroNeko/mtg.git
synced 2026-09-01 02:44:02 +03:00
FILE / ScuroNeko/mtg
events/noop_test.go
Исходный файл и его история в репозитории.
108 lines
2.3 KiB
Go
108 lines
2.3 KiB
Go
package events_test
|
|
|
|
import (
|
|
"context"
|
|
"net"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/9seconds/mtg/v2/events"
|
|
"github.com/9seconds/mtg/v2/mtglib"
|
|
"github.com/stretchr/testify/suite"
|
|
)
|
|
|
|
type NoopTestSuite struct {
|
|
suite.Suite
|
|
|
|
testData map[string]mtglib.Event
|
|
ctx context.Context
|
|
}
|
|
|
|
func (suite *NoopTestSuite) SetupSuite() {
|
|
suite.testData = map[string]mtglib.Event{
|
|
"start": mtglib.EventStart{
|
|
CreatedAt: time.Now(),
|
|
ConnID: "connID",
|
|
RemoteIP: net.ParseIP("127.0.0.1"),
|
|
},
|
|
"connected-to-dc": mtglib.EventConnectedToDC{
|
|
CreatedAt: time.Now(),
|
|
ConnID: "connID",
|
|
RemoteIP: net.ParseIP("127.1.0.1"),
|
|
DC: 2,
|
|
},
|
|
"domain-fronting": mtglib.EventDomainFronting{
|
|
CreatedAt: time.Now(),
|
|
ConnID: "connID",
|
|
},
|
|
"traffic": mtglib.EventTraffic{
|
|
CreatedAt: time.Now(),
|
|
ConnID: "connID",
|
|
Traffic: 1000,
|
|
IsRead: true,
|
|
},
|
|
"finish": mtglib.EventFinish{
|
|
CreatedAt: time.Now(),
|
|
ConnID: "connID",
|
|
},
|
|
"concurrency-limited": mtglib.EventConcurrencyLimited{
|
|
CreatedAt: time.Now(),
|
|
},
|
|
"ip-blacklisted": mtglib.EventIPBlocklisted{
|
|
RemoteIP: net.ParseIP("10.0.0.10"),
|
|
CreatedAt: time.Now(),
|
|
},
|
|
"replay-attack": mtglib.EventReplayAttack{
|
|
CreatedAt: time.Now(),
|
|
ConnID: "connID",
|
|
},
|
|
}
|
|
suite.ctx = context.Background()
|
|
}
|
|
|
|
func (suite *NoopTestSuite) TestStream() {
|
|
stream := events.NewNoopStream()
|
|
|
|
for name, v := range suite.testData {
|
|
value := v
|
|
|
|
suite.T().Run(name, func(t *testing.T) {
|
|
stream.Send(suite.ctx, value)
|
|
})
|
|
}
|
|
}
|
|
|
|
func (suite *NoopTestSuite) TestObserver() {
|
|
observer := events.NewNoopObserver()
|
|
|
|
for name, v := range suite.testData {
|
|
value := v
|
|
|
|
suite.T().Run(name, func(t *testing.T) {
|
|
switch typedEvt := value.(type) {
|
|
case mtglib.EventStart:
|
|
observer.EventStart(typedEvt)
|
|
case mtglib.EventConnectedToDC:
|
|
observer.EventConnectedToDC(typedEvt)
|
|
case mtglib.EventDomainFronting:
|
|
observer.EventDomainFronting(typedEvt)
|
|
case mtglib.EventFinish:
|
|
observer.EventFinish(typedEvt)
|
|
case mtglib.EventConcurrencyLimited:
|
|
observer.EventConcurrencyLimited(typedEvt)
|
|
case mtglib.EventIPBlocklisted:
|
|
observer.EventIPBlocklisted(typedEvt)
|
|
case mtglib.EventReplayAttack:
|
|
observer.EventReplayAttack(typedEvt)
|
|
}
|
|
})
|
|
}
|
|
|
|
observer.Shutdown()
|
|
}
|
|
|
|
func TestNoop(t *testing.T) {
|
|
t.Parallel()
|
|
suite.Run(t, &NoopTestSuite{})
|
|
}
|