mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-06-06 21:24:10 +00:00
- Add tests for config, database, model, util/common, util/crypto, util/random, web/middleware, web/service, and xray packages - Fix redirect middleware using slice instead of map to guarantee deterministic longest-prefix-first matching order
91 lines
2.1 KiB
Go
91 lines
2.1 KiB
Go
package xray
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/mhsanaei/3x-ui/v2/logger"
|
|
"github.com/op/go-logging"
|
|
)
|
|
|
|
func init() {
|
|
// Initialize logger for tests that use LogWriter (which calls logger.Debug/Error/etc.)
|
|
logger.InitLogger(logging.DEBUG)
|
|
}
|
|
|
|
func TestNewLogWriter(t *testing.T) {
|
|
lw := NewLogWriter()
|
|
if lw == nil {
|
|
t.Fatal("NewLogWriter should not return nil")
|
|
}
|
|
}
|
|
|
|
func TestLogWriter_Write_CrashDetection(t *testing.T) {
|
|
lw := NewLogWriter()
|
|
msg := []byte("panic: runtime error: index out of range")
|
|
n, err := lw.Write(msg)
|
|
if err != nil {
|
|
t.Fatalf("Write should not return error: %v", err)
|
|
}
|
|
if n != len(msg) {
|
|
t.Errorf("Write returned %d, expected %d", n, len(msg))
|
|
}
|
|
}
|
|
|
|
func TestLogWriter_Write_FatalError(t *testing.T) {
|
|
lw := NewLogWriter()
|
|
msg := []byte("fatal error: concurrent map writes")
|
|
n, err := lw.Write(msg)
|
|
if err != nil {
|
|
t.Fatalf("Write should not return error: %v", err)
|
|
}
|
|
if n != len(msg) {
|
|
t.Errorf("Write returned %d, expected %d", n, len(msg))
|
|
}
|
|
}
|
|
|
|
func TestLogWriter_Write_Exception(t *testing.T) {
|
|
lw := NewLogWriter()
|
|
msg := []byte("unhandled exception occurred")
|
|
n, err := lw.Write(msg)
|
|
if err != nil {
|
|
t.Fatalf("Write should not return error: %v", err)
|
|
}
|
|
if n != len(msg) {
|
|
t.Errorf("Write returned %d, expected %d", n, len(msg))
|
|
}
|
|
}
|
|
|
|
func TestLogWriter_Write_EmptyMessage(t *testing.T) {
|
|
lw := NewLogWriter()
|
|
n, err := lw.Write([]byte(""))
|
|
if err != nil {
|
|
t.Fatalf("Write should not error: %v", err)
|
|
}
|
|
if n != 0 {
|
|
t.Errorf("Write returned %d, expected 0", n)
|
|
}
|
|
}
|
|
|
|
func TestLogWriter_Write_TLSErrorSuppressed(t *testing.T) {
|
|
lw := NewLogWriter()
|
|
msg := []byte("some tls handshake error occurred")
|
|
n, err := lw.Write(msg)
|
|
if err != nil {
|
|
t.Fatalf("Write should not return error: %v", err)
|
|
}
|
|
if n != len(msg) {
|
|
t.Errorf("Write returned %d, expected %d", n, len(msg))
|
|
}
|
|
}
|
|
|
|
func TestLogWriter_Write_FailedKeyword(t *testing.T) {
|
|
lw := NewLogWriter()
|
|
msg := []byte("connection failed to remote")
|
|
n, err := lw.Write(msg)
|
|
if err != nil {
|
|
t.Fatalf("Write should not return error: %v", err)
|
|
}
|
|
if n != len(msg) {
|
|
t.Errorf("Write returned %d, expected %d", n, len(msg))
|
|
}
|
|
}
|