Redmine 4.1.1

This commit is contained in:
Manuel Cillero 2020-11-22 21:20:06 +01:00
parent 33e7b881a5
commit 3d976f1b3b
1593 changed files with 36180 additions and 19489 deletions

View file

@ -1,7 +1,7 @@
# encoding: utf-8
#
# frozen_string_literal: true
# Redmine - project management software
# Copyright (C) 2006-2017 Jean-Philippe Lang
# Copyright (C) 2006-2019 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
@ -36,7 +36,7 @@ class WikiControllerTest < Redmine::ControllerTest
assert_select 'h1', :text => /CookBook documentation/
# child_pages macro
assert_select 'ul.pages-hierarchy>li>a[href=?]', '/projects/ecookbook/wiki/Page_with_an_inline_image',
:text => 'Page with an inline image'
:text => 'Page with an inline image'
end
def test_export_link
@ -65,7 +65,6 @@ class WikiControllerTest < Redmine::ControllerTest
assert_select 'a[href=?]', '/projects/ecookbook/wiki/CookBook_documentation/1', :text => /Previous/
assert_select 'a[href=?]', '/projects/ecookbook/wiki/CookBook_documentation/2/diff', :text => /diff/
assert_select 'a[href=?]', '/projects/ecookbook/wiki/CookBook_documentation/3', :text => /Next/
assert_select 'a[href=?]', '/projects/ecookbook/wiki/CookBook_documentation', :text => /Current version/
end
def test_show_old_version_with_attachments
@ -77,7 +76,6 @@ class WikiControllerTest < Redmine::ControllerTest
get :show, :params => {:project_id => 'ecookbook', :id => page.title, :version => '1'}
assert_response :success
assert_select 'a[href=?]', '/projects/ecookbook/wiki/Page_with_an_inline_image', :text => /Current version/
end
def test_show_old_version_without_permission_should_be_denied
@ -96,7 +94,6 @@ class WikiControllerTest < Redmine::ControllerTest
assert_select 'a', :text => /Previous/, :count => 0
assert_select 'a', :text => /diff/, :count => 0
assert_select 'a[href=?]', '/projects/ecookbook/wiki/CookBook_documentation/2', :text => /Next/
assert_select 'a[href=?]', '/projects/ecookbook/wiki/CookBook_documentation', :text => /Current version/
end
def test_show_redirected_page
@ -179,6 +176,16 @@ class WikiControllerTest < Redmine::ControllerTest
assert_select 'textarea[name=?]', 'content[text]'
end
def test_show_protected_page_shoud_show_locked_badge
@request.session[:user_id] = 2
get :show, :params => {:project_id => 1, :id => 'CookBook_documentation'}
assert_select 'p.wiki-update-info' do
assert_select 'span.badge.badge-status-locked'
end
end
def test_get_new
@request.session[:user_id] = 2
@ -210,6 +217,13 @@ class WikiControllerTest < Redmine::ControllerTest
assert_equal 'window.location = "/projects/ecookbook/wiki/New_Page"', response.body
end
def test_post_new_should_redirect_to_edit_with_parent
@request.session[:user_id] = 2
post :new, :params => {:project_id => 'ecookbook', :title => 'New_Page', :parent => 'Child_1'}
assert_redirected_to '/projects/ecookbook/wiki/New_Page?parent=Child_1'
end
def test_post_new_with_invalid_title_should_display_errors
@request.session[:user_id] = 2
@ -259,6 +273,7 @@ class WikiControllerTest < Redmine::ControllerTest
end
def test_create_page_with_attachments
set_tmp_attachments_directory
@request.session[:user_id] = 2
assert_difference 'WikiPage.count' do
assert_difference 'Attachment.count' do
@ -299,11 +314,9 @@ class WikiControllerTest < Redmine::ControllerTest
def test_edit_page
@request.session[:user_id] = 2
get :edit, :params => {:project_id => 'ecookbook', :id => 'Another_page'}
assert_response :success
assert_select 'textarea[name=?]', 'content[text]',
:text => WikiPage.find_by_title('Another_page').content.text
:text => WikiPage.find_by_title('Another_page').content.text
end
def test_edit_section
@ -331,7 +344,7 @@ class WikiControllerTest < Redmine::ControllerTest
@request.session[:user_id] = 2
assert_no_difference 'WikiPage.count' do
assert_no_difference 'WikiContent.count' do
assert_difference 'WikiContent::Version.count' do
assert_difference 'WikiContentVersion.count' do
put :update, :params => {
:project_id => 1,
:id => 'Another_page',
@ -356,7 +369,7 @@ class WikiControllerTest < Redmine::ControllerTest
@request.session[:user_id] = 2
assert_no_difference 'WikiPage.count' do
assert_no_difference 'WikiContent.count' do
assert_difference 'WikiContent::Version.count' do
assert_difference 'WikiContentVersion.count' do
put :update, :params => {
:project_id => 1,
:id => 'Another_page',
@ -383,7 +396,7 @@ class WikiControllerTest < Redmine::ControllerTest
@request.session[:user_id] = 2
assert_no_difference 'WikiPage.count' do
assert_no_difference 'WikiContent.count' do
assert_no_difference 'WikiContent::Version.count' do
assert_no_difference 'WikiContentVersion.count' do
put :update, :params => {
:project_id => 1,
:id => 'Another_page',
@ -409,7 +422,7 @@ class WikiControllerTest < Redmine::ControllerTest
@request.session[:user_id] = 2
assert_no_difference 'WikiPage.count' do
assert_no_difference 'WikiContent.count' do
assert_no_difference 'WikiContent::Version.count' do
assert_no_difference 'WikiContentVersion.count' do
put :update, :params => {
:project_id => 1,
:id => 'Another_page',
@ -429,10 +442,11 @@ class WikiControllerTest < Redmine::ControllerTest
end
def test_update_page_with_attachments_only_should_not_create_content_version
set_tmp_attachments_directory
@request.session[:user_id] = 2
assert_no_difference 'WikiPage.count' do
assert_no_difference 'WikiContent.count' do
assert_no_difference 'WikiContent::Version.count' do
assert_no_difference 'WikiContentVersion.count' do
assert_difference 'Attachment.count' do
put :update, :params => {
:project_id => 1,
@ -452,6 +466,44 @@ class WikiControllerTest < Redmine::ControllerTest
assert_equal 1, page.content.version
end
def test_update_with_deleted_attachment_ids
@request.session[:user_id] = 2
page = WikiPage.find(4)
attachment = page.attachments.first
assert_difference 'Attachment.count', -1 do
put :update, :params => {
:project_id => page.wiki.project.id,
:id => page.title,
:content => {
:comments => 'delete file',
:text => 'edited'
},
:wiki_page => {:deleted_attachment_ids => [attachment.id]}
}
end
page.reload
refute_includes page.attachments, attachment
end
def test_update_with_deleted_attachment_ids_and_failure_should_preserve_selected_attachments
@request.session[:user_id] = 2
page = WikiPage.find(4)
attachment = page.attachments.first
assert_no_difference 'Attachment.count' do
put :update, :params => {
:project_id => page.wiki.project.id,
:id => page.title,
:content => {
:comments => 'a' * 1300, # failure here, comment is too long
:text => 'edited'
},
:wiki_page => {:deleted_attachment_ids => [attachment.id]}
}
end
page.reload
assert_includes page.attachments, attachment
end
def test_update_stale_page_should_not_raise_an_error
@request.session[:user_id] = 2
c = Wiki.find(1).find_page('Another_page').content
@ -461,7 +513,7 @@ class WikiControllerTest < Redmine::ControllerTest
assert_no_difference 'WikiPage.count' do
assert_no_difference 'WikiContent.count' do
assert_no_difference 'WikiContent::Version.count' do
assert_no_difference 'WikiContentVersion.count' do
put :update, :params => {
:project_id => 1,
:id => 'Another_page',
@ -509,7 +561,7 @@ class WikiControllerTest < Redmine::ControllerTest
assert_no_difference 'WikiPage.count' do
assert_no_difference 'WikiContent.count' do
assert_difference 'WikiContent::Version.count' do
assert_difference 'WikiContentVersion.count' do
put :update, :params => {
:project_id => 1,
:id => 'Page_with_sections',
@ -535,7 +587,7 @@ class WikiControllerTest < Redmine::ControllerTest
assert_no_difference 'WikiPage.count' do
assert_no_difference 'WikiContent.count' do
assert_difference 'WikiContent::Version.count' do
assert_difference 'WikiContentVersion.count' do
put :update, :params => {
:project_id => 1,
:id => 'Page_with_sections',
@ -560,7 +612,7 @@ class WikiControllerTest < Redmine::ControllerTest
assert_no_difference 'WikiPage.count' do
assert_no_difference 'WikiContent.count' do
assert_no_difference 'WikiContent::Version.count' do
assert_no_difference 'WikiContentVersion.count' do
put :update, :params => {
:project_id => 1,
:id => 'Page_with_sections',
@ -647,7 +699,7 @@ class WikiControllerTest < Redmine::ControllerTest
def test_diff
content = WikiPage.find(1).content
assert_difference 'WikiContent::Version.count', 2 do
assert_difference 'WikiContentVersion.count', 2 do
content.text = "Line removed\nThis is a sample text for testing diffs"
content.save!
content.text = "This is a sample text for testing diffs\nLine added"
@ -695,11 +747,10 @@ class WikiControllerTest < Redmine::ControllerTest
assert_select 'td', :text => /h1\. CookBook documentation v2/
end
# Line 4
assert_select 'table.annotate tr:nth-child(4)' do
assert_select 'th.line-num', :text => '4'
# Line 2
assert_select 'table.annotate tr:nth-child(2)' do
assert_select 'th.line-num', :text => '2'
assert_select 'td.author', :text => /John Smith/
assert_select 'td', :text => /Line from v1/
end
# Line 5
@ -838,6 +889,25 @@ class WikiControllerTest < Redmine::ControllerTest
assert_equal project.wiki.id, page.wiki_id
end
def test_rename_as_start_page
@request.session[:user_id] = 2
post :rename, :params => {
:project_id => 'ecookbook',
:id => 'Another_page',
:wiki_page => {
:wiki_id => '1',
:title => 'Another_page',
:redirect_existing_links => '1',
:is_start_page => '1'
}
}
assert_redirected_to '/projects/ecookbook/wiki/Another_page'
wiki = Wiki.find(1)
assert_equal 'Another_page', wiki.start_page
end
def test_destroy_a_page_without_children_should_not_ask_confirmation
@request.session[:user_id] = 2
delete :destroy, :params => {:project_id => 1, :id => 'Child_2'}
@ -888,7 +958,7 @@ class WikiControllerTest < Redmine::ControllerTest
def test_destroy_version
@request.session[:user_id] = 2
assert_difference 'WikiContent::Version.count', -1 do
assert_difference 'WikiContentVersion.count', -1 do
assert_no_difference 'WikiContent.count' do
assert_no_difference 'WikiPage.count' do
delete :destroy_version, :params => {:project_id => 'ecookbook', :id => 'CookBook_documentation', :version => 2}
@ -900,7 +970,7 @@ class WikiControllerTest < Redmine::ControllerTest
def test_destroy_invalid_version_should_respond_with_404
@request.session[:user_id] = 2
assert_no_difference 'WikiContent::Version.count' do
assert_no_difference 'WikiContentVersion.count' do
assert_no_difference 'WikiContent.count' do
assert_no_difference 'WikiPage.count' do
delete :destroy_version, :params => {:project_id => 'ecookbook', :id => 'CookBook_documentation', :version => 99}
@ -1016,7 +1086,7 @@ class WikiControllerTest < Redmine::ControllerTest
assert_equal 'application/pdf', @response.content_type
assert_equal 'attachment; filename="CookBook_documentation.pdf"',
@response.headers['Content-Disposition']
@response.headers['Content-Disposition']
end
def test_show_html
@ -1026,7 +1096,7 @@ class WikiControllerTest < Redmine::ControllerTest
assert_equal 'text/html', @response.content_type
assert_equal 'attachment; filename="CookBook_documentation.html"',
@response.headers['Content-Disposition']
@response.headers['Content-Disposition']
assert_select 'h1', :text => /CookBook documentation/
end
@ -1037,7 +1107,7 @@ class WikiControllerTest < Redmine::ControllerTest
assert_equal 'text/html', @response.content_type
assert_equal 'attachment; filename="CookBook_documentation.html"',
@response.headers['Content-Disposition']
@response.headers['Content-Disposition']
assert_select 'h1', :text => /CookBook documentation v2/
end
@ -1048,7 +1118,7 @@ class WikiControllerTest < Redmine::ControllerTest
assert_equal 'text/plain', @response.content_type
assert_equal 'attachment; filename="CookBook_documentation.txt"',
@response.headers['Content-Disposition']
@response.headers['Content-Disposition']
assert_include 'h1. CookBook documentation', @response.body
end
@ -1059,7 +1129,7 @@ class WikiControllerTest < Redmine::ControllerTest
assert_equal 'text/plain', @response.content_type
assert_equal 'attachment; filename="CookBook_documentation.txt"',
@response.headers['Content-Disposition']
@response.headers['Content-Disposition']
assert_include 'h1. CookBook documentation v2', @response.body
end
@ -1069,17 +1139,17 @@ class WikiControllerTest < Redmine::ControllerTest
%w|pdf html txt|.each do |format|
# Non-MS browsers
@request.user_agent = ""
get :show, :project_id => 1, :id => title, :format => format
get :show, :params => {:project_id => 1, :id => title, :format => format}
assert_response :success
assert_equal "attachment; filename=\"#{title}.#{format}\"",
@response.headers['Content-Disposition']
@response.headers['Content-Disposition']
# Microsoft's browsers: filename should be URI encoded
@request.user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 Edge/15.15063'
get :show, :project_id => 1, :id => title, :format => format
get :show, :params => {:project_id => 1, :id => title, :format => format}
assert_response :success
filename = URI.encode("#{title}.#{format}")
assert_equal "attachment; filename=\"#{filename}\"",
@response.headers['Content-Disposition']
@response.headers['Content-Disposition']
end
end
@ -1109,6 +1179,7 @@ class WikiControllerTest < Redmine::ControllerTest
end
def test_add_attachment
set_tmp_attachments_directory
@request.session[:user_id] = 2
assert_difference 'Attachment.count' do
post :add_attachment, :params => {
@ -1122,4 +1193,17 @@ class WikiControllerTest < Redmine::ControllerTest
attachment = Attachment.order('id DESC').first
assert_equal Wiki.find(1).find_page('CookBook_documentation'), attachment.container
end
def test_old_version_should_have_robot_exclusion_tag
@request.session[:user_id] = 2
# Discourage search engines from indexing old versions
get :show, :params => {:project_id => 'ecookbook', :id => 'CookBook_documentation', :version => '2'}
assert_response :success
assert_select 'head>meta[name="robots"][content=?]', 'noindex,follow,noarchive'
# No robots meta tag in the current version
get :show, :params => {:project_id => 'ecookbook', :id => 'CookBook_documentation'}
assert_response :success
assert_select 'head>meta[name="robots"]', false
end
end