mirror of
https://github.com/mattermost/mattermost.git
synced 2025-02-25 18:55:24 -06:00
MM-57913 Increase maximum length of Preferences.Value column (#27297)
* MM-57913 Increase maximum length of Preferences.Value column * Add missing column name to migration * Lowercased table and column names
This commit is contained in:
parent
8181a9ddff
commit
5defc75e46
@ -240,6 +240,8 @@ channels/db/migrations/mysql/000120_create_channelbookmarks_table.down.sql
|
||||
channels/db/migrations/mysql/000120_create_channelbookmarks_table.up.sql
|
||||
channels/db/migrations/mysql/000121_remove_true_up_review_history.down.sql
|
||||
channels/db/migrations/mysql/000121_remove_true_up_review_history.up.sql
|
||||
channels/db/migrations/mysql/000122_preferences_value_length.down.sql
|
||||
channels/db/migrations/mysql/000122_preferences_value_length.up.sql
|
||||
channels/db/migrations/postgres/000001_create_teams.down.sql
|
||||
channels/db/migrations/postgres/000001_create_teams.up.sql
|
||||
channels/db/migrations/postgres/000002_create_team_members.down.sql
|
||||
@ -480,3 +482,5 @@ channels/db/migrations/postgres/000120_create_channelbookmarks_table.down.sql
|
||||
channels/db/migrations/postgres/000120_create_channelbookmarks_table.up.sql
|
||||
channels/db/migrations/postgres/000121_remove_true_up_review_history.down.sql
|
||||
channels/db/migrations/postgres/000121_remove_true_up_review_history.up.sql
|
||||
channels/db/migrations/postgres/000122_preferences_value_length.down.sql
|
||||
channels/db/migrations/postgres/000122_preferences_value_length.up.sql
|
||||
|
@ -0,0 +1 @@
|
||||
-- Only applicable to Postgres
|
@ -0,0 +1 @@
|
||||
-- Only applicable to Postgres
|
@ -0,0 +1 @@
|
||||
ALTER TABLE Preferences ALTER COLUMN Value TYPE VARCHAR(2000);
|
@ -0,0 +1 @@
|
||||
ALTER TABLE preferences ALTER COLUMN value TYPE text;
|
@ -60,6 +60,8 @@ const (
|
||||
PreferenceEmailIntervalHour = "hour"
|
||||
PreferenceEmailIntervalHourAsSeconds = "3600"
|
||||
PreferenceCloudUserEphemeralInfo = "cloud_user_ephemeral_info"
|
||||
|
||||
MaxPreferenceValueLength = 20000
|
||||
)
|
||||
|
||||
type Preference struct {
|
||||
@ -84,7 +86,7 @@ func (o *Preference) IsValid() *AppError {
|
||||
return NewAppError("Preference.IsValid", "model.preference.is_valid.name.app_error", nil, "name="+o.Name, http.StatusBadRequest)
|
||||
}
|
||||
|
||||
if utf8.RuneCountInString(o.Value) > 2000 {
|
||||
if utf8.RuneCountInString(o.Value) > MaxPreferenceValueLength {
|
||||
return NewAppError("Preference.IsValid", "model.preference.is_valid.value.app_error", nil, "value="+o.Value, http.StatusBadRequest)
|
||||
}
|
||||
|
||||
|
@ -18,34 +18,58 @@ func TestPreferenceIsValid(t *testing.T) {
|
||||
Name: NewId(),
|
||||
}
|
||||
|
||||
require.NotNil(t, preference.IsValid())
|
||||
t.Run("should require a user ID", func(t *testing.T) {
|
||||
require.NotNil(t, preference.IsValid())
|
||||
|
||||
preference.UserId = NewId()
|
||||
require.Nil(t, preference.IsValid())
|
||||
preference.UserId = NewId()
|
||||
require.Nil(t, preference.IsValid())
|
||||
})
|
||||
|
||||
preference.Category = strings.Repeat("01234567890", 20)
|
||||
require.NotNil(t, preference.IsValid())
|
||||
t.Run("should require a valid category", func(t *testing.T) {
|
||||
preference.Category = strings.Repeat("01234567890", 20)
|
||||
require.NotNil(t, preference.IsValid())
|
||||
|
||||
preference.Category = PreferenceCategoryDirectChannelShow
|
||||
require.Nil(t, preference.IsValid())
|
||||
preference.Category = PreferenceCategoryDirectChannelShow
|
||||
require.Nil(t, preference.IsValid())
|
||||
})
|
||||
|
||||
preference.Name = strings.Repeat("01234567890", 20)
|
||||
require.NotNil(t, preference.IsValid())
|
||||
t.Run("should require a valid name", func(t *testing.T) {
|
||||
preference.Name = strings.Repeat("01234567890", 20)
|
||||
require.NotNil(t, preference.IsValid())
|
||||
|
||||
preference.Name = NewId()
|
||||
require.Nil(t, preference.IsValid())
|
||||
preference.Name = NewId()
|
||||
require.Nil(t, preference.IsValid())
|
||||
})
|
||||
|
||||
preference.Value = strings.Repeat("01234567890", 201)
|
||||
require.NotNil(t, preference.IsValid())
|
||||
t.Run("should require a valid value", func(t *testing.T) {
|
||||
preference.Value = strings.Repeat("01234567890", 2001)
|
||||
require.NotNil(t, preference.IsValid())
|
||||
|
||||
preference.Value = "1234garbage"
|
||||
require.Nil(t, preference.IsValid())
|
||||
preference.Value = "1234garbage"
|
||||
require.Nil(t, preference.IsValid())
|
||||
})
|
||||
|
||||
preference.Category = PreferenceCategoryTheme
|
||||
require.NotNil(t, preference.IsValid())
|
||||
t.Run("should validate that a theme preference's value is a map", func(t *testing.T) {
|
||||
preference.Category = PreferenceCategoryTheme
|
||||
require.NotNil(t, preference.IsValid())
|
||||
|
||||
preference.Value = `{"color": "#ff0000", "color2": "#faf"}`
|
||||
require.Nil(t, preference.IsValid())
|
||||
preference.Value = `{"color": "#ff0000", "color2": "#faf"}`
|
||||
require.Nil(t, preference.IsValid())
|
||||
})
|
||||
|
||||
t.Run("MM-57913 should be able to store an array of 200 IDs for the team sidebar order preference", func(t *testing.T) {
|
||||
preference.Category = "teams_order"
|
||||
preference.Name = ""
|
||||
|
||||
teamIds := make([]string, 200)
|
||||
for i := range teamIds {
|
||||
teamIds[i] = NewId()
|
||||
}
|
||||
teamIdsBytes, _ := json.Marshal(teamIds)
|
||||
preference.Value = string(teamIdsBytes)
|
||||
|
||||
require.Nil(t, preference.IsValid())
|
||||
})
|
||||
}
|
||||
|
||||
func TestPreferencePreUpdate(t *testing.T) {
|
||||
|
Loading…
Reference in New Issue
Block a user