Files
warpbox-dev/backend/libs/config/config_test.go

81 lines
2.1 KiB
Go
Raw Normal View History

package config
import (
"testing"
"time"
)
func TestParseMegabytes(t *testing.T) {
tests := map[string]int64{
"0.5": 512 * 1024,
"0.5Mb": 512 * 1024,
"1mb": 1024 * 1024,
"1MB": 1024 * 1024,
"1.5Mb": 1536 * 1024,
" 2 ": 2 * 1024 * 1024,
}
for input, want := range tests {
got, err := parseMegabytes(input)
if err != nil {
t.Fatalf("parseMegabytes(%q) returned error: %v", input, err)
}
if got != want {
t.Fatalf("parseMegabytes(%q) = %d, want %d", input, got, want)
}
}
}
func TestParseMegabytesRejectsInvalidValues(t *testing.T) {
tests := []string{"", "0", "-1", "abc"}
for _, input := range tests {
if _, err := parseMegabytes(input); err == nil {
t.Fatalf("parseMegabytes(%q) returned nil error", input)
}
}
}
func TestEnvBool(t *testing.T) {
t.Setenv("WARPBOX_TEST_BOOL", "false")
if got := envBool("WARPBOX_TEST_BOOL", true); got {
t.Fatalf("envBool() = true, want false")
}
t.Setenv("WARPBOX_TEST_BOOL", "1")
if got := envBool("WARPBOX_TEST_BOOL", false); !got {
t.Fatalf("envBool() = false, want true")
}
t.Setenv("WARPBOX_TEST_BOOL", "not-a-bool")
if got := envBool("WARPBOX_TEST_BOOL", true); !got {
t.Fatalf("envBool() did not fall back to true")
}
}
func TestLoadDefaultsUseLargeUploadFriendlyTimeouts(t *testing.T) {
t.Setenv("WARPBOX_BASE_URL", "http://example.test")
cfg, err := Load()
if err != nil {
t.Fatalf("Load returned error: %v", err)
}
if cfg.ReadHeaderTimeout != 15*time.Second {
t.Fatalf("ReadHeaderTimeout = %s, want 15s", cfg.ReadHeaderTimeout)
}
if cfg.ReadTimeout != 0 {
t.Fatalf("ReadTimeout = %s, want 0 for long uploads", cfg.ReadTimeout)
}
if cfg.WriteTimeout != 0 {
t.Fatalf("WriteTimeout = %s, want 0 for long uploads", cfg.WriteTimeout)
}
if !cfg.ResumableUploadsEnabled {
t.Fatalf("ResumableUploadsEnabled = false, want true")
}
if cfg.ResumableChunkSize != 8*1024*1024 {
t.Fatalf("ResumableChunkSize = %d, want 8 MiB", cfg.ResumableChunkSize)
}
if cfg.ResumableRetention != 24*time.Hour {
t.Fatalf("ResumableRetention = %s, want 24h", cfg.ResumableRetention)
}
}