diff --git a/server/public/model/integration_action.go b/server/public/model/integration_action.go index 011cc3c5222..d46fec13353 100644 --- a/server/public/model/integration_action.go +++ b/server/public/model/integration_action.go @@ -466,7 +466,7 @@ func isDefaultInOptions(defaultValue string, options []*PostActionOptions) bool } for _, option := range options { - if defaultValue == option.Value { + if option != nil && defaultValue == option.Value { return true } } diff --git a/server/public/model/integration_action_test.go b/server/public/model/integration_action_test.go index 9bafd0fde2b..cbdbe041be3 100644 --- a/server/public/model/integration_action_test.go +++ b/server/public/model/integration_action_test.go @@ -322,6 +322,22 @@ func TestOpenDialogRequestIsValid(t *testing.T) { 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) { request := getBaseOpenDialogRequest() request.Dialog.Elements = append(request.Dialog.Elements, DialogElement{ @@ -339,6 +355,20 @@ func TestOpenDialogRequestIsValid(t *testing.T) { err := request.IsValid() 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) { request := getBaseOpenDialogRequest() request.Dialog.Elements = append(request.Dialog.Elements, DialogElement{