- 更新项目名称为 AUTO_MAA_Go_Updater - 重构代码结构,优化函数命名和逻辑 - 移除 CDK 相关的冗余代码 - 调整版本号为 git commit hash - 更新构建配置和脚本 - 优化 API 客户端实现
154 lines
3.5 KiB
Go
154 lines
3.5 KiB
Go
package config
|
||
|
||
import (
|
||
"os"
|
||
"path/filepath"
|
||
"testing"
|
||
)
|
||
|
||
func TestConfigManagerLoadSave(t *testing.T) {
|
||
// 为测试创建临时目录
|
||
tempDir := t.TempDir()
|
||
|
||
// 使用临时路径创建配置管理器
|
||
cm := &DefaultConfigManager{
|
||
configPath: filepath.Join(tempDir, "test-config.yaml"),
|
||
}
|
||
|
||
// 测试加载不存在的配置(应创建默认配置)
|
||
config, err := cm.Load()
|
||
if err != nil {
|
||
t.Errorf("加载配置失败: %v", err)
|
||
}
|
||
|
||
if config == nil {
|
||
t.Errorf("配置不应为 nil")
|
||
}
|
||
|
||
// 验证默认值
|
||
if config.CurrentVersion != "v1.0.0" {
|
||
t.Errorf("期望默认版本 v1.0.0,得到 %s", config.CurrentVersion)
|
||
}
|
||
|
||
if config.UserAgent != "AUTO_MAA_Go_Updater/1.0" {
|
||
t.Errorf("期望默认用户代理,得到 %s", config.UserAgent)
|
||
}
|
||
|
||
// 设置一些值
|
||
config.ResourceID = "TEST123"
|
||
|
||
// 保存配置
|
||
err = cm.Save(config)
|
||
if err != nil {
|
||
t.Errorf("保存配置失败: %v", err)
|
||
}
|
||
|
||
// 再次加载配置
|
||
loadedConfig, err := cm.Load()
|
||
if err != nil {
|
||
t.Errorf("加载已保存配置失败: %v", err)
|
||
}
|
||
|
||
// 验证值
|
||
if loadedConfig.ResourceID != "TEST123" {
|
||
t.Errorf("期望 ResourceID TEST123,得到 %s", loadedConfig.ResourceID)
|
||
}
|
||
}
|
||
|
||
func TestConfigValidation(t *testing.T) {
|
||
tests := []struct {
|
||
name string
|
||
config *Config
|
||
expectError bool
|
||
}{
|
||
{
|
||
name: "空配置",
|
||
config: nil,
|
||
expectError: true,
|
||
},
|
||
{
|
||
name: "空 ResourceID",
|
||
config: &Config{
|
||
ResourceID: "",
|
||
CurrentVersion: "v1.0.0",
|
||
UserAgent: "Test/1.0",
|
||
LogLevel: "info",
|
||
CheckInterval: 3600,
|
||
},
|
||
expectError: true,
|
||
},
|
||
{
|
||
name: "有效配置",
|
||
config: &Config{
|
||
ResourceID: "TEST",
|
||
CurrentVersion: "v1.0.0",
|
||
UserAgent: "Test/1.0",
|
||
LogLevel: "info",
|
||
CheckInterval: 3600,
|
||
},
|
||
expectError: false,
|
||
},
|
||
}
|
||
|
||
for _, tt := range tests {
|
||
t.Run(tt.name, func(t *testing.T) {
|
||
err := validateConfig(tt.config)
|
||
if tt.expectError && err == nil {
|
||
t.Errorf("期望错误但没有得到")
|
||
}
|
||
if !tt.expectError && err != nil {
|
||
t.Errorf("期望无错误但得到: %v", err)
|
||
}
|
||
})
|
||
}
|
||
}
|
||
|
||
func TestGetDefaultConfig(t *testing.T) {
|
||
config := getDefaultConfig()
|
||
|
||
if config == nil {
|
||
t.Fatal("getDefaultConfig() 返回 nil")
|
||
}
|
||
|
||
// 验证默认值
|
||
if config.ResourceID != "AUTO_MAA" {
|
||
t.Errorf("期望 ResourceID 'AUTO_MAA',得到 %s", config.ResourceID)
|
||
}
|
||
if config.CurrentVersion != "v1.0.0" {
|
||
t.Errorf("期望 CurrentVersion 'v1.0.0',得到 %s", config.CurrentVersion)
|
||
}
|
||
if config.UserAgent != "AUTO_MAA_Go_Updater/1.0" {
|
||
t.Errorf("期望 UserAgent 'AUTO_MAA_Go_Updater/1.0',得到 %s", config.UserAgent)
|
||
}
|
||
if config.LogLevel != "info" {
|
||
t.Errorf("期望 LogLevel 'info',得到 %s", config.LogLevel)
|
||
}
|
||
if config.CheckInterval != 3600 {
|
||
t.Errorf("期望 CheckInterval 3600,得到 %d", config.CheckInterval)
|
||
}
|
||
if !config.AutoCheck {
|
||
t.Errorf("期望 AutoCheck true,得到 %v", config.AutoCheck)
|
||
}
|
||
}
|
||
|
||
func TestGetConfigDir(t *testing.T) {
|
||
// 保存原始 APPDATA
|
||
originalAppData := os.Getenv("APPDATA")
|
||
defer os.Setenv("APPDATA", originalAppData)
|
||
|
||
// 测试设置了 APPDATA
|
||
os.Setenv("APPDATA", "C:\\Users\\Test\\AppData\\Roaming")
|
||
dir := getConfigDir()
|
||
expected := "C:\\Users\\Test\\AppData\\Roaming\\AUTO_MAA_Go_Updater"
|
||
if dir != expected {
|
||
t.Errorf("期望 %s,得到 %s", expected, dir)
|
||
}
|
||
|
||
// 测试没有 APPDATA
|
||
os.Unsetenv("APPDATA")
|
||
dir = getConfigDir()
|
||
if dir != "." {
|
||
t.Errorf("期望当前目录,得到 %s", dir)
|
||
}
|
||
}
|