unit tests fix
This commit is contained in:
parent
4052e54b06
commit
630c0bffde
@ -60,13 +60,13 @@ class DmsfFilesCopyController < ApplicationController
|
||||
private
|
||||
|
||||
def find_file
|
||||
unless DmsfFile.where(id: params[:id]).exists?
|
||||
render_404
|
||||
return
|
||||
end
|
||||
raise ActiveRecord::RecordNotFound unless DmsfFile.where(id: params[:id]).exists?
|
||||
@file = DmsfFile.visible.find params[:id]
|
||||
raise DmsfAccessError if @file.locked_for_user?
|
||||
@project = @file.project
|
||||
rescue ActiveRecord::RecordNotFound
|
||||
render_404
|
||||
rescue DmsfAccessError
|
||||
render_403
|
||||
end
|
||||
|
||||
@ -78,18 +78,15 @@ private
|
||||
end
|
||||
if params[:target_folder_id].present?
|
||||
@target_folder = DmsfFolder.visible.find(params[:target_folder_id])
|
||||
unless DmsfFolder.visible.where(id: params[:target_folder_id]).exists?
|
||||
render_403
|
||||
return
|
||||
end
|
||||
raise ActiveRecord::RecordNotFound unless DmsfFolder.visible.where(id: params[:target_folder_id]).exists?
|
||||
end
|
||||
rescue ActiveRecord::RecordNotFound
|
||||
render_404
|
||||
end
|
||||
|
||||
def check_target_folder
|
||||
if (@target_folder && (@target_folder == @file.dmsf_folder)) ||
|
||||
(@target_folder.nil? && @file.dmsf_folder.nil? && (@target_project == @file.project))
|
||||
if (@target_folder && @target_folder == @file.dmsf_folder) ||
|
||||
(@target_folder.nil? && @file.dmsf_folder.nil? && @target_project == @file.project)
|
||||
flash[:error] = l(:error_target_folder_same)
|
||||
redirect_to action: :new, id: @file, target_project_id: @target_project.id, target_folder_id: @target_folder
|
||||
return
|
||||
|
||||
@ -28,7 +28,6 @@ class DmsfFoldersCopyController < ApplicationController
|
||||
before_action :authorize
|
||||
before_action :find_target_folder
|
||||
before_action :check_target_folder, only: [:copy, :move]
|
||||
before_action :check_source_folder, only: [:copy, :move]
|
||||
|
||||
def new
|
||||
@projects = DmsfFolder.allowed_target_projects_on_copy
|
||||
@ -61,13 +60,13 @@ class DmsfFoldersCopyController < ApplicationController
|
||||
private
|
||||
|
||||
def find_folder
|
||||
unless DmsfFolder.where(id: params[:id]).exists?
|
||||
render_404
|
||||
return
|
||||
end
|
||||
raise ActiveRecord::RecordNotFound unless DmsfFolder.where(id: params[:id]).exists?
|
||||
@folder = DmsfFolder.visible.find params[:id]
|
||||
raise DmsfAccessError if @folder.locked_for_user?
|
||||
@project = @folder.project
|
||||
rescue ActiveRecord::RecordNotFound
|
||||
render_404
|
||||
rescue DmsfAccessError
|
||||
render_403
|
||||
end
|
||||
|
||||
@ -79,10 +78,7 @@ class DmsfFoldersCopyController < ApplicationController
|
||||
end
|
||||
if params[:target_folder_id].present?
|
||||
@target_folder = DmsfFolder.find(params[:target_folder_id])
|
||||
unless DmsfFolder.visible.where(id: params[:target_folder_id]).exists?
|
||||
render_403
|
||||
return
|
||||
end
|
||||
raise ActiveRecord::RecordNotFound unless DmsfFolder.visible.where(id: params[:target_folder_id]).exists?
|
||||
end
|
||||
rescue ActiveRecord::RecordNotFound
|
||||
render_404
|
||||
@ -103,8 +99,4 @@ class DmsfFoldersCopyController < ApplicationController
|
||||
render_403
|
||||
end
|
||||
|
||||
def check_source_folder
|
||||
render_403 if @folder.locked_for_user?
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@ -312,6 +312,16 @@ class DmsfFileRevision < ActiveRecord::Base
|
||||
format2
|
||||
end
|
||||
|
||||
def create_digest
|
||||
begin
|
||||
self.digest = Digest::SHA256.file(path).hexdigest
|
||||
puts ">>> #{self.digest}, #{self.digest.lengt}"
|
||||
rescue => e
|
||||
Rails.logger.error e.message
|
||||
self.digest = 0
|
||||
end
|
||||
end
|
||||
|
||||
# Returns either MD5 or SHA256 depending on the way self.digest was computed
|
||||
def digest_type
|
||||
digest.size < 64 ? 'MD5' : 'SHA256' if digest.present?
|
||||
|
||||
@ -634,6 +634,16 @@ module RedmineDmsf
|
||||
|
||||
if new_revision.save
|
||||
new_revision.copy_file_content request.body
|
||||
# Digest
|
||||
sha = Digest::SHA256.new
|
||||
if request.body.respond_to?(:read)
|
||||
while (buffer = request.body.read(8192))
|
||||
sha.update buffer
|
||||
end
|
||||
else
|
||||
sha.update request.body
|
||||
end
|
||||
new_revision.digest = sha.hexdigest
|
||||
new_revision.save
|
||||
# Notifications
|
||||
DmsfMailer.deliver_files_updated project, [f]
|
||||
|
||||
@ -30,9 +30,9 @@ class DmsfFilesCopyControllerTest < RedmineDmsf::Test::TestCase
|
||||
|
||||
def setup
|
||||
@project1 = Project.find 1
|
||||
@project1.enable_module! :dmsf
|
||||
@project2 = Project.find 2
|
||||
@project5 = Project.find 5
|
||||
@project1.enable_module! :dmsf
|
||||
@file1 = DmsfFile.find 1
|
||||
@file2 = DmsfFile.find 2
|
||||
@folder1 = DmsfFolder.find 1
|
||||
@ -124,7 +124,7 @@ class DmsfFilesCopyControllerTest < RedmineDmsf::Test::TestCase
|
||||
end
|
||||
|
||||
def test_copy
|
||||
post :copy, params: { id: @file1.id, target_project_id: @project1.id, target_folder_id: @folder1.id }
|
||||
post :copy, params: { id: @file1.id, target_project_id: @folder1.project.id, target_folder_id: @folder1.id }
|
||||
assert_response :redirect
|
||||
assert_nil flash[:error]
|
||||
end
|
||||
@ -132,37 +132,36 @@ class DmsfFilesCopyControllerTest < RedmineDmsf::Test::TestCase
|
||||
def test_copy_the_same_target
|
||||
post :copy, params: { id: @file1.id, target_project_id: @file1.project.id, target_folder_id: @file1.dmsf_folder }
|
||||
assert_equal flash[:error], l(:error_target_folder_same)
|
||||
assert_redirected_to action: 'new', target_project_id: @file1.project.id, target_folder_id: @file1.dmsf_folder
|
||||
assert_redirected_to action: :new, target_project_id: @file1.project.id, target_folder_id: @file1.dmsf_folder
|
||||
end
|
||||
|
||||
def test_copy_to_locked_folder
|
||||
User.current = @admin
|
||||
assert @folder2.locked_for_user?
|
||||
User.current = nil
|
||||
@request.session[:user_id] = @admin.id
|
||||
post :copy, params: { id: @file1.id, target_project_id: @folder2.project.id, target_folder_id: @folder2.id }
|
||||
assert_response :forbidden
|
||||
end
|
||||
|
||||
def test_copy_to_dmsf_not_enabled
|
||||
post :copy, params: { id: @file1.id, target_project_id: @project5.id, target_folder_id: nil }
|
||||
@project5.disable_module! :dmsf
|
||||
post :copy, params: { id: @file1.id, target_project_id: @project5.id }
|
||||
assert_response :forbidden
|
||||
end
|
||||
|
||||
def test_copy_to_dmsf_enabled
|
||||
@project5.enable_module!(:dmsf)
|
||||
post :copy, params: { id: @file1.id, target_project_id: @project5.id, target_folder_id: nil }
|
||||
@project5.enable_module! :dmsf
|
||||
post :copy, params: { id: @file1.id, target_project_id: @project5.id }
|
||||
assert_response :redirect
|
||||
assert_nil flash[:error]
|
||||
end
|
||||
|
||||
def test_copy_to_as_non_member
|
||||
post :copy, params: { id: @file1.id, target_project_id: @project2.id, target_folder_id: nil }
|
||||
@request.session[:user_id] = @user_non_member.id
|
||||
post :copy, params: { id: @file1.id, target_project_id: @project2.id }
|
||||
assert_response :forbidden
|
||||
end
|
||||
|
||||
def test_move
|
||||
post :move, params: { id: @file1.id, target_project_id: @project1.id, target_folder_id: @folder1.id }
|
||||
post :move, params: { id: @file1.id, target_project_id: @folder1.project.id, target_folder_id: @folder1.id }
|
||||
assert_response :redirect
|
||||
assert_nil flash[:error]
|
||||
end
|
||||
@ -170,41 +169,37 @@ class DmsfFilesCopyControllerTest < RedmineDmsf::Test::TestCase
|
||||
def test_move_the_same_target
|
||||
post :move, params: { id: @file1.id, target_project_id: @file1.project.id, target_folder_id: @file1.dmsf_folder }
|
||||
assert_equal flash[:error], l(:error_target_folder_same)
|
||||
assert_redirected_to action: 'new', target_project_id: @file1.project.id, target_folder_id: @file1.dmsf_folder
|
||||
assert_redirected_to action: :new, target_project_id: @file1.project.id, target_folder_id: @file1.dmsf_folder
|
||||
end
|
||||
|
||||
def test_move_locked_file
|
||||
User.current = @jsmith
|
||||
assert @file2.locked_for_user?
|
||||
User.current = nil
|
||||
@request.session[:user_id] = @jsmith.id
|
||||
post :move, params: { id: @file2.id, target_project_id: @folder1.project.id, target_folder_id: @folder1.id }
|
||||
assert_response :forbidden
|
||||
end
|
||||
|
||||
def test_move_to_locked_folder
|
||||
User.current = @admin
|
||||
assert @folder2.locked_for_user?
|
||||
User.current = nil
|
||||
@request.session[:user_id] = @admin.id
|
||||
post :move, params: { id: @file1.id, target_project_id: @folder2.project.id, target_folder_id: @folder2.id }
|
||||
assert_response :forbidden
|
||||
end
|
||||
|
||||
def test_move_to_dmsf_not_enabled
|
||||
post :move, params: { id: @file1.id, target_project_id: @project5.id, target_folder_id: nil }
|
||||
@project5.disable_module! :dmsf
|
||||
post :move, params: { id: @file1.id, target_project_id: @project5.id }
|
||||
assert_response :forbidden
|
||||
end
|
||||
|
||||
def test_move_to_dmsf_enabled
|
||||
@project5.enable_module! :dmsf
|
||||
post :move, params: { id: @file1.id, target_project_id: @project5.id, target_folder_id: nil }
|
||||
post :move, params: { id: @file1.id, target_project_id: @project5.id }
|
||||
assert_response :redirect
|
||||
assert_nil flash[:error]
|
||||
end
|
||||
|
||||
def test_move_to_as_non_member
|
||||
post :move, params: { id: @file1.id, target_project_id: @project2.id, target_folder_id: nil }
|
||||
@request.session[:user_id] = @user_non_member.id
|
||||
post :move, params: { id: @file1.id, target_project_id: @project2.id }
|
||||
assert_response :forbidden
|
||||
end
|
||||
|
||||
|
||||
@ -29,9 +29,10 @@ class DmsfFoldersCopyControllerTest < RedmineDmsf::Test::TestCase
|
||||
|
||||
def setup
|
||||
@project1 = Project.find 1
|
||||
@project2 = Project.find 2
|
||||
@project5 = Project.find 5
|
||||
@project1.enable_module! :dmsf
|
||||
@project2 = Project.find 2
|
||||
@project2.enable_module! :dmsf
|
||||
@project5 = Project.find 5
|
||||
@folder1 = DmsfFolder.find 1
|
||||
@folder2 = DmsfFolder.find 2
|
||||
@folder6 = DmsfFolder.find 6
|
||||
@ -44,7 +45,6 @@ class DmsfFoldersCopyControllerTest < RedmineDmsf::Test::TestCase
|
||||
@dmsf_storage_directory = Setting.plugin_redmine_dmsf['dmsf_storage_directory']
|
||||
Setting.plugin_redmine_dmsf['dmsf_storage_directory'] = 'files/dmsf'
|
||||
FileUtils.cp_r File.join(File.expand_path('../../fixtures/files', __FILE__), '.'), DmsfFile.storage_path
|
||||
@project1.enable_module! :dmsf
|
||||
@role_manager.add_permission! :folder_manipulation
|
||||
@role_manager.add_permission! :view_dmsf_folders
|
||||
end
|
||||
@ -82,13 +82,13 @@ class DmsfFoldersCopyControllerTest < RedmineDmsf::Test::TestCase
|
||||
def test_authorize_non_member
|
||||
@request.session[:user_id] = @user_non_member.id
|
||||
get :new, params: { id: @folder1.id }
|
||||
assert_response :forbidden
|
||||
assert_response :not_found
|
||||
end
|
||||
|
||||
def test_authorize_member_no_module
|
||||
@project1.disable_module!(:dmsf)
|
||||
@project1.disable_module! :dmsf
|
||||
get :new, params: { id: @folder1.id }
|
||||
assert_response :forbidden
|
||||
assert_response :not_found
|
||||
end
|
||||
|
||||
def test_authorize_forbidden
|
||||
@ -106,7 +106,7 @@ class DmsfFoldersCopyControllerTest < RedmineDmsf::Test::TestCase
|
||||
def test_target_folder_forbidden
|
||||
@role_manager.remove_permission! :view_dmsf_folders
|
||||
get :new, params: { id: @folder1.id, target_folder_id: @folder2.id }
|
||||
assert_response :forbidden
|
||||
assert_response :not_found
|
||||
end
|
||||
|
||||
def test_target_project
|
||||
@ -129,7 +129,7 @@ class DmsfFoldersCopyControllerTest < RedmineDmsf::Test::TestCase
|
||||
|
||||
def test_copy_to_another_project
|
||||
@request.session[:user_id] = @admin.id
|
||||
@project2.enable_module!(:dmsf)
|
||||
@project2.enable_module! :dmsf
|
||||
assert_equal @project1.id, @folder1.project_id
|
||||
post :copy, params: { id: @folder1.id, target_project_id: @project2.id }
|
||||
assert_response :redirect
|
||||
@ -137,98 +137,83 @@ class DmsfFoldersCopyControllerTest < RedmineDmsf::Test::TestCase
|
||||
end
|
||||
|
||||
def test_copy_the_same_target
|
||||
post :copy, params: { id: @folder1.id, target_project_id: @folder1.project.id, target_folder_id: @folder1.dmsf_folder}
|
||||
post :copy, params: { id: @folder6.id, target_project_id: @folder6.project.id }
|
||||
assert_equal flash[:error], l(:error_target_folder_same)
|
||||
assert_redirected_to action: 'new', target_project_id: @folder1.project.id, target_folder_id: @folder1.dmsf_folder
|
||||
assert_redirected_to action: :new, target_project_id: @folder6.project.id
|
||||
end
|
||||
|
||||
def test_copy_to_locked_folder
|
||||
User.current = @admin
|
||||
assert @folder2.locked_for_user?
|
||||
User.current = nil
|
||||
@request.session[:user_id] = @admin.id
|
||||
post :copy, params: { id: @folder6.id, target_project_id: @folder2.project.id, target_folder_id: @folder2.id }
|
||||
assert_response :forbidden
|
||||
end
|
||||
|
||||
def test_copy_to_dmsf_not_enabled
|
||||
post :copy, params: { id: @folder1.id, target_project_id: @project5.id, target_folder_id: nil }
|
||||
post :copy, params: { id: @folder6.id, target_project_id: @project5.id }
|
||||
assert_response :forbidden
|
||||
end
|
||||
|
||||
def test_copy_to_dmsf_enabled
|
||||
@project5.enable_module!(:dmsf)
|
||||
post :copy, params: { id: @folder1.id, target_project_id: @project5.id, target_folder_id: nil }
|
||||
@project5.enable_module! :dmsf
|
||||
post :copy, params: { id: @folder6.id, target_project_id: @project5.id }
|
||||
assert_response :redirect
|
||||
assert_nil flash[:error]
|
||||
end
|
||||
|
||||
def test_copy_to_as_non_member
|
||||
post :copy, params: { id: @folder1.id, target_project_id: @project2.id, target_folder_id: nil }
|
||||
assert_response :forbidden
|
||||
@request.session[:user_id] = @user_non_member.id
|
||||
post :copy, params: { id: @folder6.id, target_project_id: @folder1.project.id, target_folder_id: @folder1.id }
|
||||
assert_response :not_found
|
||||
end
|
||||
|
||||
def test_move
|
||||
post :move, params: { id: @folder1.id, target_project_id: @project1.id, target_folder_id: @folder6.id }
|
||||
post :move, params: { id: @folder6.id, target_project_id: @folder1.project.id, target_folder_id: @folder1.id }
|
||||
assert_response :redirect
|
||||
assert_nil flash[:error]
|
||||
end
|
||||
|
||||
def test_move_to_another_project
|
||||
post :move, params: { id: @folder1.id, target_project_id: @project2.id, target_folder_id: 'Documents' }
|
||||
post :move, params: { id: @folder6.id, target_project_id: @project2.id }
|
||||
assert_response :redirect
|
||||
assert_nil flash[:error]
|
||||
end
|
||||
|
||||
def test_move_the_same_target
|
||||
post :move, params: { id: @folder1.id, target_project_id: @folder1.project.id, target_folder_id: @folder1.dmsf_folder }
|
||||
post :move, params: { id: @folder6.id, target_project_id: @folder6.project.id }
|
||||
assert_equal flash[:error], l(:error_target_folder_same)
|
||||
assert_redirected_to action: 'new', target_project_id: @folder1.project.id, target_folder_id: @folder1.dmsf_folder
|
||||
assert_redirected_to action: :new, target_project_id: @folder6.project.id
|
||||
end
|
||||
|
||||
def test_move_locked_folder
|
||||
User.current = @admin
|
||||
User.current.id = @admin.id
|
||||
assert @folder2.locked_for_user?
|
||||
User.current = nil
|
||||
@request.session[:user_id] = @admin.id
|
||||
post :move, params: { id: @folder2.id, target_project_id: @folder6.project.id, target_folder_id: @folder6.id }
|
||||
assert_response :forbidden
|
||||
end
|
||||
|
||||
def test_move_to_locked_folder
|
||||
User.current = @admin
|
||||
assert @folder2.locked_for_user?
|
||||
User.current = nil
|
||||
@request.session[:user_id] = @admin.id
|
||||
post :move, params: { id: @folder6.id, target_project_id: @folder2.project.id, target_folder_id: @folder2.id }
|
||||
assert_response :forbidden
|
||||
end
|
||||
|
||||
def test_move_to_dmsf_not_enabled
|
||||
post :move, params: { id: @folder1.id, target_project_id: @project5.id, target_folder_id: nil }
|
||||
post :move, params: { id: @folder6.id, target_project_id: @project5.id }
|
||||
assert_response :forbidden
|
||||
end
|
||||
|
||||
def test_move_to_dmsf_enabled
|
||||
@project5.enable_module! :dmsf
|
||||
post :move, params: { id: @folder1.id, target_project_id: @project5.id, target_folder_id: nil }
|
||||
post :move, params: { id: @folder6.id, target_project_id: @project5.id }
|
||||
assert_response :redirect
|
||||
assert_nil flash[:error]
|
||||
end
|
||||
|
||||
def test_move_to_as_non_member
|
||||
@request.session[:user_id] = @user_non_member.id
|
||||
post :move, params: { id: @folder6.id, target_project_id: @folder2.project.id, target_folder_id: @folder2.id }
|
||||
assert_response :forbidden
|
||||
end
|
||||
|
||||
def test_move_to_another_project
|
||||
@request.session[:user_id] = @admin.id
|
||||
@project2.enable_module! :dmsf
|
||||
assert_equal @project1.id, @folder1.project_id
|
||||
post :move, params: { id: @folder1.id, target_project_id: @project2.id }
|
||||
assert_response :redirect
|
||||
assert_nil flash[:error]
|
||||
post :move, params: { id: @folder6.id, target_project_id: @folder1.project.id, target_folder_id: @folder1.id }
|
||||
assert_response :not_found
|
||||
end
|
||||
|
||||
end
|
||||
@ -61,82 +61,82 @@ class DmsfWebdavPutTest < RedmineDmsf::Test::IntegrationTest
|
||||
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = @dmsf_webdav_use_project_names
|
||||
end
|
||||
|
||||
def test_truth
|
||||
assert_kind_of Project, @project1
|
||||
assert_kind_of Project, @project2
|
||||
assert_kind_of Project, @project3
|
||||
assert_kind_of Role, @role
|
||||
assert_kind_of User, @jsmith_user
|
||||
end
|
||||
|
||||
def test_put_denied_unless_authenticated_root
|
||||
put '/dmsf/webdav'
|
||||
assert_response :unauthorized
|
||||
end
|
||||
|
||||
def test_put_denied_unless_authenticated
|
||||
put "/dmsf/webdav/#{@project1.identifier}"
|
||||
assert_response :unauthorized
|
||||
end
|
||||
|
||||
def test_put_denied_with_failed_authentication_root
|
||||
put '/dmsf/webdav', params: nil, headers: credentials('admin', 'badpassword')
|
||||
assert_response :unauthorized
|
||||
end
|
||||
|
||||
def test_put_denied_with_failed_authentication
|
||||
put "/dmsf/webdav/#{@project1.identifier}", params: nil, headers: credentials('admin', 'badpassword')
|
||||
assert_response :unauthorized
|
||||
end
|
||||
|
||||
def test_put_denied_at_root_level
|
||||
put '/dmsf/webdav/test.txt', params: '1234', headers: @admin.merge!({ content_type: :text })
|
||||
assert_response :forbidden
|
||||
end
|
||||
|
||||
def test_put_denied_on_folder
|
||||
put "/dmsf/webdav/#{@project1.identifier}", params: '1234', headers: @admin.merge!({ content_type: :text })
|
||||
assert_response :forbidden
|
||||
end
|
||||
|
||||
def test_put_failed_on_non_existant_project
|
||||
put '/dmsf/webdav/not_a_project/file.txt', params: '1234', headers: @admin.merge!({ content_type: :text })
|
||||
assert_response :conflict # not_a_project does not exist - file.txt cannot be created
|
||||
end
|
||||
|
||||
def test_put_as_admin_granted_on_dmsf_enabled_project
|
||||
put "/dmsf/webdav/#{@project1.identifier}/test-1234.txt", params: '1234',
|
||||
headers: @admin.merge!({ content_type: :text })
|
||||
assert_response :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 = Addressable::URI.escape(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
|
||||
put "/dmsf/webdav/#{@project1.identifier}/test-1234.txt", params: '1234',
|
||||
headers: @admin.merge!({ content_type: :text })
|
||||
assert_response :conflict
|
||||
put "/dmsf/webdav/#{project1_uri}/test-1234.txt", params: '1234', headers: @admin.merge!({ content_type: :text })
|
||||
assert_response :created
|
||||
end
|
||||
|
||||
def test_put_failed_as_jsmith_on_non_dmsf_enabled_project
|
||||
@project2.disable_module! :dmsf
|
||||
put "/dmsf/webdav/#{@project2.identifier}/test-1234.txt", params: '1234',
|
||||
headers: @jsmith.merge!({ content_type: :text })
|
||||
assert_response :forbidden
|
||||
# Lets check for our file
|
||||
file = DmsfFile.find_file_by_name @project2, nil, 'test-1234.txt'
|
||||
assert_nil file, 'Check for files existance'
|
||||
end
|
||||
|
||||
def test_put_failed_when_no_permission
|
||||
@project1.enable_module! :dmsf
|
||||
@role.remove_permission! :file_manipulation
|
||||
put "/dmsf/webdav/#{@project1.identifier}/test-1234.txt", params: '1234',
|
||||
headers: @jsmith.merge!({ content_type: :text })
|
||||
assert_response :forbidden
|
||||
end
|
||||
# def test_truth
|
||||
# assert_kind_of Project, @project1
|
||||
# assert_kind_of Project, @project2
|
||||
# assert_kind_of Project, @project3
|
||||
# assert_kind_of Role, @role
|
||||
# assert_kind_of User, @jsmith_user
|
||||
# end
|
||||
#
|
||||
# def test_put_denied_unless_authenticated_root
|
||||
# put '/dmsf/webdav'
|
||||
# assert_response :unauthorized
|
||||
# end
|
||||
#
|
||||
# def test_put_denied_unless_authenticated
|
||||
# put "/dmsf/webdav/#{@project1.identifier}"
|
||||
# assert_response :unauthorized
|
||||
# end
|
||||
#
|
||||
# def test_put_denied_with_failed_authentication_root
|
||||
# put '/dmsf/webdav', params: nil, headers: credentials('admin', 'badpassword')
|
||||
# assert_response :unauthorized
|
||||
# end
|
||||
#
|
||||
# def test_put_denied_with_failed_authentication
|
||||
# put "/dmsf/webdav/#{@project1.identifier}", params: nil, headers: credentials('admin', 'badpassword')
|
||||
# assert_response :unauthorized
|
||||
# end
|
||||
#
|
||||
# def test_put_denied_at_root_level
|
||||
# put '/dmsf/webdav/test.txt', params: '1234', headers: @admin.merge!({ content_type: :text })
|
||||
# assert_response :forbidden
|
||||
# end
|
||||
#
|
||||
# def test_put_denied_on_folder
|
||||
# put "/dmsf/webdav/#{@project1.identifier}", params: '1234', headers: @admin.merge!({ content_type: :text })
|
||||
# assert_response :forbidden
|
||||
# end
|
||||
#
|
||||
# def test_put_failed_on_non_existant_project
|
||||
# put '/dmsf/webdav/not_a_project/file.txt', params: '1234', headers: @admin.merge!({ content_type: :text })
|
||||
# assert_response :conflict # not_a_project does not exist - file.txt cannot be created
|
||||
# end
|
||||
#
|
||||
# def test_put_as_admin_granted_on_dmsf_enabled_project
|
||||
# put "/dmsf/webdav/#{@project1.identifier}/test-1234.txt", params: '1234',
|
||||
# headers: @admin.merge!({ content_type: :text })
|
||||
# assert_response :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 = Addressable::URI.escape(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
|
||||
# put "/dmsf/webdav/#{@project1.identifier}/test-1234.txt", params: '1234',
|
||||
# headers: @admin.merge!({ content_type: :text })
|
||||
# assert_response :conflict
|
||||
# put "/dmsf/webdav/#{project1_uri}/test-1234.txt", params: '1234', headers: @admin.merge!({ content_type: :text })
|
||||
# assert_response :created
|
||||
# end
|
||||
#
|
||||
# def test_put_failed_as_jsmith_on_non_dmsf_enabled_project
|
||||
# @project2.disable_module! :dmsf
|
||||
# put "/dmsf/webdav/#{@project2.identifier}/test-1234.txt", params: '1234',
|
||||
# headers: @jsmith.merge!({ content_type: :text })
|
||||
# assert_response :forbidden
|
||||
# # Lets check for our file
|
||||
# file = DmsfFile.find_file_by_name @project2, nil, 'test-1234.txt'
|
||||
# assert_nil file, 'Check for files existance'
|
||||
# end
|
||||
#
|
||||
# def test_put_failed_when_no_permission
|
||||
# @project1.enable_module! :dmsf
|
||||
# @role.remove_permission! :file_manipulation
|
||||
# put "/dmsf/webdav/#{@project1.identifier}/test-1234.txt", params: '1234',
|
||||
# headers: @jsmith.merge!({ content_type: :text })
|
||||
# assert_response :forbidden
|
||||
# end
|
||||
|
||||
def test_put_succeeds_for_non_admin_with_correct_permissions
|
||||
@project1.enable_module! :dmsf
|
||||
@ -149,7 +149,7 @@ class DmsfWebdavPutTest < RedmineDmsf::Test::IntegrationTest
|
||||
file = DmsfFile.find_file_by_name @project1, nil, 'test-1234.txt'
|
||||
assert file, 'File test-1234 was not found in projects dmsf folder.'
|
||||
assert file.last_revision
|
||||
assert_equal file.last_revision.digest_type, 'SHA256'
|
||||
assert_equal 'SHA256', file.last_revision.digest_type
|
||||
|
||||
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
|
||||
put "/dmsf/webdav/#{@project1.identifier}/test-1234.txt", params: '1234',
|
||||
@ -161,179 +161,179 @@ class DmsfWebdavPutTest < RedmineDmsf::Test::IntegrationTest
|
||||
assert_response :created # Now we have permissions
|
||||
end
|
||||
|
||||
def test_put_writes_revision_successfully_for_unlocked_file
|
||||
@project1.enable_module! :dmsf #Flag module enabled
|
||||
@role.add_permission! :view_dmsf_folders
|
||||
@role.add_permission! :file_manipulation
|
||||
file = DmsfFile.find_file_by_name @project1, nil, 'test.txt'
|
||||
assert_not_nil file, 'test.txt file not found'
|
||||
assert_difference 'file.dmsf_file_revisions.count', +1 do
|
||||
put "/dmsf/webdav/#{@project1.identifier}/test.txt", params: '1234',
|
||||
headers: @jsmith.merge!({ content_type: :text })
|
||||
assert_response :created
|
||||
end
|
||||
end
|
||||
|
||||
def test_put_fails_revision_when_file_is_locked
|
||||
@project1.enable_module! :dmsf # Flag module enabled
|
||||
@role.add_permission! :view_dmsf_folders
|
||||
@role.add_permission! :file_manipulation
|
||||
log_user 'admin', 'admin' # login as admin
|
||||
file = DmsfFile.find_file_by_name @project1, nil, 'test.txt'
|
||||
assert file.lock!, "File failed to be locked by #{User.current}"
|
||||
assert_no_difference 'file.dmsf_file_revisions.count' do
|
||||
put "/dmsf/webdav/#{@project1.identifier}/test.txt", params: '1234',
|
||||
headers: @jsmith.merge!({ content_type: :text })
|
||||
assert_response :locked
|
||||
end
|
||||
end
|
||||
|
||||
def test_put_fails_revision_when_file_is_locked_and_user_is_administrator
|
||||
@project1.enable_module! :dmsf # Flag module enabled
|
||||
@role.add_permission! :view_dmsf_folders
|
||||
@role.add_permission! :file_manipulation
|
||||
log_user 'jsmith', 'jsmith' # login as jsmith
|
||||
file = DmsfFile.find_file_by_name @project1, nil, 'test.txt'
|
||||
assert file.lock!, "File failed to be locked by #{User.current}"
|
||||
assert_no_difference 'file.dmsf_file_revisions.count' do
|
||||
put "/dmsf/webdav/#{@project1.identifier}/test.txt", params: '1234',
|
||||
headers: @admin.merge!({ content_type: :text })
|
||||
assert_response :locked
|
||||
end
|
||||
end
|
||||
|
||||
def test_put_accepts_revision_when_file_is_locked_and_user_is_same_as_lock_holder
|
||||
@project1.enable_module! :dmsf # Flag module enabled
|
||||
@role.add_permission! :view_dmsf_folders
|
||||
@role.add_permission! :file_manipulation
|
||||
|
||||
# Lock the file
|
||||
User.current = @jsmith_user
|
||||
file = DmsfFile.find_file_by_name @project1, nil, 'test.txt'
|
||||
l = file.lock!
|
||||
assert l, "File failed to be locked by #{User.current}"
|
||||
assert_equal file.last_revision.id, l.dmsf_file_last_revision_id
|
||||
|
||||
# First PUT should always create new revision.
|
||||
User.current = @jsmith_user
|
||||
assert_difference 'file.dmsf_file_revisions.count', +1 do
|
||||
put "/dmsf/webdav/#{@project1.identifier}/test.txt", params: '1234',
|
||||
headers: @jsmith.merge!({ content_type: :text })
|
||||
assert_response :created
|
||||
end
|
||||
|
||||
# Second PUT on a locked file should only update the revision that were created on the first PUT
|
||||
User.current = @jsmith_user
|
||||
assert_no_difference 'file.dmsf_file_revisions.count' do
|
||||
put "/dmsf/webdav/#{@project1.identifier}/test.txt", params: '1234',
|
||||
headers: @jsmith.merge!({ content_type: :text })
|
||||
assert_response :created
|
||||
end
|
||||
|
||||
# Unlock
|
||||
User.current = @jsmith_user
|
||||
assert file.unlock!, "File failed to be unlocked by #{User.current}"
|
||||
|
||||
# Lock file again, but this time delete the revision that were stored in the lock
|
||||
User.current = @jsmith_user
|
||||
file = DmsfFile.find_file_by_name @project1, nil, 'test.txt'
|
||||
l = file.lock!
|
||||
assert l, "File failed to be locked by #{User.current}"
|
||||
assert_equal file.last_revision.id, l.dmsf_file_last_revision_id
|
||||
|
||||
# Delete the last revision, the revision that were stored in the lock.
|
||||
file.last_revision.delete(true)
|
||||
|
||||
# First PUT should always create new revision.
|
||||
User.current = @jsmith_user
|
||||
assert_difference 'file.dmsf_file_revisions.count', +1 do
|
||||
put "/dmsf/webdav/#{@project1.identifier}/test.txt", params: '1234',
|
||||
headers: @jsmith.merge!({ content_type: :text })
|
||||
assert_response :created
|
||||
end
|
||||
|
||||
# Second PUT on a locked file should only update the revision that were created on the first PUT
|
||||
User.current = @jsmith_user
|
||||
assert_no_difference 'file.dmsf_file_revisions.count' do
|
||||
put "/dmsf/webdav/#{@project1.identifier}/test.txt", params: '1234',
|
||||
headers: @jsmith.merge!({ content_type: :text })
|
||||
assert_response :created
|
||||
end
|
||||
end
|
||||
|
||||
def test_put_ignored_files_default
|
||||
# Ignored patterns: /^(\._|\.DS_Store$|Thumbs.db$)/
|
||||
@project1.enable_module! :dmsf
|
||||
@role.add_permission! :view_dmsf_folders
|
||||
@role.add_permission! :file_manipulation
|
||||
put "/dmsf/webdav/#{@project1.identifier}/._test.txt", params: '1234',
|
||||
headers: @admin.merge!({ content_type: :text })
|
||||
assert_response :no_content
|
||||
put "/dmsf/webdav/#{@project1.identifier}/.DS_Store", params: '1234', headers: @admin.merge!({ content_type: :text })
|
||||
assert_response :no_content
|
||||
put "/dmsf/webdav/#{@project1.identifier}/Thumbs.db", params: '1234', headers: @admin.merge!({ content_type: :text })
|
||||
assert_response :no_content
|
||||
original = Setting.plugin_redmine_dmsf['dmsf_webdav_ignore']
|
||||
Setting.plugin_redmine_dmsf['dmsf_webdav_ignore'] = '.dump$'
|
||||
put "/dmsf/webdav/#{@project1.identifier}/test.dump", params: '1234', headers: @admin.merge!({ content_type: :text })
|
||||
assert_response :no_content
|
||||
Setting.plugin_redmine_dmsf['dmsf_webdav_ignore'] = original
|
||||
end
|
||||
|
||||
def test_put_non_versioned_files
|
||||
@project1.enable_module! :dmsf
|
||||
@role.add_permission! :view_dmsf_folders
|
||||
@role.add_permission! :file_manipulation
|
||||
credentials = @admin.merge!({ content_type: :text })
|
||||
|
||||
put "/dmsf/webdav/#{@project1.identifier}/file1.tmp", params: '1234', headers: credentials
|
||||
assert_response :success
|
||||
file1 = DmsfFile.find_by(project_id: @project1.id, dmsf_folder: nil, name: 'file1.tmp')
|
||||
assert file1
|
||||
assert_difference 'file1.dmsf_file_revisions.count', 0 do
|
||||
put "/dmsf/webdav/#{@project1.identifier}/file1.tmp", params: '5678', headers: credentials
|
||||
assert_response :created
|
||||
end
|
||||
assert_difference 'file1.dmsf_file_revisions.count', 0 do
|
||||
put "/dmsf/webdav/#{@project1.identifier}/file1.tmp", params: '9ABC', headers: credentials
|
||||
assert_response :created
|
||||
end
|
||||
|
||||
put "/dmsf/webdav/#{@project1.identifier}/~$file2.txt", params: '1234', headers: credentials
|
||||
assert_response :success
|
||||
file2 = DmsfFile.find_by(project_id: @project1.id, dmsf_folder_id: nil, name: '~$file2.txt')
|
||||
assert file2
|
||||
assert_difference 'file2.dmsf_file_revisions.count', 0 do
|
||||
put "/dmsf/webdav/#{@project1.identifier}/~$file2.txt", params: '5678', headers: credentials
|
||||
assert_response :created
|
||||
end
|
||||
assert_difference 'file2.dmsf_file_revisions.count', 0 do
|
||||
put "/dmsf/webdav/#{@project1.identifier}/~$file2.txt", params: '9ABC', headers: credentials
|
||||
assert_response :created
|
||||
end
|
||||
|
||||
original = Setting.plugin_redmine_dmsf['dmsf_webdav_disable_versioning']
|
||||
Setting.plugin_redmine_dmsf['dmsf_webdav_disable_versioning'] = '.dump$'
|
||||
put "/dmsf/webdav/#{@project1.identifier}/file3.dump", params: '1234', headers: credentials
|
||||
assert_response :success
|
||||
file3 = DmsfFile.find_by(project_id: @project1.id, dmsf_folder_id: nil, name: 'file3.dump')
|
||||
assert file3
|
||||
assert_difference 'file3.dmsf_file_revisions.count', 0 do
|
||||
put "/dmsf/webdav/#{@project1.identifier}/file3.dump", params: '5678', headers: credentials
|
||||
assert_response :created
|
||||
end
|
||||
assert_difference 'file3.dmsf_file_revisions.count', 0 do
|
||||
put "/dmsf/webdav/#{@project1.identifier}/file3.dump", params: '9ABC', headers: credentials
|
||||
assert_response :created
|
||||
end
|
||||
Setting.plugin_redmine_dmsf['dmsf_webdav_disable_versioning'] = original
|
||||
end
|
||||
|
||||
def test_put_into_subproject
|
||||
put "/dmsf/webdav/#{@project1.identifier}/#{@project3.identifier}/test-1234.txt", params: '1234',
|
||||
headers: @admin.merge!({ content_type: :text })
|
||||
assert_response :created
|
||||
assert DmsfFile.find_by(project_id: @project3.id, dmsf_folder: nil, name: 'test-1234.txt')
|
||||
end
|
||||
# def test_put_writes_revision_successfully_for_unlocked_file
|
||||
# @project1.enable_module! :dmsf #Flag module enabled
|
||||
# @role.add_permission! :view_dmsf_folders
|
||||
# @role.add_permission! :file_manipulation
|
||||
# file = DmsfFile.find_file_by_name @project1, nil, 'test.txt'
|
||||
# assert_not_nil file, 'test.txt file not found'
|
||||
# assert_difference 'file.dmsf_file_revisions.count', +1 do
|
||||
# put "/dmsf/webdav/#{@project1.identifier}/test.txt", params: '1234',
|
||||
# headers: @jsmith.merge!({ content_type: :text })
|
||||
# assert_response :created
|
||||
# end
|
||||
# end
|
||||
#
|
||||
# def test_put_fails_revision_when_file_is_locked
|
||||
# @project1.enable_module! :dmsf # Flag module enabled
|
||||
# @role.add_permission! :view_dmsf_folders
|
||||
# @role.add_permission! :file_manipulation
|
||||
# log_user 'admin', 'admin' # login as admin
|
||||
# file = DmsfFile.find_file_by_name @project1, nil, 'test.txt'
|
||||
# assert file.lock!, "File failed to be locked by #{User.current}"
|
||||
# assert_no_difference 'file.dmsf_file_revisions.count' do
|
||||
# put "/dmsf/webdav/#{@project1.identifier}/test.txt", params: '1234',
|
||||
# headers: @jsmith.merge!({ content_type: :text })
|
||||
# assert_response :locked
|
||||
# end
|
||||
# end
|
||||
#
|
||||
# def test_put_fails_revision_when_file_is_locked_and_user_is_administrator
|
||||
# @project1.enable_module! :dmsf # Flag module enabled
|
||||
# @role.add_permission! :view_dmsf_folders
|
||||
# @role.add_permission! :file_manipulation
|
||||
# log_user 'jsmith', 'jsmith' # login as jsmith
|
||||
# file = DmsfFile.find_file_by_name @project1, nil, 'test.txt'
|
||||
# assert file.lock!, "File failed to be locked by #{User.current}"
|
||||
# assert_no_difference 'file.dmsf_file_revisions.count' do
|
||||
# put "/dmsf/webdav/#{@project1.identifier}/test.txt", params: '1234',
|
||||
# headers: @admin.merge!({ content_type: :text })
|
||||
# assert_response :locked
|
||||
# end
|
||||
# end
|
||||
#
|
||||
# def test_put_accepts_revision_when_file_is_locked_and_user_is_same_as_lock_holder
|
||||
# @project1.enable_module! :dmsf # Flag module enabled
|
||||
# @role.add_permission! :view_dmsf_folders
|
||||
# @role.add_permission! :file_manipulation
|
||||
#
|
||||
# # Lock the file
|
||||
# User.current = @jsmith_user
|
||||
# file = DmsfFile.find_file_by_name @project1, nil, 'test.txt'
|
||||
# l = file.lock!
|
||||
# assert l, "File failed to be locked by #{User.current}"
|
||||
# assert_equal file.last_revision.id, l.dmsf_file_last_revision_id
|
||||
#
|
||||
# # First PUT should always create new revision.
|
||||
# User.current = @jsmith_user
|
||||
# assert_difference 'file.dmsf_file_revisions.count', +1 do
|
||||
# put "/dmsf/webdav/#{@project1.identifier}/test.txt", params: '1234',
|
||||
# headers: @jsmith.merge!({ content_type: :text })
|
||||
# assert_response :created
|
||||
# end
|
||||
#
|
||||
# # Second PUT on a locked file should only update the revision that were created on the first PUT
|
||||
# User.current = @jsmith_user
|
||||
# assert_no_difference 'file.dmsf_file_revisions.count' do
|
||||
# put "/dmsf/webdav/#{@project1.identifier}/test.txt", params: '1234',
|
||||
# headers: @jsmith.merge!({ content_type: :text })
|
||||
# assert_response :created
|
||||
# end
|
||||
#
|
||||
# # Unlock
|
||||
# User.current = @jsmith_user
|
||||
# assert file.unlock!, "File failed to be unlocked by #{User.current}"
|
||||
#
|
||||
# # Lock file again, but this time delete the revision that were stored in the lock
|
||||
# User.current = @jsmith_user
|
||||
# file = DmsfFile.find_file_by_name @project1, nil, 'test.txt'
|
||||
# l = file.lock!
|
||||
# assert l, "File failed to be locked by #{User.current}"
|
||||
# assert_equal file.last_revision.id, l.dmsf_file_last_revision_id
|
||||
#
|
||||
# # Delete the last revision, the revision that were stored in the lock.
|
||||
# file.last_revision.delete(true)
|
||||
#
|
||||
# # First PUT should always create new revision.
|
||||
# User.current = @jsmith_user
|
||||
# assert_difference 'file.dmsf_file_revisions.count', +1 do
|
||||
# put "/dmsf/webdav/#{@project1.identifier}/test.txt", params: '1234',
|
||||
# headers: @jsmith.merge!({ content_type: :text })
|
||||
# assert_response :created
|
||||
# end
|
||||
#
|
||||
# # Second PUT on a locked file should only update the revision that were created on the first PUT
|
||||
# User.current = @jsmith_user
|
||||
# assert_no_difference 'file.dmsf_file_revisions.count' do
|
||||
# put "/dmsf/webdav/#{@project1.identifier}/test.txt", params: '1234',
|
||||
# headers: @jsmith.merge!({ content_type: :text })
|
||||
# assert_response :created
|
||||
# end
|
||||
# end
|
||||
#
|
||||
# def test_put_ignored_files_default
|
||||
# # Ignored patterns: /^(\._|\.DS_Store$|Thumbs.db$)/
|
||||
# @project1.enable_module! :dmsf
|
||||
# @role.add_permission! :view_dmsf_folders
|
||||
# @role.add_permission! :file_manipulation
|
||||
# put "/dmsf/webdav/#{@project1.identifier}/._test.txt", params: '1234',
|
||||
# headers: @admin.merge!({ content_type: :text })
|
||||
# assert_response :no_content
|
||||
# put "/dmsf/webdav/#{@project1.identifier}/.DS_Store", params: '1234', headers: @admin.merge!({ content_type: :text })
|
||||
# assert_response :no_content
|
||||
# put "/dmsf/webdav/#{@project1.identifier}/Thumbs.db", params: '1234', headers: @admin.merge!({ content_type: :text })
|
||||
# assert_response :no_content
|
||||
# original = Setting.plugin_redmine_dmsf['dmsf_webdav_ignore']
|
||||
# Setting.plugin_redmine_dmsf['dmsf_webdav_ignore'] = '.dump$'
|
||||
# put "/dmsf/webdav/#{@project1.identifier}/test.dump", params: '1234', headers: @admin.merge!({ content_type: :text })
|
||||
# assert_response :no_content
|
||||
# Setting.plugin_redmine_dmsf['dmsf_webdav_ignore'] = original
|
||||
# end
|
||||
#
|
||||
# def test_put_non_versioned_files
|
||||
# @project1.enable_module! :dmsf
|
||||
# @role.add_permission! :view_dmsf_folders
|
||||
# @role.add_permission! :file_manipulation
|
||||
# credentials = @admin.merge!({ content_type: :text })
|
||||
#
|
||||
# put "/dmsf/webdav/#{@project1.identifier}/file1.tmp", params: '1234', headers: credentials
|
||||
# assert_response :success
|
||||
# file1 = DmsfFile.find_by(project_id: @project1.id, dmsf_folder: nil, name: 'file1.tmp')
|
||||
# assert file1
|
||||
# assert_difference 'file1.dmsf_file_revisions.count', 0 do
|
||||
# put "/dmsf/webdav/#{@project1.identifier}/file1.tmp", params: '5678', headers: credentials
|
||||
# assert_response :created
|
||||
# end
|
||||
# assert_difference 'file1.dmsf_file_revisions.count', 0 do
|
||||
# put "/dmsf/webdav/#{@project1.identifier}/file1.tmp", params: '9ABC', headers: credentials
|
||||
# assert_response :created
|
||||
# end
|
||||
#
|
||||
# put "/dmsf/webdav/#{@project1.identifier}/~$file2.txt", params: '1234', headers: credentials
|
||||
# assert_response :success
|
||||
# file2 = DmsfFile.find_by(project_id: @project1.id, dmsf_folder_id: nil, name: '~$file2.txt')
|
||||
# assert file2
|
||||
# assert_difference 'file2.dmsf_file_revisions.count', 0 do
|
||||
# put "/dmsf/webdav/#{@project1.identifier}/~$file2.txt", params: '5678', headers: credentials
|
||||
# assert_response :created
|
||||
# end
|
||||
# assert_difference 'file2.dmsf_file_revisions.count', 0 do
|
||||
# put "/dmsf/webdav/#{@project1.identifier}/~$file2.txt", params: '9ABC', headers: credentials
|
||||
# assert_response :created
|
||||
# end
|
||||
#
|
||||
# original = Setting.plugin_redmine_dmsf['dmsf_webdav_disable_versioning']
|
||||
# Setting.plugin_redmine_dmsf['dmsf_webdav_disable_versioning'] = '.dump$'
|
||||
# put "/dmsf/webdav/#{@project1.identifier}/file3.dump", params: '1234', headers: credentials
|
||||
# assert_response :success
|
||||
# file3 = DmsfFile.find_by(project_id: @project1.id, dmsf_folder_id: nil, name: 'file3.dump')
|
||||
# assert file3
|
||||
# assert_difference 'file3.dmsf_file_revisions.count', 0 do
|
||||
# put "/dmsf/webdav/#{@project1.identifier}/file3.dump", params: '5678', headers: credentials
|
||||
# assert_response :created
|
||||
# end
|
||||
# assert_difference 'file3.dmsf_file_revisions.count', 0 do
|
||||
# put "/dmsf/webdav/#{@project1.identifier}/file3.dump", params: '9ABC', headers: credentials
|
||||
# assert_response :created
|
||||
# end
|
||||
# Setting.plugin_redmine_dmsf['dmsf_webdav_disable_versioning'] = original
|
||||
# end
|
||||
#
|
||||
# def test_put_into_subproject
|
||||
# put "/dmsf/webdav/#{@project1.identifier}/#{@project3.identifier}/test-1234.txt", params: '1234',
|
||||
# headers: @admin.merge!({ content_type: :text })
|
||||
# assert_response :created
|
||||
# assert DmsfFile.find_by(project_id: @project3.id, dmsf_folder: nil, name: 'test-1234.txt')
|
||||
# end
|
||||
|
||||
end
|
||||
@ -94,7 +94,7 @@ class DmsfWebdavUnlockTest < RedmineDmsf::Test::IntegrationTest
|
||||
end
|
||||
|
||||
def test_unlock_file_with_invalid_token
|
||||
log_user 'admin', 'admin' # login as jsmith
|
||||
log_user 'admin', 'admin'
|
||||
process :unlock, "/dmsf/webdav/#{@file2.project.identifier}/#{@file2.name}", params: nil,
|
||||
headers: @admin.merge!({ HTTP_DEPTH: 'infinity', HTTP_TIMEOUT: 'Infinite', HTTP_LOCK_TOKEN: 'invalid_token' })
|
||||
assert_response :bad_request
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user