[GH-16199] add IsValid to model OpenDialogRequest (#26526)

* [GH-16199] add IsValid to model OpenDialogRequest

* [GH-16199] add IsValid to model OpenDialogRequest, revert remove of translations

* [GH-16199] fix tests after revert

* [GH-16199] add IsValid to model OpenDialogRequest

* [GH-16199] revert validation of icon url

* [GH-16199] update go sum

* [GH-16199] log warning for invalid dialog

* [GH-16199] log error for invalid dialog

* [GH-16199] log warning for invalid dialog

* [GH-16199] fix golang-ci

---------

Co-authored-by: Lukas Eipert <git@leipert.io>
Co-authored-by: Mattermost Build <build@mattermost.com>
Этот коммит содержится в:
Anna Os
2024-04-30 18:27:07 +02:00
коммит произвёл GitHub
родитель b70e657271
Коммит 48b047aa0c
10 изменённых файлов: 408 добавлений и 8 удалений

Просмотреть файл

@@ -84,7 +84,7 @@ func openDialog(c *Context, w http.ResponseWriter, r *http.Request) {
return
}
if appErr := c.App.OpenInteractiveDialog(dialog); appErr != nil {
if appErr := c.App.OpenInteractiveDialog(c.AppContext, dialog); appErr != nil {
c.Err = appErr
return
}

Просмотреть файл

@@ -16,6 +16,8 @@ import (
"github.com/stretchr/testify/require"
"github.com/mattermost/mattermost/server/public/model"
"github.com/mattermost/mattermost/server/public/shared/mlog"
"github.com/mattermost/mattermost/server/v8/channels/testlib"
)
type testHandler struct {
@@ -209,6 +211,53 @@ func TestOpenDialog(t *testing.T) {
require.NoError(t, err)
})
t.Run("Should pass with too long display name of elements", func(t *testing.T) {
request.Dialog.Elements = []model.DialogElement{
{
DisplayName: "Very very long Element Name",
Name: "element_name",
Type: "text",
Placeholder: "Enter a value",
},
}
buffer := &mlog.Buffer{}
err := mlog.AddWriterTarget(th.TestLogger, buffer, true, mlog.StdAll...)
require.NoError(t, err)
_, err = client.OpenInteractiveDialog(context.Background(), request)
require.NoError(t, err)
require.NoError(t, th.TestLogger.Flush())
testlib.AssertLog(t, buffer, mlog.LvlWarn.Name, "Interactive dialog is invalid")
})
t.Run("Should pass with same elements", func(t *testing.T) {
request.Dialog.Elements = []model.DialogElement{
{
DisplayName: "Element Name",
Name: "element_name",
Type: "text",
Placeholder: "Enter a value",
},
{
DisplayName: "Element Name",
Name: "element_name",
Type: "text",
Placeholder: "Enter a value",
},
}
buffer := &mlog.Buffer{}
err := mlog.AddWriterTarget(th.TestLogger, buffer, true, mlog.StdAll...)
require.NoError(t, err)
_, err = client.OpenInteractiveDialog(context.Background(), request)
require.NoError(t, err)
require.NoError(t, th.TestLogger.Flush())
testlib.AssertLog(t, buffer, mlog.LvlWarn.Name, "Interactive dialog is invalid")
})
t.Run("Should pass with nil elements slice", func(t *testing.T) {
request.Dialog.Elements = nil
_, err := client.OpenInteractiveDialog(context.Background(), request)