package config import "testing" func TestDefaultsAllowedFiles(t *testing.T) { cfg := defaults() if cfg.AllowedFilesMode != AllowedFilesByMediaType { t.Fatalf("allowed files mode = %q, want %q", cfg.AllowedFilesMode, AllowedFilesByMediaType) } wantTypes := []string{MediaTypeAudio, MediaTypeVideo} if len(cfg.EnabledMediaTypes) != len(wantTypes) { t.Fatalf("enabled media types len = %d, want %d", len(cfg.EnabledMediaTypes), len(wantTypes)) } for i, want := range wantTypes { if cfg.EnabledMediaTypes[i] != want { t.Fatalf("enabled media types[%d] = %q, want %q", i, cfg.EnabledMediaTypes[i], want) } } exts := cfg.EffectiveAllowedExtensions() if containsString(exts, ".jpg") { t.Fatalf("default extensions unexpectedly include photo files: %v", exts) } if !containsString(exts, ".mp3") || !containsString(exts, ".mp4") { t.Fatalf("default extensions = %v, want audio/video entries", exts) } } func TestValidateAllowedFilesModeExtensions(t *testing.T) { cfg := defaults() cfg.AllowedFilesMode = AllowedFilesByExtensions cfg.AllowedExtensions = []string{" mp3 ", ".MP4", "*.jpg", ".mp3"} if err := cfg.Validate(); err != nil { t.Fatalf("Validate() error = %v", err) } want := []string{".mp3", ".mp4", ".jpg"} if len(cfg.AllowedExtensions) != len(want) { t.Fatalf("allowed extensions len = %d, want %d", len(cfg.AllowedExtensions), len(want)) } for i, item := range want { if cfg.AllowedExtensions[i] != item { t.Fatalf("allowed extensions[%d] = %q, want %q", i, cfg.AllowedExtensions[i], item) } } } func TestValidateRejectsEmptyAllowedFiles(t *testing.T) { cfg := defaults() cfg.AllowedFilesMode = AllowedFilesByExtensions cfg.AllowedExtensions = nil if err := cfg.Validate(); err == nil { t.Fatal("Validate() error = nil, want non-nil") } } func containsString(items []string, want string) bool { for _, item := range items { if item == want { return true } } return false }