Updated tests for using project names.

This commit is contained in:
COLA@Redmine.local 2017-02-14 21:41:40 +01:00
parent d58f6c23cc
commit f4ca9a6273
8 changed files with 280 additions and 45 deletions

View File

@ -40,6 +40,7 @@ class DmsfWebdavDeleteTest < RedmineDmsf::Test::IntegrationTest
@file1 = DmsfFile.find_by_id 1
Setting.plugin_redmine_dmsf['dmsf_webdav'] = '1'
Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] = 'WEBDAV_READ_WRITE'
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = false
DmsfFile.storage_path = File.expand_path '../../../fixtures/files', __FILE__
User.current = nil
end
@ -169,6 +170,23 @@ class DmsfWebdavDeleteTest < RedmineDmsf::Test::IntegrationTest
end
end
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_display_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
def test_file_delete_by_administrator
if Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] == 'WEBDAV_READ_WRITE'
@project1.enable_module! :dmsf
@ -191,6 +209,25 @@ class DmsfWebdavDeleteTest < RedmineDmsf::Test::IntegrationTest
end
end
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_display_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
def test_locked_folder
@project1.enable_module! :dmsf # Flag module enabled
@role.add_permission! :view_dmsf_folders

View File

@ -34,6 +34,7 @@ class DmsfWebdavGetTest < RedmineDmsf::Test::IntegrationTest
@role = Role.find_by_id 1 # Manager
Setting.plugin_redmine_dmsf['dmsf_webdav'] = '1'
Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] = 'WEBDAV_READ_WRITE'
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = false
DmsfFile.storage_path = File.expand_path '../../../fixtures/files', __FILE__
User.current = nil
end
@ -62,13 +63,21 @@ class DmsfWebdavGetTest < RedmineDmsf::Test::IntegrationTest
def test_should_list_dmsf_enabled_project
get '/dmsf/webdav', nil, @admin
assert_response :success
assert !response.body.match(@project1.name).nil?, "Expected to find project #{@project1.name} 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
project1_uri = RedmineDmsf::Webdav::ProjectResource.create_display_name(@project1)
get '/dmsf/webdav', nil, @admin
assert_response :success
assert_no_match @project1.identifier, response.body
assert_match project1_uri, response.body
end
def test_should_not_list_non_dmsf_enabled_project
get '/dmsf/webdav', nil, @jsmith
assert_response :success
assert response.body.match(@project2.name).nil?, "Unexpected find of project #{@project2.name} in return data"
assert response.body.match(@project2.identifier).nil?, "Unexpected find of project #{@project2.identifier} in return data"
end
def test_should_return_status_404_when_project_does_not_exist
@ -85,6 +94,15 @@ class DmsfWebdavGetTest < RedmineDmsf::Test::IntegrationTest
def test_download_file_from_dmsf_enabled_project
get "/dmsf/webdav/#{@project1.identifier}/test.txt", nil, @admin
assert_response :success
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
project1_uri = URI.encode(RedmineDmsf::Webdav::ProjectResource.create_display_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
def test_should_list_dmsf_contents_within_project

View File

@ -32,7 +32,11 @@ class DmsfWebdavHeadTest < RedmineDmsf::Test::IntegrationTest
@project1 = Project.find_by_id 1
@project2 = Project.find_by_id 2
Setting.plugin_redmine_dmsf['dmsf_webdav'] = '1'
Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] = 'WEBDAV_READ_WRITE'
Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] = 'WEBDAV_READ_WRITE'
# Temporarily enable project names
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
@project1_uri = URI.encode(RedmineDmsf::Webdav::ProjectResource.create_display_name(@project1), /\W/)
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = false
DmsfFile.storage_path = File.expand_path '../../../fixtures/files', __FILE__
User.current = nil
end
@ -52,12 +56,28 @@ class DmsfWebdavHeadTest < RedmineDmsf::Test::IntegrationTest
head "/dmsf/webdav/#{@project1.identifier}", nil, @admin
assert_response :success
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
end
def test_head_responds_anonymous_msoffice_user_agent
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
end
def test_head_responds_anonymous_other_user_agent
@ -75,12 +95,28 @@ class DmsfWebdavHeadTest < RedmineDmsf::Test::IntegrationTest
head "/dmsf/webdav/#{@project1.identifier}/test.txt", nil, @admin
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, @admin
assert_response 404
head "/dmsf/webdav/#{@project1_uri}/test.txt", nil, @admin
assert_response :success
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"}
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
end
def test_head_responds_to_file_anonymous_other_user_agent

View File

@ -35,6 +35,7 @@ class DmsfWebdavMkcolTest < RedmineDmsf::Test::IntegrationTest
@folder6 = DmsfFolder.find_by_id 6
Setting.plugin_redmine_dmsf['dmsf_webdav'] = '1'
Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] = 'WEBDAV_READ_WRITE'
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = false
DmsfFile.storage_path = File.expand_path '../../../fixtures/files', __FILE__
User.current = nil
end
@ -98,12 +99,19 @@ class DmsfWebdavMkcolTest < RedmineDmsf::Test::IntegrationTest
end
def test_should_create_folder_for_non_admin_user_with_rights
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
end
@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_display_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

View File

@ -46,6 +46,7 @@ class DmsfWebdavMoveTest < RedmineDmsf::Test::IntegrationTest
Setting.plugin_redmine_dmsf['dmsf_webdav'] = '1'
Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] = 'WEBDAV_READ_WRITE'
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = false
super
end
@ -130,6 +131,21 @@ class DmsfWebdavMoveTest < RedmineDmsf::Test::IntegrationTest
assert f, "Moved file '#{new_name}' not found in project."
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_display_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
def test_move_zero_sized_to_new_filename
file = DmsfFile.find_by_id 10
@ -158,6 +174,23 @@ class DmsfWebdavMoveTest < RedmineDmsf::Test::IntegrationTest
assert_equal folder.id, file2.dmsf_folder_id
end
end
def test_move_to_new_folder_with_project_names
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_display_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
end
end
def test_move_zero_sized_to_new_folder
file = DmsfFile.find_by_id 10

View File

@ -33,6 +33,7 @@ class DmsfWebdavOptionsTest < RedmineDmsf::Test::IntegrationTest
@project2 = Project.find_by_id 2
Setting.plugin_redmine_dmsf['dmsf_webdav'] = '1'
Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] = 'WEBDAV_READ_WRITE'
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = false
end
def test_truth
@ -60,8 +61,7 @@ class DmsfWebdavOptionsTest < RedmineDmsf::Test::IntegrationTest
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'
# TODO: Unable to set the 'WEBDAV_READ_WRITE' mode
#assert_equal response.headers['Allow'], 'OPTIONS,HEAD,GET,PROPFIND,PUT,POST,DELETE,PROPPATCH,MKCOL,COPY,MOVE,LOCK,UNLOCK'
assert_equal response.headers['Allow'], 'OPTIONS,HEAD,GET,PROPFIND,PUT,POST,DELETE,PROPPATCH,MKCOL,COPY,MOVE,LOCK,UNLOCK'
end
def test_options_returns_expected_dav_header
@ -111,8 +111,7 @@ class DmsfWebdavOptionsTest < RedmineDmsf::Test::IntegrationTest
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'
# TODO: Unable to set the 'WEBDAV_READ_WRITE' mode
#assert_equal response.headers['Allow'], 'OPTIONS,HEAD,GET,PROPFIND,PUT,POST,DELETE,PROPPATCH,MKCOL,COPY,MOVE,LOCK,UNLOCK'
assert_equal response.headers['Allow'], 'OPTIONS,HEAD,GET,PROPFIND,PUT,POST,DELETE,PROPPATCH,MKCOL,COPY,MOVE,LOCK,UNLOCK'
end
def test_authenticated_options_returns_expected_dav_header
@ -148,18 +147,25 @@ class DmsfWebdavOptionsTest < RedmineDmsf::Test::IntegrationTest
def test_authenticated_options_for_other_user_agent
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_display_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
# TODO: It doesn't work
# def test_authenticated_options_returns_401_for_non_dmsf_enabled_items
# @project2.disable_module! :dmsf
# xml_http_request :options, "/dmsf/webdav/#{@project2.identifier}", nil, @jsmith
# assert_response 401 # refused
# end
#
# def test_authenticated_options_returns_401_for_not_found
# xml_http_request :options, '/dmsf/webdav/does-not-exist', nil, @jsmith
# assert_response 401 # refused
# end
def test_authenticated_options_returns_404_for_non_dmsf_enabled_items
@project2.disable_module! :dmsf
xml_http_request :options, "/dmsf/webdav/#{@project2.identifier}", nil, @jsmith
assert_response 404
end
def test_authenticated_options_returns_404_for_not_found
xml_http_request :options, '/dmsf/webdav/does-not-exist', nil, @jsmith
assert_response 404
end
end

View File

@ -20,6 +20,7 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
require File.expand_path('../../../test_helper', __FILE__)
require 'uri'
class DmsfWebdavPropfindTest < RedmineDmsf::Test::IntegrationTest
@ -42,6 +43,8 @@ class DmsfWebdavPropfindTest < RedmineDmsf::Test::IntegrationTest
Setting.plugin_redmine_dmsf['dmsf_webdav'] = '1'
Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] = 'WEBDAV_READ_WRITE'
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = false
RedmineDmsf::Webdav::Cache.init_nullcache
end
def test_truth
@ -108,6 +111,26 @@ class DmsfWebdavPropfindTest < RedmineDmsf::Test::IntegrationTest
assert_no_match "<D:displayname>#{@project2.identifier}</D:displayname>", response.body
end
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 "<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
p1name = RedmineDmsf::Webdav::ProjectResource.create_display_name(@project1)
p1name_uri = URI.encode(p1name, /\W/)
assert_match "<D:href>http://www.example.com:80/dmsf/webdav/#{p1name_uri}/</D:href>", response.body
assert_match "<D:displayname>#{p1name}</D:displayname>", response.body
end
def test_propfind_depth0_on_project1_for_non_member
xml_http_request :propfind, "/dmsf/webdav/#{@project1.identifier}", nil,
@jsmith.merge!({:HTTP_DEPTH => "0"})
@ -136,6 +159,28 @@ class DmsfWebdavPropfindTest < RedmineDmsf::Test::IntegrationTest
assert_no_match "<D:href>http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@file10.name}</D:href>", response.body
assert_no_match "<D:displayname>#{@file10.name}</D:displayname>", response.body
end
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
p1name = RedmineDmsf::Webdav::ProjectResource.create_display_name(@project1)
p1name_uri = URI.encode(p1name, /\W/)
xml_http_request :propfind, "/dmsf/webdav/#{p1name_uri}", nil,
@admin.merge!({:HTTP_DEPTH => "0"})
assert_response 207 # MultiStatus
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
# Project
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_match "<D:href>http://www.example.com:80/dmsf/webdav/#{p1name_uri}/</D:href>", response.body
assert_match "<D:displayname>#{p1name}</D:displayname>", response.body
end
def test_propfind_depth1_on_project1_for_admin
xml_http_request :propfind, "/dmsf/webdav/#{@project1.identifier}", nil,
@ -160,6 +205,50 @@ class DmsfWebdavPropfindTest < RedmineDmsf::Test::IntegrationTest
assert_match "<D:displayname>#{@file10.name}</D:displayname>", response.body
end
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
p1name = RedmineDmsf::Webdav::ProjectResource.create_display_name(@project1)
p1name_uri = URI.encode(p1name, /\W/)
xml_http_request :propfind, "/dmsf/webdav/#{p1name_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
assert_no_match "<D:displayname>/</D:displayname>", response.body
# Project
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_match "<D:href>http://www.example.com:80/dmsf/webdav/#{p1name_uri}/</D:href>", response.body
assert_match "<D:displayname>#{p1name}</D:displayname>", response.body
# Folders
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/#{p1name_uri}/#{@folder1.title}/</D:href>", 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
assert_match "<D:href>http://www.example.com:80/dmsf/webdav/#{p1name_uri}/#{@folder6.title}/</D:href>", response.body
assert_match "<D:displayname>#{@folder6.title}</D:displayname>", response.body
# Files
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/#{p1name_uri}/#{@file1.name}</D:href>", 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
assert_match "<D:href>http://www.example.com:80/dmsf/webdav/#{p1name_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/#{p1name_uri}/#{@file10.name}</D:href>", response.body
assert_match "<D:displayname>#{@file10.name}</D:displayname>", response.body
end
def test_propfind_depth0_on_project1_for_admin_with_cache
RedmineDmsf::Webdav::Cache.init_testcache
@ -184,8 +273,6 @@ class DmsfWebdavPropfindTest < RedmineDmsf::Test::IntegrationTest
assert_response 207 # MultiStatus
end
assert_match "Cached PROPSTATS/#{@project1.identifier}", response.body
RedmineDmsf::Webdav::Cache.init_nullcache
end
def test_propfind_depth1_on_project1_for_admin_with_cache
@ -237,8 +324,6 @@ class DmsfWebdavPropfindTest < RedmineDmsf::Test::IntegrationTest
assert_match "Cached PROPSTATS/#{@project1.identifier}", response.body
assert_match "Cached PROPSTATS/#{@project1.identifier}", RedmineDmsf::Webdav::Cache.read("PROPFIND/#{@project1.id}")
assert !RedmineDmsf::Webdav::Cache.exist?("PROPFIND/#{@project1.id}.invalid")
RedmineDmsf::Webdav::Cache.init_nullcache
end
end

View File

@ -39,6 +39,7 @@ class DmsfWebdavPutTest < RedmineDmsf::Test::IntegrationTest
@role = Role.find 1 #
Setting.plugin_redmine_dmsf['dmsf_webdav'] = '1'
Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] = 'WEBDAV_READ_WRITE'
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = false
super
end
@ -93,13 +94,19 @@ class DmsfWebdavPutTest < RedmineDmsf::Test::IntegrationTest
end
def test_put_as_admin_granted_on_dmsf_enabled_project
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'
end
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_display_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
def test_put_failed_as_jsmith_on_non_dmsf_enabled_project
@ -137,16 +144,21 @@ class DmsfWebdavPutTest < RedmineDmsf::Test::IntegrationTest
end
def test_put_succeeds_for_non_admin_with_correct_permissions
if Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] == 'WEBDAV_READ_WRITE'
@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.'
end
@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_display_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
def test_put_writes_revision_successfully_for_unlocked_file