diff --git a/test/integration/webdav/dmsf_webdav_delete_test.rb b/test/integration/webdav/dmsf_webdav_delete_test.rb
index e4274d90..ae2a17a9 100644
--- a/test/integration/webdav/dmsf_webdav_delete_test.rb
+++ b/test/integration/webdav/dmsf_webdav_delete_test.rb
@@ -172,19 +172,19 @@ class DmsfWebdavDeleteTest < RedmineDmsf::Test::IntegrationTest
def test_folder_delete_by_user_with_project_names
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
- @role.add_permission! :view_dmsf_folders
- @role.add_permission! :folder_manipulation
- @project1.enable_module! :dmsf # Flag module enabled
-
- delete "/dmsf/webdav/#{@project1.identifier}/#{@folder6.title}", nil, @jsmith
- assert_response 404
-
- p1name = RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1)
- p1name_uri = URI.encode(p1name, /\W/)
- delete "/dmsf/webdav/#{p1name_uri}/#{@folder6.title}", nil, @jsmith
- assert_response :success
- @folder6.reload
- assert @folder6.deleted?, "Folder #{@folder1.title} is not expected to exist"
+ if Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] == true
+ @role.add_permission! :view_dmsf_folders
+ @role.add_permission! :folder_manipulation
+ @project1.enable_module! :dmsf # Flag module enabled
+ delete "/dmsf/webdav/#{@project1.identifier}/#{@folder6.title}", nil, @jsmith
+ assert_response 404
+ p1name = RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1)
+ p1name_uri = URI.encode(p1name, /\W/)
+ delete "/dmsf/webdav/#{p1name_uri}/#{@folder6.title}", nil, @jsmith
+ assert_response :success
+ @folder6.reload
+ assert @folder6.deleted?, "Folder #{@folder1.title} is not expected to exist"
+ end
end
def test_file_delete_by_administrator
@@ -211,21 +211,23 @@ class DmsfWebdavDeleteTest < RedmineDmsf::Test::IntegrationTest
def test_file_delete_by_user_with_project_names
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
- @project1.enable_module! :dmsf
- @role.add_permission! :view_dmsf_folders
- @role.add_permission! :file_delete
-
- delete "/dmsf/webdav/#{@project1.identifier}/#{@file1.name}", nil, @jsmith
- assert_response 404
-
- p1name = RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1)
- p1name_uri = URI.encode(p1name, /\W/)
-
- delete "/dmsf/webdav/#{p1name_uri}/#{@file1.name}", nil, @jsmith
- assert_response :success
-
- @file1.reload
- assert @file1.deleted?, "File #{@file1.name} is not expected to exist"
+ if Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] == true
+ @project1.enable_module! :dmsf
+ @role.add_permission! :view_dmsf_folders
+ @role.add_permission! :file_delete
+
+ delete "/dmsf/webdav/#{@project1.identifier}/#{@file1.name}", nil, @jsmith
+ assert_response 404
+
+ p1name = RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1)
+ p1name_uri = URI.encode(p1name, /\W/)
+
+ delete "/dmsf/webdav/#{p1name_uri}/#{@file1.name}", nil, @jsmith
+ assert_response :success
+
+ @file1.reload
+ assert @file1.deleted?, "File #{@file1.name} is not expected to exist"
+ end
end
def test_locked_folder
@@ -252,15 +254,17 @@ class DmsfWebdavDeleteTest < RedmineDmsf::Test::IntegrationTest
def test_non_versioned_file
Setting.plugin_redmine_dmsf['dmsf_webdav_disable_versioning'] = '\.tmp$'
- @project1.enable_module! :dmsf
- @role.add_permission! :view_dmsf_folders
- @role.add_permission! :file_delete
-
- file = @file1.copy_to_filename(@project1, nil, "delete_test.tmp")
-
- delete "/dmsf/webdav/#{@project1.identifier}/delete_test.tmp", nil, @jsmith
- # The file should be destroyed
- assert_nil DmsfFile.find_file_by_name(@project1, nil, "delete_test.tmp")
+ if Setting.plugin_redmine_dmsf['dmsf_webdav_disable_versioning'] == '\.tmp$'
+ @project1.enable_module! :dmsf
+ @role.add_permission! :view_dmsf_folders
+ @role.add_permission! :file_delete
+
+ file = @file1.copy_to_filename(@project1, nil, "delete_test.tmp")
+
+ delete "/dmsf/webdav/#{@project1.identifier}/delete_test.tmp", nil, @jsmith
+ # The file should be destroyed
+ assert_nil DmsfFile.find_file_by_name(@project1, nil, 'delete_test.tmp')
+ end
end
end
\ No newline at end of file
diff --git a/test/integration/webdav/dmsf_webdav_get_test.rb b/test/integration/webdav/dmsf_webdav_get_test.rb
index a06b3195..79cae62e 100644
--- a/test/integration/webdav/dmsf_webdav_get_test.rb
+++ b/test/integration/webdav/dmsf_webdav_get_test.rb
@@ -66,12 +66,13 @@ class DmsfWebdavGetTest < RedmineDmsf::Test::IntegrationTest
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 = RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1)
-
- get '/dmsf/webdav', nil, @admin
- assert_response :success
- assert_no_match @project1.identifier, response.body
- assert_match project1_uri, response.body
+ if Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] == true
+ project1_uri = RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1)
+ get '/dmsf/webdav', nil, @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
@@ -96,13 +97,13 @@ class DmsfWebdavGetTest < RedmineDmsf::Test::IntegrationTest
assert_response :success
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
- project1_uri = URI.encode(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1), /\W/)
-
- get "/dmsf/webdav/#{@project1.identifier}/test.txt", nil, @admin
- assert_response 404
-
- get "/dmsf/webdav/#{project1_uri}/test.txt", nil, @admin
- assert_response :success
+ if Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] == true
+ project1_uri = URI.encode(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1), /\W/)
+ get "/dmsf/webdav/#{@project1.identifier}/test.txt", nil, @admin
+ assert_response 404
+ get "/dmsf/webdav/#{project1_uri}/test.txt", nil, @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 5f38370b..e94cf5f5 100644
--- a/test/integration/webdav/dmsf_webdav_head_test.rb
+++ b/test/integration/webdav/dmsf_webdav_head_test.rb
@@ -58,30 +58,30 @@ class DmsfWebdavHeadTest < RedmineDmsf::Test::IntegrationTest
check_headers_exist
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
-
- head "/dmsf/webdav/#{@project1.identifier}", nil, @admin
- assert_response 404
-
- head "/dmsf/webdav/#{@project1_uri}", nil, @admin
- assert_response :success
+ if Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] == true
+ head "/dmsf/webdav/#{@project1.identifier}", nil, @admin
+ assert_response 404
+ head "/dmsf/webdav/#{@project1_uri}", nil, @admin
+ assert_response :success
+ end
end
def test_head_responds_anonymous_msoffice_user_agent
- head "/dmsf/webdav/#{@project1.identifier}", nil, {:HTTP_USER_AGENT => "Microsoft Office Word 2014"}
+ head "/dmsf/webdav/#{@project1.identifier}", nil, {:HTTP_USER_AGENT => 'Microsoft Office Word 2014'}
assert_response :success
check_headers_exist
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
-
- head "/dmsf/webdav/#{@project1.identifier}", nil, {:HTTP_USER_AGENT => "Microsoft Office Word 2014"}
- assert_response 404
-
- head "/dmsf/webdav/#{@project1_uri}", nil, {:HTTP_USER_AGENT => "Microsoft Office Word 2014"}
- assert_response :success
+ if Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] == true
+ head "/dmsf/webdav/#{@project1.identifier}", nil, {:HTTP_USER_AGENT => 'Microsoft Office Word 2014'}
+ assert_response 404
+ head "/dmsf/webdav/#{@project1_uri}", nil, {:HTTP_USER_AGENT => 'Microsoft Office Word 2014'}
+ assert_response :success
+ end
end
def test_head_responds_anonymous_other_user_agent
- head "/dmsf/webdav/#{@project1.identifier}", nil, {:HTTP_USER_AGENT => "Other"}
+ head "/dmsf/webdav/#{@project1.identifier}", nil, {:HTTP_USER_AGENT => 'Other'}
assert_response 401
check_headers_dont_exist
end
@@ -97,30 +97,30 @@ class DmsfWebdavHeadTest < RedmineDmsf::Test::IntegrationTest
check_headers_exist # Note it'll allow 1 out of the 3 expected to fail
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
-
- head "/dmsf/webdav/#{@project1.identifier}/test.txt", nil, @admin
- assert_response 404
-
- head "/dmsf/webdav/#{@project1_uri}/test.txt", nil, @admin
- assert_response :success
+ if Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] == true
+ head "/dmsf/webdav/#{@project1.identifier}/test.txt", nil, @admin
+ assert_response 404
+ head "/dmsf/webdav/#{@project1_uri}/test.txt", nil, @admin
+ assert_response :success
+ end
end
def test_head_responds_to_file_anonymous_msoffice_user_agent
- head "/dmsf/webdav/#{@project1.identifier}/test.txt", nil, {:HTTP_USER_AGENT => "Microsoft Office Word 2014"}
+ head "/dmsf/webdav/#{@project1.identifier}/test.txt", nil, {:HTTP_USER_AGENT => 'Microsoft Office Word 2014'}
assert_response :success
check_headers_exist # Note it'll allow 1 out of the 3 expected to fail
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
-
- head "/dmsf/webdav/#{@project1.identifier}/test.txt", nil, {:HTTP_USER_AGENT => "Microsoft Office Word 2014"}
- assert_response 404
-
- head "/dmsf/webdav/#{@project1_uri}/test.txt", nil, {:HTTP_USER_AGENT => "Microsoft Office Word 2014"}
- assert_response :success
+ if Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] == true
+ head "/dmsf/webdav/#{@project1.identifier}/test.txt", nil, {:HTTP_USER_AGENT => 'Microsoft Office Word 2014'}
+ assert_response 404
+ head "/dmsf/webdav/#{@project1_uri}/test.txt", nil, {:HTTP_USER_AGENT => 'Microsoft Office Word 2014'}
+ assert_response :success
+ end
end
def test_head_responds_to_file_anonymous_other_user_agent
- head "/dmsf/webdav/#{@project1.identifier}/test.txt", nil, {:HTTP_USER_AGENT => "Other"}
+ head "/dmsf/webdav/#{@project1.identifier}/test.txt", nil, {:HTTP_USER_AGENT => 'Other'}
assert_response 401
check_headers_dont_exist
end
@@ -132,13 +132,13 @@ class DmsfWebdavHeadTest < RedmineDmsf::Test::IntegrationTest
end
def test_head_fails_when_file_not_found_anonymous_msoffice_user_agent
- head "/dmsf/webdav/#{@project1.identifier}/not_here.txt", nil, {:HTTP_USER_AGENT => "Microsoft Office Word 2014"}
+ head "/dmsf/webdav/#{@project1.identifier}/not_here.txt", nil, {:HTTP_USER_AGENT => 'Microsoft Office Word 2014'}
assert_response :missing
check_headers_dont_exist
end
def test_head_fails_when_file_not_found_anonymous_other_user_agent
- head "/dmsf/webdav/#{@project1.identifier}/not_here.txt", nil, {:HTTP_USER_AGENT => "Other"}
+ head "/dmsf/webdav/#{@project1.identifier}/not_here.txt", nil, {:HTTP_USER_AGENT => 'Other'}
assert_response 401
check_headers_dont_exist
end
@@ -150,13 +150,13 @@ class DmsfWebdavHeadTest < RedmineDmsf::Test::IntegrationTest
end
def test_head_fails_when_folder_not_found_anonymous_msoffice_user_agent
- head '/dmsf/webdav/folder_not_here', nil, {:HTTP_USER_AGENT => "Microsoft Office Word 2014"}
+ head '/dmsf/webdav/folder_not_here', nil, {:HTTP_USER_AGENT => 'Microsoft Office Word 2014'}
assert_response :missing
check_headers_dont_exist
end
def test_head_fails_when_folder_not_found_anonymous_other_user_agent
- head '/dmsf/webdav/folder_not_here', nil, {:HTTP_USER_AGENT => "Other"}
+ head '/dmsf/webdav/folder_not_here', nil, {:HTTP_USER_AGENT => 'Other'}
assert_response 401
check_headers_dont_exist
end
diff --git a/test/integration/webdav/dmsf_webdav_lock_test.rb b/test/integration/webdav/dmsf_webdav_lock_test.rb
index e88cf4a8..ab007b70 100644
--- a/test/integration/webdav/dmsf_webdav_lock_test.rb
+++ b/test/integration/webdav/dmsf_webdav_lock_test.rb
@@ -44,33 +44,13 @@ class DmsfWebdavMoveTest < RedmineDmsf::Test::IntegrationTest
end
def test_lock_file_already_locked_by_other
- file = DmsfFile.find_by_id 1
-
- log_user 'admin', 'admin' # login as admin
- assert !User.current.anonymous?, 'Current user is anonymous'
- assert file.lock!, "File failed to be locked by #{User.current.name}"
-
- xml_http_request :lock, "/dmsf/webdav/#{@project1.identifier}/#{file.name}",
- "
-
-
-
- jsmith
-",
- @jsmith.merge!({:HTTP_DEPTH=>"infinity",
- :HTTP_TIMEOUT=>"Infinite",})
- assert_response 423 # Locked
- end
-
- def test_lock_file
- file = DmsfFile.find_by_id 1
-
- create_time = Time.utc(2000, 1, 2, 3, 4, 5)
- refresh_time = Time.utc(2000, 1, 2, 6, 7, 8)
-
- # Time travel, will make the usec part of the time 0
- travel_to create_time do
- # Lock file
+ if Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] == 'WEBDAV_READ_WRITE'
+ file = DmsfFile.find_by_id 1
+
+ log_user 'admin', 'admin' # login as admin
+ assert !User.current.anonymous?, 'Current user is anonymous'
+ assert file.lock!, "File failed to be locked by #{User.current.name}"
+
xml_http_request :lock, "/dmsf/webdav/#{@project1.identifier}/#{file.name}",
"
@@ -78,40 +58,64 @@ class DmsfWebdavMoveTest < RedmineDmsf::Test::IntegrationTest
jsmith
",
- @jsmith.merge!({:HTTP_DEPTH=>"infinity",
- :HTTP_TIMEOUT=>"Infinite",})
- assert_response 200
- # Verify the response
- assert_match "", response.body
- assert_match "", response.body
- assert_match "infinity", response.body
- # 1.week = 7*24*3600=604800 seconds
- assert_match "Second-604800", response.body
- assert_match /([a-z0-9\-]+)<\/D:href><\/D:locktoken>/, response.body
- # Extract the locktoken, needed when refreshing the lock
- response.body.match(/([a-z0-9\-]+)<\/D:href><\/D:locktoken>/)
- locktoken=$1
- # Verify the lock in the db
- l = DmsfFile.find_by_id(1).lock.first
- assert_equal l.created_at, create_time
- assert_equal l.updated_at, create_time
- assert_equal l.expires_at, create_time + 1.week
-
- travel_to refresh_time do
- # Refresh lock
+ @jsmith.merge!({:HTTP_DEPTH => 'infinity',
+ :HTTP_TIMEOUT => 'Infinite',})
+ assert_response 423 # Locked
+ end
+ end
+
+ def test_lock_file
+ if Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] == 'WEBDAV_READ_WRITE'
+ file = DmsfFile.find_by_id 1
+
+ create_time = Time.utc(2000, 1, 2, 3, 4, 5)
+ refresh_time = Time.utc(2000, 1, 2, 6, 7, 8)
+
+ # Time travel, will make the usec part of the time 0
+ travel_to create_time do
+ # Lock file
xml_http_request :lock, "/dmsf/webdav/#{@project1.identifier}/#{file.name}",
- nil,
- @jsmith.merge!({:HTTP_DEPTH=>"infinity",
- :HTTP_TIMEOUT=>"Infinite",
- :HTTP_IF=>"(#{locktoken})"})
- assert_response 200
+ "
+
+
+
+ jsmith
+ ",
+ @jsmith.merge!({:HTTP_DEPTH => 'infinity',
+ :HTTP_TIMEOUT => 'Infinite',})
+ assert_response :success
+ # Verify the response
+ assert_match '', response.body
+ assert_match '', response.body
+ assert_match 'infinity', response.body
# 1.week = 7*24*3600=604800 seconds
- assert_match "Second-604800", response.body
+ assert_match 'Second-604800', response.body
+ assert_match /([a-z0-9\-]+)<\/D:href><\/D:locktoken>/, response.body
+ # Extract the locktoken, needed when refreshing the lock
+ response.body.match(/([a-z0-9\-]+)<\/D:href><\/D:locktoken>/)
+ locktoken=$1
# Verify the lock in the db
l = DmsfFile.find_by_id(1).lock.first
assert_equal l.created_at, create_time
- assert_equal l.updated_at, refresh_time
- assert_equal l.expires_at, refresh_time + 1.week
+ assert_equal l.updated_at, create_time
+ assert_equal l.expires_at, create_time + 1.week
+
+ travel_to refresh_time do
+ # Refresh lock
+ xml_http_request :lock, "/dmsf/webdav/#{@project1.identifier}/#{file.name}",
+ nil,
+ @jsmith.merge!({:HTTP_DEPTH => 'infinity',
+ :HTTP_TIMEOUT => 'Infinite',
+ :HTTP_IF => "(#{locktoken})"})
+ assert_response :success
+ # 1.week = 7*24*3600=604800 seconds
+ assert_match 'Second-604800', response.body
+ # Verify the lock in the db
+ l = DmsfFile.find_by_id(1).lock.first
+ assert_equal l.created_at, create_time
+ assert_equal l.updated_at, refresh_time
+ assert_equal l.expires_at, refresh_time + 1.week
+ end
end
end
end
diff --git a/test/integration/webdav/dmsf_webdav_mkcol_test.rb b/test/integration/webdav/dmsf_webdav_mkcol_test.rb
index bdaf4a67..ee49d7c6 100644
--- a/test/integration/webdav/dmsf_webdav_mkcol_test.rb
+++ b/test/integration/webdav/dmsf_webdav_mkcol_test.rb
@@ -99,19 +99,20 @@ class DmsfWebdavMkcolTest < RedmineDmsf::Test::IntegrationTest
end
def test_should_create_folder_for_non_admin_user_with_rights
- @project1.enable_module! :dmsf
- @role.add_permission! :folder_manipulation
- xml_http_request :mkcol, "/dmsf/webdav/#{@project1.identifier}/test1", nil, @jsmith
- assert_response :success
-
- Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
- project1_uri = URI.encode(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1), /\W/)
-
- 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
- assert_response :success
+ if Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] == 'WEBDAV_READ_WRITE'
+ @project1.enable_module! :dmsf
+ @role.add_permission! :folder_manipulation
+ xml_http_request :mkcol, "/dmsf/webdav/#{@project1.identifier}/test1", nil, @jsmith
+ 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 = URI.encode(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1), /\W/)
+ 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
+ assert_response :success
+ end
+ end
end
end
\ No newline at end of file
diff --git a/test/integration/webdav/dmsf_webdav_move_test.rb b/test/integration/webdav/dmsf_webdav_move_test.rb
index 96105fd7..6f43a405 100644
--- a/test/integration/webdav/dmsf_webdav_move_test.rb
+++ b/test/integration/webdav/dmsf_webdav_move_test.rb
@@ -79,26 +79,28 @@ class DmsfWebdavMoveTest < RedmineDmsf::Test::IntegrationTest
def test_move_to_new_filename_without_folder_manipulation_permission
@role.remove_permission! :folder_manipulation
file = DmsfFile.find_by_id 1
-
new_name = "#{file.name}.moved"
- assert_no_difference 'file.dmsf_file_revisions.count' do
- xml_http_request :move, "/dmsf/webdav/#{@project1.identifier}/#{file.name}", nil,
- @jsmith.merge!({:destination => "http://www.example.com/dmsf/webdav/#{@project1.identifier}/#{new_name}"})
- assert_response 403
+ if Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] == 'WEBDAV_READ_WRITE'
+ assert_no_difference 'file.dmsf_file_revisions.count' do
+ xml_http_request :move, "/dmsf/webdav/#{@project1.identifier}/#{file.name}", nil,
+ @jsmith.merge!({:destination => "http://www.example.com/dmsf/webdav/#{@project1.identifier}/#{new_name}"})
+ assert_response 403
+ end
end
end
def test_move_to_new_filename_without_folder_manipulation_permission_as_admin
- @role.remove_permission! :folder_manipulation
- file = DmsfFile.find_by_id 1
-
- new_name = "#{file.name}.moved"
- assert_difference 'file.dmsf_file_revisions.count', +1 do
- xml_http_request :move, "/dmsf/webdav/#{@project1.identifier}/#{file.name}", nil,
- @admin.merge!({:destination => "http://www.example.com/dmsf/webdav/#{@project1.identifier}/#{new_name}"})
- assert_response 201 # Created
- f = DmsfFile.find_file_by_name @project1, nil, "#{new_name}"
- assert f, "Moved file '#{new_name}' not found in project."
+ if Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] == 'WEBDAV_READ_WRITE'
+ @role.remove_permission! :folder_manipulation
+ file = DmsfFile.find_by_id 1
+ new_name = "#{file.name}.moved"
+ assert_difference 'file.dmsf_file_revisions.count', +1 do
+ xml_http_request :move, "/dmsf/webdav/#{@project1.identifier}/#{file.name}", nil,
+ @admin.merge!({:destination => "http://www.example.com/dmsf/webdav/#{@project1.identifier}/#{new_name}"})
+ assert_response 201 # Created
+ f = DmsfFile.find_file_by_name @project1, nil, "#{new_name}"
+ assert f, "Moved file '#{new_name}' not found in project."
+ end
end
end
@@ -121,42 +123,45 @@ class DmsfWebdavMoveTest < RedmineDmsf::Test::IntegrationTest
def test_move_to_new_filename
file = DmsfFile.find_by_id 1
-
- new_name = "#{file.name}.moved"
- assert_difference 'file.dmsf_file_revisions.count', +1 do
- xml_http_request :move, "/dmsf/webdav/#{@project1.identifier}/#{file.name}", nil,
- @jsmith.merge!({:destination => "http://www.example.com/dmsf/webdav/#{@project1.identifier}/#{new_name}"})
- assert_response 201 # Created
- f = DmsfFile.find_file_by_name @project1, nil, "#{new_name}"
- assert f, "Moved file '#{new_name}' not found in project."
+ if Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] == 'WEBDAV_READ_WRITE'
+ new_name = "#{file.name}.moved"
+ assert_difference 'file.dmsf_file_revisions.count', +1 do
+ xml_http_request :move, "/dmsf/webdav/#{@project1.identifier}/#{file.name}", nil,
+ @jsmith.merge!({:destination => "http://www.example.com/dmsf/webdav/#{@project1.identifier}/#{new_name}"})
+ assert_response 201 # Created
+ f = DmsfFile.find_file_by_name @project1, nil, "#{new_name}"
+ assert f, "Moved file '#{new_name}' not found in project."
+ end
end
end
def test_move_to_new_filename_with_project_names
file = DmsfFile.find_by_id 1
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
- project1_uri = URI.encode(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1), /\W/)
-
- 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,
- @jsmith.merge!({:destination => "http://www.example.com/dmsf/webdav/#{project1_uri}/#{new_name}"})
- assert_response 201 # Created
- f = DmsfFile.find_file_by_name @project1, nil, "#{new_name}"
- assert f, "Moved file '#{new_name}' not found in project."
+ if Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] == true
+ project1_uri = URI.encode(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1), /\W/)
+ 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,
+ @jsmith.merge!({:destination => "http://www.example.com/dmsf/webdav/#{project1_uri}/#{new_name}"})
+ assert_response 201 # Created
+ f = DmsfFile.find_file_by_name @project1, nil, "#{new_name}"
+ assert f, "Moved file '#{new_name}' not found in project."
+ end
end
end
def test_move_zero_sized_to_new_filename
- file = DmsfFile.find_by_id 10
-
- new_name = "#{file.name}.moved"
- assert_no_difference 'file.dmsf_file_revisions.count' do
- xml_http_request :move, "/dmsf/webdav/#{@project1.identifier}/#{file.name}", nil,
- @jsmith.merge!({:destination => "http://www.example.com/dmsf/webdav/#{@project1.identifier}/#{new_name}"})
- assert_response 201 # Created
- f = DmsfFile.find_file_by_name @project1, nil, "#{new_name}"
- assert f, "Moved file '#{new_name}' not found in project."
+ if Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] == 'WEBDAV_READ_WRITE'
+ file = DmsfFile.find_by_id 10
+ new_name = "#{file.name}.moved"
+ assert_no_difference 'file.dmsf_file_revisions.count' do
+ xml_http_request :move, "/dmsf/webdav/#{@project1.identifier}/#{file.name}", nil,
+ @jsmith.merge!({:destination => "http://www.example.com/dmsf/webdav/#{@project1.identifier}/#{new_name}"})
+ assert_response 201 # Created
+ f = DmsfFile.find_file_by_name @project1, nil, "#{new_name}"
+ assert f, "Moved file '#{new_name}' not found in project."
+ end
end
end
@@ -166,12 +171,14 @@ class DmsfWebdavMoveTest < RedmineDmsf::Test::IntegrationTest
assert_kind_of DmsfFile, file
assert_kind_of DmsfFolder, folder
- assert_difference 'file.dmsf_file_revisions.count', +1 do
- xml_http_request :move, "/dmsf/webdav/#{@project1.identifier}/#{file.name}", nil,
- @jsmith.merge!({:destination => "http://www.example.com/dmsf/webdav/#{@project1.identifier}/#{folder.title}/#{file.name}"})
- assert_response 201 # Created
- file2 = DmsfFile.find_by_id 1
- assert_equal folder.id, file2.dmsf_folder_id
+ if Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] == 'WEBDAV_READ_WRITE'
+ assert_difference 'file.dmsf_file_revisions.count', +1 do
+ xml_http_request :move, "/dmsf/webdav/#{@project1.identifier}/#{file.name}", nil,
+ @jsmith.merge!({:destination => "http://www.example.com/dmsf/webdav/#{@project1.identifier}/#{folder.title}/#{file.name}"})
+ assert_response 201 # Created
+ file2 = DmsfFile.find_by_id 1
+ assert_equal folder.id, file2.dmsf_folder_id
+ end
end
end
@@ -179,16 +186,18 @@ class DmsfWebdavMoveTest < RedmineDmsf::Test::IntegrationTest
file = DmsfFile.find_by_id 1
folder = DmsfFolder.find_by_id 1
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
- project1_uri = URI.encode(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1), /\W/)
- assert_kind_of DmsfFile, file
- assert_kind_of DmsfFolder, folder
+ if Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] == true
+ project1_uri = URI.encode(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1), /\W/)
+ assert_kind_of DmsfFile, file
+ assert_kind_of DmsfFolder, folder
- assert_difference 'file.dmsf_file_revisions.count', +1 do
- xml_http_request :move, "/dmsf/webdav/#{project1_uri}/#{file.name}", nil,
- @jsmith.merge!({:destination => "http://www.example.com/dmsf/webdav/#{project1_uri}/#{folder.title}/#{file.name}"})
- assert_response 201 # Created
- file2 = DmsfFile.find_by_id 1
- assert_equal folder.id, file2.dmsf_folder_id
+ assert_difference 'file.dmsf_file_revisions.count', +1 do
+ xml_http_request :move, "/dmsf/webdav/#{project1_uri}/#{file.name}", nil,
+ @jsmith.merge!({:destination => "http://www.example.com/dmsf/webdav/#{project1_uri}/#{folder.title}/#{file.name}"})
+ assert_response 201 # Created
+ file2 = DmsfFile.find_by_id 1
+ assert_equal folder.id, file2.dmsf_folder_id
+ end
end
end
@@ -197,26 +206,28 @@ class DmsfWebdavMoveTest < RedmineDmsf::Test::IntegrationTest
folder = DmsfFolder.find_by_id 1
assert_kind_of DmsfFile, file
assert_kind_of DmsfFolder, folder
-
- assert_no_difference 'file.dmsf_file_revisions.count' do
- xml_http_request :move, "/dmsf/webdav/#{@project1.identifier}/#{file.name}", nil,
- @jsmith.merge!({:destination => "http://www.example.com/dmsf/webdav/#{@project1.identifier}/#{folder.title}/#{file.name}"})
- assert_response 201 # Created
- file2 = DmsfFile.find_by_id 10
- assert_equal folder.id, file2.dmsf_folder_id
+ if Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] == 'WEBDAV_READ_WRITE'
+ assert_no_difference 'file.dmsf_file_revisions.count' do
+ xml_http_request :move, "/dmsf/webdav/#{@project1.identifier}/#{file.name}", nil,
+ @jsmith.merge!({:destination => "http://www.example.com/dmsf/webdav/#{@project1.identifier}/#{folder.title}/#{file.name}"})
+ assert_response 201 # Created
+ file2 = DmsfFile.find_by_id 10
+ assert_equal folder.id, file2.dmsf_folder_id
+ end
end
end
def test_move_to_existing_filename
- file = DmsfFile.find_by_id 1
- file2 = DmsfFile.find_by_id 9
-
- new_name = "#{file2.name}"
- assert_no_difference 'file2.dmsf_file_revisions.count' do
- assert_no_difference 'file.dmsf_file_revisions.count' do
- xml_http_request :move, "/dmsf/webdav/#{@project1.identifier}/#{file.name}", nil,
- @jsmith.merge!({:destination => "http://www.example.com/dmsf/webdav/#{@project1.identifier}/#{new_name}"})
- assert_response 405 # MethodNotAllowed
+ if Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] == 'WEBDAV_READ_WRITE'
+ file = DmsfFile.find_by_id 1
+ file2 = DmsfFile.find_by_id 9
+ new_name = "#{file2.name}"
+ assert_no_difference 'file2.dmsf_file_revisions.count' do
+ assert_no_difference 'file.dmsf_file_revisions.count' do
+ xml_http_request :move, "/dmsf/webdav/#{@project1.identifier}/#{file.name}", nil,
+ @jsmith.merge!({:destination => "http://www.example.com/dmsf/webdav/#{@project1.identifier}/#{new_name}"})
+ assert_response 405 # MethodNotAllowed
+ end
end
end
end
@@ -257,90 +268,93 @@ class DmsfWebdavMoveTest < RedmineDmsf::Test::IntegrationTest
log_user 'jsmith', 'jsmith' # login as jsmith
assert !User.current.anonymous?, 'Current user is anonymous'
assert file.lock!, "File failed to be locked by #{User.current.name}"
-
- # Move once
- new_name = "#{file.name}.m1"
- assert_difference 'file.dmsf_file_revisions.count', +1 do
- xml_http_request :move, "/dmsf/webdav/#{@project1.identifier}/#{file.name}", nil,
- @jsmith.merge!({:destination => "http://www.example.com/dmsf/webdav/#{@project1.identifier}/#{new_name}"})
- assert_response 201 # Created
- end
-
- # Move twice, make sure that the MsOffice store sequence is not disrupting normal move
- new_name2 = "#{new_name}.m2"
- assert_difference 'file.dmsf_file_revisions.count', +1 do
- xml_http_request :move, "/dmsf/webdav/#{@project1.identifier}/#{new_name}", nil,
- @jsmith.merge!({:destination => "http://www.example.com/dmsf/webdav/#{@project1.identifier}/#{new_name2}"})
- assert_response 201 # Created
+
+ if Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] == 'WEBDAV_READ_WRITE'
+ # Move once
+ new_name = "#{file.name}.m1"
+ assert_difference 'file.dmsf_file_revisions.count', +1 do
+ xml_http_request :move, "/dmsf/webdav/#{@project1.identifier}/#{file.name}", nil,
+ @jsmith.merge!({:destination => "http://www.example.com/dmsf/webdav/#{@project1.identifier}/#{new_name}"})
+ assert_response 201 # Created
+ end
+ # Move twice, make sure that the MsOffice store sequence is not disrupting normal move
+ new_name2 = "#{new_name}.m2"
+ assert_difference 'file.dmsf_file_revisions.count', +1 do
+ xml_http_request :move, "/dmsf/webdav/#{@project1.identifier}/#{new_name}", nil,
+ @jsmith.merge!({:destination => "http://www.example.com/dmsf/webdav/#{@project1.identifier}/#{new_name2}"})
+ assert_response 201 # Created
+ end
end
end
def test_move_msoffice_save_locked_file
- # When some versions of MsOffice saves a file it use the following sequence:
- # 1. Save changes to a new temporary document, XXX.tmp
- # 2. Rename (MOVE) document to YYY.tmp. History is lost here if original document is moved.
- # 3. Rename (MOVE) XXX.tmp to document name. XXX.tmp must be merged to original document or else the history is lost.
- # 4. Delete YYY.tmp.
- # Verify that steps 2 and 3 works.
-
- original_file = DmsfFile.find_by_id 1
-
- log_user 'jsmith', 'jsmith' # login as jsmith
- assert !User.current.anonymous?, 'Current user is anonymous'
- assert original_file.lock!, "File failed to be locked by #{User.current.name}"
+ if Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] == 'WEBDAV_READ_WRITE'
+ # When some versions of MsOffice saves a file it use the following sequence:
+ # 1. Save changes to a new temporary document, XXX.tmp
+ # 2. Rename (MOVE) document to YYY.tmp. History is lost here if original document is moved.
+ # 3. Rename (MOVE) XXX.tmp to document name. XXX.tmp must be merged to original document or else the history is lost.
+ # 4. Delete YYY.tmp.
+ # Verify that steps 2 and 3 works.
- # First save while file is locked, should create new revision
- temp_file_name = "AAAAAAAA.tmp"
-
- # Make sure that the temp-file does not exist.
- temp_file = DmsfFile.find_file_by_name @project1, nil, "#{temp_file_name}"
- assert !temp_file, "File '#{temp_file_name}' should not exist yet."
-
- # Move the original file to AAAAAAAA.tmp. The original file should not change but a new file should be created.
- assert_no_difference 'original_file.dmsf_file_revisions.count' do
- xml_http_request :move, "/dmsf/webdav/#{@project1.identifier}/#{original_file.name}", nil,
- @jsmith.merge!({:destination => "http://www.example.com/dmsf/webdav/#{@project1.identifier}/#{temp_file_name}"})
- assert_response 201 # Created
- end
-
- # Verify that a new file acutally has been created
- temp_file = DmsfFile.find_file_by_name @project1, nil, "#{temp_file_name}"
- assert temp_file, "File '#{temp_file_name}' not found, move failed."
- assert_equal temp_file.dmsf_file_revisions.count,1
- assert_not_equal temp_file.id, original_file.id
-
- # Move a temporary file (use AAAAAAAA.tmp) to the original file.
- assert_difference 'original_file.dmsf_file_revisions.count', +1 do
- xml_http_request :move, "/dmsf/webdav/#{@project1.identifier}/#{temp_file_name}", nil,
- @jsmith.merge!({:destination => "http://www.example.com/dmsf/webdav/#{@project1.identifier}/#{original_file.name}"})
- assert_response 201 # Created
- end
-
- # Second save while file is locked, should NOT create new revision
- temp_file_name = "BBBBBBBB.tmp"
-
- # Make sure that the temp-file does not exist.
- temp_file = DmsfFile.find_file_by_name @project1, nil, "#{temp_file_name}"
- assert !temp_file, "File '#{temp_file_name}' should not exist yet."
-
- # Move the original file to BBBBBBBB.tmp. The original file should not change but a new file should be created.
- assert_no_difference 'original_file.dmsf_file_revisions.count' do
- xml_http_request :move, "/dmsf/webdav/#{@project1.identifier}/#{original_file.name}", nil,
- @jsmith.merge!({:destination => "http://www.example.com/dmsf/webdav/#{@project1.identifier}/#{temp_file_name}"})
- assert_response 201 # Created
- end
-
- # Verify that a new file acutally has been created
- temp_file = DmsfFile.find_file_by_name @project1, nil, "#{temp_file_name}"
- assert temp_file, "File '#{temp_file_name}' not found, move failed."
- assert_equal temp_file.dmsf_file_revisions.count,1
- assert_not_equal temp_file.id, original_file.id
-
- # Move a temporary file (use BBBBBBBB.tmp) to the original file.
- assert_no_difference 'original_file.dmsf_file_revisions.count' do
- xml_http_request :move, "/dmsf/webdav/#{@project1.identifier}/#{temp_file_name}", nil,
- @jsmith.merge!({:destination => "http://www.example.com/dmsf/webdav/#{@project1.identifier}/#{original_file.name}"})
- assert_response 201 # Created
+ original_file = DmsfFile.find_by_id 1
+
+ log_user 'jsmith', 'jsmith' # login as jsmith
+ assert !User.current.anonymous?, 'Current user is anonymous'
+ assert original_file.lock!, "File failed to be locked by #{User.current.name}"
+
+ # First save while file is locked, should create new revision
+ temp_file_name = 'AAAAAAAA.tmp'
+
+ # Make sure that the temp-file does not exist.
+ temp_file = DmsfFile.find_file_by_name @project1, nil, "#{temp_file_name}"
+ assert !temp_file, "File '#{temp_file_name}' should not exist yet."
+
+ # Move the original file to AAAAAAAA.tmp. The original file should not change but a new file should be created.
+ assert_no_difference 'original_file.dmsf_file_revisions.count' do
+ xml_http_request :move, "/dmsf/webdav/#{@project1.identifier}/#{original_file.name}", nil,
+ @jsmith.merge!({:destination => "http://www.example.com/dmsf/webdav/#{@project1.identifier}/#{temp_file_name}"})
+ assert_response 201 # Created
+ end
+
+ # Verify that a new file acutally has been created
+ temp_file = DmsfFile.find_file_by_name @project1, nil, "#{temp_file_name}"
+ assert temp_file, "File '#{temp_file_name}' not found, move failed."
+ assert_equal temp_file.dmsf_file_revisions.count,1
+ assert_not_equal temp_file.id, original_file.id
+
+ # Move a temporary file (use AAAAAAAA.tmp) to the original file.
+ assert_difference 'original_file.dmsf_file_revisions.count', +1 do
+ xml_http_request :move, "/dmsf/webdav/#{@project1.identifier}/#{temp_file_name}", nil,
+ @jsmith.merge!({:destination => "http://www.example.com/dmsf/webdav/#{@project1.identifier}/#{original_file.name}"})
+ assert_response 201 # Created
+ end
+
+ # Second save while file is locked, should NOT create new revision
+ temp_file_name = "BBBBBBBB.tmp"
+
+ # Make sure that the temp-file does not exist.
+ temp_file = DmsfFile.find_file_by_name @project1, nil, "#{temp_file_name}"
+ assert !temp_file, "File '#{temp_file_name}' should not exist yet."
+
+ # Move the original file to BBBBBBBB.tmp. The original file should not change but a new file should be created.
+ assert_no_difference 'original_file.dmsf_file_revisions.count' do
+ xml_http_request :move, "/dmsf/webdav/#{@project1.identifier}/#{original_file.name}", nil,
+ @jsmith.merge!({:destination => "http://www.example.com/dmsf/webdav/#{@project1.identifier}/#{temp_file_name}"})
+ assert_response 201 # Created
+ end
+
+ # Verify that a new file acutally has been created
+ temp_file = DmsfFile.find_file_by_name @project1, nil, "#{temp_file_name}"
+ assert temp_file, "File '#{temp_file_name}' not found, move failed."
+ assert_equal temp_file.dmsf_file_revisions.count,1
+ assert_not_equal temp_file.id, original_file.id
+
+ # Move a temporary file (use BBBBBBBB.tmp) to the original file.
+ assert_no_difference 'original_file.dmsf_file_revisions.count' do
+ xml_http_request :move, "/dmsf/webdav/#{@project1.identifier}/#{temp_file_name}", nil,
+ @jsmith.merge!({:destination => "http://www.example.com/dmsf/webdav/#{@project1.identifier}/#{original_file.name}"})
+ assert_response 201 # Created
+ end
end
end
diff --git a/test/integration/webdav/dmsf_webdav_options_test.rb b/test/integration/webdav/dmsf_webdav_options_test.rb
index f213b495..add44259 100644
--- a/test/integration/webdav/dmsf_webdav_options_test.rb
+++ b/test/integration/webdav/dmsf_webdav_options_test.rb
@@ -48,20 +48,24 @@ class DmsfWebdavOptionsTest < RedmineDmsf::Test::IntegrationTest
def test_options_returns_expected_allow_header_for_ro
Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] = 'WEBDAV_READ_ONLY'
- xml_http_request :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'
+ if Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] == 'WEBDAV_READ_ONLY'
+ xml_http_request :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
Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] = 'WEBDAV_READ_WRITE'
- xml_http_request :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,PUT,POST,DELETE,PROPPATCH,MKCOL,COPY,MOVE,LOCK,UNLOCK'
+ if Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] == 'WEBDAV_READ_WRITE'
+ xml_http_request :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,PUT,POST,DELETE,PROPPATCH,MKCOL,COPY,MOVE,LOCK,UNLOCK'
+ end
end
def test_options_returns_expected_dav_header
@@ -107,11 +111,13 @@ class DmsfWebdavOptionsTest < RedmineDmsf::Test::IntegrationTest
def test_authenticated_options_returns_expected_allow_header
Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] = 'WEBDAV_READ_WRITE'
- xml_http_request :options, "/dmsf/webdav/#{@project1.identifier}", nil, @admin
- 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,PUT,POST,DELETE,PROPPATCH,MKCOL,COPY,MOVE,LOCK,UNLOCK'
+ if Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] == 'WEBDAV_READ_WRITE'
+ xml_http_request :options, "/dmsf/webdav/#{@project1.identifier}", nil, @admin
+ 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,PUT,POST,DELETE,PROPPATCH,MKCOL,COPY,MOVE,LOCK,UNLOCK'
+ end
end
def test_authenticated_options_returns_expected_dav_header
@@ -130,31 +136,32 @@ class DmsfWebdavOptionsTest < RedmineDmsf::Test::IntegrationTest
end
def test_un_authenticated_options_for_msoffice_user_agent
- xml_http_request :options, "/dmsf/webdav/#{@project1.identifier}", nil, {:HTTP_USER_AGENT => "Microsoft Office Word 2014"}
+ xml_http_request :options, "/dmsf/webdav/#{@project1.identifier}", nil, {:HTTP_USER_AGENT => 'Microsoft Office Word 2014'}
assert_response 405
end
def test_authenticated_options_for_msoffice_user_agent
- xml_http_request :options, "/dmsf/webdav/#{@project1.identifier}", nil, @admin.merge!({:HTTP_USER_AGENT => "Microsoft Office Word 2014"})
+ xml_http_request :options, "/dmsf/webdav/#{@project1.identifier}", nil, @admin.merge!({:HTTP_USER_AGENT => 'Microsoft Office Word 2014'})
assert_response :success
end
def test_un_authenticated_options_for_other_user_agent
- xml_http_request :options, "/dmsf/webdav/#{@project1.identifier}", nil, {:HTTP_USER_AGENT => "Other"}
+ xml_http_request :options, "/dmsf/webdav/#{@project1.identifier}", nil, {:HTTP_USER_AGENT => 'Other'}
assert_response 401
end
def test_authenticated_options_for_other_user_agent
- xml_http_request :options, "/dmsf/webdav/#{@project1.identifier}", nil, @admin.merge!({:HTTP_USER_AGENT => "Other"})
+ xml_http_request :options, "/dmsf/webdav/#{@project1.identifier}", nil, @admin.merge!({:HTTP_USER_AGENT => 'Other'})
assert_response :success
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
- 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"})
- assert_response :success
+ if Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] == true
+ 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'})
+ assert_response :success
+ end
end
def test_authenticated_options_returns_404_for_non_dmsf_enabled_items
diff --git a/test/integration/webdav/dmsf_webdav_propfind_test.rb b/test/integration/webdav/dmsf_webdav_propfind_test.rb
index 68c5d2ff..ce412ef0 100644
--- a/test/integration/webdav/dmsf_webdav_propfind_test.rb
+++ b/test/integration/webdav/dmsf_webdav_propfind_test.rb
@@ -58,19 +58,17 @@ class DmsfWebdavPropfindTest < RedmineDmsf::Test::IntegrationTest
end
def test_propfind_denied_for_anonymous
- xml_http_request :propfind, "/dmsf/webdav/", nil,
- {:HTTP_DEPTH => "0"}
+ xml_http_request :propfind, '/dmsf/webdav/', nil,
+ {:HTTP_DEPTH => '0'}
assert_response 401
-# puts "\nPROPFIND response.body:\n#{response.body}" unless response.body.nil?
end
def test_propfind_depth0_on_root_for_non_member
- xml_http_request :propfind, "/dmsf/webdav/", nil,
- @jsmith.merge!({:HTTP_DEPTH => "0"})
-
+ xml_http_request :propfind, '/dmsf/webdav/', nil,
+ @jsmith.merge!({:HTTP_DEPTH => '0'})
assert_response 207 # MultiStatus
- assert_match "http://www.example.com:80/dmsf/webdav/", response.body
- assert_match "/", response.body
+ assert_match 'http://www.example.com:80/dmsf/webdav/', response.body
+ assert_match '/', response.body
assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/", response.body
assert_no_match "#{@project1.identifier}", response.body
assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project2.identifier}/", response.body
@@ -78,12 +76,12 @@ class DmsfWebdavPropfindTest < RedmineDmsf::Test::IntegrationTest
end
def test_propfind_depth1_on_root_for_non_member
- xml_http_request :propfind, "/dmsf/webdav/", nil,
- @jsmith.merge!({:HTTP_DEPTH => "1"})
+ xml_http_request :propfind, '/dmsf/webdav/', nil,
+ @jsmith.merge!({:HTTP_DEPTH => '1'})
assert_response 207 # MultiStatus
- assert_match "http://www.example.com:80/dmsf/webdav/", response.body
- assert_match "/", response.body
+ assert_match 'http://www.example.com:80/dmsf/webdav/', response.body
+ assert_match '/', response.body
assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/", response.body
assert_no_match "#{@project1.identifier}", response.body
assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project2.identifier}/", response.body
@@ -91,12 +89,12 @@ class DmsfWebdavPropfindTest < RedmineDmsf::Test::IntegrationTest
end
def test_propfind_depth0_on_root_for_admin
- xml_http_request :propfind, "/dmsf/webdav/", nil,
- @admin.merge!({:HTTP_DEPTH => "0"})
+ xml_http_request :propfind, '/dmsf/webdav/', nil,
+ @admin.merge!({:HTTP_DEPTH => '0'})
assert_response 207 # MultiStatus
- assert_match "http://www.example.com:80/dmsf/webdav/", response.body
- assert_match "/", response.body
+ assert_match 'http://www.example.com:80/dmsf/webdav/', response.body
+ assert_match '/', response.body
assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/", response.body
assert_no_match "#{@project1.identifier}", response.body
assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project2.identifier}/", response.body
@@ -104,12 +102,12 @@ class DmsfWebdavPropfindTest < RedmineDmsf::Test::IntegrationTest
end
def test_propfind_depth1_on_root_for_admin
- xml_http_request :propfind, "/dmsf/webdav/", nil,
- @admin.merge!({:HTTP_DEPTH => "1"})
+ xml_http_request :propfind, '/dmsf/webdav/', nil,
+ @admin.merge!({:HTTP_DEPTH => '1'})
assert_response 207 # MultiStatus
- assert_match "http://www.example.com:80/dmsf/webdav/", response.body
- assert_match "/", response.body
+ assert_match 'http://www.example.com:80/dmsf/webdav/', response.body
+ assert_match 'D:displayname>/', response.body
assert_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/", response.body
assert_match "#{@project1.identifier}", response.body
assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project2.identifier}/", response.body
@@ -118,34 +116,33 @@ class DmsfWebdavPropfindTest < RedmineDmsf::Test::IntegrationTest
def test_propfind_depth1_on_root_for_admin_with_project_names
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
- xml_http_request :propfind, "/dmsf/webdav/", nil,
- @admin.merge!({:HTTP_DEPTH => "1"})
-
- assert_response 207 # MultiStatus
- assert_match "http://www.example.com:80/dmsf/webdav/", response.body
- assert_match "/", response.body
-
- # project.identifier should not match when using project names
- assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/", response.body
- assert_no_match "#{@project1.identifier}", response.body
-
- # but the project name should match
- assert_match "http://www.example.com:80/dmsf/webdav/#{@project1_uri}/", response.body
- assert_match "#{@project1_name}", response.body
+ if Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] == true
+ xml_http_request :propfind, '/dmsf/webdav/', nil,
+ @admin.merge!({:HTTP_DEPTH => '1'})
+ assert_response 207 # MultiStatus
+ assert_match 'http://www.example.com:80/dmsf/webdav/', response.body
+ assert_match '/', response.body
+ # project.identifier should not match when using project names
+ assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/", response.body
+ assert_no_match "#{@project1.identifier}", response.body
+ # but the project name should match
+ assert_match "http://www.example.com:80/dmsf/webdav/#{@project1_uri}/", response.body
+ assert_match "#{@project1_name}", response.body
+ end
end
def test_propfind_depth0_on_project1_for_non_member
xml_http_request :propfind, "/dmsf/webdav/#{@project1.identifier}", nil,
- @jsmith.merge!({:HTTP_DEPTH => "0"})
+ @jsmith.merge!({:HTTP_DEPTH => '0'})
assert_response 404
end
def test_propfind_depth0_on_project1_for_admin
xml_http_request :propfind, "/dmsf/webdav/#{@project1.identifier}", nil,
- @admin.merge!({:HTTP_DEPTH => "0"})
+ @admin.merge!({:HTTP_DEPTH => '0'})
assert_response 207 # MultiStatus
- assert_no_match "http://www.example.com:80/dmsf/webdav/", response.body
- assert_no_match "/", response.body
+ assert_no_match 'http://www.example.com:80/dmsf/webdav/', response.body
+ assert_no_match '/', response.body
# Project
assert_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/", response.body
assert_match "#{@project1.identifier}", response.body
@@ -165,29 +162,29 @@ class DmsfWebdavPropfindTest < RedmineDmsf::Test::IntegrationTest
def test_propfind_depth0_on_project1_for_admin_with_project_names
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
-
- xml_http_request :propfind, "/dmsf/webdav/#{@project1.identifier}", nil,
- @admin.merge!({:HTTP_DEPTH => "0"})
- assert_response 404
-
- xml_http_request :propfind, "/dmsf/webdav/#{@project1_uri}", nil,
- @admin.merge!({:HTTP_DEPTH => "0"})
- assert_response 207 # MultiStatus
- assert_no_match "http://www.example.com:80/dmsf/webdav/", response.body
- assert_no_match "/", response.body
- # Project
- assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/", response.body
- assert_no_match "#{@project1.identifier}", response.body
- assert_match "http://www.example.com:80/dmsf/webdav/#{@project1_uri}/", response.body
- assert_match "#{@project1_name}", response.body
+ if Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] == true
+ xml_http_request :propfind, "/dmsf/webdav/#{@project1.identifier}", nil,
+ @admin.merge!({:HTTP_DEPTH => '0'})
+ assert_response 404
+ xml_http_request :propfind, "/dmsf/webdav/#{@project1_uri}", nil,
+ @admin.merge!({:HTTP_DEPTH => '0'})
+ assert_response 207 # MultiStatus
+ assert_no_match 'http://www.example.com:80/dmsf/webdav/', response.body
+ assert_no_match '/', response.body
+ # Project
+ assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/", response.body
+ assert_no_match "#{@project1.identifier}", response.body
+ assert_match "http://www.example.com:80/dmsf/webdav/#{@project1_uri}/", response.body
+ assert_match "#{@project1_name}", response.body
+ end
end
def test_propfind_depth1_on_project1_for_admin
xml_http_request :propfind, "/dmsf/webdav/#{@project1.identifier}", nil,
- @admin.merge!({:HTTP_DEPTH => "1"})
+ @admin.merge!({:HTTP_DEPTH => '1'})
assert_response 207 # MultiStatus
- assert_no_match "http://www.example.com:80/dmsf/webdav/", response.body
- assert_no_match "/", response.body
+ assert_no_match 'http://www.example.com:80/dmsf/webdav/', response.body
+ assert_no_match '/', response.body
# Project
assert_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/", response.body
assert_match "#{@project1.identifier}", response.body
@@ -207,93 +204,95 @@ class DmsfWebdavPropfindTest < RedmineDmsf::Test::IntegrationTest
def test_propfind_depth1_on_project1_for_admin_with_project_names
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
-
- xml_http_request :propfind, "/dmsf/webdav/#{@project1.identifier}", nil,
- @admin.merge!({:HTTP_DEPTH => "1"})
- assert_response 404
-
- xml_http_request :propfind, "/dmsf/webdav/#{@project1_uri}", nil,
- @admin.merge!({:HTTP_DEPTH => "1"})
- assert_response 207 # MultiStatus
+ if Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] == true
+ xml_http_request :propfind, "/dmsf/webdav/#{@project1.identifier}", nil,
+ @admin.merge!({:HTTP_DEPTH => '1'})
+ assert_response 404
- assert_no_match "http://www.example.com:80/dmsf/webdav/", response.body
- assert_no_match "/", response.body
-
- # Project
- assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/", response.body
- assert_no_match "#{@project1.identifier}", response.body
- assert_match "http://www.example.com:80/dmsf/webdav/#{@project1_uri}/", response.body
- assert_match "#{@project1_name}", response.body
-
- # Folders
- assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@folder1.title}/", response.body
- assert_match "http://www.example.com:80/dmsf/webdav/#{@project1_uri}/#{@folder1.title}/", response.body
- assert_match "#{@folder1.title}", response.body
- assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@folder6.title}/", response.body
- assert_match "http://www.example.com:80/dmsf/webdav/#{@project1_uri}/#{@folder6.title}/", response.body
- assert_match "#{@folder6.title}", response.body
-
- # Files
- assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@file1.name}", response.body
- assert_match "http://www.example.com:80/dmsf/webdav/#{@project1_uri}/#{@file1.name}", response.body
- assert_match "#{@file1.name}", response.body
- assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@file9.name}", response.body
- assert_match "http://www.example.com:80/dmsf/webdav/#{@project1_uri}/#{@file9.name}", response.body
- assert_match "#{@file9.name}", response.body
- assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@file10.name}", response.body
- assert_match "http://www.example.com:80/dmsf/webdav/#{@project1_uri}/#{@file10.name}", response.body
- assert_match "#{@file10.name}", response.body
+ xml_http_request :propfind, "/dmsf/webdav/#{@project1_uri}", nil,
+ @admin.merge!({:HTTP_DEPTH => '1'})
+ assert_response 207 # MultiStatus
+
+ assert_no_match 'http://www.example.com:80/dmsf/webdav/', response.body
+ assert_no_match '/', response.body
+
+ # Project
+ assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/", response.body
+ assert_no_match "#{@project1.identifier}", response.body
+ assert_match "http://www.example.com:80/dmsf/webdav/#{@project1_uri}/", response.body
+ assert_match "#{@project1_name}", response.body
+
+ # Folders
+ assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@folder1.title}/", response.body
+ assert_match "http://www.example.com:80/dmsf/webdav/#{@project1_uri}/#{@folder1.title}/", response.body
+ assert_match "#{@folder1.title}", response.body
+ assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@folder6.title}/", response.body
+ assert_match "http://www.example.com:80/dmsf/webdav/#{@project1_uri}/#{@folder6.title}/", response.body
+ assert_match "#{@folder6.title}", response.body
+
+ # Files
+ assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@file1.name}", response.body
+ assert_match "http://www.example.com:80/dmsf/webdav/#{@project1_uri}/#{@file1.name}", response.body
+ assert_match "#{@file1.name}", response.body
+ assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@file9.name}", response.body
+ assert_match "http://www.example.com:80/dmsf/webdav/#{@project1_uri}/#{@file9.name}", response.body
+ assert_match "#{@file9.name}", response.body
+ assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@file10.name}", response.body
+ assert_match "http://www.example.com:80/dmsf/webdav/#{@project1_uri}/#{@file10.name}", response.body
+ assert_match "#{@file10.name}", response.body
+ end
end
def test_propfind_depth1_on_root_for_admin_with_project_names_and_cache
RedmineDmsf::Webdav::Cache.init_testcache
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
+ if Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] == true
+ # PROPSTATS for / and project1 should be cached.
+ assert_difference 'RedmineDmsf::Webdav::Cache.cache.instance_variable_get(:@data).count', +2 do
+ xml_http_request :propfind, '/dmsf/webdav/', nil,
+ @admin.merge!({:HTTP_DEPTH => '1'})
+ end
- # PROPSTATS for / and project1 should be cached.
- assert_difference 'RedmineDmsf::Webdav::Cache.cache.instance_variable_get(:@data).count', +2 do
- xml_http_request :propfind, "/dmsf/webdav/", nil,
- @admin.merge!({:HTTP_DEPTH => "1"})
- end
-
- assert_response 207 # MultiStatus
- assert_match "http://www.example.com:80/dmsf/webdav/", response.body
- assert_match "/", response.body
-
- # project.identifier should not match when using project names
- assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/", response.body
- assert_no_match "#{@project1.identifier}", response.body
-
- # but the project name should match
- assert_match "http://www.example.com:80/dmsf/webdav/#{@project1_uri}/", response.body
- assert_match "#{@project1_name}", response.body
-
- # Rename project1
- @project1.name = "Online Cookbook"
- @project1.save!
- project1_new_name = RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1)
- project1_new_uri = URI.encode(project1_new_name, /\W/)
-
- # 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
- xml_http_request :propfind, "/dmsf/webdav/", nil,
- @admin.merge!({:HTTP_DEPTH => "1"})
- end
-
- assert_response 207 # MultiStatus
- assert_match "http://www.example.com:80/dmsf/webdav/", response.body
- assert_match "/", response.body
-
- # project.identifier should not match when using project names
- assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/", response.body
- assert_no_match "#{@project1.identifier}", response.body
-
- # old project name should not match
- assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project1_uri}/", response.body
- assert_no_match "#{@project1_name}", response.body
+ assert_response 207 # MultiStatus
+ assert_match 'http://www.example.com:80/dmsf/webdav/', response.body
+ assert_match '/', response.body
- # but new project name should match
- assert_match "http://www.example.com:80/dmsf/webdav/#{project1_new_uri}/", response.body
- assert_match "#{project1_new_name}", response.body
+ # project.identifier should not match when using project names
+ assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/", response.body
+ assert_no_match "#{@project1.identifier}", response.body
+
+ # but the project name should match
+ assert_match "http://www.example.com:80/dmsf/webdav/#{@project1_uri}/", response.body
+ assert_match "#{@project1_name}", response.body
+
+ # Rename project1
+ @project1.name = 'Online Cookbook'
+ @project1.save!
+ project1_new_name = RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1)
+ project1_new_uri = URI.encode(project1_new_name, /\W/)
+
+ # 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
+ xml_http_request :propfind, '/dmsf/webdav/', nil,
+ @admin.merge!({:HTTP_DEPTH => '1'})
+ end
+
+ assert_response 207 # MultiStatus
+ assert_match 'http://www.example.com:80/dmsf/webdav/', response.body
+ assert_match '/', response.body
+
+ # project.identifier should not match when using project names
+ assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/", response.body
+ assert_no_match "#{@project1.identifier}", response.body
+
+ # old project name should not match
+ assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project1_uri}/", response.body
+ assert_no_match "#{@project1_name}", response.body
+
+ # but new project name should match
+ assert_match "http://www.example.com:80/dmsf/webdav/#{project1_new_uri}/", response.body
+ assert_match "#{project1_new_name}", response.body
+ end
end
def test_propfind_depth0_on_project1_for_admin_with_cache
@@ -301,7 +300,7 @@ class DmsfWebdavPropfindTest < RedmineDmsf::Test::IntegrationTest
assert_difference 'RedmineDmsf::Webdav::Cache.cache.instance_variable_get(:@data).count', +1 do
xml_http_request :propfind, "/dmsf/webdav/#{@project1.identifier}", nil,
- @admin.merge!({:HTTP_DEPTH => "0"})
+ @admin.merge!({:HTTP_DEPTH => '0'})
assert_response 207 # MultiStatus
end
@@ -316,7 +315,7 @@ class DmsfWebdavPropfindTest < RedmineDmsf::Test::IntegrationTest
assert_no_difference 'RedmineDmsf::Webdav::Cache.cache.instance_variable_get(:@data).count' do
xml_http_request :propfind, "/dmsf/webdav/#{@project1.identifier}", nil,
- @admin.merge!({:HTTP_DEPTH => "0"})
+ @admin.merge!({:HTTP_DEPTH => '0'})
assert_response 207 # MultiStatus
end
assert_match "Cached PROPSTATS/#{@project1.identifier}", response.body
@@ -327,7 +326,7 @@ class DmsfWebdavPropfindTest < RedmineDmsf::Test::IntegrationTest
assert_difference 'RedmineDmsf::Webdav::Cache.cache.instance_variable_get(:@data).count', +7 do
xml_http_request :propfind, "/dmsf/webdav/#{@project1.identifier}", nil,
- @admin.merge!({:HTTP_DEPTH => "1"})
+ @admin.merge!({:HTTP_DEPTH => '1'})
assert_response 207 # MultiStatus
end
@@ -352,7 +351,7 @@ class DmsfWebdavPropfindTest < RedmineDmsf::Test::IntegrationTest
RedmineDmsf::Webdav::Cache.write("PROPFIND/#{@project1.id}", "Cached PROPFIND/#{@project1.id}")
assert_no_difference 'RedmineDmsf::Webdav::Cache.cache.instance_variable_get(:@data).count' do
xml_http_request :propfind, "/dmsf/webdav/#{@project1.identifier}", nil,
- @admin.merge!({:HTTP_DEPTH => "1"})
+ @admin.merge!({:HTTP_DEPTH => '1'})
assert_response 207 # MultiStatus
assert_match "Cached PROPFIND/#{@project1.id}", response.body
end
diff --git a/test/integration/webdav/dmsf_webdav_put_test.rb b/test/integration/webdav/dmsf_webdav_put_test.rb
index eb5b28fe..93d180f6 100644
--- a/test/integration/webdav/dmsf_webdav_put_test.rb
+++ b/test/integration/webdav/dmsf_webdav_put_test.rb
@@ -94,19 +94,21 @@ class DmsfWebdavPutTest < RedmineDmsf::Test::IntegrationTest
end
def test_put_as_admin_granted_on_dmsf_enabled_project
- put "/dmsf/webdav/#{@project1.identifier}/test-1234.txt", '1234', @admin.merge!({:content_type => :text})
- assert_response :success # 201 Created
- # 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 = URI.encode(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1), /\W/)
-
- 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})
- assert_response :success # 201 Created
+ if Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] == 'WEBDAV_READ_WRITE'
+ put "/dmsf/webdav/#{@project1.identifier}/test-1234.txt", '1234', @admin.merge!({:content_type => :text})
+ assert_response :success # 201 Created
+ # 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
+ if Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] == true
+ project1_uri = URI.encode(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1), /\W/)
+ 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})
+ assert_response :success # 201 Created
+ end
+ end
end
def test_put_failed_as_jsmith_on_non_dmsf_enabled_project
@@ -147,18 +149,21 @@ class DmsfWebdavPutTest < RedmineDmsf::Test::IntegrationTest
@project1.enable_module! :dmsf # Flag module enabled
@role.add_permission! :view_dmsf_folders
@role.add_permission! :file_manipulation
- put "/dmsf/webdav/#{@project1.identifier}/test-1234.txt", '1234', @jsmith.merge!({:content_type => :text})
- assert_response :success # 201 - Now we have permissions
- # Lets check for our file
- file = DmsfFile.find_file_by_name @project1, nil, 'test-1234.txt'
- assert file, 'File test-1234 was not found in projects dmsf folder.'
-
- Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
- project1_uri = URI.encode(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1), /\W/)
- 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})
- assert_response :success # 201 - Now we have permissions
+ if Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] == 'WEBDAV_READ_WRITE'
+ put "/dmsf/webdav/#{@project1.identifier}/test-1234.txt", '1234', @jsmith.merge!({:content_type => :text})
+ assert_response :success # 201 - Now we have permissions
+ # Lets check for our file
+ file = DmsfFile.find_file_by_name @project1, nil, 'test-1234.txt'
+ 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 = URI.encode(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1), /\W/)
+ 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})
+ assert_response :success # 201 - Now we have permissions
+ end
+ end
end
def test_put_writes_revision_successfully_for_unlocked_file