summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStan Hu <stanhu@gmail.com>2018-12-02 07:45:29 -0800
committerStan Hu <stanhu@gmail.com>2018-12-02 07:45:29 -0800
commit41734291e1ded7d97f2530e2ae1c5228b2b9fd99 (patch)
treed62d8d98d6db0678f6da887385ae049e0d14f49d
parentc042c5ab3c4dd3fbe9437d5d5dca78fdc4401b9c (diff)
downloadgitlab-ce-sh-fix-wiki-edit.tar.gz
Fix Error 500s when editing Wiki page that doesn't existsh-fix-wiki-edit
-rw-r--r--app/controllers/projects/wikis_controller.rb5
-rw-r--r--spec/controllers/projects/wikis_controller_spec.rb9
2 files changed, 14 insertions, 0 deletions
diff --git a/app/controllers/projects/wikis_controller.rb b/app/controllers/projects/wikis_controller.rb
index 88dd111132b..77334140def 100644
--- a/app/controllers/projects/wikis_controller.rb
+++ b/app/controllers/projects/wikis_controller.rb
@@ -39,6 +39,9 @@ class Projects::WikisController < Projects::ApplicationController
end
def edit
+ unless @page&.valid?
+ redirect_to(project_wiki_path(@project, params[:id]))
+ end
end
def update
@@ -150,6 +153,8 @@ class Projects::WikisController < Projects::ApplicationController
def valid_encoding?
strong_memoize(:valid_encoding) do
+ next true unless @page&.content
+
@page.content.encoding == Encoding::UTF_8
end
end
diff --git a/spec/controllers/projects/wikis_controller_spec.rb b/spec/controllers/projects/wikis_controller_spec.rb
index 6d75152857b..cc344e83415 100644
--- a/spec/controllers/projects/wikis_controller_spec.rb
+++ b/spec/controllers/projects/wikis_controller_spec.rb
@@ -105,6 +105,15 @@ describe Projects::WikisController do
end
end
+ context 'when page does not exist' do
+ it 'shows the edit page' do
+ get(:edit, namespace_id: project.namespace, project_id: project, id: 'no page')
+
+ expect(response).to have_http_status(302)
+ expect(response.body).to include('Edit Page')
+ end
+ end
+
context 'when page content encoding is valid' do
render_views