Files
olons_server/internal/config/config_test.go
T

67 lines
2.1 KiB
Go

package config
import (
"os"
"path/filepath"
"testing"
)
func TestDefaultConfigUsesOlonsAdmin(t *testing.T) {
cfg := defaultConfig()
if err := cfg.validate(); err != nil {
t.Fatal(err)
}
}
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")
}
}