mirror of
https://github.com/mochi-mqtt/server.git
synced 2025-09-26 20:21:12 +08:00

* fix typos, indicate unused returns * Add test for publishToClient acl unauthorized * Add Inline Client as a server option
106 lines
2.0 KiB
Go
106 lines
2.0 KiB
Go
package listeners
|
|
|
|
import (
|
|
"errors"
|
|
"net"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestNewNet(t *testing.T) {
|
|
n, err := net.Listen("tcp", "127.0.0.1:0")
|
|
require.NoError(t, err)
|
|
|
|
l := NewNet("t1", n)
|
|
require.Equal(t, "t1", l.id)
|
|
}
|
|
|
|
func TestNetID(t *testing.T) {
|
|
n, err := net.Listen("tcp", "127.0.0.1:0")
|
|
require.NoError(t, err)
|
|
|
|
l := NewNet("t1", n)
|
|
require.Equal(t, "t1", l.ID())
|
|
}
|
|
|
|
func TestNetAddress(t *testing.T) {
|
|
n, err := net.Listen("tcp", "127.0.0.1:0")
|
|
require.NoError(t, err)
|
|
|
|
l := NewNet("t1", n)
|
|
require.Equal(t, n.Addr().String(), l.Address())
|
|
}
|
|
|
|
func TestNetProtocol(t *testing.T) {
|
|
n, err := net.Listen("tcp", "127.0.0.1:0")
|
|
require.NoError(t, err)
|
|
|
|
l := NewNet("t1", n)
|
|
require.Equal(t, "tcp", l.Protocol())
|
|
}
|
|
|
|
func TestNetInit(t *testing.T) {
|
|
n, err := net.Listen("tcp", "127.0.0.1:0")
|
|
require.NoError(t, err)
|
|
|
|
l := NewNet("t1", n)
|
|
err = l.Init(logger)
|
|
l.Close(MockCloser)
|
|
require.NoError(t, err)
|
|
}
|
|
|
|
func TestNetServeAndClose(t *testing.T) {
|
|
n, err := net.Listen("tcp", "127.0.0.1:0")
|
|
require.NoError(t, err)
|
|
|
|
l := NewNet("t1", n)
|
|
err = l.Init(logger)
|
|
require.NoError(t, err)
|
|
|
|
o := make(chan bool)
|
|
go func(o chan bool) {
|
|
l.Serve(MockEstablisher)
|
|
o <- true
|
|
}(o)
|
|
|
|
time.Sleep(time.Millisecond)
|
|
|
|
var closed bool
|
|
l.Close(func(id string) {
|
|
closed = true
|
|
})
|
|
|
|
require.True(t, closed)
|
|
<-o
|
|
|
|
l.Close(MockCloser) // coverage: close closed
|
|
l.Serve(MockEstablisher) // coverage: serve closed
|
|
}
|
|
|
|
func TestNetEstablishThenEnd(t *testing.T) {
|
|
n, err := net.Listen("tcp", "127.0.0.1:0")
|
|
require.NoError(t, err)
|
|
|
|
l := NewNet("t1", n)
|
|
err = l.Init(logger)
|
|
require.NoError(t, err)
|
|
|
|
o := make(chan bool)
|
|
established := make(chan bool)
|
|
go func() {
|
|
l.Serve(func(id string, c net.Conn) error {
|
|
established <- true
|
|
return errors.New("ending") // return an error to exit immediately
|
|
})
|
|
o <- true
|
|
}()
|
|
|
|
time.Sleep(time.Millisecond)
|
|
_, _ = net.Dial("tcp", n.Addr().String())
|
|
require.Equal(t, true, <-established)
|
|
l.Close(MockCloser)
|
|
<-o
|
|
}
|