Setting.check_cache for each WebDAV request call
This commit is contained in:
parent
36d87d3f57
commit
3e80a2cac5
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -63,8 +63,10 @@ class DmsfWebdavPropfindTest < RedmineDmsf::Test::IntegrationTest
|
||||
assert !response.body.include?("<d:href>http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/</d:href>")
|
||||
assert !response.body.include?("<d:displayname>#{@project1.identifier}</d:displayname>")
|
||||
# but the project name should match
|
||||
assert response.body.include?("<d:href>http://www.example.com:80/dmsf/webdav/#{@project1_uri}/</d:href>")
|
||||
assert response.body.include?("<d:displayname>#{@project1_name}</d:displayname>")
|
||||
project1_name = RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1)
|
||||
project1_uri = Addressable::URI.escape(project1_name)
|
||||
assert response.body.include?("<d:href>http://www.example.com:80/dmsf/webdav/#{project1_uri}/</d:href>")
|
||||
assert response.body.include?("<d:displayname>#{project1_name}</d:displayname>")
|
||||
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?("<d:href>http://www.example.com:80/dmsf/webdav/#{@project1_uri}/</d:href>")
|
||||
assert response.body.include?("<d:displayname>#{@project1_name}</d:displayname>")
|
||||
assert response.body.include?("<d:href>http://www.example.com:80/dmsf/webdav/#{project1_uri}/</d:href>")
|
||||
project1_name = RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1)
|
||||
assert response.body.include?("<d:displayname>#{project1_name}</d:displayname>")
|
||||
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?("<d:href>http://www.example.com:80/dmsf/webdav/#{@project1_uri}/</d:href>")
|
||||
project1_name = RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1)
|
||||
project1_uri = Addressable::URI.escape(project1_name)
|
||||
assert response.body.include?("<d:href>http://www.example.com:80/dmsf/webdav/#{project1_uri}/</d:href>")
|
||||
# Folders
|
||||
assert response.body.include?("<d:href>http://www.example.com:80/dmsf/webdav/#{@project1_uri}/#{@folder1.title}/</d:href>")
|
||||
project1_name = RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1)
|
||||
project1_uri = Addressable::URI.escape(project1_name)
|
||||
assert response.body.include?("<d:href>http://www.example.com:80/dmsf/webdav/#{project1_uri}/#{@folder1.title}/</d:href>")
|
||||
assert response.body.include?("<d:displayname>#{@folder1.title}</d:displayname>")
|
||||
assert response.body.include?("<d:href>http://www.example.com:80/dmsf/webdav/#{@project1_uri}/#{@folder6.title}/</d:href>")
|
||||
assert response.body.include?("<d:href>http://www.example.com:80/dmsf/webdav/#{project1_uri}/#{@folder6.title}/</d:href>")
|
||||
assert response.body.include?("<d:displayname>#{@folder6.title}</d:displayname>")
|
||||
# Files
|
||||
assert response.body.include?("<d:href>http://www.example.com:80/dmsf/webdav/#{@project1_uri}/#{@file1.name}</d:href>")
|
||||
assert response.body.include?("<d:href>http://www.example.com:80/dmsf/webdav/#{project1_uri}/#{@file1.name}</d:href>")
|
||||
assert response.body.include?("<d:displayname>#{@file1.name}</d:displayname>")
|
||||
assert response.body.include?("<d:href>http://www.example.com:80/dmsf/webdav/#{@project1_uri}/#{@file9.name}</d:href>")
|
||||
assert response.body.include?("<d:href>http://www.example.com:80/dmsf/webdav/#{project1_uri}/#{@file9.name}</d:href>")
|
||||
assert response.body.include?("<d:displayname>#{@file9.name}</d:displayname>")
|
||||
assert response.body.include?("<d:href>http://www.example.com:80/dmsf/webdav/#{@project1_uri}/#{@file10.name}</d:href>")
|
||||
assert response.body.include?("<d:href>http://www.example.com:80/dmsf/webdav/#{project1_uri}/#{@file10.name}</d:href>")
|
||||
assert response.body.include?("<d:displayname>#{@file10.name}</d:displayname>")
|
||||
end
|
||||
end
|
||||
|
||||
@ -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
|
||||
@ -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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user