fix: use minDisabled, maxDisabled for parameter validation (#7755)

This commit is contained in:
Marcin Tojek
2023-06-02 11:43:48 +02:00
committed by GitHub
parent a7366a8b76
commit 10036ab5fb
16 changed files with 1595 additions and 62 deletions
+15 -13
View File
@@ -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
+20
View File
@@ -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},