mirror of
https://github.com/apernet/hysteria.git
synced 2025-04-03 04:27:39 +03:00
59 lines
1.3 KiB
Go
59 lines
1.3 KiB
Go
package http
|
|
|
|
import (
|
|
"errors"
|
|
"net"
|
|
"net/http"
|
|
"os/exec"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"github.com/apernet/hysteria/core/v2/client"
|
|
)
|
|
|
|
const (
|
|
testCertFile = "test.crt"
|
|
testKeyFile = "test.key"
|
|
)
|
|
|
|
type mockHyClient struct{}
|
|
|
|
func (c *mockHyClient) TCP(addr string) (net.Conn, error) {
|
|
return net.Dial("tcp", addr)
|
|
}
|
|
|
|
func (c *mockHyClient) UDP() (client.HyUDPConn, error) {
|
|
return nil, errors.New("not implemented")
|
|
}
|
|
|
|
func (c *mockHyClient) Close() error {
|
|
return nil
|
|
}
|
|
|
|
func TestServer(t *testing.T) {
|
|
// Start the server
|
|
l, err := net.Listen("tcp", "127.0.0.1:18080")
|
|
assert.NoError(t, err)
|
|
defer l.Close()
|
|
s := &Server{
|
|
HyClient: &mockHyClient{},
|
|
}
|
|
go s.Serve(l)
|
|
|
|
// Start a test HTTP & HTTPS server
|
|
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
|
|
w.Write([]byte("control is an illusion"))
|
|
})
|
|
go http.ListenAndServe("127.0.0.1:18081", nil)
|
|
go http.ListenAndServeTLS("127.0.0.1:18082", testCertFile, testKeyFile, nil)
|
|
|
|
// Run the Python test script
|
|
cmd := exec.Command("python", "server_test.py")
|
|
// Suppress HTTPS warning text from Python
|
|
cmd.Env = append(cmd.Env, "PYTHONWARNINGS=ignore:Unverified HTTPS request")
|
|
out, err := cmd.CombinedOutput()
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, "OK", strings.TrimSpace(string(out)))
|
|
}
|