if @attachments.sum(&:filesize) > bulk_download_max_size
flash[:error] = l(:error_bulk_download_size_too_big,
:max_size => number_to_human_size(bulk_download_max_size.to_i))
- redirect_to back_url
+ redirect_back_or_default(container_url, referer: true)
return
end
end
+ def container_url
+ case @container
+ when Message
+ url_for(@container.event_url)
+ when Project
+ # project attachments are listed in the files view
+ project_files_url(@container)
+ when Version
+ # version attachments are listed in its project's files view
+ project_files_url(@container.project)
+ when WikiPage
+ project_wiki_page_url @container.wiki.project, @container
+ else
+ url_for(@container)
+ end
+ end
+
# Checks that the file exists and is readable
def file_readable
if @attachment.readable?
:params => {
:object_type => 'issues',
:object_id => '2',
- :back_url => '/issues/2'
+ :back_url => '/issues/123'
+ }
+ )
+ assert_redirected_to '/issues/123'
+ assert_equal flash[:error], 'These attachments cannot be bulk downloaded because the total file size exceeds the maximum allowed size (0 Bytes)'
+ end
+ end
+
+ def test_download_all_redirects_to_container_url_on_error
+ with_settings :bulk_download_max_size => 0 do
+ @request.session[:user_id] = 2
+ get(
+ :download_all,
+ :params => {
+ :object_type => 'issues',
+ :object_id => '2',
+ :back_url => 'https://example.com'
}
)
assert_redirected_to '/issues/2'