Mercurial > hg > soundsoftware-site
diff test/functional/attachments_controller_test.rb @ 1115:433d4f72a19b redmine-2.2
Update to Redmine SVN revision 11137 on 2.2-stable branch
author | Chris Cannam |
---|---|
date | Mon, 07 Jan 2013 12:01:42 +0000 |
parents | cbb26bc654de |
children | bb32da3bea34 622f24f53b42 |
line wrap: on
line diff
--- a/test/functional/attachments_controller_test.rb Wed Jun 27 14:54:18 2012 +0100 +++ b/test/functional/attachments_controller_test.rb Mon Jan 07 12:01:42 2013 +0000 @@ -1,7 +1,7 @@ # encoding: utf-8 # # Redmine - project management software -# Copyright (C) 2006-2011 Jean-Philippe Lang +# Copyright (C) 2006-2012 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -32,8 +32,12 @@ @controller = AttachmentsController.new @request = ActionController::TestRequest.new @response = ActionController::TestResponse.new - Attachment.storage_path = "#{Rails.root}/test/fixtures/files" User.current = nil + set_fixtures_attachments_directory + end + + def teardown + set_tmp_attachments_directory end def test_show_diff @@ -92,8 +96,13 @@ end def test_save_diff_type + user1 = User.find(1) + user1.pref[:diff_type] = nil + user1.preference.save + user = User.find(1) + assert_nil user.pref[:diff_type] + @request.session[:user_id] = 1 # admin - user = User.find(1) get :show, :id => 5 assert_response :success assert_template 'diff' @@ -106,6 +115,21 @@ assert_equal "sbs", user.pref[:diff_type] end + def test_diff_show_filename_in_mercurial_export + set_tmp_attachments_directory + a = Attachment.new(:container => Issue.find(1), + :file => uploaded_test_file("hg-export.diff", "text/plain"), + :author => User.find(1)) + assert a.save + assert_equal 'hg-export.diff', a.filename + + get :show, :id => a.id, :type => 'inline' + assert_response :success + assert_template 'diff' + assert_equal 'text/html', @response.content_type + assert_select 'th.filename', :text => 'test1.txt' + end + def test_show_text_file get :show, :id => 4 assert_response :success @@ -206,6 +230,20 @@ set_tmp_attachments_directory end + def test_show_file_without_container_should_be_denied + set_tmp_attachments_directory + attachment = Attachment.create!(:file => uploaded_test_file("testfile.txt", "text/plain"), :author_id => 2) + + @request.session[:user_id] = 2 + get :show, :id => attachment.id + assert_response 403 + end + + def test_show_invalid_should_respond_with_404 + get :show, :id => 999 + assert_response 404 + end + def test_download_text_file get :download, :id => 4 assert_response :success @@ -234,27 +272,77 @@ set_tmp_attachments_directory end - def test_anonymous_on_private_private + def test_download_should_be_denied_without_permission get :download, :id => 7 assert_redirected_to '/login?back_url=http%3A%2F%2Ftest.host%2Fattachments%2Fdownload%2F7' set_tmp_attachments_directory end + if convert_installed? + def test_thumbnail + Attachment.clear_thumbnails + @request.session[:user_id] = 2 + + get :thumbnail, :id => 16 + assert_response :success + assert_equal 'image/png', response.content_type + end + + def test_thumbnail_should_not_exceed_maximum_size + Redmine::Thumbnail.expects(:generate).with {|source, target, size| size == 800} + + @request.session[:user_id] = 2 + get :thumbnail, :id => 16, :size => 2000 + end + + def test_thumbnail_should_round_size + Redmine::Thumbnail.expects(:generate).with {|source, target, size| size == 250} + + @request.session[:user_id] = 2 + get :thumbnail, :id => 16, :size => 260 + end + + def test_thumbnail_should_return_404_for_non_image_attachment + @request.session[:user_id] = 2 + + get :thumbnail, :id => 15 + assert_response 404 + end + + def test_thumbnail_should_return_404_if_thumbnail_generation_failed + Attachment.any_instance.stubs(:thumbnail).returns(nil) + @request.session[:user_id] = 2 + + get :thumbnail, :id => 16 + assert_response 404 + end + + def test_thumbnail_should_be_denied_without_permission + get :thumbnail, :id => 16 + assert_redirected_to '/login?back_url=http%3A%2F%2Ftest.host%2Fattachments%2Fthumbnail%2F16' + end + else + puts '(ImageMagick convert not available)' + end + def test_destroy_issue_attachment set_tmp_attachments_directory issue = Issue.find(3) @request.session[:user_id] = 2 assert_difference 'issue.attachments.count', -1 do - delete :destroy, :id => 1 + assert_difference 'Journal.count' do + delete :destroy, :id => 1 + assert_redirected_to '/projects/ecookbook' + end end - # no referrer - assert_redirected_to '/projects/ecookbook' assert_nil Attachment.find_by_id(1) - j = issue.journals.find(:first, :order => 'created_on DESC') + j = Journal.first(:order => 'id DESC') + assert_equal issue, j.journalized assert_equal 'attachment', j.details.first.property assert_equal '1', j.details.first.prop_key assert_equal 'error281.txt', j.details.first.old_value + assert_equal User.find(2), j.user end def test_destroy_wiki_page_attachment