# ~*~ encoding: utf-8 ~*~ require File.expand_path(File.join(File.dirname(__FILE__), 'helper')) context "Precious::Views::Editing" do include Rack::Test::Methods 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, allow_uploads: false}) post '/gollum/create', content: 'abc', format: 'markdown', message: 'def', page: 'D' assert last_response.body.include? 'Forbidden. This wiki is set to no-edit mode.' refute last_response.ok? assert_nil @wiki.page('D') end test ".redirects.gollum file should not be accessible" do get '/.redirects.gollum' assert_match /Accessing this resource is not allowed/, last_response.body end test ".redirects.gollum file should not be editable" do 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 get '/A' 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 last_response.body.include? "New" get '/gollum/history/A' refute last_response.body.include? "Edit" get '/gollum/compare/A/fc665395..b26b791c' 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, allow_uploads: false}) get '/A' 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 last_response.body.include? "New" get '/gollum/history/A' refute last_response.body.include? "Edit" get '/gollum/compare/A/fc665395..b26b791c' refute last_response.body.include? "Edit Page" refute last_response.body.include? "Revert Changes" end def app Precious::App end end