MM-64718 Improve validation of thread follower imports (#33287)
* MM-64718 Improve validation of thread follower imports * Add additional test cases and restucture tests
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
4bb35c5043
Коммит
4b77485e8f
@@ -563,6 +563,14 @@ func ValidatePostImportData(data *PostImportData, maxPostSize int) *model.AppErr
|
||||
}
|
||||
}
|
||||
|
||||
if data.ThreadFollowers != nil {
|
||||
for _, follower := range *data.ThreadFollowers {
|
||||
if err := ValidateThreadFollowerImportData(&follower); err != nil {
|
||||
return model.NewAppError("BulkImport", "app.import.validate_post_import_data.thread_follower.error", nil, "", http.StatusBadRequest).Wrap(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -687,6 +695,14 @@ func ValidateDirectPostImportData(data *DirectPostImportData, maxPostSize int) *
|
||||
}
|
||||
}
|
||||
|
||||
if data.ThreadFollowers != nil {
|
||||
for _, follower := range *data.ThreadFollowers {
|
||||
if err := ValidateThreadFollowerImportData(&follower); err != nil {
|
||||
return model.NewAppError("BulkImport", "app.import.validate_direct_post_import_data.thread_follower.error", nil, "", http.StatusBadRequest).Wrap(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -717,6 +733,18 @@ func ValidateEmojiImportData(data *EmojiImportData) *model.AppError {
|
||||
return nil
|
||||
}
|
||||
|
||||
func ValidateThreadFollowerImportData(data *ThreadFollowerImportData) *model.AppError {
|
||||
if data == nil {
|
||||
return model.NewAppError("BulkImport", "app.import.validate_thread_follower_data.empty.error", nil, "", http.StatusBadRequest)
|
||||
}
|
||||
|
||||
if data.User == nil || *data.User == "" {
|
||||
return model.NewAppError("BulkImport", "app.import.validate_thread_follower_data.user_missing.error", nil, "", http.StatusBadRequest)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func isValidTrueOrFalseString(value string) bool {
|
||||
return value == "true" || value == "false"
|
||||
}
|
||||
|
||||
@@ -1541,6 +1541,58 @@ func TestImportValidateEmojiImportData(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestImportValidateThreadFollowerImportData(t *testing.T) {
|
||||
testCases := []struct {
|
||||
testName string
|
||||
input *ThreadFollowerImportData
|
||||
expectError bool
|
||||
}{
|
||||
{
|
||||
testName: "success",
|
||||
input: &ThreadFollowerImportData{
|
||||
LastViewed: model.NewPointer(int64(0)),
|
||||
UnreadMentions: model.NewPointer(int64(0)),
|
||||
User: model.NewPointer("user1"),
|
||||
},
|
||||
expectError: false,
|
||||
},
|
||||
{
|
||||
testName: "nil",
|
||||
input: nil,
|
||||
expectError: true,
|
||||
},
|
||||
{
|
||||
testName: "nil user",
|
||||
input: &ThreadFollowerImportData{
|
||||
LastViewed: model.NewPointer(int64(0)),
|
||||
UnreadMentions: model.NewPointer(int64(0)),
|
||||
User: nil,
|
||||
},
|
||||
expectError: true,
|
||||
},
|
||||
{
|
||||
testName: "empty user",
|
||||
input: &ThreadFollowerImportData{
|
||||
LastViewed: model.NewPointer(int64(0)),
|
||||
UnreadMentions: model.NewPointer(int64(0)),
|
||||
User: model.NewPointer(""),
|
||||
},
|
||||
expectError: true,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range testCases {
|
||||
t.Run(tc.testName, func(t *testing.T) {
|
||||
err := ValidateThreadFollowerImportData(tc.input)
|
||||
if tc.expectError {
|
||||
require.NotNil(t, err)
|
||||
} else {
|
||||
assert.Nil(t, err)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func checkError(t *testing.T, err *model.AppError) {
|
||||
require.NotNil(t, err, "Should have returned an error.")
|
||||
}
|
||||
|
||||
Ссылка в новой задаче
Block a user