1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- package handler
- import (
- "ehang.io/nps/lib/common"
- "ehang.io/nps/lib/enet"
- "github.com/stretchr/testify/assert"
- "net"
- "testing"
- )
- func TestSocks5Handle(t *testing.T) {
- h := Socks5UdpHandler{}
- rule := &testRule{}
- h.AddRule(rule)
- finish := make(chan struct{}, 0)
- pc, err := net.ListenPacket("udp", "127.0.0.1:0")
- assert.NoError(t, err)
- go func() {
- buf := make([]byte, 1024)
- n, addr, err := pc.ReadFrom(buf)
- assert.NoError(t, err)
- rPc := enet.NewReaderPacketConn(nil, buf[:n], addr)
- res, err := h.HandlePacketConn(rPc)
- assert.NoError(t, err)
- assert.Equal(t, true, res)
- assert.Equal(t, true, rule.run)
- finish <- struct{}{}
- }()
- data := []byte("test")
- go func() {
- cPc, err := net.ListenPacket("udp", "127.0.0.1:0")
- assert.NoError(t, err)
- pAddr, err := common.ParseAddr("8.8.8.8:53")
- assert.NoError(t, err)
- b := append([]byte{0, 0, 0}, pAddr...)
- b = append(b, data...)
- _, err = cPc.WriteTo(b, pc.LocalAddr())
- assert.NoError(t, err)
- }()
- <-finish
- }
|