// Package server 提供测试工具函数和依赖注入支持
package server

import (
	"crypto/tls"
	"net"
	"time"

	"github.com/valyala/fasthttp"
	"rua.plus/lolly/internal/lua"
	"rua.plus/lolly/internal/ssl"
)

// MockFastServer 是 fasthttp.Server 的 Mock 包装
// 定义在此文件以便 TestServerOptions 可以引用
type MockFastServer struct {
	Handler            fasthttp.RequestHandler
	TLSConfig          *tls.Config
	ServeFunc          func(ln net.Listener) error
	ServeTLSFunc       func(ln net.Listener, certFile, keyFile string) error
	ShutdownFunc       func() error
	Name               string
	ReadTimeout        time.Duration
	WriteTimeout       time.Duration
	IdleTimeout        time.Duration
	MaxConnsPerIP      int
	MaxRequestsPerConn int
	CloseOnShutdown    bool
}

// TestDependencies 包含测试时可注入的依赖
// 使用具体指针类型，允许注入 Mock 实现
type TestDependencies struct {
	LuaEngine  *lua.LuaEngine
	TLSManager *ssl.TLSManager
}

// TestServerOptions 测试服务器的可选配置
type TestServerOptions struct {
	MockFastServer    *MockFastServer
	CustomHandler     fasthttp.RequestHandler
	SkipListener      bool
	DisableMiddleware bool
}
