summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--config/application.rb2
-rw-r--r--test/integration/attachments_test.rb12
2 files changed, 13 insertions, 1 deletions
diff --git a/config/application.rb b/config/application.rb
index 96fa38b49..965edcec2 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -55,7 +55,7 @@ module RedmineApp
config.middleware.insert_after ActionDispatch::ParamsParser, ActionDispatch::XmlParamsParser
# Sets the Content-Length header on responses with fixed-length bodies
- config.middleware.use Rack::ContentLength
+ config.middleware.insert_after Rack::Sendfile, Rack::ContentLength
# Verify validity of user sessions
config.redmine_verify_sessions = true
diff --git a/test/integration/attachments_test.rb b/test/integration/attachments_test.rb
index 114e47a3a..ec7626953 100644
--- a/test/integration/attachments_test.rb
+++ b/test/integration/attachments_test.rb
@@ -136,6 +136,18 @@ class AttachmentsTest < Redmine::IntegrationTest
assert_include "$('#attachments_1').remove();", response.body
end
+ def test_download_should_set_sendfile_header
+ set_fixtures_attachments_directory
+ Rack::Sendfile.any_instance.stubs(:variation).returns("X-Sendfile")
+
+ get "/attachments/download/4"
+ assert_response :success
+ assert_not_nil response.headers["X-Sendfile"]
+
+ ensure
+ set_tmp_attachments_directory
+ end
+
private
def ajax_upload(filename, content, attachment_id=1)