Feature #32085 » 32085-allow-newline-as-separator-v2.patch
| app/models/attachment.rb | ||
|---|---|---|
| 417 | 417 |
extension = extension.downcase.sub(/\A\.+/, '') |
| 418 | 418 | |
| 419 | 419 |
unless extensions.is_a?(Array) |
| 420 |
extensions = extensions.to_s.split(",").map(&:strip)
|
|
| 420 |
extensions = extensions.to_s.split(/[\s,]+/)
|
|
| 421 | 421 |
end |
| 422 | 422 |
extensions = extensions.map {|s| s.downcase.sub(/\A\.+/, '')}.reject(&:blank?)
|
| 423 | 423 |
extensions.include?(extension) |
| app/models/mail_handler.rb | ||
|---|---|---|
| 308 | 308 | |
| 309 | 309 |
# Returns false if the +attachment+ of the incoming email should be ignored |
| 310 | 310 |
def accept_attachment?(attachment) |
| 311 |
@excluded ||= Setting.mail_handler_excluded_filenames.to_s.split(',').map(&:strip).reject(&:blank?)
|
|
| 311 |
@excluded ||= Setting.mail_handler_excluded_filenames.to_s.split(/[\s,]+/).reject(&:blank?)
|
|
| 312 | 312 |
@excluded.each do |pattern| |
| 313 | 313 |
if Setting.mail_handler_enable_regex_excluded_filenames? |
| 314 | 314 |
regexp = %r{\A#{pattern}\z}i
|
| test/unit/attachment_test.rb | ||
|---|---|---|
| 139 | 139 |
end |
| 140 | 140 | |
| 141 | 141 |
def test_extension_should_be_validated_against_denied_extensions |
| 142 |
with_settings :attachment_extensions_denied => "txt, png" do |
|
| 142 |
with_settings :attachment_extensions_denied => "txt, png\r\ncsv" do
|
|
| 143 | 143 |
a = Attachment.new(:container => Issue.find(1), |
| 144 | 144 |
:file => mock_file_with_options(:original_filename => "test.jpeg"), |
| 145 | 145 |
:author => User.find(1)) |
| ... | ... | |
| 153 | 153 |
end |
| 154 | 154 | |
| 155 | 155 |
def test_valid_extension_should_be_case_insensitive |
| 156 |
with_settings :attachment_extensions_allowed => "txt, Png" do |
|
| 156 |
with_settings :attachment_extensions_allowed => "txt, Png\r\ncsv" do
|
|
| 157 | 157 |
assert Attachment.valid_extension?(".pnG")
|
| 158 | 158 |
assert !Attachment.valid_extension?(".jpeg")
|
| 159 | 159 |
end |
| 160 |
with_settings :attachment_extensions_denied => "txt, Png" do |
|
| 160 |
with_settings :attachment_extensions_denied => "txt, Png\r\ncsv" do
|
|
| 161 | 161 |
assert !Attachment.valid_extension?(".pnG")
|
| 162 | 162 |
assert Attachment.valid_extension?(".jpeg")
|
| 163 | 163 |
end |
| test/unit/mail_handler_test.rb | ||
|---|---|---|
| 33 | 33 |
FIXTURES_PATH = File.dirname(__FILE__) + '/../fixtures/mail_handler' |
| 34 | 34 | |
| 35 | 35 |
def setup |
| 36 |
set_tmp_attachments_directory |
|
| 36 | 37 |
ActionMailer::Base.deliveries.clear |
| 37 | 38 |
Setting.notified_events = Redmine::Notifiable.all.collect(&:name) |
| 38 | 39 |
User.current = nil |
| ... | ... | |
| 546 | 547 |
end |
| 547 | 548 | |
| 548 | 549 |
def test_add_issue_from_apple_mail |
| 549 |
set_tmp_attachments_directory |
|
| 550 | 550 |
issue = submit_email( |
| 551 | 551 |
'apple_mail_with_attachment.eml', |
| 552 | 552 |
:issue => {:project => 'ecookbook'}
|
| ... | ... | |
| 563 | 563 |
end |
| 564 | 564 | |
| 565 | 565 |
def test_thunderbird_with_attachment_ja |
| 566 |
set_tmp_attachments_directory |
|
| 567 | 566 |
issue = submit_email( |
| 568 | 567 |
'thunderbird_with_attachment_ja.eml', |
| 569 | 568 |
:issue => {:project => 'ecookbook'}
|
| ... | ... | |
| 588 | 587 |
end |
| 589 | 588 | |
| 590 | 589 |
def test_gmail_with_attachment_ja |
| 591 |
set_tmp_attachments_directory |
|
| 592 | 590 |
issue = submit_email( |
| 593 | 591 |
'gmail_with_attachment_ja.eml', |
| 594 | 592 |
:issue => {:project => 'ecookbook'}
|
| ... | ... | |
| 604 | 602 |
end |
| 605 | 603 | |
| 606 | 604 |
def test_thunderbird_with_attachment_latin1 |
| 607 |
set_tmp_attachments_directory |
|
| 608 | 605 |
issue = submit_email( |
| 609 | 606 |
'thunderbird_with_attachment_iso-8859-1.eml', |
| 610 | 607 |
:issue => {:project => 'ecookbook'}
|
| ... | ... | |
| 623 | 620 |
end |
| 624 | 621 | |
| 625 | 622 |
def test_gmail_with_attachment_latin1 |
| 626 |
set_tmp_attachments_directory |
|
| 627 | 623 |
issue = submit_email( |
| 628 | 624 |
'gmail_with_attachment_iso-8859-1.eml', |
| 629 | 625 |
:issue => {:project => 'ecookbook'}
|
| ... | ... | |
| 642 | 638 |
end |
| 643 | 639 | |
| 644 | 640 |
def test_mail_with_attachment_latin2 |
| 645 |
set_tmp_attachments_directory |
|
| 646 | 641 |
issue = submit_email( |
| 647 | 642 |
'ticket_with_text_attachment_iso-8859-2.eml', |
| 648 | 643 |
:issue => {:project => 'ecookbook'}
|
| ... | ... | |
| 995 | 990 |
end |
| 996 | 991 | |
| 997 | 992 |
def test_reply_to_a_nonexistent_issue |
| 998 |
set_tmp_attachments_directory |
|
| 999 | 993 |
Issue.find(2).destroy |
| 1000 | 994 |
assert_no_difference 'Issue.count' do |
| 1001 | 995 |
assert_no_difference 'Journal.count' do |
| ... | ... | |
| 1157 | 1151 |
end |
| 1158 | 1152 | |
| 1159 | 1153 |
def test_attachments_that_match_mail_handler_excluded_filenames_should_be_ignored |
| 1160 |
with_settings :mail_handler_excluded_filenames => "*.vcf,\n *.jpg" do |
|
| 1154 |
with_settings :mail_handler_excluded_filenames => "*.vcf,\n *.jpg\r\n*.csv" do
|
|
| 1161 | 1155 |
issue = submit_email('ticket_with_attachment.eml', :issue => {:project => 'onlinestore'})
|
| 1162 | 1156 |
assert issue.is_a?(Issue) |
| 1163 | 1157 |
assert !issue.new_record? |
| ... | ... | |
| 1166 | 1160 |
end |
| 1167 | 1161 | |
| 1168 | 1162 |
def test_attachments_that_match_mail_handler_excluded_filenames_by_regex_should_be_ignored |
| 1169 |
with_settings :mail_handler_excluded_filenames => '.+\.vcf,(pa|nut)ella\.jpg',
|
|
| 1163 |
with_settings :mail_handler_excluded_filenames => ".+\\.vcf,(pa|nut)ella\\.jpg\r\n.+\\.csv",
|
|
| 1170 | 1164 |
:mail_handler_enable_regex_excluded_filenames => 1 do |
| 1171 | 1165 |
issue = submit_email('ticket_with_attachment.eml', :issue => {:project => 'onlinestore'})
|
| 1172 | 1166 |
assert issue.is_a?(Issue) |