diff --git a/test/functional/dmsf_controller_test.rb b/test/functional/dmsf_controller_test.rb
index f171db64..43a41547 100644
--- a/test/functional/dmsf_controller_test.rb
+++ b/test/functional/dmsf_controller_test.rb
@@ -259,30 +259,34 @@ class DmsfControllerTest < RedmineDmsf::Test::TestCase
def test_email_entries_email_from_forbidden
@role_manager.remove_permission! :email_documents
- Setting.plugin_redmine_dmsf['dmsf_documents_email_from'] = 'karel.picman@kontron.com'
- get :entries_operation, params: {id: @project1, email_entries: 'Email', ids: ["file-#{@file1.id}"]}
- assert_response :forbidden
+ with_settings plugin_redmine_dmsf: {'dmsf_documents_email_from' => 'karel.picman@kontron.com'} do
+ get :entries_operation, params: {id: @project1, email_entries: 'Email', ids: ["file-#{@file1.id}"]}
+ assert_response :forbidden
+ end
end
def test_email_entries_email_from
- Setting.plugin_redmine_dmsf['dmsf_documents_email_from'] = 'karel.picman@kontron.com'
- get :entries_operation, params: { id: @project1, email_entries: 'Email', ids: ["file-#{@file1.id}"]}
- assert_response :success
- assert_select "input:match('value', ?)", Setting.plugin_redmine_dmsf['dmsf_documents_email_from']
+ with_settings plugin_redmine_dmsf: {'dmsf_documents_email_from' => 'karel.picman@kontron.com'} do
+ get :entries_operation, params: { id: @project1, email_entries: 'Email', ids: ["file-#{@file1.id}"]}
+ assert_response :success
+ assert_select "input:match('value', ?)", Setting.plugin_redmine_dmsf['dmsf_documents_email_from']
+ end
end
def test_email_entries_reply_to
- Setting.plugin_redmine_dmsf['dmsf_documents_email_reply_to'] = 'karel.picman@kontron.com'
- get :entries_operation, params: { id: @project1, email_entries: 'Email', ids: ["file-#{@file1.id}"]}
- assert_response :success
- assert_select "input:match('value', ?)", Setting.plugin_redmine_dmsf['dmsf_documents_email_reply_to']
+ with_settings plugin_redmine_dmsf: {'dmsf_documents_email_reply_to' => 'karel.picman@kontron.com'} do
+ get :entries_operation, params: { id: @project1, email_entries: 'Email', ids: ["file-#{@file1.id}"]}
+ assert_response :success
+ assert_select "input:match('value', ?)", Setting.plugin_redmine_dmsf['dmsf_documents_email_reply_to']
+ end
end
def test_email_entries_links_only
- Setting.plugin_redmine_dmsf['dmsf_documents_email_links_only'] = '1'
- get :entries_operation, params: { id: @project1, email_entries: 'Email', ids: ["file-#{@file1.id}"]}
- assert_response :success
- assert_select "input[id=email_links_only][value=1]"
+ with_settings plugin_redmine_dmsf: {'dmsf_documents_email_links_only' => '1'} do
+ get :entries_operation, params: { id: @project1, email_entries: 'Email', ids: ["file-#{@file1.id}"]}
+ assert_response :success
+ assert_select "input[id=email_links_only][value=1]"
+ end
end
def test_entries_email
@@ -347,12 +351,12 @@ class DmsfControllerTest < RedmineDmsf::Test::TestCase
end
def test_show_with_sub_projects
- Setting.clear_cache
- Setting.plugin_redmine_dmsf['dmsf_projects_as_subfolders'] = '1'
- get :show, params: { id: @project1.id }
- assert_response :success
- # @project3 is as a sub-folder
- assert_select "tr##{@project3.id}pspan", count: 1
+ with_settings plugin_redmine_dmsf: {'dmsf_projects_as_subfolders' => '1'} do
+ get :show, params: { id: @project1.id }
+ assert_response :success
+ # @project3 is as a sub-folder
+ assert_select "tr##{@project3.id}pspan", count: 1
+ end
end
def test_show_without_sub_projects
diff --git a/test/helpers/dmsf_helper_test.rb b/test/helpers/dmsf_helper_test.rb
index 3f6e9814..df2037cb 100644
--- a/test/helpers/dmsf_helper_test.rb
+++ b/test/helpers/dmsf_helper_test.rb
@@ -29,8 +29,9 @@ class DmsfHelperTest < RedmineDmsf::Test::HelperTest
assert_equal "#{base_url}/", webdav_url(nil, nil)
assert_equal "#{base_url}/ecookbook/", webdav_url(@project1, nil)
assert_equal "#{base_url}/ecookbook/folder1/", webdav_url(@project1, @folder1)
- Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = '1'
- assert_equal "#{base_url}/eCookbook 1/", webdav_url(@project1, nil)
+ with_settings plugin_redmine_dmsf: {'dmsf_webdav_use_project_names' => '1'} do
+ assert_equal "#{base_url}/eCookbook 1/", webdav_url(@project1, nil)
+ end
end
end
diff --git a/test/integration/rest_api/dmsf_folder_api_test.rb b/test/integration/rest_api/dmsf_folder_api_test.rb
index 1c069227..e566aefa 100644
--- a/test/integration/rest_api/dmsf_folder_api_test.rb
+++ b/test/integration/rest_api/dmsf_folder_api_test.rb
@@ -53,6 +53,30 @@ class DmsfFolderApiTest < RedmineDmsf::Test::IntegrationTest
assert_select 'dmsf > dmsf_nodes > node > type', text: 'folder'
end
+ def test_list_folder_with_sub_projects
+ with_settings plugin_redmine_dmsf: {'dmsf_projects_as_subfolders' => '1'} do
+ #curl -v -H "Content-Type: application/xml" -X GET -u ${1}:${2} http://localhost:3000/dmsf/files/17216.xml
+ get "/projects/#{@project1.identifier}/dmsf.xml?key=#{@token.value}"
+ assert_response :success
+ assert_equal 'application/xml', @response.content_type
+ #
+ #
+ #
+ #
+ # 3
+ # eCookbook Subproject 1
+ # project
+ #
+ # ...
+ #
+ #
+ # @project3 is as a sub-folder
+ assert_select 'dmsf > dmsf_nodes > node > id', text: @project3.id.to_s
+ assert_select 'dmsf > dmsf_nodes > node > title', text: @project3.name
+ assert_select 'dmsf > dmsf_nodes > node > type', text: 'project'
+ end
+ end
+
def test_list_folder_limit_and_offset
#curl -v -H "Content-Type: application/xml" -X GET -u ${1}:${2} "http://localhost:3000/dmsf/files/17216.xml?limit=1&offset=1"
get "/projects/#{@project1.identifier}/dmsf.xml?key=#{@token.value}&limit=1&offset=2"
diff --git a/test/integration/webdav/dmsf_webdav_custom_middleware_test.rb b/test/integration/webdav/dmsf_webdav_custom_middleware_test.rb
index e3109d78..66d885b1 100644
--- a/test/integration/webdav/dmsf_webdav_custom_middleware_test.rb
+++ b/test/integration/webdav/dmsf_webdav_custom_middleware_test.rb
@@ -46,9 +46,10 @@ class DmsfWebdavCustomMiddlewareTest < RedmineDmsf::Test::IntegrationTest
end
def test_webdav_not_enabled
- Setting.plugin_redmine_dmsf['dmsf_webdav'] = nil
- process :options, '/dmsf/webdav'
- assert_response :not_found
+ with_settings plugin_redmine_dmsf: {'dmsf_webdav' => nil} do
+ process :options, '/dmsf/webdav'
+ assert_response :not_found
+ end
end
def test_webdav_enabled
diff --git a/test/integration/webdav/dmsf_webdav_delete_test.rb b/test/integration/webdav/dmsf_webdav_delete_test.rb
index 694190aa..b8434d26 100644
--- a/test/integration/webdav/dmsf_webdav_delete_test.rb
+++ b/test/integration/webdav/dmsf_webdav_delete_test.rb
@@ -25,7 +25,7 @@ require File.expand_path('../../../test_helper', __FILE__)
class DmsfWebdavDeleteTest < RedmineDmsf::Test::IntegrationTest
include Redmine::I18n
- fixtures :dmsf_folders, :dmsf_files, :dmsf_file_revisions, :dmsf_locks
+ fixtures :dmsf_folders, :dmsf_files, :dmsf_file_revisions, :dmsf_locks
def test_not_authenticated
delete '/dmsf/webdav'
@@ -69,9 +69,11 @@ class DmsfWebdavDeleteTest < RedmineDmsf::Test::IntegrationTest
end
def test_delete_when_ro
- Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] = 'WEBDAV_READ_ONLY'
- delete "/dmsf/webdav/#{@project1.identifier}/#{@file1.name}", params: nil, headers: @admin
- assert_response :bad_gateway # Item does not exist, as project is not enabled.
+ with_settings plugin_redmine_dmsf: {'dmsf_webdav_strategy' => 'WEBDAV_READ_ONLY', 'dmsf_webdav' => '1'} do
+ puts Setting.plugin_redmine_dmsf['dmsf_webdav_strategy']
+ delete "/dmsf/webdav/#{@project1.identifier}/#{@file1.name}", params: nil, headers: @admin
+ assert_response :bad_gateway # WebDAV is read only
+ end
end
def test_unlocked_file
@@ -128,14 +130,15 @@ class DmsfWebdavDeleteTest < RedmineDmsf::Test::IntegrationTest
end
def test_folder_delete_by_user_with_project_names
- Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
- delete "/dmsf/webdav/#{@project1.identifier}/#{@folder6.title}", params: nil, headers: @jsmith
- assert_response :conflict
- p1name_uri = ERB::Util.url_encode(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
- delete "/dmsf/webdav/#{p1name_uri}/#{@folder6.title}", params: nil, headers: @jsmith
- assert_response :success
- @folder6.reload
- assert @folder6.deleted?, "Folder #{@folder6.title} is not expected to exist"
+ with_settings plugin_redmine_dmsf: {'dmsf_webdav_use_project_names' => '1', 'dmsf_webdav' => '1'} do
+ delete "/dmsf/webdav/#{@project1.identifier}/#{@folder6.title}", params: nil, headers: @jsmith
+ assert_response :conflict
+ p1name_uri = ERB::Util.url_encode(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
+ delete "/dmsf/webdav/#{p1name_uri}/#{@folder6.title}", params: nil, headers: @jsmith
+ assert_response :success
+ @folder6.reload
+ assert @folder6.deleted?, "Folder #{@folder6.title} is not expected to exist"
+ end
end
def test_file_delete_by_administrator
@@ -153,14 +156,15 @@ class DmsfWebdavDeleteTest < RedmineDmsf::Test::IntegrationTest
end
def test_file_delete_by_user_with_project_names
- Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = '1'
- delete "/dmsf/webdav/#{@project1.identifier}/#{@file1.name}", params: nil, headers: @jsmith
- assert_response :conflict
- p1name_uri = ERB::Util.url_encode(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
- delete "/dmsf/webdav/#{p1name_uri}/#{@file1.name}", params: nil, headers: @jsmith
- assert_response :success
- @file1.reload
- assert @file1.deleted?, "File #{@file1.name} is not expected to exist"
+ with_settings plugin_redmine_dmsf: {'dmsf_webdav_use_project_names' => '1', 'dmsf_webdav' => '1'} do
+ delete "/dmsf/webdav/#{@project1.identifier}/#{@file1.name}", params: nil, headers: @jsmith
+ assert_response :conflict
+ p1name_uri = ERB::Util.url_encode(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
+ delete "/dmsf/webdav/#{p1name_uri}/#{@file1.name}", params: nil, headers: @jsmith
+ assert_response :success
+ @file1.reload
+ assert @file1.deleted?, "File #{@file1.name} is not expected to exist"
+ end
end
def test_folder_delete_fragments
diff --git a/test/integration/webdav/dmsf_webdav_get_test.rb b/test/integration/webdav/dmsf_webdav_get_test.rb
index 66454a90..6686e7b1 100644
--- a/test/integration/webdav/dmsf_webdav_get_test.rb
+++ b/test/integration/webdav/dmsf_webdav_get_test.rb
@@ -53,12 +53,13 @@ class DmsfWebdavGetTest < RedmineDmsf::Test::IntegrationTest
assert_response :success
assert !response.body.match(@project1.identifier).nil?,
"Expected to find project #{@project1.identifier} in return data"
- Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
- project1_uri = Addressable::URI.encode(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
- get '/dmsf/webdav', params: nil, headers: @admin
- assert_response :success
- assert_no_match @project1.identifier, response.body
- assert_match project1_uri, response.body
+ with_settings plugin_redmine_dmsf: {'dmsf_webdav_use_project_names' => '1', 'dmsf_webdav' => '1'} do
+ project1_uri = Addressable::URI.encode(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
+ get '/dmsf/webdav', params: nil, headers: @admin
+ assert_response :success
+ assert_no_match @project1.identifier, response.body
+ assert_match project1_uri, response.body
+ end
end
def test_should_not_list_non_dmsf_enabled_project
@@ -113,12 +114,13 @@ class DmsfWebdavGetTest < RedmineDmsf::Test::IntegrationTest
def test_download_file_from_dmsf_enabled_project
get "/dmsf/webdav/#{@project1.identifier}/test.txt", params: nil, headers: @admin
assert_response :success
- Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
- project1_uri = ERB::Util.url_encode(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
- get "/dmsf/webdav/#{@project1.identifier}/test.txt", params: nil, headers: @admin
- assert_response :conflict
- get "/dmsf/webdav/#{project1_uri}/test.txt", params: nil, headers: @admin
- assert_response :success
+ with_settings plugin_redmine_dmsf: {'dmsf_webdav_use_project_names' => '1', 'dmsf_webdav' => '1'} do
+ project1_uri = ERB::Util.url_encode(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
+ get "/dmsf/webdav/#{@project1.identifier}/test.txt", params: nil, headers: @admin
+ assert_response :conflict
+ get "/dmsf/webdav/#{project1_uri}/test.txt", params: nil, headers: @admin
+ assert_response :success
+ end
end
def test_should_list_dmsf_contents_within_project
diff --git a/test/integration/webdav/dmsf_webdav_head_test.rb b/test/integration/webdav/dmsf_webdav_head_test.rb
index 0fbd6fc0..0ded6fda 100644
--- a/test/integration/webdav/dmsf_webdav_head_test.rb
+++ b/test/integration/webdav/dmsf_webdav_head_test.rb
@@ -36,11 +36,12 @@ class DmsfWebdavHeadTest < RedmineDmsf::Test::IntegrationTest
head "/dmsf/webdav/#{@project1.identifier}", params: nil, headers: @admin
assert_response :success
check_headers_exist
- Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = '1'
- head "/dmsf/webdav/#{@project1.identifier}", params: nil, headers: @admin
- assert_response :not_found
- head "/dmsf/webdav/#{@project1_uri}", params: nil, headers: @admin
- assert_response :success
+ 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
+ assert_response :success
+ end
end
# Note:
@@ -52,11 +53,12 @@ class DmsfWebdavHeadTest < RedmineDmsf::Test::IntegrationTest
head "/dmsf/webdav/#{@project1.identifier}/test.txt", params: nil, headers: @admin
assert_response :success
check_headers_exist
- Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = '1'
- 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
- assert_response :success
+ 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
+ assert_response :success
+ end
end
def test_head_responds_to_file_anonymous_other_user_agent
diff --git a/test/integration/webdav/dmsf_webdav_mkcol_test.rb b/test/integration/webdav/dmsf_webdav_mkcol_test.rb
index fb32d41f..cfd163f2 100644
--- a/test/integration/webdav/dmsf_webdav_mkcol_test.rb
+++ b/test/integration/webdav/dmsf_webdav_mkcol_test.rb
@@ -62,12 +62,13 @@ class DmsfWebdavMkcolTest < RedmineDmsf::Test::IntegrationTest
def test_should_create_folder_for_non_admin_user_with_rights
process :mkcol, "/dmsf/webdav/#{@project1.identifier}/test1", params: nil, headers: @jsmith
assert_response :success
- Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
- project1_uri = ERB::Util.url_encode(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
- process :mkcol, "/dmsf/webdav/#{@project1.identifier}/test2", params: nil, headers: @jsmith
- assert_response :conflict
- process :mkcol, "/dmsf/webdav/#{project1_uri}/test3", params: nil, headers: @jsmith
- assert_response :success # Created
+ with_settings plugin_redmine_dmsf: {'dmsf_webdav_use_project_names' => '1', 'dmsf_webdav' => '1'} do
+ project1_uri = ERB::Util.url_encode(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
+ process :mkcol, "/dmsf/webdav/#{@project1.identifier}/test2", params: nil, headers: @jsmith
+ assert_response :conflict
+ process :mkcol, "/dmsf/webdav/#{project1_uri}/test3", params: nil, headers: @jsmith
+ assert_response :success # Created
+ end
end
def test_create_folder_in_subproject
diff --git a/test/integration/webdav/dmsf_webdav_move_test.rb b/test/integration/webdav/dmsf_webdav_move_test.rb
index 87df8bea..29ca2e21 100644
--- a/test/integration/webdav/dmsf_webdav_move_test.rb
+++ b/test/integration/webdav/dmsf_webdav_move_test.rb
@@ -107,15 +107,16 @@ class DmsfWebdavMoveTest < RedmineDmsf::Test::IntegrationTest
end
def test_move_to_new_filename_with_project_names
- Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
- project1_uri = ERB::Util.url_encode(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
- new_name = "#{@file1.name}.moved"
- assert_difference '@file1.dmsf_file_revisions.count', +1 do
- process :move, "/dmsf/webdav/#{project1_uri}/#{@file1.name}", params: nil,
- headers: @jsmith.merge!({ destination: "http://www.example.com/dmsf/webdav/#{project1_uri}/#{new_name}" })
- assert_response :created
- f = DmsfFile.find_file_by_name @project1, nil, "#{new_name}"
- assert f, "Moved file '#{new_name}' not found in project."
+ with_settings plugin_redmine_dmsf: {'dmsf_webdav_use_project_names' => '1', 'dmsf_webdav' => '1'} do
+ project1_uri = ERB::Util.url_encode(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
+ new_name = "#{@file1.name}.moved"
+ assert_difference '@file1.dmsf_file_revisions.count', +1 do
+ process :move, "/dmsf/webdav/#{project1_uri}/#{@file1.name}", params: nil,
+ headers: @jsmith.merge!({ destination: "http://www.example.com/dmsf/webdav/#{project1_uri}/#{new_name}" })
+ assert_response :created
+ f = DmsfFile.find_file_by_name @project1, nil, "#{new_name}"
+ assert f, "Moved file '#{new_name}' not found in project."
+ end
end
end
@@ -142,15 +143,16 @@ class DmsfWebdavMoveTest < RedmineDmsf::Test::IntegrationTest
end
def test_move_to_new_folder_with_project_names
- Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
- project1_uri = ERB::Util.url_encode(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
- assert_difference '@file1.dmsf_file_revisions.count', +1 do
- process :move, "/dmsf/webdav/#{project1_uri}/#{@file1.name}", params: nil,
- headers: @jsmith.merge!({
- destination: "http://www.example.com/dmsf/webdav/#{project1_uri}/#{@folder1.title}/#{@file1.name}" })
- assert_response :created
- @file1.reload
- assert_equal @folder1.id, @file1.dmsf_folder_id
+ with_settings plugin_redmine_dmsf: {'dmsf_webdav_use_project_names' => '1', 'dmsf_webdav' => '1'} do
+ project1_uri = ERB::Util.url_encode(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
+ assert_difference '@file1.dmsf_file_revisions.count', +1 do
+ process :move, "/dmsf/webdav/#{project1_uri}/#{@file1.name}", params: nil,
+ headers: @jsmith.merge!({
+ destination: "http://www.example.com/dmsf/webdav/#{project1_uri}/#{@folder1.title}/#{@file1.name}" })
+ assert_response :created
+ @file1.reload
+ assert_equal @folder1.id, @file1.dmsf_folder_id
+ end
end
end
diff --git a/test/integration/webdav/dmsf_webdav_options_test.rb b/test/integration/webdav/dmsf_webdav_options_test.rb
index 30f7e5bd..31a17589 100644
--- a/test/integration/webdav/dmsf_webdav_options_test.rb
+++ b/test/integration/webdav/dmsf_webdav_options_test.rb
@@ -32,12 +32,13 @@ class DmsfWebdavOptionsTest < RedmineDmsf::Test::IntegrationTest
end
def test_options_returns_expected_allow_header_for_ro
- Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] = 'WEBDAV_READ_ONLY'
- process :options, '/dmsf/webdav'
- assert_response :success
- assert !(response.headers.nil? || response.headers.empty?), 'Response headers are empty'
- assert response.headers['Allow'] , 'Allow header is empty or does not exist'
- assert_equal response.headers['Allow'], 'OPTIONS,HEAD,GET,PROPFIND'
+ with_settings plugin_redmine_dmsf: {'dmsf_webdav_strategy' => 'WEBDAV_READ_ONLY', 'dmsf_webdav' => '1'} do
+ process :options, '/dmsf/webdav'
+ assert_response :success
+ assert !(response.headers.nil? || response.headers.empty?), 'Response headers are empty'
+ assert response.headers['Allow'] , 'Allow header is empty or does not exist'
+ assert_equal response.headers['Allow'], 'OPTIONS,HEAD,GET,PROPFIND'
+ end
end
def test_options_returns_expected_allow_header_for_rw
diff --git a/test/integration/webdav/dmsf_webdav_propfind_test.rb b/test/integration/webdav/dmsf_webdav_propfind_test.rb
index d572823e..9b32c270 100644
--- a/test/integration/webdav/dmsf_webdav_propfind_test.rb
+++ b/test/integration/webdav/dmsf_webdav_propfind_test.rb
@@ -54,17 +54,18 @@ class DmsfWebdavPropfindTest < RedmineDmsf::Test::IntegrationTest
end
def test_propfind_depth1_on_root_for_admin_with_project_names
- Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
- process :propfind, '/dmsf/webdav/', params: nil, headers: @admin.merge!({ HTTP_DEPTH: '1'})
- assert_response :multi_status
- assert response.body.include?('http://www.example.com:80/dmsf/webdav/')
- assert response.body.include?('/')
- # project.identifier should not match when using project names
- 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}")
+ with_settings plugin_redmine_dmsf: {'dmsf_webdav_use_project_names' => '1', 'dmsf_webdav' => '1'} do
+ process :propfind, '/dmsf/webdav/', params: nil, headers: @admin.merge!({ HTTP_DEPTH: '1'})
+ assert_response :multi_status
+ assert response.body.include?('http://www.example.com:80/dmsf/webdav/')
+ assert response.body.include?('/')
+ # project.identifier should not match when using project names
+ 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}")
+ end
end
def test_propfind_depth0_on_project1_for_non_member
@@ -92,13 +93,14 @@ class DmsfWebdavPropfindTest < RedmineDmsf::Test::IntegrationTest
end
def test_propfind_depth0_on_project1_for_admin_with_project_names
- Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
- 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' })
- assert_response :multi_status
- assert response.body.include?("http://www.example.com:80/dmsf/webdav/#{@project1_uri}/")
- assert response.body.include?("#{@project1_name}")
+ 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' })
+ assert_response :multi_status
+ assert response.body.include?("http://www.example.com:80/dmsf/webdav/#{@project1_uri}/")
+ assert response.body.include?("#{@project1_name}")
+ end
end
def test_propfind_depth1_on_project1_for_admin
@@ -122,35 +124,37 @@ class DmsfWebdavPropfindTest < RedmineDmsf::Test::IntegrationTest
end
def test_propfind_depth1_on_project1_for_admin_with_project_names
- Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
- 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'})
- assert_response :multi_status
- # Project
- 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}/")
- 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?("#{@folder6.title}")
- # Files
- 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?("#{@file9.name}")
- assert response.body.include?("http://www.example.com:80/dmsf/webdav/#{@project1_uri}/#{@file10.name}")
- assert response.body.include?("#{@file10.name}")
+ 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'})
+ assert_response :multi_status
+ # Project
+ 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}/")
+ 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?("#{@folder6.title}")
+ # Files
+ 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?("#{@file9.name}")
+ assert response.body.include?("http://www.example.com:80/dmsf/webdav/#{@project1_uri}/#{@file10.name}")
+ assert response.body.include?("#{@file10.name}")
+ end
end
def test_propfind_depth1_on_root_for_admin
- Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
- project1_new_name = RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1)
- project1_new_uri = ERB::Util.url_encode(project1_new_name)
- process :propfind, "/dmsf/webdav/#{project1_new_uri}", params: nil, headers: @admin.merge!({ HTTP_DEPTH: '1'})
- assert_response :multi_status
- assert response.body.include?("http://www.example.com:80/dmsf/webdav/#{project1_new_uri}/")
- assert response.body.include?("#{project1_new_name}")
+ with_settings plugin_redmine_dmsf: {'dmsf_webdav_use_project_names' => '1', 'dmsf_webdav' => '1'} do
+ project1_new_name = RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1)
+ project1_new_uri = ERB::Util.url_encode(project1_new_name)
+ process :propfind, "/dmsf/webdav/#{project1_new_uri}", params: nil, headers: @admin.merge!({ HTTP_DEPTH: '1'})
+ assert_response :multi_status
+ assert response.body.include?("http://www.example.com:80/dmsf/webdav/#{project1_new_uri}/")
+ assert response.body.include?("#{project1_new_name}")
+ end
end
def test_propfind_for_subproject
diff --git a/test/integration/webdav/dmsf_webdav_put_test.rb b/test/integration/webdav/dmsf_webdav_put_test.rb
index 79936b79..4ed5d610 100644
--- a/test/integration/webdav/dmsf_webdav_put_test.rb
+++ b/test/integration/webdav/dmsf_webdav_put_test.rb
@@ -74,13 +74,14 @@ class DmsfWebdavPutTest < RedmineDmsf::Test::IntegrationTest
# Lets check for our file
file = DmsfFile.find_file_by_name @project1, nil, 'test-1234.txt'
assert file, 'Check for files existance'
- Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
- project1_uri = ERB::Util.url_encode(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
- put "/dmsf/webdav/#{@project1.identifier}/test-1234.txt", params: '1234',
- headers: @admin.merge!({ content_type: :text })
- assert_response :conflict
- put "/dmsf/webdav/#{project1_uri}/test-1234.txt", params: '1234', headers: @admin.merge!({ content_type: :text })
- assert_response :created
+ with_settings plugin_redmine_dmsf: {'dmsf_webdav_use_project_names' => '1', 'dmsf_webdav' => '1'} do
+ project1_uri = ERB::Util.url_encode(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
+ put "/dmsf/webdav/#{@project1.identifier}/test-1234.txt", params: '1234',
+ headers: @admin.merge!({ content_type: :text })
+ assert_response :conflict
+ put "/dmsf/webdav/#{project1_uri}/test-1234.txt", params: '1234', headers: @admin.merge!({ content_type: :text })
+ assert_response :created
+ end
end
def test_put_failed_as_jsmith_on_non_dmsf_enabled_project
@@ -110,14 +111,15 @@ class DmsfWebdavPutTest < RedmineDmsf::Test::IntegrationTest
assert file.last_revision
assert_equal 'SHA256', file.last_revision.digest_type
- Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
- put "/dmsf/webdav/#{@project1.identifier}/test-1234.txt", params: '1234',
- headers: @jsmith.merge!({ content_type: :text })
- assert_response :conflict
+ with_settings plugin_redmine_dmsf: {'dmsf_webdav_use_project_names' => '1', 'dmsf_webdav' => '1'} do
+ put "/dmsf/webdav/#{@project1.identifier}/test-1234.txt", params: '1234',
+ headers: @jsmith.merge!({ content_type: :text })
+ assert_response :conflict
- project1_uri = ERB::Util.url_encode(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
- put "/dmsf/webdav/#{project1_uri}/test-1234.txt", params: '1234', headers: @jsmith.merge!({ content_type: :text })
- assert_response :created # Now we have permissions
+ project1_uri = ERB::Util.url_encode(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
+ put "/dmsf/webdav/#{project1_uri}/test-1234.txt", params: '1234', headers: @jsmith.merge!({ content_type: :text })
+ assert_response :created # Now we have permissions
+ end
end
def test_put_writes_revision_successfully_for_unlocked_file
@@ -216,11 +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
- original = Setting.plugin_redmine_dmsf['dmsf_webdav_ignore']
- Setting.plugin_redmine_dmsf['dmsf_webdav_ignore'] = '.dump$'
- put "/dmsf/webdav/#{@project1.identifier}/test.dump", params: '1234', headers: @admin.merge!({ content_type: :text })
- assert_response :no_content
- Setting.plugin_redmine_dmsf['dmsf_webdav_ignore'] = original
+ with_settings plugin_redmine_dmsf: {'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
end
def test_put_non_versioned_files
@@ -252,18 +253,19 @@ class DmsfWebdavPutTest < RedmineDmsf::Test::IntegrationTest
assert_response :created
end
- Setting.plugin_redmine_dmsf['dmsf_webdav_disable_versioning'] = '.dump$'
- 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')
- assert file3
- assert_difference 'file3.dmsf_file_revisions.count', 0 do
- put "/dmsf/webdav/#{@project1.identifier}/file3.dump", params: '5678', headers: credentials
- assert_response :created
- end
- assert_difference 'file3.dmsf_file_revisions.count', 0 do
- put "/dmsf/webdav/#{@project1.identifier}/file3.dump", params: '9ABC', headers: credentials
- assert_response :created
+ with_settings plugin_redmine_dmsf: {'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')
+ assert file3
+ assert_difference 'file3.dmsf_file_revisions.count', 0 do
+ put "/dmsf/webdav/#{@project1.identifier}/file3.dump", params: '5678', headers: credentials
+ assert_response :created
+ end
+ assert_difference 'file3.dmsf_file_revisions.count', 0 do
+ put "/dmsf/webdav/#{@project1.identifier}/file3.dump", params: '9ABC', headers: credentials
+ assert_response :created
+ end
end
end
@@ -299,17 +301,19 @@ class DmsfWebdavPutTest < RedmineDmsf::Test::IntegrationTest
end
def test_ignore_1b_files_on
- Setting.plugin_redmine_dmsf['dmsf_webdav_ignore_1b_file_for_authentication'] = '1'
- put "/dmsf/webdav/#{@project1.identifier}/1bfile.txt", params: '1',
- headers: @jsmith.merge!({ content_type: :text })
- assert_response :no_content
+ with_settings plugin_redmine_dmsf: {'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
+ end
end
def test_ignore_1b_files_off
- Setting.plugin_redmine_dmsf['dmsf_webdav_ignore_1b_file_for_authentication'] = ''
- put "/dmsf/webdav/#{@project1.identifier}/1bfile.txt", params: '1',
- headers: @jsmith.merge!({ content_type: :text })
- assert_response :created
+ with_settings plugin_redmine_dmsf: {'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
+ end
end
def test_files_exceeded_max_attachment_size
diff --git a/test/integration_test.rb b/test/integration_test.rb
index a921b16e..4252b70d 100644
--- a/test/integration_test.rb
+++ b/test/integration_test.rb
@@ -36,9 +36,9 @@ module RedmineDmsf
@someone = credentials('someone', 'foo')
@anonymous = credentials('')
@project1 = Project.find 1
- Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = '1'
- Setting.plugin_redmine_dmsf['dmsf_projects_as_subfolders'] = nil
- @project1_name = RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1)
+ 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
@@ -65,6 +65,7 @@ module RedmineDmsf
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
+ Setting.plugin_redmine_dmsf['dmsf_projects_as_subfolders'] = nil
Setting.plugin_redmine_dmsf['dmsf_storage_directory'] = File.join(%w(files dmsf))
FileUtils.cp_r File.join(File.expand_path('../fixtures/files', __FILE__), '.'), DmsfFile.storage_path
User.current = nil
@@ -75,7 +76,7 @@ module RedmineDmsf
begin
FileUtils.rm_rf DmsfFile.storage_path
rescue => e
- error e.message
+ Rails.logger.error e.message
end
end
diff --git a/test/test_case.rb b/test/test_case.rb
index 46e177ae..9a48b85d 100644
--- a/test/test_case.rb
+++ b/test/test_case.rb
@@ -49,9 +49,9 @@ module RedmineDmsf
@dlopper = User.find_by(login: 'dlopper')
@someone = User.find_by(login: 'someone')
@project1 = Project.find 1
- Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = '1'
- Setting.plugin_redmine_dmsf['dmsf_projects_as_subfolders'] = nil
- @project1_name = RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1)
+ 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
@@ -86,9 +86,9 @@ module RedmineDmsf
role.add_permission! :manage_workflows
role.add_permission! :file_approval
end
- 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
+ #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
Setting.plugin_redmine_dmsf['dmsf_storage_directory'] = File.join(%w(files dmsf))
Setting.plugin_redmine_dmsf['dmsf_projects_as_subfolders'] = nil
Setting.text_formatting = 'Textile'
@@ -101,7 +101,7 @@ module RedmineDmsf
begin
FileUtils.rm_rf DmsfFile.storage_path
rescue => e
- error e.message
+ Rails.logger.error e.message
end
end
diff --git a/test/unit/dmsf_file_test.rb b/test/unit/dmsf_file_test.rb
index 55c54eab..5c86458a 100644
--- a/test/unit/dmsf_file_test.rb
+++ b/test/unit/dmsf_file_test.rb
@@ -238,12 +238,11 @@ class DmsfFileTest < RedmineDmsf::Test::UnitTest
end
def test_storage_path
- setting = Setting.plugin_redmine_dmsf['dmsf_storage_directory']
- Setting.plugin_redmine_dmsf['dmsf_storage_directory'] = 'files/dmsf'
- sp = DmsfFile.storage_path
- assert_kind_of Pathname, sp
- assert_equal Rails.root.join(Setting.plugin_redmine_dmsf['dmsf_storage_directory']).to_s, sp.to_s
- Setting.plugin_redmine_dmsf['dmsf_storage_directory'] = setting
+ with_settings plugin_redmine_dmsf: {'dmsf_storage_directory' => 'files/dmsf'} do
+ sp = DmsfFile.storage_path
+ assert_kind_of Pathname, sp
+ assert_equal Rails.root.join(Setting.plugin_redmine_dmsf['dmsf_storage_directory']).to_s, sp.to_s
+ end
end
def test_owner
diff --git a/test/unit_test.rb b/test/unit_test.rb
index ae138c4c..91129bf0 100644
--- a/test/unit_test.rb
+++ b/test/unit_test.rb
@@ -67,7 +67,7 @@ module RedmineDmsf
begin
FileUtils.rm_rf DmsfFile.storage_path
rescue => e
- error e.message
+ Rails.logger.error e.message
end
end