111 lines
3.7 KiB
Go
111 lines
3.7 KiB
Go
package config
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestLoadConfigYAML(t *testing.T) {
|
|
cfg, err := Load("../../configs/config.yaml")
|
|
if err != nil {
|
|
t.Fatalf("Load() error = %v", err)
|
|
}
|
|
|
|
if cfg.HTTPAddr != ":13100" {
|
|
t.Fatalf("HTTPAddr = %q", cfg.HTTPAddr)
|
|
}
|
|
if cfg.MySQLDSN != "hyapp:hyapp@tcp(127.0.0.1:23306)/hyapp_admin?parseTime=true&charset=utf8mb4&loc=UTC" {
|
|
t.Fatalf("MySQLDSN = %q", cfg.MySQLDSN)
|
|
}
|
|
if cfg.UserMySQLDSN != "hyapp:hyapp@tcp(127.0.0.1:23306)/hyapp_user?parseTime=true&charset=utf8mb4&loc=UTC" {
|
|
t.Fatalf("UserMySQLDSN = %q", cfg.UserMySQLDSN)
|
|
}
|
|
if cfg.AccessTokenTTL != 12*time.Hour {
|
|
t.Fatalf("AccessTokenTTL = %s", cfg.AccessTokenTTL)
|
|
}
|
|
if cfg.RefreshTokenTTL != 7*24*time.Hour {
|
|
t.Fatalf("RefreshTokenTTL = %s", cfg.RefreshTokenTTL)
|
|
}
|
|
if !cfg.Migrations.AllowChecksumRepair {
|
|
t.Fatalf("Migrations.AllowChecksumRepair = false, want true for local config")
|
|
}
|
|
if !cfg.TencentCOS.Enabled || cfg.TencentCOS.BucketName != "yumi-assets-1420526837" || cfg.TencentCOS.ObjectPrefix != "admin" {
|
|
t.Fatalf("TencentCOS = %#v", cfg.TencentCOS)
|
|
}
|
|
if !cfg.FinanceNotifications.DingTalk.Enabled {
|
|
t.Fatalf("finance dingtalk notification should be enabled by default")
|
|
}
|
|
if cfg.FinanceNotifications.DingTalk.WebhookURL == "" || cfg.FinanceNotifications.DingTalk.Secret == "" {
|
|
t.Fatalf("finance dingtalk notification config should be populated: %#v", cfg.FinanceNotifications.DingTalk)
|
|
}
|
|
}
|
|
|
|
func TestLoadEmptyPathUsesDefault(t *testing.T) {
|
|
cfg, err := Load("")
|
|
if err != nil {
|
|
t.Fatalf("Load() error = %v", err)
|
|
}
|
|
|
|
if !reflect.DeepEqual(cfg, Default()) {
|
|
t.Fatalf("Load(\"\") = %#v, want default", cfg)
|
|
}
|
|
}
|
|
|
|
func TestFinanceDingTalkEnvOverride(t *testing.T) {
|
|
t.Setenv("HYAPP_ADMIN_FINANCE_DINGTALK_WEBHOOK_URL", "https://oapi.dingtalk.com/robot/send?access_token=test")
|
|
t.Setenv("HYAPP_ADMIN_FINANCE_DINGTALK_SECRET", "SEC_TEST")
|
|
t.Setenv("HYAPP_ADMIN_FINANCE_DINGTALK_AT_MOBILES", "13800138000, 13900139000")
|
|
t.Setenv("HYAPP_ADMIN_FINANCE_DINGTALK_AT_ALL", "false")
|
|
|
|
cfg := Default()
|
|
cfg.Normalize()
|
|
|
|
if !cfg.FinanceNotifications.DingTalk.Enabled {
|
|
t.Fatal("DingTalk should be enabled when webhook env is provided")
|
|
}
|
|
if cfg.FinanceNotifications.DingTalk.Secret != "SEC_TEST" {
|
|
t.Fatalf("secret mismatch: %q", cfg.FinanceNotifications.DingTalk.Secret)
|
|
}
|
|
if len(cfg.FinanceNotifications.DingTalk.AtMobiles) != 2 {
|
|
t.Fatalf("at mobiles mismatch: %#v", cfg.FinanceNotifications.DingTalk.AtMobiles)
|
|
}
|
|
}
|
|
|
|
func TestAslanMongoEnvOverride(t *testing.T) {
|
|
t.Setenv("HYAPP_ADMIN_ASLAN_MONGO_URI", "mongodb://mongouser:secret@example:27017/test?authSource=admin")
|
|
t.Setenv("HYAPP_ADMIN_ASLAN_DASHBOARD_MONGO_DATABASE", "test_dashboard")
|
|
t.Setenv("HYAPP_ADMIN_ASLAN_MONEY_REGION_MONGO_DATABASE", "tarab_region")
|
|
|
|
cfg := Default()
|
|
cfg.Normalize()
|
|
|
|
var dashboardSource DashboardExternalSourceConfig
|
|
for _, source := range cfg.DashboardExternalSources {
|
|
if source.AppCode == "aslan" {
|
|
dashboardSource = source
|
|
break
|
|
}
|
|
}
|
|
if dashboardSource.MongoURI != "mongodb://mongouser:secret@example:27017/test?authSource=admin" {
|
|
t.Fatalf("dashboard mongo uri mismatch: %q", dashboardSource.MongoURI)
|
|
}
|
|
if dashboardSource.MongoDatabase != "test_dashboard" {
|
|
t.Fatalf("dashboard mongo database mismatch: %q", dashboardSource.MongoDatabase)
|
|
}
|
|
|
|
var regionSource MoneyRegionSourceConfig
|
|
for _, source := range cfg.MoneyRegionSources {
|
|
if source.AppCode == "aslan" {
|
|
regionSource = source
|
|
break
|
|
}
|
|
}
|
|
if regionSource.MongoURI != "mongodb://mongouser:secret@example:27017/test?authSource=admin" {
|
|
t.Fatalf("region mongo uri mismatch: %q", regionSource.MongoURI)
|
|
}
|
|
if regionSource.MongoDatabase != "tarab_region" {
|
|
t.Fatalf("region mongo database mismatch: %q", regionSource.MongoDatabase)
|
|
}
|
|
}
|