Files
sub2api-cn-relay-manager/tests/integration/config_bootstrap_test.go
phamnazage-jpg 71cbaf5fa6 test(project): achieve ≥70% package coverage across all internal packages
- store/sqlite: 75.4% (repos + db coverage)
- host/sub2api: 80.8% (httptest mock server, pure function tests)
- app: 74.2% (handler error paths, NewActionSet closures)
- pack: 72.4%
- provision: 75.2%
- access: 77.3%
- config: 94.7% (lookup mock tests)

All tests pass: build, vet, race, coverage gates.
2026-05-15 19:26:25 +08:00

86 lines
2.3 KiB
Go

package integration_test
import (
"context"
"testing"
"sub2api-cn-relay-manager/internal/app"
"sub2api-cn-relay-manager/internal/config"
)
func TestLoadStartupFromEnvUsesDefaultsWhenOptionalValuesMissing(t *testing.T) {
t.Setenv("SUB2API_CRM_LISTEN_ADDR", "")
t.Setenv("SUB2API_CRM_SQLITE_DSN", "")
cfg, err := config.LoadStartupFromEnv()
if err != nil {
t.Fatalf("LoadStartupFromEnv() returned error: %v", err)
}
if cfg.Server.ListenAddr != config.DefaultListenAddr {
t.Fatalf("ListenAddr = %q, want %q", cfg.Server.ListenAddr, config.DefaultListenAddr)
}
if cfg.Database.SQLiteDSN != config.DefaultSQLiteDSN {
t.Fatalf("SQLiteDSN = %q, want %q", cfg.Database.SQLiteDSN, config.DefaultSQLiteDSN)
}
}
func TestLoadStartupFromEnvAppliesOverrides(t *testing.T) {
t.Setenv("SUB2API_CRM_LISTEN_ADDR", "127.0.0.1:9090")
t.Setenv("SUB2API_CRM_SQLITE_DSN", "file:custom.db?_foreign_keys=on")
cfg, err := config.LoadStartupFromEnv()
if err != nil {
t.Fatalf("LoadStartupFromEnv() returned error: %v", err)
}
if cfg.Server.ListenAddr != "127.0.0.1:9090" {
t.Fatalf("ListenAddr = %q, want %q", cfg.Server.ListenAddr, "127.0.0.1:9090")
}
if cfg.Database.SQLiteDSN != "file:custom.db?_foreign_keys=on" {
t.Fatalf("SQLiteDSN = %q, want %q", cfg.Database.SQLiteDSN, "file:custom.db?_foreign_keys=on")
}
}
func TestLoadAdminTokenFromEnvReturnsToken(t *testing.T) {
t.Setenv("SUB2API_CRM_ADMIN_TOKEN", "admin-token")
token, err := config.LoadAdminTokenFromEnv()
if err != nil {
t.Fatalf("LoadAdminTokenFromEnv() returned error: %v", err)
}
if token != "admin-token" {
t.Fatalf("token = %q, want %q", token, "admin-token")
}
}
func TestLoadAdminTokenFromEnvReturnsErrorWhenMissing(t *testing.T) {
t.Setenv("SUB2API_CRM_ADMIN_TOKEN", "")
_, err := config.LoadAdminTokenFromEnv()
if err == nil {
t.Fatal("LoadAdminTokenFromEnv() error = nil, want validation error")
}
}
func TestBootstrapBuildsServerWithStartupConfigAndAdminToken(t *testing.T) {
t.Setenv("SUB2API_CRM_LISTEN_ADDR", ":8181")
t.Setenv("SUB2API_CRM_ADMIN_TOKEN", "admin-token")
server, err := app.Bootstrap(context.Background())
if err != nil {
t.Fatalf("Bootstrap() returned error: %v", err)
}
if server == nil {
t.Fatal("Bootstrap() returned nil server")
}
if server.Addr() != ":8181" {
t.Fatalf("Bootstrap Addr = %q, want %q", server.Addr(), ":8181")
}
}