diff --git a/bin/gollum-migrate-tags b/bin/gollum-migrate-tags
index b6e38198..0c2b4359 100755
--- a/bin/gollum-migrate-tags
+++ b/bin/gollum-migrate-tags
@@ -11,8 +11,11 @@ migrate_options = {
:hyphenate => true
}
-def setting(const)
- Object.const_defined?(const.upcase) && Object.const_get(const.upcase)
+def setting(variable_name)
+ class_variable_name = :"@@#{variable_name.to_s}"
+
+ Object.class_variable_defined?(class_variable_name) &&
+ Object.class_variable_get(class_variable_name)
end
opts = OptionParser.new do |opts|
@@ -25,7 +28,7 @@ It finds and repairs Gollum link tags that no longer work under 5.x for three re
* 5.x wiki internal links are no longer 'global'.
* NB: you can use the --lenient-tag-lookup option in gollum >= 5.x to enable 4.x-backwards compatible tags.
-
+
See https://github.com/gollum/gollum/wiki/5.0-release-notes#filename-handling for more information.
Usage of this script comes without any warranty.
@@ -38,7 +41,7 @@ You can use the --page-file-dir and --config options as you would normally with
Requires a non-bare repository. Recommended usage:
1. Clone your wiki's repository to create a backup.
-2. Run this script on your cloned repo.
+2. Run this script on your cloned repo.
3. If all looks sane, run the script with the --write option. This will overwrite files in your working directory, but not commit the changes, so you have time to review them.
4. Do a 'git diff' to inspect the changes.
5. Commit the changes if all looks sane, and push/pull them back into your original repo.
@@ -52,23 +55,23 @@ EOF
opts.on('--page-file-dir [PATH]', 'Specify the subdirectory for all pages. Default: repository root.') do |path|
wiki_options[:page_file_dir] = path
end
-
+
opts.on('--prefer-relative-links', 'When specified, will try to replace broken links with relative links (\'[[Foo/Bar]]\' instead of \'[[/Subdir/Foo/Bar]]\') where possible.') do
migrate_options[:prefer_relative] = true
end
-
+
opts.on('--hyphenate', 'Default. Repair links that use spaces instead of hyphens: [[Bilbo Baggins]] -> [[Bilbo-Baggins]]') do
migrate_options[:hyphenate] = true
end
-
+
opts.on('--no-hyphenate', 'Turn off the --hyphenate option.') do
migrate_options[:hyphenate] = false
end
-
+
opts.on('--run-silent', 'Don\'t output anything.') do
migrate_options[:run_silent] = true
end
-
+
opts.on('--write', 'No dry run: actually perform the substitutions.') do
migrate_options[:no_dry_run] = true
end
@@ -78,8 +81,11 @@ end
begin
opts.parse!
migrate_options.each do |setting, value|
- const = setting.to_s.upcase
- Object.const_set(const, value) unless Object.const_defined?(const)
+ variable_name = :"@@#{setting.to_s}"
+
+ unless Object.class_variable_defined?(variable_name)
+ Object.class_variable_set(variable_name, value)
+ end
end
wiki_options[:page_file_dir] = setting(:page_file_dir) ? setting(:page_file_dir) : wiki_options[:page_file_dir] # Allow settings :page_file_dir through PAGE_FILE_DIR constant.
rescue OptionParser::InvalidOption
@@ -88,7 +94,7 @@ rescue OptionParser::InvalidOption
exit
end
-REPO = ARGV[0] || Dir.pwd
+wiki_directory = ARGV[0] || Dir.pwd
require 'gollum-lib'
@@ -98,7 +104,7 @@ if cfg = options[:config]
cfg = File.join(Dir.getwd, cfg) unless cfg.slice(0) == File::SEPARATOR
require cfg
end
-
+
class Gollum::Filter::CodeMigrator < Gollum::Filter::Code
def extract(data)
case @markup.format
@@ -126,7 +132,7 @@ class Gollum::Filter::CodeMigrator < Gollum::Filter::Code
next '' if m_end.length < m_start.length
lang = m_lang ? m_lang.strip.split.first : nil
cache_codeblock($~.to_s)
- end
+ end
end
data.gsub!(/^([ ]{0,3})``` ?([^\r\n]+)?\r?\n(.+?)\r?\n[ ]{0,3}```[ \t]*\r?$/m) do
@@ -134,7 +140,7 @@ class Gollum::Filter::CodeMigrator < Gollum::Filter::Code
end
data
end
-
+
def process(data)
return data if data.nil? || data.size.zero? || @map.size.zero?
@map.each do |id, block| ## Just put the code blocks back in verbatim
@@ -142,23 +148,23 @@ class Gollum::Filter::CodeMigrator < Gollum::Filter::Code
end
data
end
-
+
def cache_codeblock(block)
id = "#{open_pattern}#{Digest::SHA1.hexdigest(block)}#{close_pattern}"
@map[id] = block
id
end
end
-
+
class ::Gollum::Filter::TagMigrator < Gollum::Filter::Tags
def process_tag(tag)
link_part, extra = parse_tag_parts(tag)
orig_tag = %{[[#{tag}]]}
return orig_tag if link_part.nil?
-
+
img_args = extra ? [extra, link_part] : [link_part]
mime = MIME::Types.type_for(::File.extname(img_args.first.to_s)).first
-
+
# For any kind of tag other than an internal link: just return the tag.
if tag =~ /^_TOC_/ || link_part =~ /^_$/ || link_part =~ /^#{INCLUDE_TAG}/ || (mime && mime.content_type =~ /^image/) || process_external_link_tag(link_part, extra) || process_file_link_tag(link_part, extra)
return orig_tag
@@ -168,7 +174,7 @@ class ::Gollum::Filter::TagMigrator < Gollum::Filter::Tags
link = link_part
page = find_page_or_file_from_path(link)
anchor = nil
-
+
if page.nil? # No match yet, now try finding the page with anchor removed
if pos = link.rindex('#')
anchor = link[pos..-1]
@@ -203,12 +209,12 @@ class ::Gollum::Filter::TagMigrator < Gollum::Filter::Tags
pick = possibles.first
return tag_for_pick(pick, orig_tag, extra, anchor, @markup.page.path)
end
-
+
end
end
-
+
private
-
+
def tag_for_pick(pick, orig_tag, extra, anchor, linking_page_path)
pick = if setting(:prefer_relative)
overlapping_path = Pathname.new(linking_page_path).dirname.to_s
@@ -220,7 +226,7 @@ class ::Gollum::Filter::TagMigrator < Gollum::Filter::Tags
end
new_tag = extra.nil? ? %{[[#{pick}#{anchor}]]} : %{[[#{extra}|#{pick}#{anchor}]]}
log(:info, "#{@markup.page.path}: Changing #{orig_tag} -> #{new_tag}")
- new_tag
+ new_tag
end
end
@@ -232,8 +238,12 @@ end
filter_chain = [:PlainTextMigrator, :CodeMigrator, :TagMigrator]
-wiki = ::Gollum::Wiki.new(REPO, wiki_options.merge({:filter_chain => filter_chain}))
-TREE = wiki.tree_list(wiki.ref, true, true).map {|file| ::File.join('/', file.path)}
+wiki = ::Gollum::Wiki.new(wiki_directory, wiki_options.merge({:filter_chain => filter_chain}))
+
+Object.class_variable_set(
+ :"@@wiki_tree",
+ wiki.tree_list(wiki.ref, true, true).map {|file| ::File.join('/', file.path)}
+)
def find_linked(link)
link.gsub!(' ', '-') if setting(:hyphenate) # Match paths containing dashes instead of spaces
@@ -243,7 +253,9 @@ def find_linked(link)
test_path = ::File.extname(link).empty? ? /#{link}\..+/ : link
# Select pages from the wiki whose path =~ 'Foo/Bar/Samwi.*'
# Match case-insenstively to mimic 4.x behavior!
- TREE.select {|path| path =~ /^\/(.*\/)?#{test_path}/i}
+ Object.class_variable_get(:"@@wiki_tree").select { |path|
+ path =~ /^\/(.*\/)?#{test_path}/i
+ }
end
def log(kind, msg = nil)
@@ -268,4 +280,4 @@ wiki.pages.each do |page|
f.close
end
log(:none, '====')
-end
\ No newline at end of file
+end
diff --git a/lib/gollum/app.rb b/lib/gollum/app.rb
index 7e3f57cf..8b5a94e4 100644
--- a/lib/gollum/app.rb
+++ b/lib/gollum/app.rb
@@ -103,8 +103,7 @@ module Precious
end
before do
- settings.wiki_options[:allow_editing] = settings.wiki_options.fetch(:allow_editing, true)
- @allow_editing = settings.wiki_options[:allow_editing]
+ @allow_editing = settings.wiki_options.fetch(:allow_editing, true)
@critic_markup = settings.wiki_options[:critic_markup]
@redirects_enabled = settings.wiki_options.fetch(:redirects_enabled, true)
@per_page_uploads = settings.wiki_options[:per_page_uploads]
@@ -112,8 +111,6 @@ module Precious
@wiki_title = settings.wiki_options.fetch(:title, 'Gollum Wiki')
- forbid unless @allow_editing || request.request_method == 'GET'
-
if settings.wiki_options[:template_dir]
Precious::Views::Layout.extend Precious::Views::TemplateCascade
Precious::Views::Layout.template_priority_path = settings.wiki_options[:template_dir]
@@ -143,6 +140,8 @@ module Precious
config.manifest = Sprockets::Manifest.new(settings.sprockets, @static_assets_path)
end
end
+
+ forbid unless @allow_editing || request.request_method == 'GET'
end
get '/' do
diff --git a/lib/gollum/views/helpers/locale_helpers.rb b/lib/gollum/views/helpers/locale_helpers.rb
index 2f9fb2e7..da15bc76 100644
--- a/lib/gollum/views/helpers/locale_helpers.rb
+++ b/lib/gollum/views/helpers/locale_helpers.rb
@@ -42,7 +42,7 @@ module Precious
end
def fill_argument_content(i18n_key, i18n_value)
- i18n_value.gsub!(YAML_VARIABLE_REGEXP) do |argument|
+ i18n_value = i18n_value.gsub(YAML_VARIABLE_REGEXP) do |argument|
method_name = argument.gsub(/[^\w]/, '')
next if method_name.nil?
diff --git a/lib/gollum/views/template_cascade.rb b/lib/gollum/views/template_cascade.rb
index 9bddc1cd..ff567332 100644
--- a/lib/gollum/views/template_cascade.rb
+++ b/lib/gollum/views/template_cascade.rb
@@ -11,9 +11,13 @@ module Precious
end
def first_path_available(name)
- priority = File.join(template_priority_path, "#{name}.#{template_extension}")
default = File.join(template_path, "#{name}.#{template_extension}")
- File.exists?(priority) ? priority : default
+ priority =
+ if template_priority_path
+ File.join(template_priority_path, "#{name}.#{template_extension}")
+ end
+
+ priority && File.exist?(priority) ? priority : default
end
# Method should track lib/mustache/settings.rb from Mustache project.
diff --git a/test/helper.rb b/test/helper.rb
index 8bf4c7dc..0d992b55 100644
--- a/test/helper.rb
+++ b/test/helper.rb
@@ -1,18 +1,20 @@
require 'rubygems'
require 'rack/test'
-require 'test/unit'
require 'shoulda'
-require 'mocha/setup'
-require 'fileutils'
+require 'minitest/autorun'
require 'minitest/reporters'
require 'minitest/spec'
+require 'mocha/setup'
+require 'fileutils'
require 'tmpdir'
# Silence locale validation warning
require 'i18n'
I18n.enforce_available_locales = false
-MiniTest::Reporters.use!
+Minitest::Reporters.use! [
+ Minitest::Reporters::DefaultReporter.new({color: true})
+]
dir = File.dirname(File.expand_path(__FILE__))
$LOAD_PATH.unshift(File.join(dir, '..', 'lib'))
@@ -62,14 +64,29 @@ def normal(text)
text
end
-# test/spec/mini 3
-# http://gist.github.com/25455
-# chris@ozmm.org
-# file:lib/test/spec/mini.rb
+# The following configuration originates from this gist:
+
+# http://gist.github.com/25455
+#
+# But it has been modified since it was first committed. It allows you to
+# write tests with an RSpec-like DSL:
+#
+# context "my test context" do
+# setup do
+# # My test setup
+# end
+#
+# teardown do
+# # My test teardown
+# end
+#
+# test "some functionality" do
+# assert true
+# end
+# end
def context(*args, &block)
return super unless (name = args.first) && block
- require 'test/unit'
- klass = Class.new(defined?(ActiveSupport::TestCase) ? ActiveSupport::TestCase : Test::Unit::TestCase) do
+ klass = Class.new(Minitest::Test) do
def self.test(name, &block)
define_method("test_#{name.gsub(/\W/, '_')}", &block) if block
end
@@ -85,10 +102,13 @@ def context(*args, &block)
define_method(:teardown, &block)
end
end
+
(
- class << klass;
- self
- end).send(:define_method, :name) { name.gsub(/\W/, '_') }
+ class << klass;
+ self
+ end
+ ).send(:define_method, :name) { name.gsub(/\W/, '_') }
+
$contexts << klass
klass.class_eval &block
end
diff --git a/test/test_allow_editing.rb b/test/test_allow_editing.rb
index 8ce2394d..cb1317de 100644
--- a/test/test_allow_editing.rb
+++ b/test/test_allow_editing.rb
@@ -3,87 +3,107 @@ 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')
+ @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 page is blocked" do
- Precious::App.set(:wiki_options, { allow_editing: false})
- post "/gollum/create", :content => 'abc', :page => "D",
- :format => 'markdown', :message => 'def'
- assert !last_response.ok?
+ test 'creating pages is not blocked' do
+ post '/gollum/create',
+ content: 'abc',
+ format: 'markdown',
+ message: 'def',
+ page: 'D'
- page = @wiki.page('D')
- assert page.nil?
+ 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
- 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'
- assert_no_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'
- assert_no_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'
- assert_no_match /Delete this Page/, last_response.body, "'Delete this Page' link not blocked in page template"
- assert_no_match /New/, last_response.body, "'New' button not blocked in page template"
- assert_no_match /Upload\b/, last_response.body, "'Upload' link not blocked in page template"
- assert_no_match /Rename/, last_response.body, "'Rename' link not blocked in page template"
- assert_no_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'
- assert_no_match /New/, last_response.body, "'New' link not blocked in pages template"
+ refute last_response.body.include? "New"
get '/gollum/history/A'
- assert_no_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'
- assert_no_match /Edit Page/, last_response.body, "'Edit Page' link not blocked in compare template"
- assert_no_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
Precious::App
end
-end
\ No newline at end of file
+end
diff --git a/test/test_app.rb b/test/test_app.rb
index d3710ee1..cb82c221 100644
--- a/test/test_app.rb
+++ b/test/test_app.rb
@@ -14,7 +14,7 @@ context "Frontend" do
teardown do
FileUtils.rm_rf(@path)
end
-
+
test "utf-8 kcode" do
assert_equal 'μ†ℱ'.scan(/./), ["μ", "†", "ℱ"]
end
@@ -104,21 +104,21 @@ EOF
page_2 = @wiki.page(page_1.name)
assert_equal 'abc', page_2.raw_data
assert_equal 'def', page_2.version.message
- assert_not_equal page_1.version.sha, page_2.version.sha
+ refute_equal page_1.version.sha, page_2.version.sha
end
-
+
test "edit page fails when page is outdated (edit collision)" do
page = @wiki.page('A')
old_sha = page.sha
post "/gollum/edit/A", :content => 'abc', :page => 'A',
:format => page.format, :message => 'def', :etag => old_sha
assert last_response.ok?
-
+
@wiki.clear_cache
page = @wiki.page('A')
new_sha = page.sha
- assert_not_equal old_sha, new_sha
-
+ refute_equal old_sha, new_sha
+
post "/gollum/edit/A", :content => 'def', :page => 'A',
:format => page.format, :message => 'def', :etag => old_sha
assert_equal last_response.status, 412
@@ -134,7 +134,7 @@ EOF
page_2 = @wiki.page(page_1.name)
assert_equal 'abc', page_2.raw_data
assert_equal '[no message]', page_2.version.message
- assert_not_equal page_1.version.sha, page_2.version.sha
+ refute_equal page_1.version.sha, page_2.version.sha
end
test "edit page with slash" do
@@ -165,12 +165,12 @@ EOF
assert_equal 'header', header_2.raw_data
assert_equal 'footer', foot_2.raw_data
assert_equal 'def', foot_2.version.message
- assert_not_equal foot_1.version.sha, foot_2.version.sha
- assert_not_equal header_1.version.sha, header_2.version.sha
+ refute_equal foot_1.version.sha, foot_2.version.sha
+ refute_equal header_1.version.sha, header_2.version.sha
assert_equal 'sidebar', side_2.raw_data
assert_equal 'def', side_2.version.message
- assert_not_equal side_1.version.sha, side_2.version.sha
+ refute_equal side_1.version.sha, side_2.version.sha
assert_equal commits, @wiki.repo.commits('master').size
end
@@ -187,7 +187,7 @@ EOF
page_2 = @wiki.page('C')
assert_equal "INITIAL\n\nSPAM2\n", page_2.raw_data
assert_equal 'def', page_2.last_version.message
- assert_not_equal page_1.version.sha, page_2.version.sha
+ refute_equal page_1.version.sha, page_2.version.sha
end
test "rename preserves format" do
@@ -222,7 +222,7 @@ EOF
test "renames page in subdirectory" do
page_1 = @wiki.page("G/H")
- assert_not_equal page_1, nil
+ refute_equal page_1, nil
post "/gollum/rename/G/H", :rename => "/I/C", :message => 'def'
follow_redirect!
@@ -234,12 +234,12 @@ EOF
page_2 = @wiki.page('I/C')
assert_equal "INITIAL\n\nSPAM2\n", page_2.raw_data
assert_equal 'def', page_2.last_version.message
- assert_not_equal page_1.version.sha, page_2.version.sha
+ refute_equal page_1.version.sha, page_2.version.sha
end
test "renames page relative in subdirectory" do
page_1 = @wiki.page("G/H")
- assert_not_equal page_1, nil
+ refute_equal page_1, nil
post "/gollum/rename/G/H", :rename => "K/C", :message => 'def'
follow_redirect!
@@ -251,7 +251,7 @@ EOF
page_2 = @wiki.page('G/K/C')
assert_equal "INITIAL\n\nSPAM2\n", page_2.raw_data
assert_equal 'def', page_2.last_version.message
- assert_not_equal page_1.version.sha, page_2.version.sha
+ refute_equal page_1.version.sha, page_2.version.sha
end
test "creates page" do
@@ -320,7 +320,7 @@ EOF
name = "#{dir}/bar"
get "/gollum/create/#{name}"
assert_match(/\/#{dir}/, last_response.body)
- assert_no_match(/[^\/]#{dir}/, last_response.body)
+ refute_match(/[^\/]#{dir}/, last_response.body)
end
test "create with template succeed if template exists" do
@@ -390,7 +390,7 @@ EOF
post '/gollum/edit/', :content => 'edit_msg',
:page => page, :path => path, :message => ''
page_e = @wiki.page(::File.join(path,page))
- assert_equal nil, page_e
+ assert_nil page_e
end
test "edit allows changing format" do
@@ -446,23 +446,31 @@ EOF
@wiki.clear_cache
page = @wiki.page(name)
- assert_not_equal 'abc', page.raw_data
+ refute_equal 'abc', page.raw_data
end
-
+
test "uploading is not allowed unless explicitly enabled" do
temp_upload_file = Tempfile.new(['upload', '.file']) << 'abc'
temp_upload_file.close
- post "/gollum/upload_file", :file => Rack::Test::UploadedFile.new(::File.open(temp_upload_file))
+
+ Precious::App.set(
+ :wiki_options,
+ {allow_uploads: false, per_page_uploads: false}
+ )
+
+ post '/gollum/upload_file',
+ file: Rack::Test::UploadedFile.new(File.open(temp_upload_file))
+
assert_equal 405, last_response.status
end
-
+
test "upload a file with mode dir" do
temp_upload_file = Tempfile.new(['upload', '.file']) << 'abc'
temp_upload_file.close
Precious::App.set(:wiki_options, {allow_uploads: true})
-
+
post "/gollum/upload_file", :file => Rack::Test::UploadedFile.new(::File.open(temp_upload_file))
-
+
assert_equal 302, last_response.status # redirect is expected
@wiki.clear_cache
file = @wiki.file("uploads/#{::File.basename(temp_upload_file.path)}")
@@ -475,7 +483,7 @@ EOF
temp_upload_file.close
Precious::App.set(:wiki_options, {allow_uploads: true, per_page_uploads: true})
post "/gollum/upload_file", {:file => Rack::Test::UploadedFile.new(::File.open(temp_upload_file))}, {'HTTP_REFERER' => 'http://localhost:4567/Home.md', 'HTTP_HOST' => 'localhost:4567'}
-
+
assert_equal 302, last_response.status # redirect is expected
@wiki.clear_cache
# Find the file in a page-specific subdir (here: Home), based on referer
@@ -483,13 +491,13 @@ EOF
assert_equal 'abc', file.raw_data
Precious::App.set(:wiki_options, {allow_uploads: false, per_page_uploads: false})
end
-
+
test "upload a file with https referer" do
temp_upload_file = Tempfile.new(['https_upload', '.file']) << 'abc'
temp_upload_file.close
Precious::App.set(:wiki_options, {allow_uploads: true, per_page_uploads: true})
post "/gollum/upload_file", {:file => Rack::Test::UploadedFile.new(::File.open(temp_upload_file))}, {'HTTP_REFERER' => 'https://localhost:4567/Home.md', 'HTTP_HOST' => 'localhost:4567'}
-
+
assert_equal 302, last_response.status # redirect is expected
@wiki.clear_cache
# Find the file in a page-specific subdir (here: Home), based on referer
@@ -497,8 +505,8 @@ EOF
assert_equal 'abc', file.raw_data
Precious::App.set(:wiki_options, {allow_uploads: false, per_page_uploads: false})
end
-
-
+
+
test "guard against uploading an existing file" do
temp_upload_file = Tempfile.new(['upload', '.file']) << 'abc'
temp_upload_file.close
@@ -510,7 +518,7 @@ EOF
assert_equal 409, last_response.status
Precious::App.set(:wiki_options, {allow_uploads: false})
end
-
+
test "delete a page" do
name = "deleteme"
post "/gollum/create", :content => 'abc', :page => name,
@@ -522,7 +530,7 @@ EOF
@wiki.clear_cache
page = @wiki.page(name)
- assert_equal nil, page
+ assert_nil page
end
test "previews content" do
@@ -546,7 +554,7 @@ EOF
@wiki.clear_cache
page2 = @wiki.page('B')
- assert_not_equal page1.version.sha, page2.version.sha
+ refute_equal page1.version.sha, page2.version.sha
assert_equal "INITIAL", page2.raw_data.strip
assert_equal "Revert commit 7c45b5f", page2.version.message
end
@@ -560,7 +568,7 @@ EOF
@wiki.clear_cache
page2 = @wiki.page('A')
- assert_not_equal page1.version.sha, page2.version.sha
+ refute_equal page1.version.sha, page2.version.sha
assert_equal "INITIAL", page2.raw_data.strip
end
@@ -574,7 +582,7 @@ EOF
page2 = @wiki.page('A')
assert_equal page1.version.sha, page2.version.sha
end
-
+
=begin
# redirects are now handled by class MapGollum in bin/gollum
# they should be set in config.ru
@@ -622,7 +630,7 @@ EOF
{ :name => 'user1', :email => 'user1' });
get page
- assert_no_match /custom.js/, last_response.body
+ refute_match /custom.js/, last_response.body
end
test "add custom.js if setting" do
@@ -640,7 +648,7 @@ EOF
test "don't allow changing custom js or css" do
Precious::App.set(:wiki_options, { :js => true, :css => true })
-
+
['create', 'edit'].each do |route|
['.css', '.js'].each do |ext|
get "/gollum/#{route}/custom#{ext}"
@@ -673,7 +681,7 @@ EOF
:page => 'Multibyte', :format => :markdown, :message => 'mesg'
page = @wiki.page('Multibyte')
-
+
post "/gollum/edit/Multibyte",
:content => 'りんご', :header => 'みかん', :footer => 'バナナ', :sidebar => 'スイカ',
:page => 'Multibyte', :format => :markdown, :message => 'mesg', :etag => page.sha
@@ -691,7 +699,7 @@ EOF
get "A"
assert last_response.ok?
- assert_no_match /meta name="robots" content="noindex, nofollow"/, last_response.body
+ refute_match /meta name="robots" content="noindex, nofollow"/, last_response.body
get "A/fc66539528eb96f21b2bbdbf557788fe8a1196ac"
@@ -870,10 +878,10 @@ context "Frontend with lotr" do
test "show revision of specific file" do
old_sha = "df26e61e707116f81ebc6b935ec6d1676b7e96c4"
update_sha = "f803c64d11407b23797325e3843f3f378b78f611"
-
+
get "Data.csv/#{old_sha}"
assert last_response.ok?
- assert_no_match /Samwise,Gamgee/, last_response.body
+ refute_match /Samwise,Gamgee/, last_response.body
get "Data.csv/#{update_sha}"
assert last_response.ok?
@@ -918,7 +926,7 @@ context "Frontend with page-file-dir" do
name = "#{dir}/baz"
get "/gollum/create/#{name}"
assert_match(/\/#{dir}/, last_response.body)
- assert_no_match(/[^\/]#{dir}/, last_response.body)
+ refute_match(/[^\/]#{dir}/, last_response.body)
end
test "use custom.css from page-file-dir path if page-file-dir is set" do
@@ -959,7 +967,7 @@ end
context "Frontend with empty repo" do
include Rack::Test::Methods
-
+
setup do
@path = cloned_testpath("examples/empty.git")
@wiki = Gollum::Wiki.new(@path)
@@ -970,11 +978,11 @@ context "Frontend with empty repo" do
teardown do
FileUtils.rm_rf(@path)
end
-
+
def app
Precious::App
end
-
+
test 'previews content on the first page of an empty wiki' do
post '/gollum/preview', :content => 'abc', :format => 'markdown'
assert last_response.ok?
@@ -986,12 +994,12 @@ context "Frontend with empty repo" do
assert_equal '/gollum/create/Home', last_request.fullpath
assert last_response.ok?
end
-
+
end
context 'Frontend with base path' do
include Rack::Test::Methods
-
+
setup do
@path = cloned_testpath("examples/lotr.git")
@wiki = Gollum::Wiki.new(@path)
@@ -1003,24 +1011,24 @@ context 'Frontend with base path' do
teardown do
FileUtils.rm_rf(@path)
end
-
+
test 'page with base path' do
get '/wiki/Home'
assert last_response.ok?
end
-
+
test 'base path mathjax assets' do
get '/wiki/Home'
assert last_response.ok?
assert last_response.body.include?('