| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- package mtglib
-
- import (
- "context"
- "net"
- "testing"
-
- "github.com/9seconds/mtg/v2/internal/testlib"
- "github.com/stretchr/testify/suite"
- )
-
- type StreamContextTestSuite struct {
- suite.Suite
-
- connMock *testlib.NetConnMock
- logger NoopLogger
- ctx *streamContext
- ctxCancel context.CancelFunc
- }
-
- func (suite *StreamContextTestSuite) SetupSuite() {
- suite.logger = NoopLogger{}
- }
-
- func (suite *StreamContextTestSuite) SetupTest() {
- ctx, cancel := context.WithCancel(context.Background())
- ctx = context.WithValue(ctx, "key", "value") // nolint: golint, revive, staticcheck
-
- suite.ctxCancel = cancel
- suite.connMock = &testlib.NetConnMock{}
-
- addr := &net.TCPAddr{
- IP: net.ParseIP("10.0.0.10"),
- Port: 6676,
- }
- suite.connMock.On("RemoteAddr").Return(addr)
-
- suite.ctx = newStreamContext(ctx, suite.logger, suite.connMock)
- }
-
- func (suite *StreamContextTestSuite) TearDownTest() {
- suite.ctxCancel()
- suite.connMock.AssertExpectations(suite.T())
- }
-
- func (suite *StreamContextTestSuite) TestContextInterface() {
- _, ok := suite.ctx.Deadline()
- suite.False(ok)
-
- select {
- case <-suite.ctx.Done():
- suite.FailNow("unexpectedly done")
- default:
- }
-
- suite.NoError(suite.ctx.Err())
- suite.Equal("value", suite.ctx.Value("key"))
-
- suite.ctxCancel()
-
- select {
- case <-suite.ctx.Done():
- suite.Error(suite.ctx.Err())
- default:
- suite.FailNow("unexpectedly not done")
- }
- }
-
- func (suite *StreamContextTestSuite) TestClientIP() {
- suite.Equal("10.0.0.10", suite.ctx.ClientIP().String())
- }
-
- func (suite *StreamContextTestSuite) TestClose() {
- suite.connMock.On("Close").Once().Return(nil)
-
- tgConnMock := &testlib.NetConnMock{}
- tgConnMock.On("Close").Once().Return(nil)
-
- suite.ctx.telegramConn = tgConnMock
- suite.ctx.Close()
-
- select {
- case <-suite.ctx.Done():
- suite.Error(suite.ctx.Err())
- default:
- suite.FailNow("unexpectedly not done")
- }
-
- tgConnMock.AssertExpectations(suite.T())
- }
-
- func TestStreamContext(t *testing.T) {
- t.Parallel()
- suite.Run(t, &StreamContextTestSuite{})
- }
|