- 公网反代:Nginx 状态卡片(版本 / 运行状态 / 配置校验 / 端口监听) - 部署设置第一、二梯队(HTTPS 开关、安全头、限流、连接数、仅中国大陆 IP) - 隧道检测兼容 frps v0.68 / v0.71(V2 与旧版端点) - 恢复被清空的 internal/frp/store.go、internal/api/ddns_handler.go、web/src/views/DdnsView.vue
45 lines
948 B
Go
45 lines
948 B
Go
package nginx
|
|
|
|
import "testing"
|
|
|
|
func TestValidateConfigSyntax(t *testing.T) {
|
|
valid := `server {
|
|
listen 80;
|
|
location / {
|
|
proxy_pass http://127.0.0.1:8080;
|
|
}
|
|
}`
|
|
if err := ValidateConfigSyntax(valid); err != nil {
|
|
t.Fatalf("expected valid config: %v", err)
|
|
}
|
|
|
|
cases := []struct {
|
|
name string
|
|
content string
|
|
}{
|
|
{"garbage line", "server {\n 1 1\n}\n"},
|
|
{"missing semicolon", "server {\n listen 80\n}\n"},
|
|
{"unbalanced brace", "server {\n listen 80;\n"},
|
|
}
|
|
for _, tc := range cases {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
if err := ValidateConfigSyntax(tc.content); err == nil {
|
|
t.Fatalf("expected error for %q", tc.name)
|
|
}
|
|
})
|
|
}
|
|
|
|
t.Run("allows comment lines", func(t *testing.T) {
|
|
content := `# 规则:测试
|
|
server {
|
|
# 监听 80
|
|
listen 80;
|
|
}
|
|
# HTTP 跳转
|
|
`
|
|
if err := ValidateConfigSyntax(content); err != nil {
|
|
t.Fatalf("expected comments to pass: %v", err)
|
|
}
|
|
})
|
|
}
|