unit test
This commit is contained in:
155
pkg/config/config_test.go
Normal file
155
pkg/config/config_test.go
Normal file
@ -0,0 +1,155 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"os"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestDefaultConfig(t *testing.T) {
|
||||
cfg := DefaultConfig()
|
||||
|
||||
// 测试 Common 配置
|
||||
if cfg.Common.LogLevel != "info" {
|
||||
t.Errorf("Expected log level 'info', got '%s'", cfg.Common.LogLevel)
|
||||
}
|
||||
if cfg.Common.LogFile != "app.log" {
|
||||
t.Errorf("Expected log file 'app.log', got '%s'", cfg.Common.LogFile)
|
||||
}
|
||||
|
||||
// 测试 GB28181 配置
|
||||
if cfg.GB28181.Serial != "34020000002000000001" {
|
||||
t.Errorf("Expected serial '34020000002000000001', got '%s'", cfg.GB28181.Serial)
|
||||
}
|
||||
if cfg.GB28181.Realm != "3402000000" {
|
||||
t.Errorf("Expected realm '3402000000', got '%s'", cfg.GB28181.Realm)
|
||||
}
|
||||
if cfg.GB28181.Host != "0.0.0.0" {
|
||||
t.Errorf("Expected host '0.0.0.0', got '%s'", cfg.GB28181.Host)
|
||||
}
|
||||
if cfg.GB28181.Port != 5060 {
|
||||
t.Errorf("Expected port 5060, got %d", cfg.GB28181.Port)
|
||||
}
|
||||
if cfg.GB28181.Auth.Enable != false {
|
||||
t.Errorf("Expected auth enable false, got %v", cfg.GB28181.Auth.Enable)
|
||||
}
|
||||
if cfg.GB28181.Auth.Password != "123456" {
|
||||
t.Errorf("Expected auth password '123456', got '%s'", cfg.GB28181.Auth.Password)
|
||||
}
|
||||
|
||||
// 测试 HTTP 配置
|
||||
if cfg.Http.Port != 8025 {
|
||||
t.Errorf("Expected http port 8025, got %d", cfg.Http.Port)
|
||||
}
|
||||
if cfg.Http.Dir != "./html" {
|
||||
t.Errorf("Expected http dir './html', got '%s'", cfg.Http.Dir)
|
||||
}
|
||||
}
|
||||
|
||||
func TestLoadConfigNonExistent(t *testing.T) {
|
||||
// 测试加载不存在的配置文件,应该返回默认配置
|
||||
cfg, err := LoadConfig("non_existent_config.yaml")
|
||||
if err != nil {
|
||||
t.Fatalf("Expected no error for non-existent config, got: %v", err)
|
||||
}
|
||||
|
||||
// 应该返回默认配置
|
||||
defaultCfg := DefaultConfig()
|
||||
if cfg.Common.LogLevel != defaultCfg.Common.LogLevel {
|
||||
t.Errorf("Expected default log level, got '%s'", cfg.Common.LogLevel)
|
||||
}
|
||||
}
|
||||
|
||||
func TestLoadConfigValid(t *testing.T) {
|
||||
// 创建临时配置文件
|
||||
tempFile := "test_config.yaml"
|
||||
defer os.Remove(tempFile)
|
||||
|
||||
configContent := `common:
|
||||
log-level: debug
|
||||
log-file: test.log
|
||||
gb28181:
|
||||
serial: "12345678901234567890"
|
||||
realm: "1234567890"
|
||||
host: "127.0.0.1"
|
||||
port: 5061
|
||||
auth:
|
||||
enable: true
|
||||
password: "test123"
|
||||
http:
|
||||
listen: 9000
|
||||
dir: "./test_html"
|
||||
`
|
||||
|
||||
err := os.WriteFile(tempFile, []byte(configContent), 0644)
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to create test config file: %v", err)
|
||||
}
|
||||
|
||||
// 加载配置
|
||||
cfg, err := LoadConfig(tempFile)
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to load config: %v", err)
|
||||
}
|
||||
|
||||
// 验证配置
|
||||
if cfg.Common.LogLevel != "debug" {
|
||||
t.Errorf("Expected log level 'debug', got '%s'", cfg.Common.LogLevel)
|
||||
}
|
||||
if cfg.Common.LogFile != "test.log" {
|
||||
t.Errorf("Expected log file 'test.log', got '%s'", cfg.Common.LogFile)
|
||||
}
|
||||
if cfg.GB28181.Serial != "12345678901234567890" {
|
||||
t.Errorf("Expected serial '12345678901234567890', got '%s'", cfg.GB28181.Serial)
|
||||
}
|
||||
if cfg.GB28181.Port != 5061 {
|
||||
t.Errorf("Expected port 5061, got %d", cfg.GB28181.Port)
|
||||
}
|
||||
if cfg.GB28181.Auth.Enable != true {
|
||||
t.Errorf("Expected auth enable true, got %v", cfg.GB28181.Auth.Enable)
|
||||
}
|
||||
if cfg.Http.Port != 9000 {
|
||||
t.Errorf("Expected http port 9000, got %d", cfg.Http.Port)
|
||||
}
|
||||
}
|
||||
|
||||
func TestLoadConfigInvalid(t *testing.T) {
|
||||
// 创建无效的配置文件
|
||||
tempFile := "test_invalid_config.yaml"
|
||||
defer os.Remove(tempFile)
|
||||
|
||||
invalidContent := `invalid yaml content: [[[`
|
||||
|
||||
err := os.WriteFile(tempFile, []byte(invalidContent), 0644)
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to create test config file: %v", err)
|
||||
}
|
||||
|
||||
// 加载配置应该失败
|
||||
_, err = LoadConfig(tempFile)
|
||||
if err == nil {
|
||||
t.Error("Expected error for invalid config file, got nil")
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetLocalIP(t *testing.T) {
|
||||
ip, err := GetLocalIP()
|
||||
|
||||
// 在某些环境下可能没有网络接口,所以允许返回错误
|
||||
if err != nil {
|
||||
t.Logf("GetLocalIP returned error (may be expected in some environments): %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
// 如果成功,验证返回的是有效的 IP 地址
|
||||
if ip == "" {
|
||||
t.Error("Expected non-empty IP address")
|
||||
}
|
||||
|
||||
// 简单验证 IP 格式(应该包含点号)
|
||||
if len(ip) < 7 { // 最短的 IP 是 0.0.0.0
|
||||
t.Errorf("IP address seems invalid: %s", ip)
|
||||
}
|
||||
|
||||
t.Logf("Local IP: %s", ip)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user