67 lines
2.1 KiB
Go
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")
|
|
}
|
|
}
|