Invalid URI

This commit is contained in:
Karel Picman 2017-04-19 15:58:59 +02:00
parent 916b170e41
commit 95e5d7fb39
9 changed files with 14 additions and 14 deletions

View File

@ -118,7 +118,7 @@ module RedmineDmsf
# Characters that MATCH this regex will be replaced with dots, no more than one dot in a row.
INVALID_CHARACTERS = /[\/\\\?":<>#%\*\[\]]/.freeze # = / \ ? " : < > # % * [ ]
def self.create_project_name(p)
use_project_names = Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names']
if use_project_names

View File

@ -178,7 +178,7 @@ class DmsfWebdavDeleteTest < RedmineDmsf::Test::IntegrationTest
@project1.enable_module! :dmsf # Flag module enabled
delete "/dmsf/webdav/#{@project1.identifier}/#{@folder6.title}", nil, @jsmith
assert_response 404
p1name_uri = RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1)
p1name_uri = Addressable::URI.escape(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
delete "/dmsf/webdav/#{p1name_uri}/#{@folder6.title}", nil, @jsmith
assert_response :success
@folder6.reload
@ -216,7 +216,7 @@ class DmsfWebdavDeleteTest < RedmineDmsf::Test::IntegrationTest
@role.add_permission! :file_delete
delete "/dmsf/webdav/#{@project1.identifier}/#{@file1.name}", nil, @jsmith
assert_response 404
p1name_uri = RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1)
p1name_uri = Addressable::URI.escape(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
delete "/dmsf/webdav/#{p1name_uri}/#{@file1.name}", nil, @jsmith
assert_response :success
@file1.reload

View File

@ -67,7 +67,7 @@ class DmsfWebdavGetTest < RedmineDmsf::Test::IntegrationTest
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
if Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] == true
project1_uri = RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1)
project1_uri = Addressable::URI.escape(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
get '/dmsf/webdav', nil, @admin
assert_response :success
assert_no_match @project1.identifier, response.body
@ -98,7 +98,7 @@ class DmsfWebdavGetTest < RedmineDmsf::Test::IntegrationTest
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
if Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] == true
project1_uri = RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1)
project1_uri = Addressable::URI.escape(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
get "/dmsf/webdav/#{@project1.identifier}/test.txt", nil, @admin
assert_response 404
get "/dmsf/webdav/#{project1_uri}/test.txt", nil, @admin

View File

@ -35,7 +35,7 @@ class DmsfWebdavHeadTest < RedmineDmsf::Test::IntegrationTest
Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] = 'WEBDAV_READ_WRITE'
# Temporarily enable project names
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
@project1_uri = RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1)
@project1_uri = Addressable::URI.escape(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = false
DmsfFile.storage_path = File.expand_path '../../../fixtures/files', __FILE__
User.current = nil

View File

@ -106,7 +106,7 @@ class DmsfWebdavMkcolTest < RedmineDmsf::Test::IntegrationTest
assert_response :success
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
if Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] == true
project1_uri = RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1)
project1_uri = Addressable::URI.escape(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
xml_http_request :mkcol, "/dmsf/webdav/#{@project1.identifier}/test2", nil, @jsmith
assert_response 404
xml_http_request :mkcol, "/dmsf/webdav/#{project1_uri}/test3", nil, @jsmith

View File

@ -140,7 +140,7 @@ class DmsfWebdavMoveTest < RedmineDmsf::Test::IntegrationTest
file = DmsfFile.find_by_id 1
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
if Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] == true
project1_uri = RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1)
project1_uri = Addressable::URI.escape(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
new_name = "#{file.name}.moved"
assert_difference 'file.dmsf_file_revisions.count', +1 do
xml_http_request :move, "/dmsf/webdav/#{project1_uri}/#{file.name}", nil,
@ -188,7 +188,7 @@ class DmsfWebdavMoveTest < RedmineDmsf::Test::IntegrationTest
folder = DmsfFolder.find_by_id 1
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
if Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] == true
project1_uri = RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1)
project1_uri = Addressable::URI.escape(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
assert_kind_of DmsfFile, file
assert_kind_of DmsfFolder, folder

View File

@ -156,7 +156,7 @@ class DmsfWebdavOptionsTest < RedmineDmsf::Test::IntegrationTest
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
if Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] == true
project1_uri = RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1)
project1_uri = URI.encode(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1), /\W/)
xml_http_request :options, "/dmsf/webdav/#{@project1.identifier}", nil, @admin.merge!({:HTTP_USER_AGENT => 'Other'})
assert_response 404
xml_http_request :options, "/dmsf/webdav/#{project1_uri}", nil, @admin.merge!({:HTTP_USER_AGENT => 'Other'})

View File

@ -46,7 +46,7 @@ class DmsfWebdavPropfindTest < RedmineDmsf::Test::IntegrationTest
# Temporarily enable project names to generate names for project1
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
@project1_uri = RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1)
@project1_uri = Addressable::URI.escape(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = false
RedmineDmsf::Webdav::Cache.init_nullcache
end
@ -267,7 +267,7 @@ class DmsfWebdavPropfindTest < RedmineDmsf::Test::IntegrationTest
# Rename project1
@project1.name = 'Online Cookbook'
@project1.save!
project1_new_uri = RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1)
project1_new_uri = Addressable::URI.escape(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
# PROPSTATS for / is already cached, but a new PROPSTATS should be cached for project1
assert_difference 'RedmineDmsf::Webdav::Cache.cache.instance_variable_get(:@data).count', +1 do

View File

@ -102,7 +102,7 @@ class DmsfWebdavPutTest < RedmineDmsf::Test::IntegrationTest
assert file, 'Check for files existance'
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
if Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] == true
project1_uri = RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1)
project1_uri = Addressable::URI.escape(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
put "/dmsf/webdav/#{@project1.identifier}/test-1234.txt", '1234', @admin.merge!({:content_type => :text})
assert_response 409
put "/dmsf/webdav/#{project1_uri}/test-1234.txt", '1234', @admin.merge!({:content_type => :text})
@ -157,7 +157,7 @@ class DmsfWebdavPutTest < RedmineDmsf::Test::IntegrationTest
assert file, 'File test-1234 was not found in projects dmsf folder.'
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
if Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] == true
project1_uri = RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1)
project1_uri = Addressable::URI.escape(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
put "/dmsf/webdav/#{@project1.identifier}/test-1234.txt", '1234', @jsmith.merge!({:content_type => :text})
assert_response 409
put "/dmsf/webdav/#{project1_uri}/test-1234.txt", '1234', @jsmith.merge!({:content_type => :text})