summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2015-02-19 17:46:24 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2015-02-19 17:46:24 +0000
commit0b04de0a23e2b9ce991cb06d2a1788ef0cc834cf (patch)
tree73cc653fdd73641cda63442ade889ef89d869892
parentd750c9906ef7ad35abae516d3a39dee073b7b2d0 (diff)
downloadredmine-0b04de0a23e2b9ce991cb06d2a1788ef0cc834cf.tar.gz
redmine-0b04de0a23e2b9ce991cb06d2a1788ef0cc834cf.zip
Send a better content type than application/octet-stream (#19131).
git-svn-id: http://svn.redmine.org/redmine/trunk@14034 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r--app/controllers/attachments_controller.rb2
-rw-r--r--test/fixtures/attachments.yml4
-rw-r--r--test/functional/attachments_controller_test.rb11
-rw-r--r--test/integration/api_test/attachments_test.rb2
4 files changed, 14 insertions, 5 deletions
diff --git a/app/controllers/attachments_controller.rb b/app/controllers/attachments_controller.rb
index 4edcc0a41..9d3f7d75c 100644
--- a/app/controllers/attachments_controller.rb
+++ b/app/controllers/attachments_controller.rb
@@ -183,7 +183,7 @@ class AttachmentsController < ApplicationController
def detect_content_type(attachment)
content_type = attachment.content_type
- if content_type.blank?
+ if content_type.blank? || content_type == "application/octet-stream"
content_type = Redmine::MimeType.of(attachment.filename)
end
content_type.to_s
diff --git a/test/fixtures/attachments.yml b/test/fixtures/attachments.yml
index 9437ed102..6f56c0811 100644
--- a/test/fixtures/attachments.yml
+++ b/test/fixtures/attachments.yml
@@ -78,7 +78,7 @@ attachments_006:
filesize: 157
filename: archive.zip
author_id: 2
- content_type: application/octet-stream
+ content_type: application/zip
attachments_007:
created_on: 2006-07-19 21:07:27 +02:00
container_type: Issue
@@ -91,7 +91,7 @@ attachments_007:
filesize: 157
filename: archive.zip
author_id: 1
- content_type: application/octet-stream
+ content_type: application/zip
attachments_008:
created_on: 2006-07-19 21:07:27 +02:00
container_type: Project
diff --git a/test/functional/attachments_controller_test.rb b/test/functional/attachments_controller_test.rb
index efd537599..5174c8da1 100644
--- a/test/functional/attachments_controller_test.rb
+++ b/test/functional/attachments_controller_test.rb
@@ -192,7 +192,7 @@ class AttachmentsControllerTest < ActionController::TestCase
def test_show_other
get :show, :id => 6
assert_response :success
- assert_equal 'application/octet-stream', @response.content_type
+ assert_equal 'application/zip', @response.content_type
set_tmp_attachments_directory
end
@@ -262,6 +262,15 @@ class AttachmentsControllerTest < ActionController::TestCase
set_tmp_attachments_directory
end
+ def test_download_should_assign_better_content_type_than_application_octet_stream
+ Attachment.find(4).update! :content_type => "application/octet-stream"
+
+ get :download, :id => 4
+ assert_response :success
+ assert_equal 'text/x-ruby', @response.content_type
+ set_tmp_attachments_directory
+ end
+
def test_download_missing_file
get :download, :id => 2
assert_response 404
diff --git a/test/integration/api_test/attachments_test.rb b/test/integration/api_test/attachments_test.rb
index d4b483527..0f7e6ebdb 100644
--- a/test/integration/api_test/attachments_test.rb
+++ b/test/integration/api_test/attachments_test.rb
@@ -65,7 +65,7 @@ class Redmine::ApiTest::AttachmentsTest < Redmine::ApiTest::Base
test "GET /attachments/download/:id/:filename should return the attachment content" do
get '/attachments/download/7/archive.zip', {}, credentials('jsmith')
assert_response :success
- assert_equal 'application/octet-stream', @response.content_type
+ assert_equal 'application/zip', @response.content_type
set_tmp_attachments_directory
end