[MM-62537] Fix: Integration action nil ptr dereference (#29986)
* guard against nil dereference; lock down with tests * fix test name
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
95fe972d83
Коммит
87ea6d8b1c
@@ -466,7 +466,7 @@ func isDefaultInOptions(defaultValue string, options []*PostActionOptions) bool
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, option := range options {
|
for _, option := range options {
|
||||||
if defaultValue == option.Value {
|
if option != nil && defaultValue == option.Value {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -322,6 +322,22 @@ func TestOpenDialogRequestIsValid(t *testing.T) {
|
|||||||
assert.ErrorContains(t, err, "invalid data source")
|
assert.ErrorContains(t, err, "invalid data source")
|
||||||
})
|
})
|
||||||
|
|
||||||
|
t.Run("should fail on wrong select default value, and not fail with nil dereference", func(t *testing.T) {
|
||||||
|
request := getBaseOpenDialogRequest()
|
||||||
|
request.Dialog.Elements = append(request.Dialog.Elements, DialogElement{
|
||||||
|
DisplayName: "Select element name",
|
||||||
|
Name: "select_element_name",
|
||||||
|
Type: "select",
|
||||||
|
DataSource: "",
|
||||||
|
Default: "default",
|
||||||
|
Options: []*PostActionOptions{
|
||||||
|
nil,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
err := request.IsValid()
|
||||||
|
assert.ErrorContains(t, err, "default value \"default\" doesn't exist in options")
|
||||||
|
})
|
||||||
|
|
||||||
t.Run("should fail on wrong radio default value", func(t *testing.T) {
|
t.Run("should fail on wrong radio default value", func(t *testing.T) {
|
||||||
request := getBaseOpenDialogRequest()
|
request := getBaseOpenDialogRequest()
|
||||||
request.Dialog.Elements = append(request.Dialog.Elements, DialogElement{
|
request.Dialog.Elements = append(request.Dialog.Elements, DialogElement{
|
||||||
@@ -339,6 +355,20 @@ func TestOpenDialogRequestIsValid(t *testing.T) {
|
|||||||
err := request.IsValid()
|
err := request.IsValid()
|
||||||
assert.ErrorContains(t, err, "default value \"default\" doesn't exist in options")
|
assert.ErrorContains(t, err, "default value \"default\" doesn't exist in options")
|
||||||
})
|
})
|
||||||
|
t.Run("should fail on wrong radio default value, and not fail with nil dereference", func(t *testing.T) {
|
||||||
|
request := getBaseOpenDialogRequest()
|
||||||
|
request.Dialog.Elements = append(request.Dialog.Elements, DialogElement{
|
||||||
|
DisplayName: "Radio element name",
|
||||||
|
Name: "radio_element_name",
|
||||||
|
Type: "radio",
|
||||||
|
Default: "default",
|
||||||
|
Options: []*PostActionOptions{
|
||||||
|
nil,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
err := request.IsValid()
|
||||||
|
assert.ErrorContains(t, err, "default value \"default\" doesn't exist in options")
|
||||||
|
})
|
||||||
t.Run("should pass radio default value", func(t *testing.T) {
|
t.Run("should pass radio default value", func(t *testing.T) {
|
||||||
request := getBaseOpenDialogRequest()
|
request := getBaseOpenDialogRequest()
|
||||||
request.Dialog.Elements = append(request.Dialog.Elements, DialogElement{
|
request.Dialog.Elements = append(request.Dialog.Elements, DialogElement{
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user