package config import ( "os" "path/filepath" "testing" ) func TestDefaultConfigUsesOlonsAdmin(t *testing.T) { cfg := defaultConfig() if err := cfg.validate(); err != nil { t.Fatal(err) } if cfg.IM.TenantCode != "default" { t.Fatalf("unexpected default IM tenant: %q", cfg.IM.TenantCode) } } func TestConfigRejectsOtherDatabase(t *testing.T) { cfg := defaultConfig() cfg.MySQL.DSN = "root:root@tcp(127.0.0.1:3306)/other_database?parseTime=true" if err := cfg.validate(); err == nil { t.Fatal("expected non-olons_admin database to be rejected") } } func TestLoadPreservesConfiguredFinanceKeyAsLegacyWhenEnvironmentOverridesIt(t *testing.T) { path := filepath.Join(t.TempDir(), "config.json") data := []byte(`{"auth":{"finance_master_key":"legacy-finance-master-key-with-at-least-32-characters"}}`) if err := os.WriteFile(path, data, 0o600); err != nil { t.Fatal(err) } t.Setenv("OLONS_SERVER_CONFIG", path) t.Setenv("OLONS_SERVER_FINANCE_MASTER_KEY", "current-finance-master-key-with-at-least-32-characters") cfg, err := Load() if err != nil { t.Fatal(err) } if len(cfg.Auth.FinanceLegacyMasterKeys) != 1 || cfg.Auth.FinanceLegacyMasterKeys[0] != "legacy-finance-master-key-with-at-least-32-characters" { t.Fatalf("configured finance key was not retained for historical data: %#v", cfg.Auth.FinanceLegacyMasterKeys) } } func TestApplyUploadSystemConfig(t *testing.T) { cfg := UploadConfig{Driver: "local", Region: "us-east-1"} ApplyUploadSystemConfig(&cfg, map[string]string{ "uploadDrive": "minio", "uploadMinioAccessKey": "access", "uploadMinioSecretKey": "secret", "uploadMinioEndpoint": "minio.example.com", "uploadMinioUseSSL": "1", "uploadMinioPath": "images/", "uploadMinioBucket": "bucket", "uploadMinioDomain": "https://cdn.example.com", }) if err := ValidateUpload(cfg); err != nil { t.Fatal(err) } if cfg.Driver != "minio" || !cfg.Secure || cfg.Bucket != "bucket" || cfg.Path != "images/" { t.Fatalf("unexpected upload config: %+v", cfg) } } func TestValidateUploadRejectsIncompleteMinio(t *testing.T) { if err := ValidateUpload(UploadConfig{Driver: "minio"}); err == nil { t.Fatal("expected incomplete minio config to be rejected") } }