diff --git a/lib/redmine_dmsf/webdav/resource_proxy.rb b/lib/redmine_dmsf/webdav/resource_proxy.rb
index eaca6c02..47383bf3 100644
--- a/lib/redmine_dmsf/webdav/resource_proxy.rb
+++ b/lib/redmine_dmsf/webdav/resource_proxy.rb
@@ -35,6 +35,8 @@ module RedmineDmsf
attr_reader :read_only
def initialize(path, request, response, options)
+ # Check the settings cache for each request
+ Setting.check_cache
# Return 404 - NotFound if WebDAV is not enabled
unless Setting.plugin_redmine_dmsf['dmsf_webdav']
raise NotFound
diff --git a/test/integration/webdav/dmsf_webdav_head_test.rb b/test/integration/webdav/dmsf_webdav_head_test.rb
index 0ded6fda..dc542b64 100644
--- a/test/integration/webdav/dmsf_webdav_head_test.rb
+++ b/test/integration/webdav/dmsf_webdav_head_test.rb
@@ -39,7 +39,9 @@ class DmsfWebdavHeadTest < RedmineDmsf::Test::IntegrationTest
with_settings plugin_redmine_dmsf: {'dmsf_webdav_use_project_names' => '1', 'dmsf_webdav' => '1'} do
head "/dmsf/webdav/#{@project1.identifier}", params: nil, headers: @admin
assert_response :not_found
- head "/dmsf/webdav/#{@project1_uri}", params: nil, headers: @admin
+ project1_name = RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1)
+ project1_uri = Addressable::URI.escape(project1_name)
+ head "/dmsf/webdav/#{project1_uri}", params: nil, headers: @admin
assert_response :success
end
end
@@ -56,7 +58,9 @@ class DmsfWebdavHeadTest < RedmineDmsf::Test::IntegrationTest
with_settings plugin_redmine_dmsf: {'dmsf_webdav_use_project_names' => '1', 'dmsf_webdav' => '1'} do
head "/dmsf/webdav/#{@project1.identifier}/test.txt", params: nil, headers: @admin
assert_response :conflict
- head "/dmsf/webdav/#{@project1_uri}/test.txt", params: nil, headers: @admin
+ project1_name = RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1)
+ project1_uri = Addressable::URI.escape(project1_name)
+ head "/dmsf/webdav/#{project1_uri}/test.txt", params: nil, headers: @admin
assert_response :success
end
end
diff --git a/test/integration/webdav/dmsf_webdav_propfind_test.rb b/test/integration/webdav/dmsf_webdav_propfind_test.rb
index 9b32c270..60e5e5c2 100644
--- a/test/integration/webdav/dmsf_webdav_propfind_test.rb
+++ b/test/integration/webdav/dmsf_webdav_propfind_test.rb
@@ -63,8 +63,10 @@ class DmsfWebdavPropfindTest < RedmineDmsf::Test::IntegrationTest
assert !response.body.include?("http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/")
assert !response.body.include?("#{@project1.identifier}")
# but the project name should match
- assert response.body.include?("http://www.example.com:80/dmsf/webdav/#{@project1_uri}/")
- assert response.body.include?("#{@project1_name}")
+ project1_name = RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1)
+ project1_uri = Addressable::URI.escape(project1_name)
+ assert response.body.include?("http://www.example.com:80/dmsf/webdav/#{project1_uri}/")
+ assert response.body.include?("#{project1_name}")
end
end
@@ -96,10 +98,13 @@ class DmsfWebdavPropfindTest < RedmineDmsf::Test::IntegrationTest
with_settings plugin_redmine_dmsf: {'dmsf_webdav_use_project_names' => '1', 'dmsf_webdav' => '1'} do
process :propfind, "/dmsf/webdav/#{@project1.identifier}", params: nil, headers: @admin.merge!({ HTTP_DEPTH: '0' })
assert_response :not_found
- process :propfind, "/dmsf/webdav/#{@project1_uri}", params: nil, headers: @admin.merge!({ HTTP_DEPTH: '0' })
+ project1_name = RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1)
+ project1_uri = Addressable::URI.escape(project1_name)
+ process :propfind, "/dmsf/webdav/#{project1_uri}", params: nil, headers: @admin.merge!({ HTTP_DEPTH: '0' })
assert_response :multi_status
- assert response.body.include?("http://www.example.com:80/dmsf/webdav/#{@project1_uri}/")
- assert response.body.include?("#{@project1_name}")
+ assert response.body.include?("http://www.example.com:80/dmsf/webdav/#{project1_uri}/")
+ project1_name = RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1)
+ assert response.body.include?("#{project1_name}")
end
end
@@ -127,21 +132,27 @@ class DmsfWebdavPropfindTest < RedmineDmsf::Test::IntegrationTest
with_settings plugin_redmine_dmsf: {'dmsf_webdav_use_project_names' => '1', 'dmsf_webdav' => '1'} do
process :propfind, "/dmsf/webdav/#{@project1.identifier}", params: nil, headers: @admin.merge!({ HTTP_DEPTH: '1'})
assert_response :not_found
- process :propfind, "/dmsf/webdav/#{@project1_uri}", params: nil, headers: @admin.merge!({ HTTP_DEPTH: '1'})
+ project1_name = RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1)
+ project1_uri = Addressable::URI.escape(project1_name)
+ process :propfind, "/dmsf/webdav/#{project1_uri}", params: nil, headers: @admin.merge!({ HTTP_DEPTH: '1'})
assert_response :multi_status
# Project
- assert response.body.include?("http://www.example.com:80/dmsf/webdav/#{@project1_uri}/")
+ project1_name = RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1)
+ project1_uri = Addressable::URI.escape(project1_name)
+ assert response.body.include?("http://www.example.com:80/dmsf/webdav/#{project1_uri}/")
# Folders
- assert response.body.include?("http://www.example.com:80/dmsf/webdav/#{@project1_uri}/#{@folder1.title}/")
+ project1_name = RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1)
+ project1_uri = Addressable::URI.escape(project1_name)
+ assert response.body.include?("http://www.example.com:80/dmsf/webdav/#{project1_uri}/#{@folder1.title}/")
assert response.body.include?("#{@folder1.title}")
- assert response.body.include?("http://www.example.com:80/dmsf/webdav/#{@project1_uri}/#{@folder6.title}/")
+ assert response.body.include?("http://www.example.com:80/dmsf/webdav/#{project1_uri}/#{@folder6.title}/")
assert response.body.include?("#{@folder6.title}")
# Files
- assert response.body.include?("http://www.example.com:80/dmsf/webdav/#{@project1_uri}/#{@file1.name}")
+ assert response.body.include?("http://www.example.com:80/dmsf/webdav/#{project1_uri}/#{@file1.name}")
assert response.body.include?("#{@file1.name}")
- assert response.body.include?("http://www.example.com:80/dmsf/webdav/#{@project1_uri}/#{@file9.name}")
+ assert response.body.include?("http://www.example.com:80/dmsf/webdav/#{project1_uri}/#{@file9.name}")
assert response.body.include?("#{@file9.name}")
- assert response.body.include?("http://www.example.com:80/dmsf/webdav/#{@project1_uri}/#{@file10.name}")
+ assert response.body.include?("http://www.example.com:80/dmsf/webdav/#{project1_uri}/#{@file10.name}")
assert response.body.include?("#{@file10.name}")
end
end
diff --git a/test/integration/webdav/dmsf_webdav_put_test.rb b/test/integration/webdav/dmsf_webdav_put_test.rb
index 4ed5d610..16396f26 100644
--- a/test/integration/webdav/dmsf_webdav_put_test.rb
+++ b/test/integration/webdav/dmsf_webdav_put_test.rb
@@ -218,7 +218,10 @@ class DmsfWebdavPutTest < RedmineDmsf::Test::IntegrationTest
assert_response :no_content
put "/dmsf/webdav/#{@project1.identifier}/Thumbs.db", params: '1234', headers: @admin.merge!({ content_type: :text })
assert_response :no_content
- with_settings plugin_redmine_dmsf: {'dmsf_webdav_ignore' => '.dump$', 'dmsf_webdav' => '1'} do
+ with_settings plugin_redmine_dmsf: {
+ 'dmsf_webdav_use_project_names' => nil,
+ 'dmsf_webdav_ignore' => '.dump$',
+ 'dmsf_webdav' => '1'} do
put "/dmsf/webdav/#{@project1.identifier}/test.dump", params: '1234', headers: @admin.merge!({ content_type: :text })
assert_response :no_content
end
@@ -253,7 +256,10 @@ class DmsfWebdavPutTest < RedmineDmsf::Test::IntegrationTest
assert_response :created
end
- with_settings plugin_redmine_dmsf: {'dmsf_webdav_disable_versioning' => '.dump$', 'dmsf_webdav' => '1'} do
+ with_settings plugin_redmine_dmsf: {
+ 'dmsf_webdav_use_project_names' => nil,
+ 'dmsf_webdav_disable_versioning' => '.dump$',
+ 'dmsf_webdav' => '1'} do
put "/dmsf/webdav/#{@project1.identifier}/file3.dump", params: '1234', headers: credentials
assert_response :success
file3 = DmsfFile.find_by(project_id: @project1.id, dmsf_folder_id: nil, name: 'file3.dump')
@@ -301,7 +307,10 @@ class DmsfWebdavPutTest < RedmineDmsf::Test::IntegrationTest
end
def test_ignore_1b_files_on
- with_settings plugin_redmine_dmsf: {'dmsf_webdav_ignore_1b_file_for_authentication' => '1', 'dmsf_webdav' => '1'} do
+ with_settings plugin_redmine_dmsf: {
+ 'dmsf_webdav_use_project_names' => nil,
+ 'dmsf_webdav_ignore_1b_file_for_authentication' => '1',
+ 'dmsf_webdav' => '1'} do
put "/dmsf/webdav/#{@project1.identifier}/1bfile.txt", params: '1',
headers: @jsmith.merge!({ content_type: :text })
assert_response :no_content
@@ -309,7 +318,10 @@ class DmsfWebdavPutTest < RedmineDmsf::Test::IntegrationTest
end
def test_ignore_1b_files_off
- with_settings plugin_redmine_dmsf: {'dmsf_webdav_ignore_1b_file_for_authentication' => nil, 'dmsf_webdav' => '1'} do
+ with_settings plugin_redmine_dmsf: {
+ 'dmsf_webdav_use_project_names' => nil,
+ 'dmsf_webdav_ignore_1b_file_for_authentication' => nil,
+ 'dmsf_webdav' => '1'} do
put "/dmsf/webdav/#{@project1.identifier}/1bfile.txt", params: '1',
headers: @jsmith.merge!({ content_type: :text })
assert_response :created
@@ -317,11 +329,14 @@ class DmsfWebdavPutTest < RedmineDmsf::Test::IntegrationTest
end
def test_files_exceeded_max_attachment_size
- Setting.attachment_max_size = '1'
- file_content = 'x' * 2.kilobytes
- put "/dmsf/webdav/#{@project1.identifier}/2kbfile.txt", params: file_content,
- headers: @jsmith.merge!({ content_type: :text })
- assert_response :unprocessable_entity
+ with_settings attachment_max_size: '1', plugin_redmine_dmsf: {
+ 'dmsf_webdav_use_project_names' => nil,
+ 'dmsf_webdav' => '1'} do
+ file_content = 'x' * 2.kilobytes
+ put "/dmsf/webdav/#{@project1.identifier}/2kbfile.txt", params: file_content,
+ headers: @jsmith.merge!({ content_type: :text })
+ assert_response :unprocessable_entity
+ end
end
end
\ No newline at end of file
diff --git a/test/integration_test.rb b/test/integration_test.rb
index 3ec77637..c5855231 100644
--- a/test/integration_test.rb
+++ b/test/integration_test.rb
@@ -36,10 +36,6 @@ module RedmineDmsf
@someone = credentials('someone', 'foo')
@anonymous = credentials('')
@project1 = Project.find 1
- with_settings plugin_redmine_dmsf: {'dmsf_webdav_use_project_names' => '1'} do
- @project1_name = RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1)
- end
- @project1_uri = Addressable::URI.escape(@project1_name)
@project2 = Project.find 2
@project3 = Project.find 3
[@project1, @project2, @project3].each do |project|
@@ -62,7 +58,6 @@ module RedmineDmsf
@role.add_permission! :view_dmsf_files
@role.add_permission! :file_manipulation
@role.add_permission! :file_delete
- Setting.clear_cache
Setting.plugin_redmine_dmsf['dmsf_webdav'] = '1'
Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] = 'WEBDAV_READ_WRITE'
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = nil