From e4f549a9b9078b9b1a28b3e1f4893d72aaba9a6f Mon Sep 17 00:00:00 2001 From: benjamin wil Date: Sat, 19 Feb 2022 19:43:45 -0800 Subject: [PATCH] Improve "allow editing" tests While making changes to the test suite, I ran into some issues with these tests failing on occasion. I added some setup and teardown to help with this. But one thing I did notice is that the word "Upload" appears in the response body whether uploading is enabled or not, so I made these assertions more specific to the HTML rather than other places the word "Upload" might appear (which is related to Critic Markup). --- test/test_allow_editing.rb | 63 +++++++++++++++++++++++--------------- 1 file changed, 38 insertions(+), 25 deletions(-) diff --git a/test/test_allow_editing.rb b/test/test_allow_editing.rb index 44ff2a9b..cb1317de 100644 --- a/test/test_allow_editing.rb +++ b/test/test_allow_editing.rb @@ -7,15 +7,29 @@ context "Precious::Views::Editing" do setup do @path = cloned_testpath('examples/revert.git') Precious::App.set(:gollum_path, @path) + Precious::App.set(:wiki_options, {allow_editing: true, allow_uploads: true}) @wiki = Gollum::Wiki.new(@path) end teardown do + Precious::App.set(:wiki_options, {allow_editing: true, allow_uploads: true}) FileUtils.rm_rf(@path) end + test 'creating pages is not blocked' do + post '/gollum/create', + content: 'abc', + format: 'markdown', + message: 'def', + page: 'D' + + assert_equal last_response.status, 302 + + refute_nil @wiki.page('D') + end + test 'creating pages is blocked' do - Precious::App.set(:wiki_options, {allow_editing: false}) + Precious::App.set(:wiki_options, {allow_editing: false, allow_uploads: false}) post '/gollum/create', content: 'abc', @@ -31,63 +45,62 @@ context "Precious::Views::Editing" do end test ".redirects.gollum file should not be accessible" do - Precious::App.set(:wiki_options, { allow_editing: true, allow_uploads: true }) get '/.redirects.gollum' assert_match /Accessing this resource is not allowed/, last_response.body end test ".redirects.gollum file should not be editable" do - Precious::App.set(:wiki_options, { allow_editing: true, allow_uploads: true }) get '/gollum/edit/.redirects.gollum' assert_match /Changing this resource is not allowed/, last_response.body end test "frontend links for editing are not blocked" do - Precious::App.set(:wiki_options, { allow_editing: true, allow_uploads: true }) get '/A' - assert_match /Delete this Page/, last_response.body, "'Delete this Page' link is blocked in page template" - assert_match /New/, last_response.body, "'New' button is blocked in page template" - assert_match /Upload\b/, last_response.body, "'Upload' link is blocked in page template" - assert_match /Rename/, last_response.body, "'Rename' link is blocked in page template" - assert_match /Edit/, last_response.body, "'Edit' link is blocked in page template" + assert last_response.body.include? "Delete this Page" + assert last_response.body.include? "New" + assert last_response.body.include? "Upload" + assert last_response.body.include? "Rename" + assert last_response.body.include? "Edit" get '/gollum/overview' - assert_match /New/, last_response.body, "'New' link is blocked in pages template" + assert last_response.body.include? "New" get '/gollum/history/A' - refute_match /Edit/, last_response.body, "'Edit' link is not blocked in history template" + refute last_response.body.include? "Edit" - get '/gollum/compare/A/fc66539528eb96f21b2bbdbf557788fe8a1196ac..b26b791cb7917c4f37dd9cb4d1e0efb24ac4d26f' + get '/gollum/compare/A/fc665395..b26b791c' - refute_match /Edit Page/, last_response.body, "'Edit Page' link is not blocked in compare template" - assert_match /Revert Changes/, last_response.body, "'Revert Changes' link is blocked in compare template" + refute last_response.body.include? "Edit Page" + + assert last_response.body.include? "Revert Changes" end test "frontend links for editing blocked" do - Precious::App.set(:wiki_options, { allow_editing: false }) + Precious::App.set(:wiki_options, {allow_editing: false, allow_uploads: false}) + get '/A' - refute_match /Delete this Page/, last_response.body, "'Delete this Page' link not blocked in page template" - refute_match /New/, last_response.body, "'New' button not blocked in page template" - refute_match /Upload\b/, last_response.body, "'Upload' link not blocked in page template" - refute_match /Rename/, last_response.body, "'Rename' link not blocked in page template" - refute_match /Edit/, last_response.body, "'Edit' link not blocked in page template" + refute last_response.body.include? "Delete this Page" + refute last_response.body.include? "Upload" + refute last_response.body.include? "Rename" + refute last_response.body.include? "Edit" + refute last_response.body.include? "New" get '/gollum/overview' - refute_match /New/, last_response.body, "'New' link not blocked in pages template" + refute last_response.body.include? "New" get '/gollum/history/A' - refute_match /Edit/, last_response.body, "'Edit' link not blocked in history template" + refute last_response.body.include? "Edit" - get '/gollum/compare/A/fc66539528eb96f21b2bbdbf557788fe8a1196ac..b26b791cb7917c4f37dd9cb4d1e0efb24ac4d26f' + get '/gollum/compare/A/fc665395..b26b791c' - refute_match /Edit Page/, last_response.body, "'Edit Page' link not blocked in compare template" - refute_match /Revert Changes/, last_response.body, "'Revert Changes' link not blocked in compare template" + refute last_response.body.include? "Edit Page" + refute last_response.body.include? "Revert Changes" end def app