package app import "testing" func TestValidateSettingValue(t *testing.T) { t.Parallel() tests := []struct { name string key string valueType string value string wantErr bool }{ {name: "int_ok_generic", key: "any_int", valueType: "int", value: "0", wantErr: false}, {name: "int_invalid", key: "any_int", valueType: "int", value: "x", wantErr: true}, {name: "int_generic_min_minus_1_ok", key: "any_int", valueType: "int", value: "-1", wantErr: false}, {name: "int_generic_less_than_minus_1_reject", key: "any_int", valueType: "int", value: "-2", wantErr: true}, {name: "int_max_key_retries_reject_0", key: "max_key_retries", valueType: "int", value: "0", wantErr: true}, {name: "int_max_key_retries_ok_1", key: "max_key_retries", valueType: "int", value: "1", wantErr: false}, {name: "int_channel_check_interval_ok_0", key: "channel_check_interval_hours", valueType: "int", value: "0", wantErr: false}, {name: "int_channel_check_interval_ok_1", key: "channel_check_interval_hours", valueType: "int", value: "1", wantErr: false}, {name: "int_channel_check_interval_reject_negative", key: "channel_check_interval_hours", valueType: "int", value: "-1", wantErr: true}, {name: "int_log_retention_days_ok_disabled", key: "log_retention_days", valueType: "int", value: "-1", wantErr: false}, {name: "int_log_retention_days_reject_0", key: "log_retention_days", valueType: "int", value: "0", wantErr: true}, {name: "int_log_retention_days_ok_min", key: "log_retention_days", valueType: "int", value: "1", wantErr: false}, {name: "int_log_retention_days_ok_max", key: "log_retention_days", valueType: "int", value: "365", wantErr: false}, {name: "int_log_retention_days_reject_over", key: "log_retention_days", valueType: "int", value: "366", wantErr: true}, {name: "bool_ok_true", key: "any_bool", valueType: "bool", value: "true", wantErr: false}, {name: "bool_ok_false", key: "any_bool", valueType: "bool", value: "false", wantErr: false}, {name: "bool_ok_1", key: "any_bool", valueType: "bool", value: "1", wantErr: false}, {name: "bool_ok_0", key: "any_bool", valueType: "bool", value: "0", wantErr: false}, {name: "bool_reject", key: "any_bool", valueType: "bool", value: "yes", wantErr: true}, {name: "duration_ok_0", key: "any_duration", valueType: "duration", value: "0", wantErr: false}, {name: "duration_ok_10", key: "any_duration", valueType: "duration", value: "10", wantErr: false}, {name: "duration_reject_negative", key: "any_duration", valueType: "duration", value: "-1", wantErr: true}, {name: "duration_reject_non_int", key: "any_duration", valueType: "duration", value: "1.5", wantErr: true}, {name: "string_accepts_any", key: "any_string", valueType: "string", value: "", wantErr: false}, {name: "unknown_type_reject", key: "k", valueType: "wtf", value: "x", wantErr: true}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { err := validateSettingValue(tt.key, tt.valueType, tt.value) if (err != nil) != tt.wantErr { t.Fatalf("validateSettingValue(%q,%q,%q) err=%v, wantErr=%v", tt.key, tt.valueType, tt.value, err, tt.wantErr) } }) } }