69 lines
1.9 KiB
Go
69 lines
1.9 KiB
Go
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
|
|
}
|