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