|
package config |
|
|
|
import ( |
|
"fmt" |
|
"reflect" |
|
"testing" |
|
|
|
"github.com/GoAdminGroup/go-admin/modules/utils" |
|
|
|
"github.com/stretchr/testify/assert" |
|
) |
|
|
|
func TestConfig_GetIndexUrl(t *testing.T) { |
|
Initialize(&Config{ |
|
UrlPrefix: "admin", |
|
IndexUrl: "/", |
|
}) |
|
|
|
assert.Equal(t, Get().GetIndexURL(), "/admin") |
|
|
|
testSetCfg(&Config{ |
|
UrlPrefix: "/admin", |
|
IndexUrl: "/", |
|
}) |
|
|
|
assert.Equal(t, Get().GetIndexURL(), "/admin") |
|
|
|
testSetCfg(&Config{ |
|
UrlPrefix: "/admin", |
|
IndexUrl: "/", |
|
}) |
|
|
|
assert.Equal(t, Get().GetIndexURL(), "/admin") |
|
} |
|
|
|
func TestConfig_Index(t *testing.T) { |
|
testSetCfg(&Config{ |
|
UrlPrefix: "admin", |
|
IndexUrl: "/", |
|
}) |
|
|
|
assert.Equal(t, Get().Index(), "/") |
|
} |
|
|
|
func TestConfig_Prefix(t *testing.T) { |
|
testSetCfg(&Config{ |
|
UrlPrefix: "admin", |
|
IndexUrl: "/", |
|
}) |
|
|
|
assert.Equal(t, Get().Prefix(), "/admin") |
|
|
|
testSetCfg(&Config{ |
|
UrlPrefix: "/admin", |
|
IndexUrl: "/", |
|
}) |
|
|
|
assert.Equal(t, Get().Prefix(), "/admin") |
|
} |
|
|
|
func TestConfig_Url(t *testing.T) { |
|
testSetCfg(&Config{ |
|
UrlPrefix: "admin", |
|
IndexUrl: "/", |
|
}) |
|
|
|
assert.Equal(t, Get().Url("/info/user"), "/admin/info/user") |
|
|
|
testSetCfg(&Config{ |
|
UrlPrefix: "/admin", |
|
IndexUrl: "/", |
|
}) |
|
|
|
assert.Equal(t, Get().Url("/info/user"), "/admin/info/user") |
|
assert.Equal(t, Get().Url("/info/user") != "/admin/info/user/", true) |
|
} |
|
|
|
func TestConfig_UrlRemovePrefix(t *testing.T) { |
|
|
|
testSetCfg(&Config{ |
|
UrlPrefix: "/admin", |
|
IndexUrl: "/", |
|
}) |
|
|
|
assert.Equal(t, Get().URLRemovePrefix("/admin/info/user"), "/info/user") |
|
} |
|
|
|
func TestConfig_PrefixFixSlash(t *testing.T) { |
|
|
|
testSetCfg(&Config{ |
|
UrlPrefix: "/admin", |
|
IndexUrl: "/", |
|
}) |
|
|
|
assert.Equal(t, Get().PrefixFixSlash(), "/admin") |
|
|
|
testSetCfg(&Config{ |
|
UrlPrefix: "admin", |
|
IndexUrl: "/", |
|
}) |
|
|
|
assert.Equal(t, Get().PrefixFixSlash(), "/admin") |
|
} |
|
|
|
func TestSet(t *testing.T) { |
|
testSetCfg(&Config{Theme: "abc"}) |
|
testSetCfg(&Config{Theme: "bcd"}) |
|
assert.Equal(t, Get().Theme, "bcd") |
|
} |
|
|
|
func TestStore_URL(t *testing.T) { |
|
testSetCfg(&Config{ |
|
Store: Store{ |
|
Prefix: "/file", |
|
Path: "./uploads", |
|
}, |
|
}) |
|
|
|
assert.Equal(t, Get().Store.URL("/xxxxxx.png"), "/file/xxxxxx.png") |
|
|
|
testSetCfg(&Config{ |
|
Store: Store{ |
|
Prefix: "http://xxxxx.com/xxxx/file", |
|
Path: "./uploads", |
|
}, |
|
}) |
|
|
|
assert.Equal(t, Get().Store.URL("/xxxxxx.png"), "http://xxxxx.com/xxxx/file/xxxxxx.png") |
|
|
|
testSetCfg(&Config{ |
|
Store: Store{ |
|
Prefix: "/file", |
|
Path: "./uploads", |
|
}, |
|
}) |
|
|
|
assert.Equal(t, Get().Store.URL("http://xxxxx.com/xxxx/file/xxxx.png"), "http://xxxxx.com/xxxx/file/xxxx.png") |
|
} |
|
|
|
func TestDatabase_ParamStr(t *testing.T) { |
|
cfg := Database{ |
|
Driver: DriverMysql, |
|
Params: map[string]string{ |
|
"parseTime": "true", |
|
}, |
|
} |
|
assert.Equal(t, cfg.ParamStr(), "?charset=utf8mb4&parseTime=true") |
|
} |
|
|
|
func TestReadFromYaml(t *testing.T) { |
|
cfg := ReadFromYaml("./config.yaml") |
|
assert.Equal(t, cfg.Databases.GetDefault().Driver, "mssql") |
|
assert.Equal(t, cfg.Domain, "localhost") |
|
assert.Equal(t, cfg.UrlPrefix, "admin") |
|
assert.Equal(t, cfg.Store.Path, "./uploads") |
|
assert.Equal(t, cfg.IndexUrl, "/") |
|
assert.Equal(t, cfg.Debug, true) |
|
assert.Equal(t, cfg.OpenAdminApi, true) |
|
assert.Equal(t, cfg.ColorScheme, "skin-black") |
|
} |
|
|
|
func TestReadFromINI(t *testing.T) { |
|
cfg := ReadFromINI("./config.ini") |
|
assert.Equal(t, cfg.Databases.GetDefault().Driver, "postgresql") |
|
assert.Equal(t, cfg.Domain, "localhost") |
|
assert.Equal(t, cfg.UrlPrefix, "admin") |
|
assert.Equal(t, cfg.Store.Path, "./uploads") |
|
assert.Equal(t, cfg.IndexUrl, "/") |
|
assert.Equal(t, cfg.Debug, true) |
|
assert.Equal(t, cfg.OpenAdminApi, true) |
|
assert.Equal(t, cfg.ColorScheme, "skin-black") |
|
} |
|
|
|
func testSetCfg(cfg *Config) { |
|
count = 0 |
|
Initialize(cfg) |
|
} |
|
|
|
func TestUpdate(t *testing.T) { |
|
m := map[string]string{ |
|
"access_assets_log_off": `true`, |
|
"access_log_off": `false`, |
|
"access_log_path": "", |
|
"allow_del_operation_log": `false`, |
|
"animation": `{"type":"fadeInUp","duration":0,"delay":0}`, |
|
"animation_delay": `0.00`, |
|
"animation_duration": `0`, |
|
"animation_type": `fadeInUp`, |
|
"app_id": `70rv3KwjwjXE`, |
|
"asset_root_path": `./public/`, |
|
"asset_url": "", |
|
"auth_user_table": `goadmin_users`, |
|
"bootstrap_file_path": `./../datamodel/bootstrap.go`, |
|
"color_scheme": `skin-black`, |
|
"custom_403_html": "", |
|
"custom_404_html": "", |
|
"custom_500_html": "", |
|
"custom_foot_html": "", |
|
"custom_head_html": ` <link rel="icon" type="image/png" sizes="32x32" href="//quick.go-admin.cn/official/assets/imgs/icons.ico/favicon-32x32.png">`, |
|
"databases": `{"default":{"host":"127.0.0.1","port":"3306","user":"root","pwd":"root","name":"godmin","max_idle_con":50,"max_open_con":150,"driver":"mysql","file":"","dsn":""}}`, |
|
"debug": `true`, |
|
"domain": "", |
|
"env": `test`, |
|
"error_log_off": `false`, |
|
"error_log_path": "", |
|
"exclude_theme_components": `null`, |
|
"extra": "", |
|
"file_upload_engine": `{"name":"local","config":null}`, |
|
"footer_info": "", |
|
"go_mod_file_path": "", |
|
"hide_app_info_entrance": `false`, |
|
"hide_config_center_entrance": `false`, |
|
"hide_plugin_entrance": `false`, |
|
"hide_tool_entrance": `false`, |
|
"hide_visitor_user_center_entrance": `false`, |
|
"index_url": `/`, |
|
"info_log_off": `false`, |
|
"info_log_path": "", |
|
"language": `zh`, |
|
"logger_encoder_caller": `full`, |
|
"logger_encoder_caller_key": `caller`, |
|
"logger_encoder_duration": `string`, |
|
"logger_encoder_encoding": `console`, |
|
"logger_encoder_level": `capitalColor`, |
|
"logger_encoder_level_key": `level`, |
|
"logger_encoder_message_key": `msg`, |
|
"logger_encoder_name_key": `logger`, |
|
"logger_encoder_stacktrace_key": `stacktrace`, |
|
"logger_encoder_time": `iso8601`, |
|
"logger_encoder_time_key": `ts`, |
|
"logger_level": `0`, |
|
"logger_rotate_compress": `false`, |
|
"logger_rotate_max_age": `30`, |
|
"logger_rotate_max_backups": `5`, |
|
"logger_rotate_max_size": `10`, |
|
"login_logo": "", |
|
"login_title": `GoAdmin`, |
|
"login_url": `/login`, |
|
"logo": `<b>Go</b>Admin`, |
|
"mini_logo": `<b>G</b>A`, |
|
"no_limit_login_ip": `false`, |
|
"open_admin_api": `false`, |
|
"operation_log_off": `false`, |
|
"plugin_file_path": `/go/src/github.com/GoAdminGroup/go-admin/examples/gin/plugins.go`, |
|
"session_life_time": `7200`, |
|
"site_off": `false`, |
|
"sql_log": `true`, |
|
"store": `{"path":"./uploads","prefix":"uploads"}`, |
|
"theme": `sword`, |
|
"title": `GoAdmin`, |
|
"url_prefix": `admin`, |
|
} |
|
c := &Config{} |
|
c2 := &Config{} |
|
if c.Update(m) == nil { |
|
if c.Language != c2.Language || |
|
c.Domain != c2.Domain || |
|
c.Theme != c2.Theme || |
|
c.Title != c2.Title || |
|
c.Logo != c2.Logo || |
|
c.MiniLogo != c2.MiniLogo || |
|
c.Debug != c2.Debug || |
|
c.SiteOff != c2.SiteOff || |
|
c.AccessLogOff != c2.AccessLogOff || |
|
c.InfoLogOff != c2.InfoLogOff || |
|
c.ErrorLogOff != c2.ErrorLogOff || |
|
c.AccessAssetsLogOff != c2.AccessAssetsLogOff || |
|
c.InfoLogPath != c2.InfoLogPath || |
|
c.ErrorLogPath != c2.ErrorLogPath || |
|
c.AccessLogPath != c2.AccessLogPath || |
|
c.SqlLog != c2.SqlLog || |
|
c.Logger.Rotate.MaxSize != c2.Logger.Rotate.MaxSize || |
|
c.Logger.Rotate.MaxBackups != c2.Logger.Rotate.MaxBackups || |
|
c.Logger.Rotate.MaxAge != c2.Logger.Rotate.MaxAge || |
|
c.Logger.Rotate.Compress != c2.Logger.Rotate.Compress || |
|
c.Logger.Encoder.Encoding != c2.Logger.Encoder.Encoding || |
|
c.Logger.Level != c2.Logger.Level || |
|
c.Logger.Encoder.TimeKey != c2.Logger.Encoder.TimeKey || |
|
c.Logger.Encoder.LevelKey != c2.Logger.Encoder.LevelKey || |
|
c.Logger.Encoder.NameKey != c2.Logger.Encoder.NameKey || |
|
c.Logger.Encoder.CallerKey != c2.Logger.Encoder.CallerKey || |
|
c.Logger.Encoder.MessageKey != c2.Logger.Encoder.MessageKey || |
|
c.Logger.Encoder.StacktraceKey != c2.Logger.Encoder.StacktraceKey || |
|
c.Logger.Encoder.Level != c2.Logger.Encoder.Level || |
|
c.Logger.Encoder.Time != c2.Logger.Encoder.Time || |
|
c.Logger.Encoder.Duration != c2.Logger.Encoder.Duration || |
|
c.Logger.Encoder.Caller != c2.Logger.Encoder.Caller || |
|
c.ColorScheme != c2.ColorScheme || |
|
c.SessionLifeTime != c2.SessionLifeTime || |
|
c.CustomHeadHtml != c2.CustomHeadHtml || |
|
c.CustomFootHtml != c2.CustomFootHtml || |
|
c.Custom404HTML != c2.Custom404HTML || |
|
c.Custom403HTML != c2.Custom403HTML || |
|
c.Custom500HTML != c2.Custom500HTML || |
|
c.BootstrapFilePath != c2.BootstrapFilePath || |
|
c.GoModFilePath != c2.GoModFilePath || |
|
c.FooterInfo != c2.FooterInfo || |
|
c.LoginTitle != c2.LoginTitle || |
|
c.AssetUrl != c2.AssetUrl || |
|
c.LoginLogo != c2.LoginLogo || |
|
c.NoLimitLoginIP != c2.NoLimitLoginIP || |
|
c.AllowDelOperationLog != c2.AllowDelOperationLog || |
|
c.OperationLogOff != c2.OperationLogOff || |
|
c.HideConfigCenterEntrance != c2.HideConfigCenterEntrance || |
|
c.HideAppInfoEntrance != c2.HideAppInfoEntrance || |
|
c.HideToolEntrance != c2.HideToolEntrance || |
|
c.HidePluginEntrance != c2.HidePluginEntrance || |
|
c.FileUploadEngine.Name != c2.FileUploadEngine.Name || |
|
c.Animation.Type != c2.Animation.Type || |
|
c.Animation.Duration != c2.Animation.Duration || |
|
c.Animation.Delay != c2.Animation.Delay || |
|
!reflect.DeepEqual(c.Extra, c2.Extra) { |
|
panic("c.Extra") |
|
} |
|
} |
|
} |
|
|
|
func TestToMap(t *testing.T) { |
|
c := &Config{ |
|
UrlPrefix: "/admin", |
|
IndexUrl: "/", |
|
MiniLogo: "<asdfadsf>", |
|
Animation: PageAnimation{ |
|
Type: "12313213", |
|
}, |
|
SessionLifeTime: 40, |
|
ExcludeThemeComponents: []string{"asdfas", "sadfasf"}, |
|
} |
|
m := c.ToMap() |
|
fmt.Println(m) |
|
fmt.Println(m["prefix"], m["animation_type"], m["mini_logo"]) |
|
|
|
arr := []string{ |
|
"language", "databases", "domain", "url_prefix", "theme", "store", "title", "logo", "mini_logo", "index_url", |
|
"site_off", "login_url", "debug", "env", "open_admin_api", "hide_visitor_user_center_entrance", |
|
"info_log_path", "error_log_path", "access_log_path", "sql_log", "access_log_off", "info_log_off", "error_log_off", |
|
"access_assets_log_off", |
|
"logger_rotate_max_size", "logger_rotate_max_backups", "logger_rotate_max_age", "logger_rotate_compress", |
|
"logger_encoder_time_key", "logger_encoder_level_key", "logger_encoder_name_key", "logger_encoder_caller_key", |
|
"logger_encoder_message_key", "logger_encoder_stacktrace_key", "logger_encoder_level", "logger_encoder_time", |
|
"logger_encoder_duration", "logger_encoder_caller", "logger_encoder_encoding", "logger_level", |
|
"color_scheme", "session_life_time", "asset_url", "file_upload_engine", "custom_head_html", "custom_foot_html", |
|
"custom_404_html", "custom_403_html", "custom_500_html", "bootstrap_file_path", "go_mod_file_path", "footer_info", |
|
"app_id", "login_title", "login_logo", "auth_user_table", "exclude_theme_components", |
|
"extra", |
|
"animation_type", "animation_duration", "animation_delay", |
|
"no_limit_login_ip", "allow_del_operation_log", "operation_log_off", |
|
"hide_config_center_entrance", "hide_app_info_entrance", "hide_tool_entrance", "hide_plugin_entrance", |
|
"asset_root_path", |
|
} |
|
|
|
for key := range m { |
|
if !utils.InArray(arr, key) { |
|
panic(key) |
|
} |
|
} |
|
|
|
fmt.Println(len(arr), len(m)) |
|
} |
|
|