summaryrefslogtreecommitdiffstats
path: root/model
diff options
context:
space:
mode:
Diffstat (limited to 'model')
-rw-r--r--model/post.go8
-rw-r--r--model/post_test.go31
2 files changed, 21 insertions, 18 deletions
diff --git a/model/post.go b/model/post.go
index 4a774b5d4..ae0627a03 100644
--- a/model/post.go
+++ b/model/post.go
@@ -40,7 +40,9 @@ const (
POST_FILEIDS_MAX_RUNES = 150
POST_FILENAMES_MAX_RUNES = 4000
POST_HASHTAGS_MAX_RUNES = 1000
- POST_MESSAGE_MAX_RUNES = 4000
+ POST_MESSAGE_MAX_RUNES_V1 = 4000
+ POST_MESSAGE_MAX_BYTES_V2 = 65535 // Maximum size of a TEXT column in MySQL
+ POST_MESSAGE_MAX_RUNES_V2 = POST_MESSAGE_MAX_BYTES_V2 / 4 // Assume a worst-case representation
POST_PROPS_MAX_RUNES = 8000
POST_PROPS_MAX_USER_RUNES = POST_PROPS_MAX_RUNES - 400 // Leave some room for system / pre-save modifications
POST_CUSTOM_TYPE_PREFIX = "custom_"
@@ -141,7 +143,7 @@ func (o *Post) Etag() string {
return Etag(o.Id, o.UpdateAt)
}
-func (o *Post) IsValid() *AppError {
+func (o *Post) IsValid(maxPostSize int) *AppError {
if len(o.Id) != 26 {
return NewAppError("Post.IsValid", "model.post.is_valid.id.app_error", nil, "", http.StatusBadRequest)
@@ -179,7 +181,7 @@ func (o *Post) IsValid() *AppError {
return NewAppError("Post.IsValid", "model.post.is_valid.original_id.app_error", nil, "", http.StatusBadRequest)
}
- if utf8.RuneCountInString(o.Message) > POST_MESSAGE_MAX_RUNES {
+ if utf8.RuneCountInString(o.Message) > maxPostSize {
return NewAppError("Post.IsValid", "model.post.is_valid.msg.app_error", nil, "id="+o.Id, http.StatusBadRequest)
}
diff --git a/model/post_test.go b/model/post_test.go
index 5d5e7c9ec..af350d76e 100644
--- a/model/post_test.go
+++ b/model/post_test.go
@@ -23,72 +23,73 @@ func TestPostJson(t *testing.T) {
func TestPostIsValid(t *testing.T) {
o := Post{}
+ maxPostSize := 10000
- if err := o.IsValid(); err == nil {
+ if err := o.IsValid(maxPostSize); err == nil {
t.Fatal("should be invalid")
}
o.Id = NewId()
- if err := o.IsValid(); err == nil {
+ if err := o.IsValid(maxPostSize); err == nil {
t.Fatal("should be invalid")
}
o.CreateAt = GetMillis()
- if err := o.IsValid(); err == nil {
+ if err := o.IsValid(maxPostSize); err == nil {
t.Fatal("should be invalid")
}
o.UpdateAt = GetMillis()
- if err := o.IsValid(); err == nil {
+ if err := o.IsValid(maxPostSize); err == nil {
t.Fatal("should be invalid")
}
o.UserId = NewId()
- if err := o.IsValid(); err == nil {
+ if err := o.IsValid(maxPostSize); err == nil {
t.Fatal("should be invalid")
}
o.ChannelId = NewId()
o.RootId = "123"
- if err := o.IsValid(); err == nil {
+ if err := o.IsValid(maxPostSize); err == nil {
t.Fatal("should be invalid")
}
o.RootId = ""
o.ParentId = "123"
- if err := o.IsValid(); err == nil {
+ if err := o.IsValid(maxPostSize); err == nil {
t.Fatal("should be invalid")
}
o.ParentId = NewId()
o.RootId = ""
- if err := o.IsValid(); err == nil {
+ if err := o.IsValid(maxPostSize); err == nil {
t.Fatal("should be invalid")
}
o.ParentId = ""
- o.Message = strings.Repeat("0", 4001)
- if err := o.IsValid(); err == nil {
+ o.Message = strings.Repeat("0", maxPostSize+1)
+ if err := o.IsValid(maxPostSize); err == nil {
t.Fatal("should be invalid")
}
- o.Message = strings.Repeat("0", 4000)
- if err := o.IsValid(); err != nil {
+ o.Message = strings.Repeat("0", maxPostSize)
+ if err := o.IsValid(maxPostSize); err != nil {
t.Fatal(err)
}
o.Message = "test"
- if err := o.IsValid(); err != nil {
+ if err := o.IsValid(maxPostSize); err != nil {
t.Fatal(err)
}
o.Type = "junk"
- if err := o.IsValid(); err == nil {
+ if err := o.IsValid(maxPostSize); err == nil {
t.Fatal("should be invalid")
}
o.Type = POST_CUSTOM_TYPE_PREFIX + "type"
- if err := o.IsValid(); err != nil {
+ if err := o.IsValid(maxPostSize); err != nil {
t.Fatal(err)
}
}