feat: 从冻结 GoAdmin 源码重建 Sense 骨架 (#61)
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestValidateConfigValues(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
mode string
|
||||
secret string
|
||||
driver string
|
||||
source string
|
||||
wantErr bool
|
||||
forbidden string
|
||||
}{
|
||||
{name: "production configuration", mode: "prod", secret: strings.Repeat("s", 32), driver: "postgres", source: "host=database dbname=sense", wantErr: false},
|
||||
{name: "missing database source", mode: "prod", secret: strings.Repeat("s", 32), driver: "postgres", source: "", wantErr: true},
|
||||
{name: "rejects non PostgreSQL", mode: "prod", secret: strings.Repeat("s", 32), driver: "mysql", source: "sensitive-source", wantErr: true, forbidden: "sensitive-source"},
|
||||
{name: "short production secret", mode: "prod", secret: "short", driver: "postgres", source: "sensitive-source", wantErr: true, forbidden: "sensitive-source"},
|
||||
{name: "development permits short secret", mode: "dev", secret: "short", driver: "postgres", source: "host=database dbname=sense", wantErr: false},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
err := validateConfigValues(tt.mode, tt.secret, tt.driver, tt.source)
|
||||
if (err != nil) != tt.wantErr {
|
||||
t.Fatalf("validateConfigValues() error = %v, wantErr %v", err, tt.wantErr)
|
||||
}
|
||||
if err != nil && tt.forbidden != "" && strings.Contains(err.Error(), tt.forbidden) {
|
||||
t.Fatalf("error leaked database source: %v", err)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user