2026-06-23 19:52:14 +08:00

48 lines
1.4 KiB
Go

package config
import (
"os"
"path/filepath"
"testing"
)
func TestLoadNormalizesFirebaseProjects(t *testing.T) {
// 多 App Firebase 配置必须在加载阶段归一化,避免线上 YAML 的空格或大小写让 app 路由失效。
path := filepath.Join(t.TempDir(), "config.yaml")
if err := os.WriteFile(path, []byte(`
third_party:
allowed_providers:
- " firebase "
firebase:
project_id: " lalu-party "
allowed_sign_in_providers:
- " google.com "
certs_url: " https://certs.example.test "
projects:
" Huwaa ":
project_id: " huwaa-6f3aa "
lalu:
project_id: " lalu-party "
`), 0o600); err != nil {
t.Fatalf("write config failed: %v", err)
}
cfg, err := Load(path)
if err != nil {
t.Fatalf("Load failed: %v", err)
}
huwaa, ok := cfg.ThirdParty.Firebase.Projects["huwaa"]
if !ok {
t.Fatalf("huwaa Firebase project must be keyed by normalized app_code: %+v", cfg.ThirdParty.Firebase.Projects)
}
if huwaa.ProjectID != "huwaa-6f3aa" {
t.Fatalf("huwaa project_id mismatch: %+v", huwaa)
}
if len(huwaa.AllowedSignInProviders) != 1 || huwaa.AllowedSignInProviders[0] != "google.com" {
t.Fatalf("huwaa sign-in providers should inherit normalized global allowlist: %+v", huwaa.AllowedSignInProviders)
}
if huwaa.CertsURL != "https://certs.example.test" {
t.Fatalf("huwaa certs_url should inherit global certs_url: %q", huwaa.CertsURL)
}
}