https_test.go 801 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. package handler
  2. import (
  3. "crypto/tls"
  4. "ehang.io/nps/lib/enet"
  5. "github.com/stretchr/testify/assert"
  6. "net"
  7. "testing"
  8. )
  9. func TestHandleHttpsConn(t *testing.T) {
  10. h := HttpsHandler{}
  11. rule := &testRule{}
  12. h.AddRule(rule)
  13. finish := make(chan struct{}, 0)
  14. ln, err := net.Listen("tcp", "127.0.0.1:0")
  15. assert.NoError(t, err)
  16. go func() {
  17. conn, err := ln.Accept()
  18. assert.NoError(t, err)
  19. buf := make([]byte, 1024)
  20. n, err := conn.Read(buf)
  21. assert.NoError(t, err)
  22. res, err := h.HandleConn(buf[:n], enet.NewReaderConn(conn))
  23. assert.NoError(t, err)
  24. assert.Equal(t, true, res)
  25. assert.Equal(t, true, rule.run)
  26. finish <- struct{}{}
  27. }()
  28. go func() {
  29. _, err = tls.Dial("tcp", ln.Addr().String(), &tls.Config{
  30. InsecureSkipVerify: true,
  31. })
  32. assert.NoError(t, err)
  33. }()
  34. <-finish
  35. }