diff --git a/app/controllers/wiki_controller.rb b/app/controllers/wiki_controller.rb index 6f6c6bbdf..eabfe1c46 100644 --- a/app/controllers/wiki_controller.rb +++ b/app/controllers/wiki_controller.rb @@ -266,9 +266,12 @@ class WikiController < ApplicationController def destroy_version return render_403 unless editable? - @content = @page.content_for_version(params[:version]) - @content.destroy - redirect_to_referer_or history_project_wiki_page_path(@project, @page.title) + if content = @page.content.versions.find_by_version(params[:version]) + content.destroy + redirect_to_referer_or history_project_wiki_page_path(@project, @page.title) + else + render_404 + end end # Export wiki to a single pdf or html file diff --git a/test/functional/wiki_controller_test.rb b/test/functional/wiki_controller_test.rb index 27772cd7c..0b86ef063 100644 --- a/test/functional/wiki_controller_test.rb +++ b/test/functional/wiki_controller_test.rb @@ -756,6 +756,18 @@ class WikiControllerTest < ActionController::TestCase end end + def test_destroy_invalid_version_should_respond_with_404 + @request.session[:user_id] = 2 + assert_no_difference 'WikiContent::Version.count' do + assert_no_difference 'WikiContent.count' do + assert_no_difference 'WikiPage.count' do + delete :destroy_version, :project_id => 'ecookbook', :id => 'CookBook_documentation', :version => 99 + end + end + end + assert_response 404 + end + def test_index get :index, :project_id => 'ecookbook' assert_response :success