Validate characters in changeset comments

Fixes #1135
Closes #1139
This commit is contained in:
Tom Hughes 2016-01-19 00:20:27 +00:00
parent 8fe1899596
commit 77c25dca8c
2 changed files with 21 additions and 0 deletions

View file

@ -7,6 +7,7 @@ class ChangesetComment < ActiveRecord::Base
validates :changeset, :presence => true, :associated => true
validates :author, :presence => true, :associated => true
validates :visible, :inclusion => [true, false]
validates :body, :format => /\A[^\x00-\x08\x0b-\x0c\x0e-\x1f\x7f\ufffe\uffff]*\z/
# Return the comment text
def body

View file

@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-
require "test_helper"
class ChangesetCommentTest < ActiveSupport::TestCase
@ -38,4 +39,23 @@ class ChangesetCommentTest < ActiveSupport::TestCase
def test_comments_of_changeset_count
assert_equal 3, Changeset.find(changesets(:normal_user_closed_change).id).comments.count
end
def test_body_valid
ok = %W(Name vergrößern foo\nbar
)
bad = ["foo\x00bar", "foo\x08bar", "foo\x1fbar", "foo\x7fbar",
"foo\ufffebar", "foo\uffffbar"]
ok.each do |body|
changeset_comment = changeset_comments(:normal_comment_1)
changeset_comment.body = body
assert changeset_comment.valid?, "#{body} is invalid, when it should be"
end
bad.each do |body|
changeset_comment = changeset_comments(:normal_comment_1)
changeset_comment.body = body
assert !changeset_comment.valid?, "#{body} is valid when it shouldn't be"
end
end
end