mirror of
https://github.com/fatedier/frp.git
synced 2026-04-20 07:59:10 +08:00
update for strict config (#3779)
This commit is contained in:
@@ -15,6 +15,7 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
@@ -56,36 +57,57 @@ const jsonServerContent = `
|
||||
`
|
||||
|
||||
func TestLoadServerConfig(t *testing.T) {
|
||||
for _, content := range []string{tomlServerContent, yamlServerContent, jsonServerContent} {
|
||||
svrCfg := v1.ServerConfig{}
|
||||
err := LoadConfigure([]byte(content), &svrCfg, true)
|
||||
require := require.New(t)
|
||||
require.NoError(err)
|
||||
require.EqualValues("127.0.0.1", svrCfg.BindAddr)
|
||||
require.EqualValues(7000, svrCfg.KCPBindPort)
|
||||
require.EqualValues(7001, svrCfg.QUICBindPort)
|
||||
require.EqualValues(7005, svrCfg.TCPMuxHTTPConnectPort)
|
||||
require.EqualValues("/abc.html", svrCfg.Custom404Page)
|
||||
require.EqualValues(10, svrCfg.Transport.TCPKeepAlive)
|
||||
tests := []struct {
|
||||
name string
|
||||
content string
|
||||
}{
|
||||
{"toml", tomlServerContent},
|
||||
{"yaml", yamlServerContent},
|
||||
{"json", jsonServerContent},
|
||||
}
|
||||
for _, test := range tests {
|
||||
t.Run(test.name, func(t *testing.T) {
|
||||
require := require.New(t)
|
||||
svrCfg := v1.ServerConfig{}
|
||||
err := LoadConfigure([]byte(test.content), &svrCfg, true)
|
||||
require.NoError(err)
|
||||
require.EqualValues("127.0.0.1", svrCfg.BindAddr)
|
||||
require.EqualValues(7000, svrCfg.KCPBindPort)
|
||||
require.EqualValues(7001, svrCfg.QUICBindPort)
|
||||
require.EqualValues(7005, svrCfg.TCPMuxHTTPConnectPort)
|
||||
require.EqualValues("/abc.html", svrCfg.Custom404Page)
|
||||
require.EqualValues(10, svrCfg.Transport.TCPKeepAlive)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// Test that loading in strict mode fails when the config is invalid.
|
||||
func TestLoadServerConfigErrorMode(t *testing.T) {
|
||||
for strict := range []bool{false, true} {
|
||||
for _, content := range []string{tomlServerContent, yamlServerContent, jsonServerContent} {
|
||||
// Break the content with an innocent typo
|
||||
brokenContent := strings.Replace(content, "bindAddr", "bindAdur", 1)
|
||||
svrCfg := v1.ServerConfig{}
|
||||
err := LoadConfigure([]byte(brokenContent), &svrCfg, strict == 1)
|
||||
require := require.New(t)
|
||||
if strict == 1 {
|
||||
require.ErrorContains(err, "bindAdur")
|
||||
} else {
|
||||
require.NoError(err)
|
||||
// BindAddr didn't get parsed because of the typo.
|
||||
require.EqualValues("", svrCfg.BindAddr)
|
||||
}
|
||||
func TestLoadServerConfigStrictMode(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
content string
|
||||
}{
|
||||
{"toml", tomlServerContent},
|
||||
{"yaml", yamlServerContent},
|
||||
{"json", jsonServerContent},
|
||||
}
|
||||
|
||||
for _, strict := range []bool{false, true} {
|
||||
for _, test := range tests {
|
||||
t.Run(fmt.Sprintf("%s-strict-%t", test.name, strict), func(t *testing.T) {
|
||||
require := require.New(t)
|
||||
// Break the content with an innocent typo
|
||||
brokenContent := strings.Replace(test.content, "bindAddr", "bindAdur", 1)
|
||||
svrCfg := v1.ServerConfig{}
|
||||
err := LoadConfigure([]byte(brokenContent), &svrCfg, strict)
|
||||
if strict {
|
||||
require.ErrorContains(err, "bindAdur")
|
||||
} else {
|
||||
require.NoError(err)
|
||||
// BindAddr didn't get parsed because of the typo.
|
||||
require.EqualValues("", svrCfg.BindAddr)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user