mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
fix: use minDisabled, maxDisabled for parameter validation (#7755)
This commit is contained in:
+15
-13
@@ -78,24 +78,26 @@ func ValidateWorkspaceBuildParameter(richParameter TemplateVersionParameter, bui
|
||||
return nil
|
||||
}
|
||||
|
||||
var min, max int
|
||||
if richParameter.ValidationMin != nil {
|
||||
min = int(*richParameter.ValidationMin)
|
||||
}
|
||||
if richParameter.ValidationMax != nil {
|
||||
max = int(*richParameter.ValidationMax)
|
||||
}
|
||||
|
||||
validation := &provider.Validation{
|
||||
Min: ptrInt(richParameter.ValidationMin),
|
||||
Max: ptrInt(richParameter.ValidationMax),
|
||||
Regex: richParameter.ValidationRegex,
|
||||
Error: richParameter.ValidationError,
|
||||
Monotonic: string(richParameter.ValidationMonotonic),
|
||||
Min: min,
|
||||
Max: max,
|
||||
MinDisabled: richParameter.ValidationMin == nil,
|
||||
MaxDisabled: richParameter.ValidationMax == nil,
|
||||
Regex: richParameter.ValidationRegex,
|
||||
Error: richParameter.ValidationError,
|
||||
Monotonic: string(richParameter.ValidationMonotonic),
|
||||
}
|
||||
return validation.Valid(richParameter.Type, value)
|
||||
}
|
||||
|
||||
func ptrInt(number *int32) *int {
|
||||
if number == nil {
|
||||
return nil
|
||||
}
|
||||
n := int(*number)
|
||||
return &n
|
||||
}
|
||||
|
||||
func findBuildParameter(params []WorkspaceBuildParameter, parameterName string) (*WorkspaceBuildParameter, bool) {
|
||||
if params == nil {
|
||||
return nil, false
|
||||
|
||||
@@ -187,6 +187,18 @@ func TestRichParameterValidation(t *testing.T) {
|
||||
{Name: boolParameterName, Type: "bool", Mutable: true},
|
||||
}
|
||||
|
||||
numberRichParametersMinOnly := []codersdk.TemplateVersionParameter{
|
||||
{Name: stringParameterName, Type: "string", Mutable: true},
|
||||
{Name: numberParameterName, Type: "number", Mutable: true, ValidationMin: ptr.Ref(int32(5))},
|
||||
{Name: boolParameterName, Type: "bool", Mutable: true},
|
||||
}
|
||||
|
||||
numberRichParametersMaxOnly := []codersdk.TemplateVersionParameter{
|
||||
{Name: stringParameterName, Type: "string", Mutable: true},
|
||||
{Name: numberParameterName, Type: "number", Mutable: true, ValidationMax: ptr.Ref(int32(5))},
|
||||
{Name: boolParameterName, Type: "bool", Mutable: true},
|
||||
}
|
||||
|
||||
monotonicIncreasingNumberRichParameters := []codersdk.TemplateVersionParameter{
|
||||
{Name: stringParameterName, Type: "string", Mutable: true},
|
||||
{Name: numberParameterName, Type: "number", Mutable: true, ValidationMin: ptr.Ref(int32(3)), ValidationMax: ptr.Ref(int32(10)), ValidationMonotonic: "increasing"},
|
||||
@@ -232,6 +244,14 @@ func TestRichParameterValidation(t *testing.T) {
|
||||
{numberParameterName, "10", true, numberRichParameters},
|
||||
{numberParameterName, "11", false, numberRichParameters},
|
||||
|
||||
{numberParameterName, "4", false, numberRichParametersMinOnly},
|
||||
{numberParameterName, "5", true, numberRichParametersMinOnly},
|
||||
{numberParameterName, "6", true, numberRichParametersMinOnly},
|
||||
|
||||
{numberParameterName, "4", true, numberRichParametersMaxOnly},
|
||||
{numberParameterName, "5", true, numberRichParametersMaxOnly},
|
||||
{numberParameterName, "6", false, numberRichParametersMaxOnly},
|
||||
|
||||
{numberParameterName, "6", false, monotonicIncreasingNumberRichParameters},
|
||||
{numberParameterName, "7", true, monotonicIncreasingNumberRichParameters},
|
||||
{numberParameterName, "8", true, monotonicIncreasingNumberRichParameters},
|
||||
|
||||
Reference in New Issue
Block a user