diff --git a/app/controllers/dmsf_controller.rb b/app/controllers/dmsf_controller.rb
index 7e693a9c..cd1e596a 100644
--- a/app/controllers/dmsf_controller.rb
+++ b/app/controllers/dmsf_controller.rb
@@ -297,7 +297,7 @@ class DmsfController < ApplicationController
else
flash[:error] = @folder.errors.full_messages.to_sentence
end
- redirect_to :back
+ redirect_back fallback_location: trash_dmsf_path(@project)
end
def edit_root
diff --git a/app/controllers/dmsf_files_copy_controller.rb b/app/controllers/dmsf_files_copy_controller.rb
index b8b91cb9..aae28d7d 100644
--- a/app/controllers/dmsf_files_copy_controller.rb
+++ b/app/controllers/dmsf_files_copy_controller.rb
@@ -38,8 +38,8 @@ class DmsfFilesCopyController < ApplicationController
def copy
new_file = @file.copy_to(@target_project, @target_folder)
- unless new_file.errors.empty?
- flash[:error] = new_file.errors.full_messages.to_sentence
+ if new_file.nil? || new_file.errors.present?
+ flash[:error] = new_file ? new_file.errors.full_messages.to_sentence : @file.errors.full_messages.to_sentence
redirect_to action: 'new', id: @file, target_project_id: @target_project, target_folder_id: @target_folder
return
end
diff --git a/app/controllers/dmsf_links_controller.rb b/app/controllers/dmsf_links_controller.rb
index 03efbccc..d2359238 100644
--- a/app/controllers/dmsf_links_controller.rb
+++ b/app/controllers/dmsf_links_controller.rb
@@ -181,15 +181,13 @@ class DmsfLinksController < ApplicationController
errors[:base] << e.message
return false
end
-
- redirect_to :back
+ redirect_back fallback_location: dmsf_folder_path(id: @project, folder_id: @dmsf_link&.dmsf_folder)
end
def restore
if @dmsf_link.restore
flash[:notice] = l(:notice_dmsf_link_restored)
end
-
redirect_to :back
end
diff --git a/app/models/dmsf_file.rb b/app/models/dmsf_file.rb
index 8476d520..49e78643 100644
--- a/app/models/dmsf_file.rb
+++ b/app/models/dmsf_file.rb
@@ -305,6 +305,7 @@ class DmsfFile < ActiveRecord::Base
if new_revision.save
file.set_last_revision new_revision
else
+ errors[:base] << new_revision.errors.full_messages.to_sentence
Rails.logger.error new_revision.errors.full_messages.to_sentence
file.delete(true)
file = nil
diff --git a/app/models/dmsf_file_revision.rb b/app/models/dmsf_file_revision.rb
index f8ee722b..038a7e89 100644
--- a/app/models/dmsf_file_revision.rb
+++ b/app/models/dmsf_file_revision.rb
@@ -315,7 +315,6 @@ class DmsfFileRevision < ActiveRecord::Base
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
diff --git a/lib/redmine_dmsf/webdav/base_resource.rb b/lib/redmine_dmsf/webdav/base_resource.rb
index f0ec6ed8..00b78e58 100644
--- a/lib/redmine_dmsf/webdav/base_resource.rb
+++ b/lib/redmine_dmsf/webdav/base_resource.rb
@@ -147,7 +147,6 @@ module RedmineDmsf
def projectless_path
i = 1
project_names = Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names']
- puts ">>> project_names = #{project_names}"
while true
prj = nil
pinfo = @path.split('/').drop(i)
diff --git a/lib/redmine_dmsf/webdav/dmsf_resource.rb b/lib/redmine_dmsf/webdav/dmsf_resource.rb
index c945bc3f..199d0cf4 100644
--- a/lib/redmine_dmsf/webdav/dmsf_resource.rb
+++ b/lib/redmine_dmsf/webdav/dmsf_resource.rb
@@ -29,7 +29,6 @@ module RedmineDmsf
include Redmine::I18n
def initialize(path, request, response, options)
- puts ">>> initialize for #{path}"
@folder = nil
@file = nil
@subproject = nil
@@ -453,14 +452,8 @@ module RedmineDmsf
# Lock
def lock(args)
- puts ">>> lock: #{parent.nil?}, #{parent.projectless_path}, #{parent.exist?}"
- puts ">>> projectless_path: #{parent.projectless_path}"
if parent.nil? || ((parent.projectless_path != '/') && (!parent.exist?))
e = DAV4Rack::LockFailure.new
- puts ">>> Conflict 1"
- puts ">>> #{@path}"
- puts ">>> #{parent&.name}"
- puts ">>> #{parent&.exist?}"
e.add_failure @path, Conflict
raise e
end
@@ -525,14 +518,7 @@ module RedmineDmsf
# Token based unlock (authenticated) will ensure that a correct token is sent, further ensuring
# ownership of token before permitting unlock
def unlock(token)
- unless exist?
- puts ">>> exists? => false"
- puts ">>> #{subproject&.name}"
- puts ">>> #{folder&.title}"
- puts ">>> #{file&.name}"
- puts ">>> #{project&.name}"
- return NotFound
- end
+ return NotFound unless exist?
if token.nil? || token.empty? || (token == '<(null)>') || User.current.anonymous?
BadRequest
else
diff --git a/test/functional/dmsf_context_menus_controller_test.rb b/test/functional/dmsf_context_menus_controller_test.rb
index 4e583ad4..462a8239 100644
--- a/test/functional/dmsf_context_menus_controller_test.rb
+++ b/test/functional/dmsf_context_menus_controller_test.rb
@@ -28,34 +28,13 @@ class DmsfContextMenusControllerTest < RedmineDmsf::Test::TestCase
:dmsf_files, :dmsf_file_revisions, :dmsf_links
def setup
- @user_member = User.find 2 # John Smith - manager
- @user_member3 = User.find 3 # Foo
- @project1 = Project.find 1
- @project1.enable_module! :dmsf
- @file1 = DmsfFile.find 1
- @folder1 = DmsfFolder.find 1
- @folder5 = DmsfFolder.find 5
+ super
@file_link2 = DmsfLink.find 2
@file_link6 = DmsfLink.find 6
@folder_link1 = DmsfLink.find 1
@url_link5 = DmsfLink.find 5
User.current = nil
- @request.session[:user_id] = @user_member.id
- @role1 = Role.find 1 # Manager
- end
-
- def test_truth
- assert_kind_of User, @user_member
- assert_kind_of User, @user_member3
- assert_kind_of Project, @project1
- assert_kind_of DmsfFile, @file1
- assert_kind_of DmsfFolder, @folder1
- assert_kind_of DmsfFolder, @folder5
- assert_kind_of DmsfLink, @file_link2
- assert_kind_of DmsfLink, @file_link6
- assert_kind_of DmsfLink, @folder_link1
- assert_kind_of DmsfLink, @url_link5
- assert_kind_of Role, @role1
+ @request.session[:user_id] = @jsmith.id
end
def test_dmsf_file
@@ -71,8 +50,7 @@ class DmsfContextMenusControllerTest < RedmineDmsf::Test::TestCase
end
def test_dmsf_file_locked
- @file1.lock!
- get :dmsf, params: { id: @file1.project.id, ids: ["file-#{@file1.id}"] }
+ get :dmsf, params: { id: @file2.project.id, ids: ["file-#{@file2.id}"] }
assert_response :success
assert_select 'a.icon-edit.disabled', text: l(:button_edit)
assert_select 'a.icon-unlock', text: l(:button_unlock)
@@ -82,23 +60,14 @@ class DmsfContextMenusControllerTest < RedmineDmsf::Test::TestCase
end
def test_dmsf_file_locked_force_unlock_permission_off
- l = @file1.lock!
- l.user = @user_member3
- l.save
- @role1.remove_permission! :force_file_unlock
- @role1.add_permission! :file_manipulation
- get :dmsf, params: { id: @file1.project.id, ids: ["file-#{@file1.id}"] }
+ get :dmsf, params: { id: @file2.project.id, ids: ["file-#{@file2.id}"] }
assert_response :success
assert_select 'a.icon-unlock.disabled', text: l(:button_unlock)
end
def test_dmsf_file_locked_force_unlock_permission_on
- l = @file1.lock!
- l.user = @user_member3
- l.save
- @role1.add_permission! :force_file_unlock
- @role1.add_permission! :file_manipulation
- get :dmsf, params: { id: @file1.project.id, ids: ["file-#{@file1.id}"] }
+ @role_developer.add_permission! :force_file_unlock
+ get :dmsf, params: { id: @file2.project.id, ids: ["file-#{@file2.id}"] }
assert_response :success
assert_select 'a.icon-unlock.disabled', text: l(:button_unlock), count: 0
end
@@ -112,7 +81,7 @@ class DmsfContextMenusControllerTest < RedmineDmsf::Test::TestCase
end
def test_dmsf_file_manipulation_permission_off
- @role1.remove_permission! :file_manipulation
+ @role_manager.remove_permission! :file_manipulation
get :dmsf, params: { id: @file1.project.id, ids: ["file-#{@file1.id}"] }
assert_response :success
assert_select 'a.icon-edit.disabled', text: l(:button_edit)
@@ -122,7 +91,6 @@ class DmsfContextMenusControllerTest < RedmineDmsf::Test::TestCase
end
def test_dmsf_file_manipulation_permission_on
- @role1.add_permission! :file_manipulation
get :dmsf, params: { id: @file1.project.id, ids: ["file-#{@file1.id}"] }
assert_response :success
assert_select 'a:not(icon-edit.disabled)', text: l(:button_edit)
@@ -132,28 +100,27 @@ class DmsfContextMenusControllerTest < RedmineDmsf::Test::TestCase
end
def test_dmsf_file_email_permission_off
- @role1.remove_permission! :email_document
+ @role_manager.remove_permission! :email_documents
get :dmsf, params: { id: @file1.project.id, ids: ["file-#{@file1.id}"] }
assert_response :success
assert_select 'a.icon-email.disabled', text: l(:field_mail)
end
def test_dmsf_file_email_permission_on
- @role1.remove_permission! :email_document
+ @role_manager.remove_permission! :email_document
get :dmsf, params: { id: @file1.project.id, ids: ["file-#{@file1.id}"] }
assert_response :success
assert_select 'a:not(icon-email.disabled)', text: l(:field_mail)
end
def test_dmsf_file_delete_permission_off
- @role1.remove_permission! :file_delete
+ @role_manager.remove_permission! :file_manipulation
get :dmsf, params: { id: @file1.project.id, ids: ["file-#{@file1.id}"] }
assert_response :success
assert_select 'a.icon-del.disabled', text: l(:button_delete)
end
def test_dmsf_file_delete_permission_on
- @role1.remove_permission! :file_delete
get :dmsf, params: { id: @file1.project.id, ids: ["file-#{@file1.id}"] }
assert_response :success
assert_select 'a:not(icon-del.disabled)', text: l(:button_delete)
@@ -229,7 +196,7 @@ class DmsfContextMenusControllerTest < RedmineDmsf::Test::TestCase
end
def test_dmsf_folder_manipulation_permmissions_off
- @role1.remove_permission! :folder_manipulation
+ @role_manager.remove_permission! :folder_manipulation
get :dmsf, params: { id: @folder1.project.id, ids: ["folder-#{@folder1.id}"] }
assert_response :success
assert_select 'a.icon-edit.disabled', text: l(:button_edit)
@@ -239,8 +206,6 @@ class DmsfContextMenusControllerTest < RedmineDmsf::Test::TestCase
end
def test_dmsf_folder_manipulation_permmissions_on
- @role1.add_permission! :folder_manipulation
- #assert !@folder5.locked?
get :dmsf, params: { id: @folder1.project.id, ids: ["folder-#{@folder1.id}"] }
assert_response :success
assert_select 'a:not(icon-edit.disabled)', text: l(:button_edit)
@@ -250,14 +215,13 @@ class DmsfContextMenusControllerTest < RedmineDmsf::Test::TestCase
end
def test_dmsf_folder_email_permmissions_off
- @role1.remove_permission! :email_documents
+ @role_manager.remove_permission! :email_documents
get :dmsf, params: { id: @folder5.project.id, ids: ["folder-#{@folder5.id}"] }
assert_response :success
assert_select 'a.icon-email.disabled', text: l(:field_mail)
end
def test_dmsf_folder_email_permmissions_on
- @role1.add_permission! :email_documents
get :dmsf, params: { id: @folder5.project.id, ids: ["folder-#{@folder5.id}"] }
assert_response :success
assert_select 'a:not(icon-email.disabled)', text: l(:field_mail)
@@ -306,7 +270,8 @@ class DmsfContextMenusControllerTest < RedmineDmsf::Test::TestCase
end
def test_trash_file_manipulation_permissions_off
- @role1.remove_permission! :file_manipulation
+ @role_manager.remove_permission! :file_delete
+ @role_manager.remove_permission! :file_manipulation
get :trash, params: { id: @file1.project.id, ids: ["file-#{@file1.id}"] }
assert_response :success
assert_select 'a.icon-cancel.disabled', text: l(:title_restore)
@@ -314,7 +279,6 @@ class DmsfContextMenusControllerTest < RedmineDmsf::Test::TestCase
end
def test_trash_file_manipulation_permissions_on
- @role1.add_permission! :file_manipulation
get :trash, params: { id: @file1.project.id, ids: ["file-#{@file1.id}"] }
assert_response :success
assert_select 'a:not(icon-cancel.disabled)', text: l(:title_restore)
@@ -322,14 +286,13 @@ class DmsfContextMenusControllerTest < RedmineDmsf::Test::TestCase
end
def test_trash_file_delete_permissions_off
- @role1.remove_permission! :file_delete
+ @role_manager.remove_permission! :file_delete
get :trash, params: { id: @file1.project.id, ids: ["file-#{@file1.id}"] }
assert_response :success
assert_select 'a.icon-del.disabled', text: l(:button_delete)
end
def test_trash_file_delete_permissions_on
- @role1.add_permission! :file_delete
get :trash, params: { id: @file1.project.id, ids: ["file-#{@file1.id}"] }
assert_response :success
assert_select 'a:not(icon-del.disabled)', text: l(:button_delete)
@@ -343,7 +306,7 @@ class DmsfContextMenusControllerTest < RedmineDmsf::Test::TestCase
end
def test_trash_folder_manipulation_permissions_off
- @role1.remove_permission! :folder_manipulation
+ @role_manager.remove_permission! :folder_manipulation
get :trash, params: { id: @folder1.project.id, ids: ["folder-#{@folder1.id}"] }
assert_response :success
assert_select 'a.icon-cancel.disabled', text: l(:title_restore)
@@ -351,7 +314,6 @@ class DmsfContextMenusControllerTest < RedmineDmsf::Test::TestCase
end
def test_trash_folder_manipulation_permissions_on
- @role1.add_permission! :folder_manipulation
get :trash, params: { id: @folder1.project.id, ids: ["folder-#{@folder1.id}"] }
assert_response :success
assert_select 'a:not(icon-cancel.disabled)', text: l(:title_restore)
diff --git a/test/functional/dmsf_controller_test.rb b/test/functional/dmsf_controller_test.rb
index c7903ced..e9732765 100644
--- a/test/functional/dmsf_controller_test.rb
+++ b/test/functional/dmsf_controller_test.rb
@@ -29,64 +29,24 @@ class DmsfControllerTest < RedmineDmsf::Test::TestCase
:dmsf_files, :dmsf_file_revisions, :dmsf_folder_permissions, :dmsf_locks
def setup
- @project1 = Project.find 1
- @project1.enable_module! :dmsf
- @folder1 = DmsfFolder.find 1
- @folder2 = DmsfFolder.find 2
- @folder3 = DmsfFolder.find 3
- @folder4 = DmsfFolder.find 4
- @folder7 = DmsfFolder.find 7
- @file1 = DmsfFile.find 1
+ super
@file_link2 = DmsfLink.find 4
@folder_link1 = DmsfLink.find 1
- @role = Role.find 1
@custom_field = CustomField.find 21
@custom_value = CustomValue.find 21
- @folder7 = DmsfFolder.find 7
- @manager = User.find 2 #1
User.current = nil
- @request.session[:user_id] = @manager.id
- @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
+ @request.session[:user_id] = @jsmith.id
end
-
- def teardown
- # Delete our tmp folder
- begin
- FileUtils.rm_rf DmsfFile.storage_path
- rescue => e
- error e.message
- end
- Setting.plugin_redmine_dmsf['dmsf_storage_directory'] = @dmsf_storage_directory
- end
-
- def test_truth
- assert_kind_of Project, @project1
- assert_kind_of DmsfFolder, @folder1
- assert_kind_of DmsfFolder, @folder2
- assert_kind_of DmsfFolder, @folder3
- assert_kind_of DmsfFolder, @folder4
- assert_kind_of DmsfFolder, @folder7
- assert_kind_of DmsfFile, @file1
- assert_kind_of DmsfLink, @file_link2
- assert_kind_of DmsfLink, @folder_link1
- assert_kind_of Role, @role
- assert_kind_of CustomField, @custom_field
- assert_kind_of CustomValue, @custom_value
- assert_kind_of User, @manager
- end
-
+
def test_edit_folder_forbidden
# Missing permissions
+ @role_manager.remove_permission! :folder_manipulation
get :edit, params: { id: @project1, folder_id: @folder1 }
assert_response :forbidden
end
def test_edit_folder_allowed
# Permissions OK
- @role.add_permission! :view_dmsf_folders
- @role.add_permission! :folder_manipulation
get :edit, params: { id: @project1, folder_id: @folder1}
assert_response :success
assert_select 'label', { text: @custom_field.name }
@@ -94,16 +54,12 @@ class DmsfControllerTest < RedmineDmsf::Test::TestCase
end
def test_edit_folder_redirection_to_the_parent_folder
- @role.add_permission! :view_dmsf_folders
- @role.add_permission! :folder_manipulation
post :save, params: { id: @project1, folder_id: @folder2.id, parent_id: @folder2.dmsf_folder.id,
dmsf_folder: { title: @folder2.title, description: @folder2.description} }
assert_redirected_to dmsf_folder_path(id: @project1, folder_id: @folder2.dmsf_folder.id)
end
def test_edit_folder_redirection_to_the_same_folder
- @role.add_permission! :view_dmsf_folders
- @role.add_permission! :folder_manipulation
post :save, params: { id: @project1, folder_id: @folder2.id, parent_id: @folder2.dmsf_folder.id,
dmsf_folder: { title: @folder2.title, description: @folder2.description,
redirect_to_folder_id: @folder2.id } }
@@ -112,13 +68,13 @@ class DmsfControllerTest < RedmineDmsf::Test::TestCase
def test_trash_forbidden
# Missing permissions
+ @role_manager.remove_permission! :file_delete
get :trash, params: { id: @project1 }
assert_response :forbidden
end
def test_trash_allowed
# Permissions OK
- @role.add_permission! :file_delete
get :trash, params: { id: @project1 }
assert_response :success
assert_select 'h2', { text: l(:link_trash_bin) }
@@ -126,13 +82,13 @@ class DmsfControllerTest < RedmineDmsf::Test::TestCase
def test_delete_forbidden
# Missing permissions
+ @role_manager.remove_permission! :folder_manipulation
get :delete, params: { id: @project1, folder_id: @folder1.id, commit: false }
assert_response :forbidden
end
def test_delete_with_parmission_but_not_empty
# Permissions OK but the folder is not empty
- @role.add_permission! :folder_manipulation
get :delete, params: { id: @project1, folder_id: @folder1.id, commit: false}
assert_response :redirect
assert_include l(:error_folder_is_not_empty), flash[:error]
@@ -140,7 +96,6 @@ class DmsfControllerTest < RedmineDmsf::Test::TestCase
def test_delete_locked
# Permissions OK but the folder is locked
- @role.add_permission! :folder_manipulation
@request.env['HTTP_REFERER'] = dmsf_folder_path(id: @project1.id, folder_id: @folder2.id)
get :delete, params: { id: @project1, folder_id: @folder2.id, commit: false}
assert_response :redirect
@@ -149,7 +104,6 @@ class DmsfControllerTest < RedmineDmsf::Test::TestCase
def test_delete_ok
# Empty and not locked folder
- @role.add_permission! :folder_manipulation
@request.env['HTTP_REFERER'] = dmsf_folder_path(id: @project1.id, folder_id: @folder1.id)
get :delete, params: { id: @project1, folder_id: @folder1.id, commit: false }
assert_response :redirect
@@ -157,16 +111,16 @@ class DmsfControllerTest < RedmineDmsf::Test::TestCase
def test_restore_forbidden
# Missing permissions
+ @role_developer.remove_permission! :folder_manipulation
@folder4.deleted = 1
@folder4.save
- get :restore, params: { id: @project1, folder_id: @folder4.id }
+ get :restore, params: { id: @folder4.project.id, folder_id: @folder4.id }
assert_response :forbidden
end
def test_restore_ok
# Permissions OK
@request.env['HTTP_REFERER'] = trash_dmsf_path(id: @project1.id)
- @role.add_permission! :folder_manipulation
@folder1.deleted = 1
@folder1.save
get :restore, params: { id: @project1, folder_id: @folder1.id }
@@ -175,6 +129,7 @@ class DmsfControllerTest < RedmineDmsf::Test::TestCase
def test_delete_entries_forbidden
# Missing permissions
+ @role_manager.remove_permission! :folder_manipulation
get :entries_operation, params: { id: @project1, delete_entries: 'Delete',
ids: ["folder-#{@folder1.id}", "file-#{@file1.id}", "folder-link-#{@folder_link1.id}", "file-link-#{@file_link2.id}"] }
assert_response :forbidden
@@ -183,8 +138,6 @@ class DmsfControllerTest < RedmineDmsf::Test::TestCase
def test_delete_not_empty
# Permissions OK but the folder is not empty
@request.env['HTTP_REFERER'] = dmsf_folder_path(id: @project1.id)
- @role.add_permission! :folder_manipulation
- @role.add_permission! :view_dmsf_files
get :entries_operation, params: { id: @project1, delete_entries: 'Delete',
ids: ["folder-#{@folder1.id}", "file-#{@file1.id}", "folder-link-#{@folder_link1.id}", "file-link-#{@file_link2.id}"]}
assert_response :redirect
@@ -194,9 +147,6 @@ class DmsfControllerTest < RedmineDmsf::Test::TestCase
def test_delete_entries_ok
# Permissions OK
@request.env['HTTP_REFERER'] = dmsf_folder_path(id: @project1.id)
- @role.add_permission! :view_dmsf_files
- @role.add_permission! :folder_manipulation
- @role.add_permission! :file_delete
flash[:error] = nil
get :entries_operation, params: { id: @project1, delete_entries: 'Delete',
ids: ["folder-#{@folder7.id}", "file-#{@file1.id}", "file-link-#{@file_link2.id}"]}
@@ -206,7 +156,6 @@ class DmsfControllerTest < RedmineDmsf::Test::TestCase
def test_restore_entries
# Restore
- @role.add_permission! :view_dmsf_files
@request.env['HTTP_REFERER'] = trash_dmsf_path(id: @project1.id)
flash[:error] = nil
get :entries_operation, params: { id: @project1, restore_entries: 'Restore',
@@ -216,10 +165,6 @@ class DmsfControllerTest < RedmineDmsf::Test::TestCase
end
def test_show
- @role.add_permission! :view_dmsf_files
- @role.add_permission! :view_dmsf_folders
- @role.add_permission! :file_manipulation
- @role.add_permission! :folder_manipulation
get :show, params: { id: @project1.id }
assert_response :success
# New file link
@@ -237,8 +182,7 @@ class DmsfControllerTest < RedmineDmsf::Test::TestCase
end
def test_show_without_file_manipulation
- @role.add_permission! :view_dmsf_files
- @role.add_permission! :view_dmsf_folders
+ @role_manager.remove_permission! :file_manipulation
get :show, params: { id: @project1.id }
assert_response :success
# New file link should be missing
@@ -246,16 +190,12 @@ class DmsfControllerTest < RedmineDmsf::Test::TestCase
end
def test_show_csv
- @role.add_permission! :view_dmsf_files
- @role.add_permission! :view_dmsf_folders
get :show, params: { id: @project1.id, format: 'csv' }
assert_response :success
assert @response.content_type.match?(/^text\/csv/)
end
def test_show_folder_doesnt_correspond_the_project
- @role.add_permission! :view_dmsf_files
- @role.add_permission! :view_dmsf_folders
# Despite the fact that project != @folder3.project
assert @project1 != @folder3.project
get :show, params: { id: @project1.id, folder_id: @folder3.id }
@@ -263,28 +203,25 @@ class DmsfControllerTest < RedmineDmsf::Test::TestCase
end
def test_new_forbidden
- @role.remove_permission! :folder_manipulation
+ @role_manager.remove_permission! :folder_manipulation
get :new, params: { id: @project1, parent_id: nil }
assert_response :forbidden
end
def test_new
- @role.add_permission! :folder_manipulation
get :new, params: { id: @project1, parent_id: nil }
assert_response :success
end
def test_email_entries_email_from_forbidden
+ @role_manager.remove_permission! :email_documents
Setting.plugin_redmine_dmsf['dmsf_documents_email_from'] = 'karel.picman@kontron.com'
- @role.add_permission! :view_dmsf_files
get :entries_operation, params: {id: @project1, email_entries: 'Email', ids: ["file-#{@file1.id}"]}
assert_response :forbidden
end
def test_email_entries_email_from
Setting.plugin_redmine_dmsf['dmsf_documents_email_from'] = 'karel.picman@kontron.com'
- @role.add_permission! :view_dmsf_files
- @role.add_permission! :email_documents
get :entries_operation, params: { id: @project1, email_entries: 'Email', ids: ["file-#{@file1.id}"]}
assert_response :success
assert_select "input:match('value', ?)", Setting.plugin_redmine_dmsf['dmsf_documents_email_from']
@@ -292,8 +229,6 @@ class DmsfControllerTest < RedmineDmsf::Test::TestCase
def test_email_entries_reply_to
Setting.plugin_redmine_dmsf['dmsf_documents_email_reply_to'] = 'karel.picman@kontron.com'
- @role.add_permission! :view_dmsf_files
- @role.add_permission! :email_documents
get :entries_operation, params: { id: @project1, email_entries: 'Email', ids: ["file-#{@file1.id}"]}
assert_response :success
assert_select "input:match('value', ?)", Setting.plugin_redmine_dmsf['dmsf_documents_email_reply_to']
@@ -301,15 +236,12 @@ class DmsfControllerTest < RedmineDmsf::Test::TestCase
def test_email_entries_links_only
Setting.plugin_redmine_dmsf['dmsf_documents_email_links_only'] = '1'
- @role.add_permission! :view_dmsf_files
- @role.add_permission! :email_documents
get :entries_operation, params: { id: @project1, email_entries: 'Email', ids: ["file-#{@file1.id}"]}
assert_response :success
assert_select "input:match('value', ?)", Setting.plugin_redmine_dmsf['dmsf_documents_email_links_only']
end
def test_entries_email
- @role.add_permission! :view_dmsf_files
zip_file = Tempfile.new('test', DmsfHelper::temp_dir)
get :entries_email, params: { id: @project1, email:
{
@@ -323,43 +255,39 @@ class DmsfControllerTest < RedmineDmsf::Test::TestCase
end
def test_add_email_forbidden
- @role.remove_permission! :view_dmsf_files
+ @role_manager.remove_permission! :view_dmsf_files
get :add_email, params: { id: @project1.id }, xhr: true
assert_response :forbidden
end
def test_add_email
- @role.add_permission! :view_dmsf_files
get :add_email, params: { id: @project1.id }, xhr: true
assert_response :success
end
def test_append_email_forbidden
- @role.remove_permission! :view_dmsf_files
+ @role_manager.remove_permission! :view_dmsf_files
post :append_email, params: { id: @project1, user_ids: @project1.members.collect{ |m| m.user.id }, format: 'js'}
assert_response :forbidden
end
def test_append_email
- @role.add_permission! :view_dmsf_files
post :append_email, params: { id: @project1, user_ids: @project1.members.collect{ |m| m.user.id }, format: 'js'}
assert_response :success
end
def test_autocomplete_for_user_forbidden
+ @role_manager.remove_permission! :view_dmsf_files
get :autocomplete_for_user, params: { id: @project1.id }, xhr: true
assert_response :forbidden
end
def test_autocomplete_for_user
- @role.add_permission! :view_dmsf_files
get :autocomplete_for_user, params: { id: @project1 }, xhr: true
assert_response :success
end
def test_create_folder_in_root
- @role.add_permission! :folder_manipulation
- @role.add_permission! :view_dmsf_folders
assert_difference 'DmsfFolder.count', +1 do
post :create, params: { id: @project1.id, dmsf_folder: { title: 'New folder', description: 'Unit tests' } }
end
@@ -367,8 +295,6 @@ class DmsfControllerTest < RedmineDmsf::Test::TestCase
end
def test_create_folder
- @role.add_permission! :folder_manipulation
- @role.add_permission! :view_dmsf_folders
assert_difference 'DmsfFolder.count', +1 do
post :create, params: { id: @project1.id, parent_id: @folder1.id,
dmsf_folder: { title: 'New folder', description: 'Unit tests' } }
diff --git a/test/functional/dmsf_files_controller_test.rb b/test/functional/dmsf_files_controller_test.rb
index 3591d296..bf0a83ce 100644
--- a/test/functional/dmsf_files_controller_test.rb
+++ b/test/functional/dmsf_files_controller_test.rb
@@ -28,90 +28,65 @@ class DmsfFilesControllerTest < RedmineDmsf::Test::TestCase
:enabled_modules, :dmsf_file_revisions
def setup
- @project = Project.find 1
- @project.enable_module! :dmsf
- @file = DmsfFile.find 1
- @role = Role.find 1
- User.current = nil
- @request.session[:user_id] = 2
- @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
- end
-
- def teardown
- # Delete our tmp folder
- begin
- FileUtils.rm_rf DmsfFile.storage_path
- rescue => e
- error e.message
- end
- Setting.plugin_redmine_dmsf['dmsf_storage_directory'] = @dmsf_storage_directory
- end
-
- def test_truth
- assert_kind_of Project, @project
- assert_kind_of DmsfFile, @file
- assert_kind_of Role, @role
+ super
+ @request.session[:user_id] = @jsmith.id
end
def test_show_file_ok
# Permissions OK
- @role.add_permission! :view_dmsf_files
- get :show, params: { id: @file.id }
+ get :show, params: { id: @file1.id }
assert_response :success
end
def test_show_file_forbidden
# Missing permissions
- get :show, params: { id: @file.id }
+ @role_manager.remove_permission! :view_dmsf_files
+ get :show, params: { id: @file1.id }
assert_response :forbidden
end
def test_view_file_ok
# Permissions OK
- @role.add_permission! :view_dmsf_files
- get :view, params: { id: @file.id }
+ get :view, params: { id: @file1.id }
assert_response :success
end
def test_view_file_forbidden
# Missing permissions
- get :view, params: { id: @file.id }
+ @role_manager.remove_permission! :view_dmsf_files
+ get :view, params: { id: @file1.id }
assert_response :forbidden
end
def delete_forbidden
# Missing permissions
- delete @file, params: { commit: false }
+ @role_manager.remove_permission! :file_manipulation
+ delete @file1, params: { commit: false }
assert_response :forbidden
end
def delete_locked
# Permissions OK but the file is locked
- @role.add_permission! :file_delete
- delete @file, params: { commit: false }
+ delete @file2, params: { commit: false }
assert_response :redirect
assert_include l(:error_file_is_locked), flash[:error]
end
def delete_ok
# Permissions OK and not locked
- flash[:error].clear
- @file.unlock!
- delete @file, params: { commit: false }
+ delete @file1, params: { commit: false }
assert_response :redirect
assert_equal 0, flash[:error].size
end
def test_obsolete_revision_ok
- @role.add_permission! :file_manipulation
- get :obsolete_revision, params: { id: @file.last_revision.id }
- assert_redirected_to action: 'show', id: @file
+ get :obsolete_revision, params: { id: @file1.last_revision.id }
+ assert_redirected_to action: 'show', id: @file1
end
def test_obsolete_revision_missing_permissions
- get :obsolete_revision, params: { id: @file.last_revision.id }
+ @role_manager.remove_permission! :file_manipulation
+ get :obsolete_revision, params: { id: @file1.last_revision.id }
assert :forbiden
end
diff --git a/test/functional/dmsf_files_copy_controller_test.rb b/test/functional/dmsf_files_copy_controller_test.rb
index e03aa806..49459512 100644
--- a/test/functional/dmsf_files_copy_controller_test.rb
+++ b/test/functional/dmsf_files_copy_controller_test.rb
@@ -29,49 +29,8 @@ class DmsfFilesCopyControllerTest < RedmineDmsf::Test::TestCase
:enabled_modules, :dmsf_file_revisions, :dmsf_folders, :dmsf_locks
def setup
- @project1 = Project.find 1
- @project1.enable_module! :dmsf
- @project2 = Project.find 2
- @project5 = Project.find 5
- @file1 = DmsfFile.find 1
- @file2 = DmsfFile.find 2
- @folder1 = DmsfFolder.find 1
- @folder2 = DmsfFolder.find 2
- @admin = User.find 1
- @jsmith = User.find 2
- @user_non_member = User.find 3
- @role_manager = Role.find_by(name: 'Manager')
- User.current = nil
+ super
@request.session[:user_id] = @jsmith.id
- @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
- @role_manager.add_permission! :file_manipulation
- @role_manager.add_permission! :view_dmsf_folders
- end
-
- def teardown
- # Delete our tmp folder
- begin
- FileUtils.rm_rf DmsfFile.storage_path
- rescue => e
- error e.message
- end
- Setting.plugin_redmine_dmsf['dmsf_storage_directory'] = @dmsf_storage_directory
- end
-
- def test_truth
- assert_kind_of Project, @project1
- assert_kind_of Project, @project2
- assert_kind_of Project, @project5
- assert_kind_of DmsfFile, @file1
- assert_kind_of DmsfFile, @file2
- assert_kind_of DmsfFolder, @folder1
- assert_kind_of DmsfFolder, @folder2
- assert_kind_of User, @admin
- assert_kind_of User, @jsmith
- assert_kind_of User, @user_non_member
- assert_kind_of Role, @role_manager
end
def test_authorize_admin
@@ -82,7 +41,7 @@ class DmsfFilesCopyControllerTest < RedmineDmsf::Test::TestCase
end
def test_authorize_non_member
- @request.session[:user_id] = @user_non_member.id
+ @request.session[:user_id] = @someone.id
get :new, params: { id: @file1.id }
assert_response :forbidden
end
@@ -142,20 +101,19 @@ class DmsfFilesCopyControllerTest < RedmineDmsf::Test::TestCase
end
def test_copy_to_dmsf_not_enabled
- @project5.disable_module! :dmsf
- post :copy, params: { id: @file1.id, target_project_id: @project5.id }
+ @project2.disable_module! :dmsf
+ post :copy, params: { id: @file1.id, target_project_id: @project2.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 }
+ post :copy, params: { id: @file1.id, target_project_id: @project2.id }
assert_response :redirect
- assert_nil flash[:error]
+ assert flash[:error].empty?
end
def test_copy_to_as_non_member
- @request.session[:user_id] = @user_non_member.id
+ @request.session[:user_id] = @someone.id
post :copy, params: { id: @file1.id, target_project_id: @project2.id }
assert_response :forbidden
end
@@ -173,7 +131,6 @@ class DmsfFilesCopyControllerTest < RedmineDmsf::Test::TestCase
end
def test_move_locked_file
- @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
@@ -185,21 +142,20 @@ class DmsfFilesCopyControllerTest < RedmineDmsf::Test::TestCase
end
def test_move_to_dmsf_not_enabled
- @project5.disable_module! :dmsf
- post :move, params: { id: @file1.id, target_project_id: @project5.id }
+ @project2.disable_module! :dmsf
+ post :move, params: { id: @file9.id, target_project_id: @project2.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 }
+ post :move, params: { id: @file9.id, target_project_id: @project2.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: @file1.id, target_project_id: @project2.id }
+ @request.session[:user_id] = @someone.id
+ post :move, params: { id: @file9.id, target_project_id: @project2.id }
assert_response :forbidden
end
diff --git a/test/functional/dmsf_folder_permissions_controller_test.rb b/test/functional/dmsf_folder_permissions_controller_test.rb
index 88f0c075..80bf3ca4 100644
--- a/test/functional/dmsf_folder_permissions_controller_test.rb
+++ b/test/functional/dmsf_folder_permissions_controller_test.rb
@@ -26,24 +26,8 @@ class DmsfFolderPermissionsControllerTest < RedmineDmsf::Test::TestCase
:email_addresses
def setup
- @project1 = Project.find 1
- @project1.enable_module! :dmsf
- @folder7 = DmsfFolder.find 7
- @manager = User.find 2
- @developer = User.find 3
- @manager_role = Role.find 1
- User.current = nil
- @request.session[:user_id] = @manager.id
- @manager_role.add_permission! :view_dmsf_folders
- @manager_role.add_permission! :folder_manipulation
- end
-
- def test_truth
- assert_kind_of Project, @project1
- assert_kind_of DmsfFolder, @folder7
- assert_kind_of User, @manager
- assert_kind_of User, @developer
- assert_kind_of Role, @manager_role
+ super
+ @request.session[:user_id] = @jsmith.id
end
def test_new
@@ -57,11 +41,11 @@ class DmsfFolderPermissionsControllerTest < RedmineDmsf::Test::TestCase
get :autocomplete_for_user, params: { project_id: @project1, dmsf_folder_id: @folder7, q: 'smi', format: 'js' },
xhr: true
assert_response :success
- assert_include 'John Smith', response.body
+ assert_include @jsmith.name, response.body
end
def test_append
- get :new, params: { project_id: @project1, dmsf_folder_id: @folder7, user_ids: [@manager.id], format: 'js' },
+ get :new, params: { project_id: @project1, dmsf_folder_id: @folder7, user_ids: [@jsmith.id], format: 'js' },
xhr: true
assert_response :success
assert_template 'new'
diff --git a/test/functional/dmsf_folders_copy_controller_test.rb b/test/functional/dmsf_folders_copy_controller_test.rb
index 35299d87..76f1ee8d 100644
--- a/test/functional/dmsf_folders_copy_controller_test.rb
+++ b/test/functional/dmsf_folders_copy_controller_test.rb
@@ -28,48 +28,8 @@ class DmsfFoldersCopyControllerTest < RedmineDmsf::Test::TestCase
:email_addresses, :dmsf_locks
def setup
- @project1 = Project.find 1
- @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
- @admin = User.find 1
- @jsmith = User.find 2
- @user_non_member = User.find 3
- @role_manager = Role.find_by(name: 'Manager')
- User.current = nil
+ super
@request.session[:user_id] = @jsmith.id
- @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
- @role_manager.add_permission! :folder_manipulation
- @role_manager.add_permission! :view_dmsf_folders
- end
-
- def teardown
- # Delete our tmp folder
- begin
- FileUtils.rm_rf DmsfFile.storage_path
- rescue => e
- error e.message
- end
- Setting.plugin_redmine_dmsf['dmsf_storage_directory'] = @dmsf_storage_directory
- end
-
- def test_truth
- assert_kind_of Project, @project1
- assert_kind_of Project, @project2
- assert_kind_of Project, @project5
- assert_kind_of DmsfFolder, @folder1
- assert_kind_of DmsfFolder, @folder2
- assert_kind_of DmsfFolder, @folder6
- assert_kind_of User, @admin
- assert_kind_of User, @jsmith
- assert_kind_of User, @user_non_member
- assert_kind_of Role, @role_manager
end
def test_authorize_admin
@@ -80,7 +40,7 @@ class DmsfFoldersCopyControllerTest < RedmineDmsf::Test::TestCase
end
def test_authorize_non_member
- @request.session[:user_id] = @user_non_member.id
+ @request.session[:user_id] = @someone.id
get :new, params: { id: @folder1.id }
assert_response :not_found
end
@@ -129,7 +89,6 @@ class DmsfFoldersCopyControllerTest < RedmineDmsf::Test::TestCase
def test_copy_to_another_project
@request.session[:user_id] = @admin.id
- @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
@@ -149,19 +108,19 @@ class DmsfFoldersCopyControllerTest < RedmineDmsf::Test::TestCase
end
def test_copy_to_dmsf_not_enabled
- post :copy, params: { id: @folder6.id, target_project_id: @project5.id }
+ @project2.disable_module! :dmsf
+ post :copy, params: { id: @folder6.id, target_project_id: @project2.id }
assert_response :forbidden
end
def test_copy_to_dmsf_enabled
- @project5.enable_module! :dmsf
- post :copy, params: { id: @folder6.id, target_project_id: @project5.id }
+ post :copy, params: { id: @folder6.id, target_project_id: @project2.id }
assert_response :redirect
assert_nil flash[:error]
end
def test_copy_to_as_non_member
- @request.session[:user_id] = @user_non_member.id
+ @request.session[:user_id] = @someone.id
post :copy, params: { id: @folder6.id, target_project_id: @folder1.project.id, target_folder_id: @folder1.id }
assert_response :not_found
end
@@ -185,8 +144,6 @@ class DmsfFoldersCopyControllerTest < RedmineDmsf::Test::TestCase
end
def test_move_locked_folder
- User.current.id = @admin.id
- assert @folder2.locked_for_user?
@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
@@ -199,19 +156,19 @@ class DmsfFoldersCopyControllerTest < RedmineDmsf::Test::TestCase
end
def test_move_to_dmsf_not_enabled
- post :move, params: { id: @folder6.id, target_project_id: @project5.id }
+ @project2.disable_module! :dmsf
+ post :move, params: { id: @folder6.id, target_project_id: @project2.id }
assert_response :forbidden
end
def test_move_to_dmsf_enabled
- @project5.enable_module! :dmsf
- post :move, params: { id: @folder6.id, target_project_id: @project5.id }
+ post :move, params: { id: @folder6.id, target_project_id: @project2.id }
assert_response :redirect
assert_nil flash[:error]
end
def test_move_to_as_non_member
- @request.session[:user_id] = @user_non_member.id
+ @request.session[:user_id] = @someone.id
post :move, params: { id: @folder6.id, target_project_id: @folder1.project.id, target_folder_id: @folder1.id }
assert_response :not_found
end
diff --git a/test/functional/dmsf_links_controller_test.rb b/test/functional/dmsf_links_controller_test.rb
index b05898a0..3298333a 100644
--- a/test/functional/dmsf_links_controller_test.rb
+++ b/test/functional/dmsf_links_controller_test.rb
@@ -28,79 +28,39 @@ class DmsfLinksControllerTest < RedmineDmsf::Test::TestCase
:dmsf_file_revisions, :dmsf_folders, :dmsf_links, :roles, :member_roles
def setup
- @user_admin = User.find 1
- @user_member = User.find 2
- @user_non_member = User.find 3
- @role_manager = Role.find_by(name: 'Manager')
- assert_not_nil @role_manager
- @role_manager.add_permission! :file_manipulation
- @role_developer = Role.find_by(name: 'Developer')
- assert_not_nil @role_developer
- @role_developer.add_permission! :file_manipulation
- @project1 = Project.find 1
- @project1.enable_module! :dmsf
- @project2 = Project.find 2
- @project2.enable_module! :dmsf
- @folder1 = DmsfFolder.find 1 # project1/folder1
- @folder2 = DmsfFolder.find 2 # project1/folder1/folder2
- @folder3 = DmsfFolder.find 3 # project2/folder3
- @file1 = DmsfFile.find 1 # project1/file1
- @file2 = DmsfFile.find 2 # project2/file2
- @file4 = DmsfFile.find 4 # project1/folder2/file4
- @file6 = DmsfFile.find 6 # project2/folder3/file6
+ super
@file_link = DmsfLink.find 1
- @request.env['HTTP_REFERER'] = dmsf_folder_path(id: @project1.id, folder_id: @folder1.id)
- @request.session[:user_id] = @user_member.id
- User.current = nil
- end
-
- def test_truth
- assert_kind_of User, @user_admin
- assert_kind_of User, @user_member
- assert_kind_of User, @user_non_member
- assert_kind_of Project, @project1
- assert_kind_of Project, @project2
- assert_kind_of Role, @role_manager
- assert_kind_of Role, @role_developer
- assert_kind_of DmsfFolder, @folder1
- assert_kind_of DmsfFolder, @folder2
- assert_kind_of DmsfFolder, @folder3
- assert_kind_of DmsfFile, @file1
- assert_kind_of DmsfFile, @file2
- assert_kind_of DmsfFile, @file4
- assert_kind_of DmsfFile, @file6
- assert_kind_of DmsfLink, @file_link
+ @request.session[:user_id] = @jsmith.id
end
def test_authorize_admin
- @request.session[:user_id] = @user_admin.id
+ @request.session[:user_id] = @admin.id
get :new, params: { project_id: @project1.id }
assert_response :success
assert_template 'new'
end
def test_authorize_non_member
- @request.session[:user_id] = @user_non_member.id
+ @request.session[:user_id] = @someone.id
get :new, params: { project_id: @project2.id }
assert_response :forbidden
end
def test_authorize_member_ok
- @request.session[:user_id] = @user_member.id
+ @request.session[:user_id] = @jsmith.id
get :new, params: { project_id: @project1.id }
assert_response :success
end
def test_authorize_member_no_module
# Without the module
- @project1.disable_module!(:dmsf)
+ @project1.disable_module! :dmsf
get :new, params: { project_id: @project1.id }
assert_response :forbidden
end
def test_authorize_forbidden
# Without permissions
- @project1.enable_module!(:dmsf)
@role_manager.remove_permission! :file_manipulation
get :new, params: { project_id: @project1.id }
assert_response :forbidden
@@ -113,7 +73,7 @@ class DmsfLinksControllerTest < RedmineDmsf::Test::TestCase
end
def test_new_fast_links_enabled
- member = Member.where(user_id: @user_member.id, project_id: @project1.id).first
+ member = Member.find_by(user_id: @jsmith.id, project_id: @project1.id)
assert member
member.update_attribute :dmsf_fast_links, true
get :new, params: { project_id: @project1.id, type: 'link_to'}
@@ -344,7 +304,7 @@ class DmsfLinksControllerTest < RedmineDmsf::Test::TestCase
assert_difference 'DmsfLink.visible.count', -1 do
delete :destroy, params: { project_id: @project1.id, id: @file_link.id }
end
- assert_redirected_to dmsf_folder_path(id: @project1.id, folder_id: @folder1.id)
+ assert_redirected_to dmsf_folder_path(id: @file_link&.project, folder_id: @file_link&.dmsf_folder)
end
def test_restore_forbidden
@@ -357,8 +317,7 @@ class DmsfLinksControllerTest < RedmineDmsf::Test::TestCase
def test_restore_ok
# Permissions OK
- @request.env['HTTP_REFERER'] = trash_dmsf_path(id: @project1.id)
- @role_manager.add_permission! :file_manipulation
+ @request.env['HTTP_REFERER'] = trash_dmsf_path(id: @project1.id)
get :restore, params: { project_id: @project1.id, id: @file_link.id }
assert_response :redirect
end
diff --git a/test/functional/dmsf_public_urls_controller_test.rb b/test/functional/dmsf_public_urls_controller_test.rb
index a084430e..ff46f496 100644
--- a/test/functional/dmsf_public_urls_controller_test.rb
+++ b/test/functional/dmsf_public_urls_controller_test.rb
@@ -25,16 +25,6 @@ class DmsfPublicUrlsControllerTest < RedmineDmsf::Test::TestCase
fixtures :dmsf_files, :dmsf_file_revisions, :dmsf_public_urls
- def setup
- @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
- end
-
- def teardown
- Setting.plugin_redmine_dmsf['dmsf_storage_directory'] = @dmsf_storage_directory
- end
-
def test_show_valid_url
get :show, params: { token: 'd8d33e21914a433b280fdc94450ee212' }
assert_response :success
diff --git a/test/functional/dmsf_state_controller_test.rb b/test/functional/dmsf_state_controller_test.rb
index f7e0b34a..04361546 100644
--- a/test/functional/dmsf_state_controller_test.rb
+++ b/test/functional/dmsf_state_controller_test.rb
@@ -27,54 +27,37 @@ class DmsfStateControllerTest < RedmineDmsf::Test::TestCase
fixtures :users, :email_addresses, :projects, :members, :roles, :member_roles
def setup
- @user_admin = User.find 1 # Redmine admin
- @user_member = User.find 2 # John Smith - manager
- @user_non_member = User.find 3 # Dave Lopper
- @project = Project.find 1
- @project.enable_module! :dmsf
- @role_manager = Role.find_by(name: 'Manager')
- User.current = nil
+ super
+ @request.session[:user_id] = @jsmith.id
end
-
- def test_truth
- assert_kind_of User, @user_admin
- assert_kind_of User, @user_member
- assert_kind_of User, @user_non_member
- assert_kind_of Project, @project
- assert_kind_of Role, @role_manager
- end
-
+
def test_user_pref_save_member
- # Member
- @request.session[:user_id] = @user_member.id
+ assert @project1
@role_manager.add_permission! :user_preferences
- post :user_pref_save, params: { id: @project.id, email_notify: 1, title_format: '%t_%v' }
- assert_redirected_to settings_project_path(@project, tab: 'dmsf')
+ post :user_pref_save, params: { id: @project1.id, email_notify: 1, title_format: '%t_%v' }
+ assert_redirected_to settings_project_path(@project1, tab: 'dmsf')
assert_not_nil flash[:notice]
assert_equal flash[:notice], l(:notice_your_preferences_were_saved)
end
def test_user_pref_save_member_forbidden
- # Member
- @request.session[:user_id] = @user_member.id
- post :user_pref_save, params: { id: @project.id, email_notify: 1, title_format: '%t_%v' }
+ @role_manager.remove_permission! :user_preferences
+ post :user_pref_save, params: { id: @project1.id, email_notify: 1, title_format: '%t_%v' }
assert_response :forbidden
end
-
+
def test_user_pref_save_none_member
# Non Member
- @request.session[:user_id] = @user_non_member.id
- @role_manager.add_permission! :user_preferences
- post :user_pref_save, params: { id: @project.id, email_notify: 1, title_format: '%t_%v' }
+ @request.session[:user_id] = @someone.id
+ post :user_pref_save, params: { id: @project1.id, email_notify: 1, title_format: '%t_%v' }
assert_response :forbidden
end
-
+
def test_user_pref_save_admin
# Admin - non member
- @request.session[:user_id] = @user_admin.id
- @role_manager.add_permission! :user_preferences
- post :user_pref_save, params: { id: @project.id, email_notify: 1, title_format: '%t_%v' }
- assert_redirected_to settings_project_path(@project, tab: 'dmsf')
+ @request.session[:user_id] = @admin.id
+ post :user_pref_save, params: { id: @project1.id, email_notify: 1, title_format: '%t_%v' }
+ assert_redirected_to settings_project_path(@project1, tab: 'dmsf')
assert_not_nil flash[:warning]
assert_equal flash[:warning], l(:user_is_not_project_member)
end
diff --git a/test/functional/dmsf_workflow_controller_test.rb b/test/functional/dmsf_workflow_controller_test.rb
index 7adad137..732dcfec 100644
--- a/test/functional/dmsf_workflow_controller_test.rb
+++ b/test/functional/dmsf_workflow_controller_test.rb
@@ -29,56 +29,24 @@ class DmsfWorkflowsControllerTest < RedmineDmsf::Test::TestCase
:dmsf_file_revisions, :dmsf_files
def setup
- @user_admin = User.find 1 # Redmine admin
- @user_member = User.find 2 # John Smith - manager
- @user_non_member = User.find 3 # Dave Lopper
- @role_manager = Role.find_by(name: 'Manager')
- @role_manager.add_permission! :file_manipulation
- @role_manager.add_permission! :manage_workflows
- @role_manager.add_permission! :file_approval
- @role_manager.add_permission! :view_dmsf_files
+ super
@wfs1 = DmsfWorkflowStep.find 1 # step 1
@wfs2 = DmsfWorkflowStep.find 2 # step 2
@wfs3 = DmsfWorkflowStep.find 3 # step 1
@wfs4 = DmsfWorkflowStep.find 4 # step 2
@wfs5 = DmsfWorkflowStep.find 5 # step 3
- @project1 = Project.find 1
- @project1.enable_module! :dmsf
@wf1 = DmsfWorkflow.find 1
@wf3 = DmsfWorkflow.find 3
@wfsa2 = DmsfWorkflowStepAssignment.find 2
@revision1 = DmsfFileRevision.find 1
@revision2 = DmsfFileRevision.find 2
- @file1 = DmsfFile.find 1
- @file2 = DmsfFile.find 2
@request.env['HTTP_REFERER'] = dmsf_folder_path(id: @project1.id)
- User.current = nil
- @request.session[:user_id] = @user_member.id
- end
-
- def test_truth
- assert_kind_of User, @user_admin
- assert_kind_of User, @user_member
- assert_kind_of User, @user_non_member
- assert_kind_of Role, @role_manager
- assert_kind_of DmsfWorkflowStep, @wfs1
- assert_kind_of DmsfWorkflowStep, @wfs2
- assert_kind_of DmsfWorkflowStep, @wfs3
- assert_kind_of DmsfWorkflowStep, @wfs4
- assert_kind_of DmsfWorkflowStep, @wfs5
- assert_kind_of Project, @project1
- assert_kind_of DmsfWorkflow, @wf1
- assert_kind_of DmsfWorkflow, @wf3
- assert_kind_of DmsfWorkflowStepAssignment, @wfsa2
- assert_kind_of DmsfFileRevision, @revision1
- assert_kind_of DmsfFileRevision, @revision2
- assert_kind_of DmsfFile, @file1
- assert_kind_of DmsfFile, @file2
+ @request.session[:user_id] = @jsmith.id
end
def test_authorize_admin
# Admin
- @request.session[:user_id] = @user_admin.id
+ @request.session[:user_id] = @admin.id
get :index
assert_response :success
assert_template 'index'
@@ -86,7 +54,7 @@ class DmsfWorkflowsControllerTest < RedmineDmsf::Test::TestCase
def test_authorize_member
# Non member
- @request.session[:user_id] = @user_non_member.id
+ @request.session[:user_id] = @someone.id
get :index, params: { project_id: @project1.id }
assert_response :forbidden
end
@@ -136,7 +104,7 @@ class DmsfWorkflowsControllerTest < RedmineDmsf::Test::TestCase
end
def test_index_administration
- @request.session[:user_id] = @user_admin.id
+ @request.session[:user_id] = @admin.id
get :index
assert_response :success
assert_template 'index'
@@ -161,7 +129,7 @@ class DmsfWorkflowsControllerTest < RedmineDmsf::Test::TestCase
end
def test_unlock
- @request.session[:user_id] = @user_admin.id
+ @request.session[:user_id] = @admin.id
put :update, params: { id: @wf3.id, dmsf_workflow: { status: DmsfWorkflow::STATUS_ACTIVE }}
@wf3.reload
assert @wf3.active?, "#{@wf3.name} status is #{@wf3.status}"
@@ -197,14 +165,14 @@ class DmsfWorkflowsControllerTest < RedmineDmsf::Test::TestCase
def test_add_step
assert_difference 'DmsfWorkflowStep.count', +1 do
post :add_step, params: { commit: l(:dmsf_or), step: 1, name: '1st step', id: @wf1.id,
- user_ids: [@user_non_member.id] }
+ user_ids: [@someone.id] }
end
assert_response :success
ws = DmsfWorkflowStep.order(id: :desc).first
assert_equal @wf1.id, ws.dmsf_workflow_id
assert_equal 1, ws.step
assert_equal '1st step', ws.name
- assert_equal @user_non_member.id, ws.user_id
+ assert_equal @someone.id, ws.user_id
assert_equal DmsfWorkflowStep::OPERATOR_OR, ws.operator
end
@@ -329,14 +297,14 @@ class DmsfWorkflowsControllerTest < RedmineDmsf::Test::TestCase
id: @wf1.id,
dmsf_workflow_step_assignment_id: @wfsa2.id,
dmsf_file_revision_id: @revision2.id,
- step_action: @user_admin.id * 10,
+ step_action: @admin.id * 10,
note: 'Delegated because...'})
assert_redirected_to dmsf_folder_path(id: @project1.id)
assert DmsfWorkflowStepAction.where(
dmsf_workflow_step_assignment_id: @wfsa2.id,
action: DmsfWorkflowStepAction::ACTION_DELEGATE).first
@wfsa2.reload
- assert_equal @wfsa2.user_id, @user_admin.id
+ assert_equal @wfsa2.user_id, @admin.id
end
def test_assign
@@ -398,10 +366,10 @@ class DmsfWorkflowsControllerTest < RedmineDmsf::Test::TestCase
id: @wf1,
step: '1',
operator_step: { @wfs1.id.to_s => DmsfWorkflowStep::OPERATOR_OR.to_s },
- assignee: { @wfs1.id.to_s => @user_non_member.id.to_s }}
+ assignee: { @wfs1.id.to_s => @someone.id.to_s }}
assert_response :redirect
@wfs1.reload
- assert_equal @user_non_member.id, @wfs1.user_id
+ assert_equal @someone.id, @wfs1.user_id
end
def test_delete_step
@@ -415,27 +383,27 @@ class DmsfWorkflowsControllerTest < RedmineDmsf::Test::TestCase
end
def test_log_non_member
- @request.session[:user_id] = @user_non_member.id
+ @request.session[:user_id] = @someone.id
get :log, params: { id: @wf1.id, project_id: @project1.id, dmsf_file_id: @file1.id, format: 'js' }, xhr: true
assert_response :forbidden
end
def test_log_member_local_wf
- @request.session[:user_id] = @user_member.id
+ @request.session[:user_id] = @jsmith.id
get :log, params: { id: @wf1.id, project_id: @project1.id, dmsf_file_id: @file1.id, format: 'js' }, xhr: true
assert_response :success
assert_template :log
end
def test_log_member_global_wf
- @request.session[:user_id] = @user_member.id
+ @request.session[:user_id] = @jsmith.id
get :log, params: { id: @wf3.id, project_id: @project1.id, dmsf_file_id: @file1.id, format: 'js' }, xhr: true
assert_response :success
assert_template :log
end
def test_log_admin
- @request.session[:user_id] = @user_admin.id
+ @request.session[:user_id] = @admin.id
get :log, params: { id: @wf1.id, project_id: @project1.id, dmsf_file_id: @file1.id, format: 'js' }, xhr: true
assert_response :success
assert_template :log
diff --git a/test/functional/issues_controller_test.rb b/test/functional/issues_controller_test.rb
index b7ffde5d..d962c1ac 100644
--- a/test/functional/issues_controller_test.rb
+++ b/test/functional/issues_controller_test.rb
@@ -28,35 +28,9 @@ class IssuesControllerTest < RedmineDmsf::Test::TestCase
:enabled_modules, :enumerations, :issue_statuses
def setup
- @user_manager = User.find 2
- @project1 = Project.find 1
- @project1.enable_module! :dmsf
- @project1.enable_module! :issue_tracking
- @project2 = Project.find 2
- @project2.enable_module! :dmsf
- @project2.enable_module! :issue_tracking
+ super
@issue1 = Issue.find 1
- @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
- User.current = nil
- @request.session[:user_id] = @user_manager.id
- end
-
- def teardown
- # Delete our tmp folder
- begin
- FileUtils.rm_rf DmsfFile.storage_path
- rescue => e
- error e.message
- end
- Setting.plugin_redmine_dmsf['dmsf_storage_directory'] = @dmsf_storage_directory
- end
-
- def test_truth
- assert_kind_of Project, @project1
- assert_kind_of Project, @project2
- assert_kind_of Issue, @issue1
+ @request.session[:user_id] = @jsmith.id
end
def test_put_update_with_project_change
diff --git a/test/functional/my_controller_test.rb b/test/functional/my_controller_test.rb
index 58211627..bb15ad73 100644
--- a/test/functional/my_controller_test.rb
+++ b/test/functional/my_controller_test.rb
@@ -29,15 +29,8 @@ class MyControllerTest < RedmineDmsf::Test::TestCase
:dmsf_files, :dmsf_locks
def setup
- @admin = User.find 1
- @jsmith = User.find 2
- User.current = nil
+ super
@request.session[:user_id] = @jsmith.id
- end
-
- def test_truth
- assert_kind_of User, @admin
- assert_kind_of User, @jsmith
end
def test_page_with_open_approvals_one_approval
diff --git a/test/helper_test.rb b/test/helper_test.rb
index c97075ff..1fc3caa8 100644
--- a/test/helper_test.rb
+++ b/test/helper_test.rb
@@ -29,11 +29,11 @@ module RedmineDmsf
# Ultimately it allows for better integration without blowing redmine fixtures up,
# and allowing us to suppliment redmine fixtures if we need to.
def self.fixtures(*table_names)
- dir = File.join( File.dirname(__FILE__), '/fixtures')
+ dir = File.join(File.dirname(__FILE__), 'fixtures')
table_names.each do |x|
- ActiveRecord::FixtureSet.create_fixtures(dir, x) if File.exist?("#{dir}/#{x}.yml")
+ ActiveRecord::FixtureSet.create_fixtures(dir, x) if File.exist?(File.join(dir, "#{x}.yml"))
end
- super(table_names)
+ super table_names
end
end
end
diff --git a/test/integration/rest_api/dmsf_file_api_test.rb b/test/integration/rest_api/dmsf_file_api_test.rb
index 6d15f13b..1044a3ed 100644
--- a/test/integration/rest_api/dmsf_file_api_test.rb
+++ b/test/integration/rest_api/dmsf_file_api_test.rb
@@ -24,42 +24,16 @@ require File.expand_path('../../../test_helper', __FILE__)
class DmsfFileApiTest < RedmineDmsf::Test::IntegrationTest
include Redmine::I18n
- fixtures :projects, :users, :dmsf_files, :dmsf_file_revisions, :members, :roles, :member_roles
+ fixtures :projects, :users, :email_addresses, :dmsf_files, :dmsf_file_revisions, :members, :roles,
+ :member_roles, :dmsf_locks
def setup
- @admin = User.find 1
- @jsmith = User.find 2
- @file1 = DmsfFile.find 1
+ super
Setting.rest_api_enabled = '1'
- @role = Role.find_by(name: 'Manager')
- @project1 = Project.find 1
- @project1.enable_module! :dmsf
- @token = Token.create!(user: @jsmith, action: 'api')
- @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
- end
-
- def teardown
- # Delete our tmp folder
- begin
- FileUtils.rm_rf DmsfFile.storage_path
- rescue => e
- error e.message
- end
- Setting.plugin_redmine_dmsf['dmsf_storage_directory'] = @dmsf_storage_directory
- end
-
- def test_truth
- assert_kind_of User, @admin
- assert_kind_of User, @jsmith
- assert_kind_of DmsfFile, @file1
- assert_kind_of Role, @role
- assert_kind_of Project, @project1
+ @token = Token.create!(user: @jsmith_user, action: 'api')
end
def test_get_document
- @role.add_permission! :view_dmsf_files
#curl -v -H "Content-Type: application/xml" -X GET -u ${1}:${2} http://localhost:3000/dmsf/files/17216.xml
get "/dmsf/files/#{@file1.id}.xml?key=#{@token.value}"
assert_response :success
@@ -131,7 +105,6 @@ class DmsfFileApiTest < RedmineDmsf::Test::IntegrationTest
end
def test_upload_document
- @role.add_permission! :file_manipulation
#curl --data-binary "@cat.gif" -H "Content-Type: application/octet-stream" -X POST -u ${1}:${2} http://localhost:3000/projects/12/dmsf/upload.xml?filename=cat.gif
post "/projects/#{@project1.id}/dmsf/upload.xml?filename=test.txt&key=#{@token.value}", params: 'File content', headers: { "CONTENT_TYPE" => 'application/octet-stream' }
assert_response :created
@@ -174,24 +147,23 @@ class DmsfFileApiTest < RedmineDmsf::Test::IntegrationTest
end
def test_delete_file
- @role.add_permission! :file_delete
# curl -v -H "Content-Type: application/xml" -X DELETE -u ${1}:${2} http://localhost:3000/dmsf/files/196118.xml
delete "/dmsf/files/#{@file1.id}.xml?key=#{@token.value}", headers: { 'CONTENT_TYPE' => 'application/xml' }
assert_response :success
@file1.reload
assert_equal DmsfFile::STATUS_DELETED, @file1.deleted
- assert_equal @jsmith, @file1.deleted_by_user
+ assert_equal @jsmith_user, @file1.deleted_by_user
end
def test_delete_file_no_permissions
- token = Token.create!(user: @jsmith, action: 'api')
+ @role.remove_permission! :file_delete
+ token = Token.create!(user: @jsmith_user, action: 'api')
# curl -v -H "Content-Type: application/xml" -X DELETE -u ${1}:${2} http://localhost:3000/dmsf/files/196118.xml
delete "/dmsf/files/#{@file1.id}.xml?key=#{token.value}", headers: { 'CONTENT_TYPE' => 'application/xml' }
assert_response :forbidden
end
def test_delete_folder_commit_yes
- @role.add_permission! :file_delete
# curl -v -H "Content-Type: application/xml" -X DELETE -u ${1}:${2} http://localhost:3000/dmsf/files/196118.xml&commit=yes
delete "/dmsf/files/#{@file1.id}.xml?key=#{@token.value}&commit=yes", headers: { 'CONTENT_TYPE' => 'application/xml' }
assert_response :success
@@ -199,9 +171,9 @@ class DmsfFileApiTest < RedmineDmsf::Test::IntegrationTest
end
def test_delete_file_locked
- @role.add_permission! :file_delete
- User.current = @admin
+ User.current = @admin_user
@file1.lock!
+ User.current = nil
# curl -v -H "Content-Type: application/xml" -X DELETE -u ${1}:${2} http://localhost:3000/dmsf/files/196118.xml
delete "/dmsf/files/#{@file1.id}.xml?key=#{@token.value}", headers: { 'CONTENT_TYPE' => 'application/xml' }
assert_response 422
@@ -209,7 +181,7 @@ class DmsfFileApiTest < RedmineDmsf::Test::IntegrationTest
#
# Locked by Admin
#
- assert_select 'errors > error', text: l(:title_locked_by_user, user: @admin.name)
+ assert_select 'errors > error', text: l(:title_locked_by_user, user: @admin_user.name)
@file1.reload
assert_equal DmsfFile::STATUS_ACTIVE, @file1.deleted
end
diff --git a/test/integration/rest_api/dmsf_folder_api_test.rb b/test/integration/rest_api/dmsf_folder_api_test.rb
index 2ea034f2..9a4caad5 100644
--- a/test/integration/rest_api/dmsf_folder_api_test.rb
+++ b/test/integration/rest_api/dmsf_folder_api_test.rb
@@ -24,49 +24,18 @@ require File.expand_path('../../../test_helper', __FILE__)
class DmsfFolderApiTest < RedmineDmsf::Test::IntegrationTest
include Redmine::I18n
- fixtures :dmsf_folders, :dmsf_files, :dmsf_file_revisions, :projects, :users, :members, :roles,
- :member_roles
+ fixtures :dmsf_folders, :dmsf_files, :dmsf_file_revisions, :projects, :users, :email_addresses, :members,
+ :roles, :member_roles, :dmsf_locks
def setup
- @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
- @admin = User.find 1
- @jsmith = User.find 2
- @file1 = DmsfFile.find 1
- @folder1 = DmsfFolder.find 1
- @folder7 = DmsfFolder.find 7
+ super
Setting.rest_api_enabled = '1'
- @role = Role.find_by(name: 'Manager')
- @project1 = Project.find 1
- @project1.enable_module! :dmsf
- end
-
- def teardown
- # Delete our tmp folder
- begin
- FileUtils.rm_rf DmsfFile.storage_path
- rescue => e
- error e.message
- end
- Setting.plugin_redmine_dmsf['dmsf_storage_directory'] = @dmsf_storage_directory
- end
-
- def test_truth
- assert_kind_of User, @admin
- assert_kind_of User, @jsmith
- assert_kind_of DmsfFolder, @folder1
- assert_kind_of DmsfFolder, @folder7
- assert_kind_of DmsfFile, @file1
- assert_kind_of Role, @role
- assert_kind_of Project, @project1
+ @token = Token.create!(user: @jsmith_user, action: 'api')
end
def test_list_folder
- @role.add_permission! :view_dmsf_folders
- token = Token.create!(user: @jsmith, action: 'api')
#curl -v -H "Content-Type: application/xml" -X GET -u ${1}:${2} http://localhost:3000/dmsf/files/17216.xml
- get "/projects/#{@project1.identifier}/dmsf.xml?key=#{token.value}"
+ get "/projects/#{@project1.identifier}/dmsf.xml?key=#{@token.value}"
assert_response :success
assert_equal 'application/xml', @response.content_type
#
@@ -86,10 +55,8 @@ class DmsfFolderApiTest < RedmineDmsf::Test::IntegrationTest
end
def test_list_folder_limit_and_offset
- @role.add_permission! :view_dmsf_folders
- token = Token.create!(user: @jsmith, action: 'api')
#curl -v -H "Content-Type: application/xml" -X GET -u ${1}:${2} "http://localhost:3000/dmsf/files/17216.xml?limit=1&offset=1"
- get "/projects/#{@project1.identifier}/dmsf.xml?key=#{token.value}&limit=1&offset=2"
+ get "/projects/#{@project1.identifier}/dmsf.xml?key=#{@token.value}&limit=1&offset=2"
assert_response :success
assert_equal 'application/xml', @response.content_type
#
@@ -109,8 +76,6 @@ class DmsfFolderApiTest < RedmineDmsf::Test::IntegrationTest
end
def test_create_folder
- @role.add_permission! :folder_manipulation
- token = Token.create!(user: @jsmith, action: 'api')
#curl -v -H "Content-Type: application/xml" -X POST --data "@folder.xml" -u ${1}:${2} http://localhost:3000/projects/12/dmsf/create.xml
payload = %{
@@ -118,7 +83,7 @@ class DmsfFolderApiTest < RedmineDmsf::Test::IntegrationTest
A folder created via REST API
}
- post "/projects/#{@project1.identifier}/dmsf/create.xml?key=#{token.value}", params: payload, headers: { 'CONTENT_TYPE' => 'application/xml' }
+ post "/projects/#{@project1.identifier}/dmsf/create.xml?key=#{@token.value}", params: payload, headers: { 'CONTENT_TYPE' => 'application/xml' }
assert_response :success
#
#
@@ -129,10 +94,8 @@ class DmsfFolderApiTest < RedmineDmsf::Test::IntegrationTest
end
def test_find_folder_by_title
- @role.add_permission! :view_dmsf_folders
- token = Token.create!(user: @jsmith, action: 'api')
# curl -v -H "Content-Type: application/json" -X GET -H "X-Redmine-API-Key: USERS_API_KEY" http://localhost:3000/projects/1/dmsf.json?folder_title=Updated%20title
- get "/projects/#{@project1.identifier}/dmsf.xml?key=#{token.value}&folder_title=#{@folder1.title}"
+ get "/projects/#{@project1.identifier}/dmsf.xml?key=#{@token.value}&folder_title=#{@folder1.title}"
assert_response :success
assert_equal 'application/xml', @response.content_type
#
@@ -157,18 +120,14 @@ class DmsfFolderApiTest < RedmineDmsf::Test::IntegrationTest
end
def test_find_folder_by_title_not_found
- @role.add_permission! :view_dmsf_folders
- token = Token.create!(user: @jsmith, action: 'api')
# curl -v -H "Content-Type: application/json" -X GET -H "X-Redmine-API-Key: USERS_API_KEY" http://localhost:3000/projects/1/dmsf.json?folder_title=Updated%20title
- get "/projects/#{@project1.identifier}/dmsf.xml?key=#{token.value}&folder_title=xxx"
+ get "/projects/#{@project1.identifier}/dmsf.xml?key=#{@token.value}&folder_title=xxx"
assert_response :not_found
end
def test_find_folder_by_id
- @role.add_permission! :view_dmsf_folders
- token = Token.create!(user: @jsmith, action: 'api')
# curl -v -H "Content-Type: application/json" -X GET -H "X-Redmine-API-Key: USERS_API_KE" http://localhost:3000/projects/1/dmsf.json?folder_id=3
- get "/projects/#{@project1.identifier}/dmsf.xml?key=#{token.value}&folder_id=#{@folder1.id}"
+ get "/projects/#{@project1.identifier}/dmsf.xml?key=#{@token.value}&folder_id=#{@folder1.id}"
assert_response :success
assert_equal 'application/xml', @response.content_type
#
@@ -193,23 +152,19 @@ class DmsfFolderApiTest < RedmineDmsf::Test::IntegrationTest
end
def test_find_folder_by_id_not_found
- @role.add_permission! :view_dmsf_folders
- token = Token.create!(user: @jsmith, action: 'api')
# curl -v -H "Content-Type: application/json" -X GET -H "X-Redmine-API-Key: USERS_API_KE" http://localhost:3000/projects/1/dmsf.json?folder_id=3
- get "/projects/#{@project1.identifier}/dmsf.xml?key=#{token.value}&folder_id=none"
+ get "/projects/#{@project1.identifier}/dmsf.xml?key=#{@token.value}&folder_id=none"
assert_response :not_found
end
def test_update_folder
- @role.add_permission! :folder_manipulation
- token = Token.create!(user: @jsmith, action: 'api')
#curl -v -H "Content-Type: application/json" -X POST --data "@update-folder-payload.json" -H "X-Redmine-API-Key: USERS_API_KEY" http://localhost:3000//projects/#{project_id}/dmsf/save.json
payload = %{
rest_api
A folder updated via REST API
}
- post "/projects/#{@project1.identifier}/dmsf/save.xml?folder_id=1&key=#{token.value}", params: payload, headers: { 'CONTENT_TYPE' => 'application/xml' }
+ post "/projects/#{@project1.identifier}/dmsf/save.xml?folder_id=1&key=#{@token.value}", params: payload, headers: { 'CONTENT_TYPE' => 'application/xml' }
assert_response :success
#
#
@@ -221,43 +176,34 @@ class DmsfFolderApiTest < RedmineDmsf::Test::IntegrationTest
end
def test_delete_folder
- @role.add_permission! :folder_manipulation
- token = Token.create!(user: @jsmith, action: 'api')
# curl -v -H "Content-Type: application/xml" -X DELETE -u ${1}:${2} http://localhost:3000/projects/1/dmsf/delete.xml?folder_id=3
- delete "/projects/#{@project1.identifier}/dmsf/delete.xml?key=#{token.value}&folder_id=#{@folder1.id}",
+ delete "/projects/#{@folder6.project.identifier}/dmsf/delete.xml?key=#{@token.value}&folder_id=#{@folder6.id}",
headers: { 'CONTENT_TYPE' => 'application/xml' }
assert_response :success
- @folder1.reload
- assert_equal DmsfFolder::STATUS_DELETED, @folder1.deleted
- assert_equal @jsmith, @folder1.deleted_by_user
+ @folder6.reload
+ assert_equal DmsfFolder::STATUS_DELETED, @folder6.deleted
+ assert_equal @jsmith_user, @folder6.deleted_by_user
end
def test_delete_folder_no_permission
- token = Token.create!(user: @jsmith, action: 'api')
+ @role.remove_permission! :folder_manipulation
# curl -v -H "Content-Type: application/xml" -X DELETE -u ${1}:${2} http://localhost:3000/projects/1/dmsf/delete.xml?folder_id=3
- delete "/projects/#{@project1.identifier}/dmsf/delete.xml?key=#{token.value}&folder_id=#{@folder1.id}",
+ delete "/projects/#{@folder6.project.identifier}/dmsf/delete.xml?key=#{@token.value}&folder_id=#{@folder6.id}",
headers: {'CONTENT_TYPE' => 'application/xml'}
assert_response :forbidden
end
def test_delete_folder_commit_yes
- @role.add_permission! :folder_manipulation
- assert !@folder1.locked?
- token = Token.create!(user: @jsmith, action: 'api')
# curl -v -H "Content-Type: application/xml" -X DELETE -u ${1}:${2} http://localhost:3000/projects/1/dmsf/delete.xml?folder_id=3
- delete "/projects/#{@project1.identifier}/dmsf/delete.xml?key=#{token.value}&folder_id=#{@folder1.id}&commit=yes",
+ delete "/projects/#{@folder6.project.identifier}/dmsf/delete.xml?key=#{@token.value}&folder_id=#{@folder6.id}&commit=yes",
headers: { CONTENT_TYPE: 'application/xml' }
assert_response :success
- assert_nil DmsfFolder.find_by(id: @folder1.id)
+ assert_nil DmsfFolder.find_by(id: @folder6.id)
end
def test_delete_folder_locked
- @role.add_permission! :folder_manipulation
- User.current = @admin
- @folder1.lock!
- token = Token.create!(user: @jsmith, action: 'api')
# curl -v -H "Content-Type: application/xml" -X DELETE -u ${1}:${2} http://localhost:3000/projects/1/dmsf/delete.xml?folder_id=3
- delete "/projects/#{@project1.identifier}/dmsf/delete.xml?key=#{token.value}&folder_id=#{@folder1.id}",
+ delete "/projects/#{@folder2.project.identifier}/dmsf/delete.xml?key=#{@token.value}&folder_id=#{@folder2.id}",
headers: { 'CONTENT_TYPE' => 'application/xml' }
assert_response 422
#
@@ -265,8 +211,8 @@ class DmsfFolderApiTest < RedmineDmsf::Test::IntegrationTest
# Folder is locked
#
assert_select 'errors > error', text: l(:error_folder_is_locked)
- @folder1.reload
- assert_equal DmsfFolder::STATUS_ACTIVE, @folder1.deleted
+ @folder2.reload
+ assert_equal DmsfFolder::STATUS_ACTIVE, @folder2.deleted
end
end
\ No newline at end of file
diff --git a/test/integration/rest_api/dmsf_link_api_test.rb b/test/integration/rest_api/dmsf_link_api_test.rb
index 9605f31e..8df39d0f 100644
--- a/test/integration/rest_api/dmsf_link_api_test.rb
+++ b/test/integration/rest_api/dmsf_link_api_test.rb
@@ -24,29 +24,16 @@ require File.expand_path('../../../test_helper', __FILE__)
class DmsfLinkApiTest < RedmineDmsf::Test::IntegrationTest
include Redmine::I18n
- fixtures :projects, :users, :dmsf_files, :dmsf_file_revisions, :members, :roles, :member_roles
+ fixtures :projects, :users, :email_addresses, :dmsf_files, :dmsf_file_revisions, :members, :roles,
+ :member_roles
def setup
- @admin = User.find 1
- @jsmith = User.find 2
- @file1 = DmsfFile.find 1
+ super
Setting.rest_api_enabled = '1'
- @role = Role.find 1
- @project1 = Project.find 1
- @project1.enable_module! :dmsf
- end
-
- def test_truth
- assert_kind_of User, @admin
- assert_kind_of User, @jsmith
- assert_kind_of DmsfFile, @file1
- assert_kind_of Role, @role
- assert_kind_of Project, @project1
end
def test_create_link
- @role.add_permission! :file_manipulation
- token = Token.create!(user: @jsmith, action: 'api')
+ token = Token.create!(user: @jsmith_user, action: 'api')
name = 'REST API link test'
# curl -v -H "Content-Type: application/xml" -X POST --data "@link.xml" -H "X-Redmine-API-Key: USERS_API_KEY" http://localhost:3000/dmsf_links.xml
payload = %{
diff --git a/test/integration/webdav/dmsf_webdav_custom_middleware_test.rb b/test/integration/webdav/dmsf_webdav_custom_middleware_test.rb
index 64a2db61..7c0810c3 100644
--- a/test/integration/webdav/dmsf_webdav_custom_middleware_test.rb
+++ b/test/integration/webdav/dmsf_webdav_custom_middleware_test.rb
@@ -23,14 +23,7 @@ require File.expand_path('../../../test_helper', __FILE__)
class DmsfWebdavCustomMiddlewareTest < RedmineDmsf::Test::IntegrationTest
- def setup
- @dmsf_webdav = Setting.plugin_redmine_dmsf['dmsf_webdav']
- Setting.plugin_redmine_dmsf['dmsf_webdav'] = true
- end
-
- def teardown
- Setting.plugin_redmine_dmsf['dmsf_webdav'] = @dmsf_webdav
- end
+ fixtures :users, :email_addresses, :projects, :members, :roles, :member_roles, :dmsf_folders, :dmsf_files
def test_options_for_root_path
process :options, '/'
diff --git a/test/integration/webdav/dmsf_webdav_delete_test.rb b/test/integration/webdav/dmsf_webdav_delete_test.rb
index 21d6b987..db9ada81 100644
--- a/test/integration/webdav/dmsf_webdav_delete_test.rb
+++ b/test/integration/webdav/dmsf_webdav_delete_test.rb
@@ -25,61 +25,10 @@ require File.expand_path('../../../test_helper', __FILE__)
class DmsfWebdavDeleteTest < RedmineDmsf::Test::IntegrationTest
include Redmine::I18n
- fixtures :projects, :users, :email_addresses, :members, :member_roles, :roles,
+ fixtures :projects, :users, :email_addresses, :members, :member_roles, :roles,
:enabled_modules, :dmsf_folders, :dmsf_files, :dmsf_file_revisions,
:dmsf_locks
- def setup
- @admin = credentials 'admin'
- @jsmith = credentials 'jsmith'
- @project1 = Project.find 1
- @project2 = Project.find 2
- @project3 = Project.find 3 # Sub-project of project 1
- @role = Role.find_by(name: 'Manager')
- @folder1 = DmsfFolder.find 1
- @folder6 = DmsfFolder.find 6
- @folder10 = DmsfFolder.find 10
- @file1 = DmsfFile.find 1
- @file12 = DmsfFile.find 12
- @dmsf_webdav = Setting.plugin_redmine_dmsf['dmsf_webdav']
- Setting.plugin_redmine_dmsf['dmsf_webdav'] = true
- @dmsf_webdav_strategy = Setting.plugin_redmine_dmsf['dmsf_webdav_strategy']
- Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] = 'WEBDAV_READ_WRITE'
- @dmsf_webdav_use_project_names = Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names']
- Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = false
- @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 # Enable DMSF module
- @project3.enable_module! :dmsf
- User.current = nil
- end
-
- def teardown
- # Delete our tmp folder
- begin
- FileUtils.rm_rf DmsfFile.storage_path
- rescue => e
- error e.message
- end
- Setting.plugin_redmine_dmsf['dmsf_webdav'] = @dmsf_webdav
- Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] = @dmsf_webdav_strategy
- Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = @dmsf_webdav_use_project_names
- Setting.plugin_redmine_dmsf['dmsf_storage_directory'] = @dmsf_storage_directory
- end
-
- def test_truth
- assert_kind_of Project, @project1
- assert_kind_of Project, @project2
- assert_kind_of Project, @project3
- assert_kind_of DmsfFolder, @folder1
- assert_kind_of DmsfFolder, @folder6
- assert_kind_of DmsfFolder, @folder10
- assert_kind_of DmsfFile, @file1
- assert_kind_of DmsfFile, @file12
- assert_kind_of Role, @role
- end
-
def test_not_authenticated
delete '/dmsf/webdav'
assert_response :unauthorized
@@ -135,6 +84,7 @@ class DmsfWebdavDeleteTest < RedmineDmsf::Test::IntegrationTest
end
def test_unathorized_user
+ @role.remove_permission! :view_dmsf_folders
delete "/dmsf/webdav/#{@project1.identifier}/#{@file1.name}", params: nil, headers: @jsmith
assert_response :not_found # Without folder_view permission, he will not even be aware of its existence.
@file1.reload
@@ -142,15 +92,15 @@ class DmsfWebdavDeleteTest < RedmineDmsf::Test::IntegrationTest
end
def test_unathorized_user_forbidden
- @role.add_permission! :view_dmsf_folders
+ @role.remove_permission! :file_delete
delete "/dmsf/webdav/#{@project1.identifier}/#{@file1.name}", params: nil, headers: @jsmith
- assert_response :forbidden # Now jsmith's role has view_folder rights, however they do not hold file manipulation rights.
+ assert_response :forbidden
@file1.reload
assert !@file1.deleted?, "File #{@file1.name} is expected to exist"
end
def test_view_folder_not_allowed
- @role.add_permission! :file_manipulation
+ @role.remove_permission! :view_dmsf_folders
delete "/dmsf/webdav/#{@project1.identifier}/#{@folder1.title}", params: nil, headers: @jsmith
assert_response :not_found # Without folder_view permission, he will not even be aware of its existence.
@folder1.reload
@@ -158,7 +108,7 @@ class DmsfWebdavDeleteTest < RedmineDmsf::Test::IntegrationTest
end
def test_folder_manipulation_not_allowed
- @role.add_permission! :view_dmsf_folders
+ @role.remove_permission! :folder_manipulation
delete "/dmsf/webdav/#{@project1.identifier}/#{@folder1.title}", params: nil, headers: @jsmith
assert_response :forbidden # Without manipulation permission, action is forbidden.
@folder1.reload
@@ -169,12 +119,10 @@ class DmsfWebdavDeleteTest < RedmineDmsf::Test::IntegrationTest
delete "/dmsf/webdav/#{@project1.identifier}/#{@folder6.title}", params: nil, headers: @admin
assert_response :success
@folder6.reload
- assert @folder6.deleted?, "Folder #{@folder1.title} is not expected to exist"
+ assert @folder6.deleted?, "Folder #{@folder6.title} is not expected to exist"
end
def test_folder_delete_by_user
- @role.add_permission! :view_dmsf_folders
- @role.add_permission! :folder_manipulation
delete "/dmsf/webdav/#{@project1.identifier}/#{@folder6.title}", params: nil, headers: @jsmith
assert_response :success
@folder6.reload
@@ -183,8 +131,6 @@ class DmsfWebdavDeleteTest < RedmineDmsf::Test::IntegrationTest
def test_folder_delete_by_user_with_project_names
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
- @role.add_permission! :view_dmsf_folders
- @role.add_permission! :folder_manipulation
delete "/dmsf/webdav/#{@project1.identifier}/#{@folder6.title}", params: nil, headers: @jsmith
assert_response :not_found
p1name_uri = Addressable::URI.escape(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
@@ -202,8 +148,6 @@ class DmsfWebdavDeleteTest < RedmineDmsf::Test::IntegrationTest
end
def test_file_delete_by_user
- @role.add_permission! :view_dmsf_folders
- @role.add_permission! :file_delete
delete "/dmsf/webdav/#{@project1.identifier}/#{@file1.name}", params: nil, headers: @jsmith
assert_response :success
@file1.reload
@@ -211,9 +155,7 @@ class DmsfWebdavDeleteTest < RedmineDmsf::Test::IntegrationTest
end
def test_file_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! :file_delete
+ Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = '1'
delete "/dmsf/webdav/#{@project1.identifier}/#{@file1.name}", params: nil, headers: @jsmith
assert_response :not_found
p1name_uri = Addressable::URI.escape(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
@@ -224,15 +166,11 @@ class DmsfWebdavDeleteTest < RedmineDmsf::Test::IntegrationTest
end
def test_folder_delete_fragments
- @role.add_permission! :view_dmsf_folders
- @role.add_permission! :folder_manipulation
delete "/dmsf/webdav/#{@project1.identifier}/#{@folder6.title}/#frament=HTTP/1.1", params: nil, headers: @jsmith
assert_response :bad_request
end
def test_locked_folder
- @role.add_permission! :view_dmsf_folders
- @role.add_permission! :folder_manipulation
@folder6.lock!
delete "/dmsf/webdav/#{@project1.identifier}/#{@folder6.title}", params: nil, headers: @jsmith
assert_response :locked
@@ -241,8 +179,6 @@ class DmsfWebdavDeleteTest < RedmineDmsf::Test::IntegrationTest
end
def test_locked_file
- @role.add_permission! :view_dmsf_folders
- @role.add_permission! :file_delete
@file1.lock!
delete "/dmsf/webdav/#{@project1.identifier}/#{@file1.name}", params: nil, headers: @jsmith
assert_response :locked
@@ -251,8 +187,6 @@ class DmsfWebdavDeleteTest < RedmineDmsf::Test::IntegrationTest
end
def test_non_versioned_file
- @role.add_permission! :view_dmsf_folders
- @role.add_permission! :file_delete
delete "/dmsf/webdav/#{@project1.identifier}/#{@file1.name}", params: nil, headers: @jsmith
assert_response :success
# The file should be destroyed
diff --git a/test/integration/webdav/dmsf_webdav_get_test.rb b/test/integration/webdav/dmsf_webdav_get_test.rb
index dfe3f3a5..1508e48c 100644
--- a/test/integration/webdav/dmsf_webdav_get_test.rb
+++ b/test/integration/webdav/dmsf_webdav_get_test.rb
@@ -27,57 +27,6 @@ class DmsfWebdavGetTest < RedmineDmsf::Test::IntegrationTest
fixtures :projects, :users, :email_addresses, :members, :member_roles, :roles,
:enabled_modules, :dmsf_folders, :dmsf_files, :dmsf_file_revisions
- def setup
- @admin = credentials 'admin'
- @jsmith = credentials 'jsmith'
- @project1 = Project.find 1
- @project2 = Project.find 2
- @project3 = Project.find 3
- @file1 = DmsfFile.find 1
- @file2 = DmsfFile.find 2
- @folder1 = DmsfFolder.find 1
- @folder3 = DmsfFolder.find 3
- @folder10 = DmsfFolder.find 10
- @file12 = DmsfFile.find 12
- @role = Role.find_by(name: 'Manager')
- @dmsf_webdav = Setting.plugin_redmine_dmsf['dmsf_webdav']
- Setting.plugin_redmine_dmsf['dmsf_webdav'] = true
- @dmsf_webdav_strategy = Setting.plugin_redmine_dmsf['dmsf_webdav_strategy']
- Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] = 'WEBDAV_READ_WRITE'
- @dmsf_webdav_use_project_names = Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names']
- Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = false
- @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
- User.current = nil
- end
-
- def teardown
- # Delete our tmp folder
- begin
- FileUtils.rm_rf DmsfFile.storage_path
- rescue => e
- error e.message
- end
- Setting.plugin_redmine_dmsf['dmsf_webdav'] = @dmsf_webdav
- Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] = @dmsf_webdav_strategy
- Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = @dmsf_webdav_use_project_names
- Setting.plugin_redmine_dmsf['dmsf_storage_directory'] = @dmsf_storage_directory
- end
-
- def test_truth
- assert_kind_of Project, @project1
- assert_kind_of Project, @project2
- assert_kind_of Project, @project3
- assert_kind_of DmsfFile, @file1
- assert_kind_of DmsfFile, @file2
- assert_kind_of DmsfFile, @file12
- assert_kind_of DmsfFolder, @folder1
- assert_kind_of DmsfFolder, @folder3
- assert_kind_of DmsfFolder, @folder10
- assert_kind_of Role, @role
- end
-
def test_should_deny_anonymous
get '/dmsf/webdav'
assert_response :unauthorized
@@ -129,7 +78,7 @@ class DmsfWebdavGetTest < RedmineDmsf::Test::IntegrationTest
end
def test_should_return_status_200_when_dmsf_not_enabled_for_project
- assert !@project2.module_enabled?('dmsf')
+ @project2.disable_module! :dmsf
get "/dmsf/webdav/#{@project2.identifier}", params: nil, headers: @jsmith
assert_response :success
# Folders and files are not listed
@@ -138,8 +87,6 @@ class DmsfWebdavGetTest < RedmineDmsf::Test::IntegrationTest
end
def test_should_not_list_files_without_permissions
- assert @project1.module_enabled?('dmsf')
- @role.add_permission! :view_dmsf_folders
@role.remove_permission! :view_dmsf_files
get "/dmsf/webdav/#{@project1.identifier}", params: nil, headers: @jsmith
assert_response :success
@@ -149,9 +96,7 @@ class DmsfWebdavGetTest < RedmineDmsf::Test::IntegrationTest
end
def test_should_not_list_folders_without_permissions
- assert @project1.module_enabled?('dmsf')
@role.remove_permission! :view_dmsf_folders
- @role.add_permission! :view_dmsf_files
get "/dmsf/webdav/#{@project1.identifier}", params: nil, headers: @jsmith
assert_response :success
# Folders are not listed
@@ -175,7 +120,7 @@ class DmsfWebdavGetTest < RedmineDmsf::Test::IntegrationTest
assert_response :success
folder = DmsfFolder.find_by(id: 1)
assert_not_nil folder
- assert response.body.match(folder.title),
+ assert response.body.match(@folder1.title),
"Expected to find #{folder.title} in return data"
file = DmsfFile.find_by(id: 1)
assert_not_nil file
@@ -189,43 +134,33 @@ class DmsfWebdavGetTest < RedmineDmsf::Test::IntegrationTest
end
def test_user_assigned_to_archived_project
- @project1.enable_module! :dmsf
@project1.archive
get "/dmsf/webdav/#{@project1.identifier}", params: nil, headers: @jsmith
assert_response :not_found
end
def test_user_assigned_to_project_folder_ok
- @project1.enable_module! :dmsf
- @role.add_permission! :view_dmsf_folders
- @role.add_permission! :view_dmsf_files
get "/dmsf/webdav/#{@project1.identifier}", params: nil, headers: @jsmith
assert_response :success
end
def test_user_assigned_to_project_file_forbidden
- @project1.enable_module! :dmsf
- @role.add_permission! :view_dmsf_folders
+ @role.remove_permission! :view_dmsf_files
get "/dmsf/webdav/#{@project1.identifier}/test.txt", params: nil, headers: @jsmith
assert_response :forbidden
end
def test_user_assigned_to_project_file_ok
- @project1.enable_module! :dmsf
- @role.add_permission! :view_dmsf_folders
- @role.add_permission! :view_dmsf_files
get "/dmsf/webdav/#{@project1.identifier}/test.txt", params: nil, headers: @jsmith
assert_response :success
end
def test_get_file_in_subproject
- @project3.enable_module! :dmsf
get "/dmsf/webdav/#{@project1.identifier}/#{@project3.identifier}/#{@file12.name}", params: nil, headers: @admin
assert_response :success
end
def test_get_folder_in_subproject
- @project3.enable_module! :dmsf
get "/dmsf/webdav/#{@project1.identifier}/#{@project3.identifier}/#{@folder10.title}", params: nil, headers: @admin
assert_response :success
end
diff --git a/test/integration/webdav/dmsf_webdav_head_test.rb b/test/integration/webdav/dmsf_webdav_head_test.rb
index ced177ca..93cd98b0 100644
--- a/test/integration/webdav/dmsf_webdav_head_test.rb
+++ b/test/integration/webdav/dmsf_webdav_head_test.rb
@@ -25,51 +25,7 @@ require File.expand_path('../../../test_helper', __FILE__)
class DmsfWebdavHeadTest < RedmineDmsf::Test::IntegrationTest
fixtures :projects, :users, :email_addresses, :members, :member_roles, :roles,
- :enabled_modules, :dmsf_folders
-
- def setup
- @admin = credentials 'admin'
- @jsmith = credentials 'jsmith'
- @project1 = Project.find 1
- @project1.enable_module! 'dmsf'
- @project2 = Project.find 2
- @project3 = Project.find 3
- @folder10 = DmsfFolder.find 10
- @file12 = DmsfFile.find 12
- @dmsf_webdav = Setting.plugin_redmine_dmsf['dmsf_webdav']
- Setting.plugin_redmine_dmsf['dmsf_webdav'] = true
- @dmsf_webdav_strategy = Setting.plugin_redmine_dmsf['dmsf_webdav_strategy']
- Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] = 'WEBDAV_READ_WRITE'
- @dmsf_webdav_use_project_names = Setting.plugin_redmine_dmsf['dmsf_webdav_strategy']
- Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
- @project1_uri = Addressable::URI.escape(RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1))
- Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = false
- @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
- User.current = nil
- end
-
- def teardown
- # Delete our tmp folder
- begin
- FileUtils.rm_rf DmsfFile.storage_path
- rescue => e
- error e.message
- end
- Setting.plugin_redmine_dmsf['dmsf_webdav'] = @dmsf_webdav
- Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] = @dmsf_webdav_strategy
- Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = @dmsf_webdav_use_project_names
- Setting.plugin_redmine_dmsf['dmsf_storage_directory'] = @dmsf_storage_directory
- end
-
- def test_truth
- assert_kind_of Project, @project1
- assert_kind_of Project, @project2
- assert_kind_of Project, @project3
- assert_kind_of DmsfFolder, @folder10
- assert_kind_of DmsfFile, @file12
- end
+ :enabled_modules, :dmsf_folders, :dmsf_files, :dmsf_file_revisions
def test_head_requires_authentication
head "/dmsf/webdav/#{@project1.identifier}"
@@ -81,7 +37,7 @@ class DmsfWebdavHeadTest < RedmineDmsf::Test::IntegrationTest
head "/dmsf/webdav/#{@project1.identifier}", params: nil, headers: @admin
assert_response :success
check_headers_exist
- Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
+ Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = '1'
head "/dmsf/webdav/#{@project1.identifier}", params: nil, headers: @admin
assert_response :not_found
head "/dmsf/webdav/#{@project1_uri}", params: nil, headers: @admin
@@ -96,8 +52,8 @@ class DmsfWebdavHeadTest < RedmineDmsf::Test::IntegrationTest
def test_head_responds_to_file
head "/dmsf/webdav/#{@project1.identifier}/test.txt", params: nil, headers: @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
+ check_headers_exist
+ Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = '1'
head "/dmsf/webdav/#{@project1.identifier}/test.txt", params: nil, headers: @admin
assert_response :not_found
head "/dmsf/webdav/#{@project1_uri}/test.txt", params: nil, headers: @admin
@@ -141,48 +97,13 @@ class DmsfWebdavHeadTest < RedmineDmsf::Test::IntegrationTest
end
def test_head_file_in_subproject
- @project3.enable_module! :dmsf # Flag module enabled
- head "/dmsf/webdav/#{@project1.identifier}/#{@project3.identifier}/#{@file12.name}", params: nil, headers: @admin
- assert_response :success
- end
+ head "/dmsf/webdav/#{@project1.identifier}/#{@project3.identifier}/#{@file12.name}", params: nil, headers: @admin
+ assert_response :success
+ end
def test_head_folder_in_subproject
- @project3.enable_module! :dmsf # Flag module enabled
head "/dmsf/webdav/#{@project1.identifier}/#{@project3.identifier}/#{@folder10.title}", params: nil, headers: @admin
assert_response :success
end
- private
-
- def check_headers_exist
- assert !(response.headers.nil? || response.headers.empty?),
- 'Head returned without headers' # Headers exist?
- values = {}
- values[:etag] = { optional: true, content: response.headers['Etag'] }
- values[:content_type] = response.headers['Content-Type']
- values[:last_modified] = { optional: true, content: response.headers['Last-Modified'] }
- single_optional = false
- values.each do |key,val|
- if val.is_a?(Hash)
- if val[:optional].nil? || !val[:optional]
- assert(!(val[:content].nil? || val[:content].empty?), "Expected header #{key} was empty." ) if single_optional
- else
- single_optional = true
- end
- else
- assert !(val.nil? || val.empty?), "Expected header #{key} was empty."
- end
- end
- end
-
- def check_headers_dont_exist
- assert !(response.headers.nil? || response.headers.empty?), 'Head returned without headers' # Headers exist?
- values = {}
- values[:etag] = response.headers['Etag']
- values[:last_modified] = response.headers['Last-Modified']
- values.each do |key,val|
- assert (val.nil? || val.empty?), "Expected header #{key} should be empty."
- end
- end
-
end
diff --git a/test/integration/webdav/dmsf_webdav_lock_test.rb b/test/integration/webdav/dmsf_webdav_lock_test.rb
index a195af3c..0405f1f1 100644
--- a/test/integration/webdav/dmsf_webdav_lock_test.rb
+++ b/test/integration/webdav/dmsf_webdav_lock_test.rb
@@ -29,144 +29,101 @@ class DmsfWebdavLockTest < RedmineDmsf::Test::IntegrationTest
:enabled_modules, :dmsf_folders, :dmsf_files, :dmsf_file_revisions, :dmsf_locks
def setup
- @admin = credentials 'admin'
- @jsmith = credentials 'jsmith'
- @admin_user = User.find_by(login: 'admin')
- @project1 = Project.find 1
- @project1.enable_module! 'dmsf'
- @project2 = Project.find 2
- @project2.enable_module! 'dmsf'
- @project3 = Project.find 3
- @project3.enable_module! 'dmsf'
- @file1 = DmsfFile.find 1
- @file2 = DmsfFile.find 2
- @file9 = DmsfFile.find 9
- @file12 = DmsfFile.find 12
- @folder10 = DmsfFolder.find 10
- # Fix permissions for jsmith's role
- @role = Role.find_by(name: 'Manager')
- @role.add_permission! :view_dmsf_folders
- @role.add_permission! :folder_manipulation
- @role.add_permission! :view_dmsf_files
- @role.add_permission! :file_manipulation
- @dmsf_webdav = Setting.plugin_redmine_dmsf['dmsf_webdav']
- Setting.plugin_redmine_dmsf['dmsf_webdav'] = true
- @dmsf_webdav_strategy = Setting.plugin_redmine_dmsf['dmsf_webdav_strategy']
- Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] = 'WEBDAV_READ_WRITE'
+ super
@xml = %{
jsmith
}
- User.current = nil
end
- def teardown
- Setting.plugin_redmine_dmsf['dmsf_webdav'] = @dmsf_webdav
- Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] = @dmsf_webdav_strategy
+ def test_lock_file_already_locked_by_other
+ log_user 'admin', 'admin'
+ process :lock, "/dmsf/webdav/#{@file2.project.identifier}/#{@file2.name}", params: @xml,
+ headers: @admin.merge!({ HTTP_DEPTH: 'infinity', HTTP_TIMEOUT: 'Infinite' })
+ assert_response :multi_status
+ assert_match 'HTTP/1.1 409 Conflict', response.body
end
- def test_truth
- assert_kind_of Project, @project1
- assert_kind_of Project, @project2
- assert_kind_of Project, @project3
- assert_kind_of DmsfFile, @file1
- assert_kind_of DmsfFile, @file2
- assert_kind_of DmsfFile, @file9
- assert_kind_of DmsfFile, @file12
- assert_kind_of DmsfFolder, @folder10
- assert_kind_of Role, @role
- assert_kind_of User, @admin_user
+ def test_lock_file
+ log_user 'jsmith', 'jsmith'
+ create_time = Time.utc(2000, 1, 2, 3, 4, 5)
+ refresh_time = Time.utc(2000, 1, 2, 6, 7, 8)
+ lock_token = nil
+
+ # Time travel, will make the usec part of the time 0
+ travel_to create_time do
+ # Lock file
+ process :lock, "/dmsf/webdav/#{@file9.project.identifier}/#{@file9.name}", params: @xml,
+ headers: @jsmith.merge!({ HTTP_DEPTH: 'infinity', HTTP_TIMEOUT: 'Infinite' })
+ assert_response :success
+ # Verify the response
+ #
+ #
+ #
+ #
+ # exclusive
+ # write
+ # infinity
+ # Second-604800
+ #
+ # f5762389-6b49-4482-9a4b-ff1c8f975765
+ #
+ #
+ #
+ #
+ assert_match 'exclusive', response.body
+ assert_match 'write', response.body
+ assert_match 'infinity', response.body
+ # 1.week = 7*24*3600=604800 seconds
+ assert_match 'Second-604800', response.body
+ assert_match(/([a-z0-9\-]+)<\/d:href><\/d:locktoken>/, response.body)
+ # Extract the locktoken, needed when refreshing the lock
+ response.body.match(/([a-z0-9\-]+)<\/d:href><\/d:locktoken>/)
+ lock_token = $1
+ # Verify the lock in the db
+ @file9.reload
+ l = @file9.lock.first
+ assert_equal create_time, l.created_at
+ assert_equal create_time, l.updated_at
+ assert_equal (create_time + 1.week), l.expires_at
+ end
+
+ travel_to refresh_time do
+ # Refresh lock
+ process :lock, "/dmsf/webdav/#{@project1.identifier}/#{@file9.name}",
+ params: nil,
+ headers: @jsmith.merge!({ HTTP_DEPTH: 'infinity', HTTP_TIMEOUT: 'Infinite', HTTP_IF: lock_token })
+ assert_response :success
+ # 1.week = 7*24*3600=604800 seconds
+ assert_match 'Second-604800', response.body
+ # Verify the lock in the db
+ @file9.reload
+ l = @file9.lock.first
+ assert_equal create_time, l.created_at
+ assert_equal refresh_time, l.updated_at
+ assert_equal (refresh_time + 1.week), l.expires_at
+ end
end
- # def test_lock_file_already_locked_by_other
- # log_user 'admin', 'admin'
- # process :lock, "/dmsf/webdav/#{@file2.project.identifier}/#{@file2.name}", params: @xml,
- # headers: @admin.merge!({ HTTP_DEPTH: 'infinity', HTTP_TIMEOUT: 'Infinite' })
- # assert_response :multi_status
- # assert_match 'HTTP/1.1 409 Conflict', response.body
- # end
- #
- # def test_lock_file
- # log_user 'jsmith', 'jsmith'
- # create_time = Time.utc(2000, 1, 2, 3, 4, 5)
- # refresh_time = Time.utc(2000, 1, 2, 6, 7, 8)
- # lock_token = nil
- #
- # # Time travel, will make the usec part of the time 0
- # travel_to create_time do
- # # Lock file
- # process :lock, "/dmsf/webdav/#{@file9.project.identifier}/#{@file9.name}", params: @xml,
- # headers: @jsmith.merge!({ HTTP_DEPTH: 'infinity', HTTP_TIMEOUT: 'Infinite' })
- # assert_response :success
- # # Verify the response
- # #
- # #
- # #
- # #
- # # exclusive
- # # write
- # # infinity
- # # Second-604800
- # #
- # # f5762389-6b49-4482-9a4b-ff1c8f975765
- # #
- # #
- # #
- # #
- # assert_match 'exclusive', response.body
- # assert_match 'write', response.body
- # assert_match 'infinity', response.body
- # # 1.week = 7*24*3600=604800 seconds
- # assert_match 'Second-604800', response.body
- # assert_match(/([a-z0-9\-]+)<\/d:href><\/d:locktoken>/, response.body)
- # # Extract the locktoken, needed when refreshing the lock
- # response.body.match(/([a-z0-9\-]+)<\/d:href><\/d:locktoken>/)
- # lock_token = $1
- # # Verify the lock in the db
- # @file9.reload
- # l = @file9.lock.first
- # assert_equal create_time, l.created_at
- # assert_equal create_time, l.updated_at
- # assert_equal (create_time + 1.week), l.expires_at
- # end
- #
- # travel_to refresh_time do
- # # Refresh lock
- # process :lock, "/dmsf/webdav/#{@project1.identifier}/#{@file9.name}",
- # params: nil,
- # headers: @jsmith.merge!({ HTTP_DEPTH: 'infinity', HTTP_TIMEOUT: 'Infinite', HTTP_IF: lock_token })
- # assert_response :success
- # # 1.week = 7*24*3600=604800 seconds
- # assert_match 'Second-604800', response.body
- # # Verify the lock in the db
- # @file9.reload
- # l = @file9.lock.first
- # assert_equal create_time, l.created_at
- # assert_equal refresh_time, l.updated_at
- # assert_equal (refresh_time + 1.week), l.expires_at
- # end
- # end
- #
- # def test_lock_file_in_subproject
- # log_user 'admin', 'admin'
- # process :lock, "/dmsf/webdav/#{@file12.project.parent.identifier}/#{@file12.project.identifier}/#{@file12.name}",
- # params: @xml, headers: @admin.merge!({ HTTP_DEPTH: 'infinity', HTTP_TIMEOUT: 'Infinite' })
- # assert_response :success
- # end
- #
- # def test_lock_folder_in_subproject
- # log_user 'admin', 'admin'
- # process :lock,
- # "/dmsf/webdav/#{@folder10.project.parent.identifier}/#{@folder10.project.identifier}/#{@folder10.title}",
- # params: @xml, headers: @admin.merge!({ HTTP_DEPTH: 'infinity', HTTP_TIMEOUT: 'Infinite' })
- # assert_response :success
- # end
+ def test_lock_file_in_subproject
+ log_user 'admin', 'admin'
+ process :lock, "/dmsf/webdav/#{@file12.project.parent.identifier}/#{@file12.project.identifier}/#{@file12.name}",
+ params: @xml, headers: @admin.merge!({ HTTP_DEPTH: 'infinity', HTTP_TIMEOUT: 'Infinite' })
+ assert_response :success
+ end
+
+ def test_lock_folder_in_subproject
+ log_user 'admin', 'admin'
+ process :lock,
+ "/dmsf/webdav/#{@folder10.project.parent.identifier}/#{@folder10.project.identifier}/#{@folder10.title}",
+ params: @xml, headers: @admin.merge!({ HTTP_DEPTH: 'infinity', HTTP_TIMEOUT: 'Infinite' })
+ assert_response :success
+ end
def test_lock_subproject
log_user 'admin', 'admin'
- puts ">>> process lock"
process :lock, "/dmsf/webdav/#{@project1.identifier}/#{@project3.identifier}", params: @xml,
headers: @admin.merge!({ HTTP_DEPTH: 'infinity', HTTP_TIMEOUT: 'Infinite' })
assert_response :multi_status
diff --git a/test/integration/webdav/dmsf_webdav_mkcol_test.rb b/test/integration/webdav/dmsf_webdav_mkcol_test.rb
index 640bdff3..be4fcfe1 100644
--- a/test/integration/webdav/dmsf_webdav_mkcol_test.rb
+++ b/test/integration/webdav/dmsf_webdav_mkcol_test.rb
@@ -27,51 +27,6 @@ class DmsfWebdavMkcolTest < RedmineDmsf::Test::IntegrationTest
fixtures :projects, :users, :email_addresses, :members, :member_roles, :roles,
:enabled_modules, :dmsf_folders
- def setup
- @admin = credentials 'admin'
- @jsmith = credentials 'jsmith'
- @project1 = Project.find 1
- @project1.enable_module! :dmsf
- @project2 = Project.find 2
- @project3 = Project.find 3
- @project3.enable_module! :dmsf
- @role = Role.find_by(name: 'Manager')
- @role.add_permission! :folder_manipulation
- @role.add_permission! :view_dmsf_folders
- @folder6 = DmsfFolder.find 6
- @dmsf_webdav = Setting.plugin_redmine_dmsf['dmsf_webdav']
- Setting.plugin_redmine_dmsf['dmsf_webdav'] = true
- @dmsf_webdav_strategy = Setting.plugin_redmine_dmsf['dmsf_webdav_strategy']
- Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] = 'WEBDAV_READ_WRITE'
- @dmsf_webdav_use_project_names = Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names']
- Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = false
- @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
- User.current = nil
- end
-
- def teardown
- # Delete our tmp folder
- begin
- FileUtils.rm_rf DmsfFile.storage_path
- rescue => e
- error e.message
- end
- Setting.plugin_redmine_dmsf['dmsf_webdav'] = @dmsf_webdav
- Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] = @dmsf_webdav_strategy
- Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = @dmsf_webdav_use_project_names
- Setting.plugin_redmine_dmsf['dmsf_storage_directory'] = @dmsf_storage_directory
- 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 DmsfFolder, @folder6
- end
-
def test_mkcol_requires_authentication
process :mkcol, '/dmsf/webdav/test1'
assert_response :unauthorized
diff --git a/test/integration/webdav/dmsf_webdav_move_test.rb b/test/integration/webdav/dmsf_webdav_move_test.rb
index dc05886a..7d087ef4 100644
--- a/test/integration/webdav/dmsf_webdav_move_test.rb
+++ b/test/integration/webdav/dmsf_webdav_move_test.rb
@@ -27,64 +27,6 @@ class DmsfWebdavMoveTest < RedmineDmsf::Test::IntegrationTest
fixtures :projects, :users, :email_addresses, :members, :member_roles, :roles,
:enabled_modules, :dmsf_folders, :dmsf_files, :dmsf_file_revisions
-
- def setup
- @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
- @admin = credentials 'admin'
- @jsmith = credentials 'jsmith'
- @jsmith_user = User.find_by(login: 'jsmith')
- @admin_user = User.find_by(login: 'admin')
- @project1 = Project.find 1
- @project1.enable_module! :dmsf
- @project2 = Project.find 2
- @project2.enable_module! :dmsf
- @project3 = Project.find 3
- @project3.enable_module! :dmsf
- @file1 = DmsfFile.find 1
- @file10 = DmsfFile.find 10
- @file12 = DmsfFile.find 12
- @folder1 = DmsfFolder.find 1
- @folder10 = DmsfFolder.find 10
- @role = Role.find 1
- @role.add_permission! :view_dmsf_folders
- @role.add_permission! :folder_manipulation
- @role.add_permission! :file_manipulation
- @dmsf_webdav = Setting.plugin_redmine_dmsf['dmsf_webdav']
- Setting.plugin_redmine_dmsf['dmsf_webdav'] = true
- @dmsf_webdav_strategy = Setting.plugin_redmine_dmsf['dmsf_webdav_strategy']
- Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] = 'WEBDAV_READ_WRITE'
- @dmsf_webdav_use_project_names = Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names']
- Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = false
- end
-
- def teardown
- # Delete our tmp folder
- begin
- FileUtils.rm_rf DmsfFile.storage_path
- rescue => e
- error e.message
- end
- Setting.plugin_redmine_dmsf['dmsf_storage_directory'] = @dmsf_storage_directory
- Setting.plugin_redmine_dmsf['dmsf_webdav'] = @dmsf_webdav
- Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] = @dmsf_webdav_strategy
- 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 DmsfFile, @file1
- assert_kind_of DmsfFile, @file10
- assert_kind_of DmsfFile, @file12
- assert_kind_of DmsfFolder, @folder1
- assert_kind_of DmsfFolder, @folder10
- assert_kind_of User, @jsmith_user
- assert_kind_of User, @admin_user
- end
def test_move_denied_for_anonymous
new_name = "#{@file1.name}.moved"
diff --git a/test/integration/webdav/dmsf_webdav_options_test.rb b/test/integration/webdav/dmsf_webdav_options_test.rb
index 4d0c6b04..b83da717 100644
--- a/test/integration/webdav/dmsf_webdav_options_test.rb
+++ b/test/integration/webdav/dmsf_webdav_options_test.rb
@@ -27,33 +27,6 @@ class DmsfWebdavOptionsTest < RedmineDmsf::Test::IntegrationTest
fixtures :projects, :users, :email_addresses, :members, :member_roles, :roles,
:enabled_modules, :dmsf_folders
- def setup
- @admin = credentials 'admin'
- @jsmith = credentials 'jsmith'
- @project1 = Project.find 1
- @project2 = Project.find 2
- @project3 = Project.find 3
- @project3.enable_module! :dmsf
- @dmsf_webdav = Setting.plugin_redmine_dmsf['dmsf_webdav']
- Setting.plugin_redmine_dmsf['dmsf_webdav'] = true
- @dmsf_webdav_strategy = Setting.plugin_redmine_dmsf['dmsf_webdav_strategy']
- Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] = 'WEBDAV_READ_WRITE'
- @dmsf_webdav_use_project_names = Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names']
- Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = false
- end
-
- def teardown
- Setting.plugin_redmine_dmsf['dmsf_webdav'] = @dmsf_webdav
- Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] = @dmsf_webdav_strategy
- 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
- end
-
def test_options_requires_no_authentication_for_root_level
process :options, '/dmsf/webdav'
assert_response :success
diff --git a/test/integration/webdav/dmsf_webdav_post_test.rb b/test/integration/webdav/dmsf_webdav_post_test.rb
index b1bf6f2f..b707aa70 100644
--- a/test/integration/webdav/dmsf_webdav_post_test.rb
+++ b/test/integration/webdav/dmsf_webdav_post_test.rb
@@ -26,17 +26,7 @@ class DmsfWebdavPostTest < RedmineDmsf::Test::IntegrationTest
fixtures :users, :email_addresses
- def setup
- @admin = credentials 'admin'
- @dmsf_webdav = Setting.plugin_redmine_dmsf['dmsf_webdav']
- Setting.plugin_redmine_dmsf['dmsf_webdav'] = true
- end
-
- def teardown
- Setting.plugin_redmine_dmsf['dmsf_webdav'] = @dmsf_webdav
- end
-
- # Test that any post request is authenticated
+ # Test that any post request is authenticated
def test_post_request_authenticated
post '/dmsf/webdav/'
assert_response :unauthorized
diff --git a/test/integration/webdav/dmsf_webdav_propfind_test.rb b/test/integration/webdav/dmsf_webdav_propfind_test.rb
index 1f8c7c5f..9219d7c6 100644
--- a/test/integration/webdav/dmsf_webdav_propfind_test.rb
+++ b/test/integration/webdav/dmsf_webdav_propfind_test.rb
@@ -28,67 +28,20 @@ class DmsfWebdavPropfindTest < RedmineDmsf::Test::IntegrationTest
fixtures :projects, :users, :email_addresses, :members, :member_roles, :roles,
:enabled_modules, :dmsf_folders, :dmsf_files, :dmsf_file_revisions
- def setup
- @admin = credentials 'admin'
- @jsmith = credentials 'jsmith'
- @project1 = Project.find 1
- @project1.enable_module! :dmsf
- @project2 = Project.find 2
- @project2.enable_module! :dmsf
- @project3 = Project.find 3
- @project3.enable_module! :dmsf
- @folder1 = DmsfFolder.find 1
- @folder6 = DmsfFolder.find 6
- @folder10 = DmsfFolder.find 10
- @file1 = DmsfFile.find 1
- @file9 = DmsfFile.find 9
- @file10 = DmsfFile.find 10
- @file12 = DmsfFile.find 12
- @dmsf_webdav = Setting.plugin_redmine_dmsf['dmsf_webdav']
- Setting.plugin_redmine_dmsf['dmsf_webdav'] = true
- @dmsf_webdav_strategy = Setting.plugin_redmine_dmsf['dmsf_webdav_strategy']
- Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] = 'WEBDAV_READ_WRITE'
- # Temporarily enable project names to generate names for project1
- @dmsf_webdav_use_project_names = Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names']
- Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
- @project1_name = RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1)
- @project1_uri = Addressable::URI.escape(@project1_name)
- Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = false
- end
-
- def teardown
- Setting.plugin_redmine_dmsf['dmsf_webdav'] = @dmsf_webdav
- Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] = @dmsf_webdav_strategy
- 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 DmsfFolder, @folder1
- assert_kind_of DmsfFolder, @folder6
- assert_kind_of DmsfFolder, @folder10
- assert_kind_of DmsfFile, @file1
- assert_kind_of DmsfFile, @file9
- assert_kind_of DmsfFile, @file10
- assert_kind_of DmsfFile, @file12
- end
-
def test_propfind_denied_for_anonymous
- process :propfind, '/dmsf/webdav/', params: nil, headers: { HTTP_DEPTH: '0' }
+ process :propfind, '/dmsf/webdav/', params: nil, headers: @anonymous.merge!({ HTTP_DEPTH: '0' })
assert_response :unauthorized
end
- def test_propfind_depth0_on_root_for_non_member
+ def test_propfind_depth0_on_root_for_user
process :propfind, '/dmsf/webdav/', params: nil, headers: @jsmith.merge!({ HTTP_DEPTH: '0' })
assert_response :multi_status
assert response.body.include?('http://www.example.com:80/dmsf/webdav/')
assert response.body.include?('/')
end
- def test_propfind_depth1_on_root_for_non_member
- process :propfind, '/dmsf/webdav/', params: nil, headers: @jsmith.merge!({ HTTP_DEPTH: '1' })
+ def test_propfind_depth1_on_root_for_user
+ process :propfind, '/dmsf/webdav/', params: nil, headers: @someone.merge!({ HTTP_DEPTH: '1' })
assert_response :multi_status
assert response.body.include?('http://www.example.com:80/dmsf/webdav/')
assert response.body.include?( '/')
@@ -116,19 +69,19 @@ class DmsfWebdavPropfindTest < RedmineDmsf::Test::IntegrationTest
end
def test_propfind_depth0_on_project1_for_non_member
- process :propfind, "/dmsf/webdav/#{@project1.identifier}", params: nil, headers: @jsmith.merge!({ HTTP_DEPTH: '0' })
+ process :propfind, "/dmsf/webdav/#{@project1.identifier}", params: nil, headers: @someone.merge!({ HTTP_DEPTH: '0' })
assert_response :success
end
def test_propfind_depth0_on_folder1_for_non_member
process :propfind, "/dmsf/webdav/#{@project1.identifier}/#{@folder1.title}", params: nil,
- headers: @jsmith.merge!({ HTTP_DEPTH: '0' })
+ headers: @someone.merge!({ HTTP_DEPTH: '0' })
assert_response :not_found
end
def test_propfind_depth0_on_file1_for_non_member
process :propfind, "/dmsf/webdav/#{@project1.identifier}/#{@file1.name}", params: nil,
- headers: @jsmith.merge!({ HTTP_DEPTH: '0' })
+ headers: @someone.merge!({ HTTP_DEPTH: '0' })
assert_response :not_found
end
diff --git a/test/integration/webdav/dmsf_webdav_put_test.rb b/test/integration/webdav/dmsf_webdav_put_test.rb
index 4d7edac1..c50ffab4 100644
--- a/test/integration/webdav/dmsf_webdav_put_test.rb
+++ b/test/integration/webdav/dmsf_webdav_put_test.rb
@@ -28,120 +28,75 @@ class DmsfWebdavPutTest < RedmineDmsf::Test::IntegrationTest
fixtures :projects, :users, :email_addresses, :members, :member_roles, :roles,
:enabled_modules, :dmsf_folders, :dmsf_files, :dmsf_file_revisions
- def setup
- @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
- @admin = credentials 'admin'
- @jsmith = credentials 'jsmith'
- @jsmith_user = User.find_by(login: 'jsmith')
- @project1 = Project.find 1
- @project2 = Project.find 2
- @project3 = Project.find 3
- @project3.enable_module! :dmsf
- @role = Role.find_by(name: 'Manager')
- @dmsf_webdav = Setting.plugin_redmine_dmsf['dmsf_webdav']
- Setting.plugin_redmine_dmsf['dmsf_webdav'] = true
- @dmsf_webdav_strategy = Setting.plugin_redmine_dmsf['dmsf_webdav_strategy']
- Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] = 'WEBDAV_READ_WRITE'
- @dmsf_webdav_use_project_names = Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names']
- Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = false
+ def test_put_denied_unless_authenticated_root
+ put '/dmsf/webdav'
+ assert_response :unauthorized
end
- def teardown
- # Delete our tmp folder
- begin
- FileUtils.rm_rf DmsfFile.storage_path
- rescue => e
- error e.message
- end
- Setting.plugin_redmine_dmsf['dmsf_storage_directory'] = @dmsf_storage_directory
- Setting.plugin_redmine_dmsf['dmsf_webdav'] = @dmsf_webdav
- Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] = @dmsf_webdav_strategy
- Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = @dmsf_webdav_use_project_names
+ def test_put_denied_unless_authenticated
+ put "/dmsf/webdav/#{@project1.identifier}"
+ assert_response :unauthorized
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_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
+ @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
- @role.add_permission! :view_dmsf_folders
- @role.add_permission! :file_manipulation
put "/dmsf/webdav/#{@project1.identifier}/test-1234.txt", params: '1234',
headers: @jsmith.merge!({ content_type: :text })
assert_response :created # Now we have permissions
@@ -161,179 +116,160 @@ 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
+ 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
+ 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
+ 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
+ # 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$)/
+ 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
+ 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
\ No newline at end of file
diff --git a/test/integration/webdav/dmsf_webdav_unlock_test.rb b/test/integration/webdav/dmsf_webdav_unlock_test.rb
index 5ac65a7a..bcc1dcfc 100644
--- a/test/integration/webdav/dmsf_webdav_unlock_test.rb
+++ b/test/integration/webdav/dmsf_webdav_unlock_test.rb
@@ -27,55 +27,6 @@ class DmsfWebdavUnlockTest < RedmineDmsf::Test::IntegrationTest
fixtures :projects, :users, :email_addresses, :members, :member_roles, :roles,
:enabled_modules, :dmsf_folders, :dmsf_files, :dmsf_file_revisions, :dmsf_locks
-
- def setup
- @admin = credentials 'admin'
- @jsmith = credentials 'jsmith'
- @admin_user = User.find_by(login: 'admin')
- @jsmith_user = User.find_by(login: 'jsmith')
- @project1 = Project.find 1
- @project1.enable_module! 'dmsf'
- @project2 = Project.find 2
- @project2.enable_module! 'dmsf'
- @project3 = Project.find 3
- @project3.enable_module! 'dmsf'
- @file2 = DmsfFile.find 2
- @file9 = DmsfFile.find 9
- @file12 = DmsfFile.find 12
- @folder2 = DmsfFolder.find 2
- @folder6 = DmsfFolder.find 6
- @folder10 = DmsfFolder.find 10
- # Fix permissions for jsmith's role
- @role = Role.find_by(name: 'Manager')
- @role.add_permission! :view_dmsf_folders
- @role.add_permission! :folder_manipulation
- @role.add_permission! :view_dmsf_files
- @role.add_permission! :file_manipulation
- @dmsf_webdav = Setting.plugin_redmine_dmsf['dmsf_webdav']
- Setting.plugin_redmine_dmsf['dmsf_webdav'] = true
- @dmsf_webdav_strategy = Setting.plugin_redmine_dmsf['dmsf_webdav_strategy']
- Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] = 'WEBDAV_READ_WRITE'
- end
-
- def teardown
- Setting.plugin_redmine_dmsf['dmsf_webdav'] = @dmsf_webdav
- Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] = @dmsf_webdav_strategy
- end
-
- def test_truth
- assert_kind_of Project, @project1
- assert_kind_of Project, @project2
- assert_kind_of Project, @project3
- assert_kind_of DmsfFile, @file2
- assert_kind_of DmsfFile, @file9
- assert_kind_of DmsfFile, @file12
- assert_kind_of DmsfFolder, @folder2
- assert_kind_of DmsfFolder, @folder6
- assert_kind_of DmsfFolder, @folder10
- assert_kind_of Role, @role
- assert_kind_of User, @admin_user
- assert_kind_of User, @jsmith_user
- end
def test_unlock_file
log_user 'admin', 'admin'
@@ -123,7 +74,6 @@ class DmsfWebdavUnlockTest < RedmineDmsf::Test::IntegrationTest
def test_unlock_folder
log_user 'jsmith', 'jsmith'
l = @folder2.locks.first
- puts ">>> process unlock"
process :unlock, "/dmsf/webdav/#{@folder2.project.identifier}/#{@folder2.dmsf_folder.title}/#{@folder2.title}",
params: nil,
headers: @jsmith.merge!({ HTTP_DEPTH: 'infinity', HTTP_TIMEOUT: 'Infinite', HTTP_LOCK_TOKEN: l.uuid })
diff --git a/test/integration_test.rb b/test/integration_test.rb
index 24c5aecc..73e8bd98 100644
--- a/test/integration_test.rb
+++ b/test/integration_test.rb
@@ -23,14 +23,101 @@
module RedmineDmsf
module Test
+
class IntegrationTest < Redmine::IntegrationTest
- def self.fixtures(*table_names)
- dir = File.join( File.dirname(__FILE__), '/fixtures')
- table_names.each do |x|
- ActiveRecord::FixtureSet.create_fixtures(dir, x) if File.exist?("#{dir}/#{x}.yml")
+
+ def setup
+ @admin = credentials('admin', 'admin')
+ @admin_user = User.find_by(login: 'admin')
+ @jsmith = credentials('jsmith', 'jsmith')
+ @jsmith_user = User.find_by(login: 'jsmith')
+ @someone = credentials('someone', 'foo')
+ @anonymous = credentials('')
+ @project1 = Project.find 1
+ Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = '1'
+ @project1_name = RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1)
+ @project1_uri = Addressable::URI.escape(@project1_name)
+ @project2 = Project.find 2
+ @project3 = Project.find 3
+ [@project1, @project2, @project3].each do |project|
+ project.enable_module! :dmsf
end
- super(table_names)
+ @file1 = DmsfFile.find 1
+ @file2 = DmsfFile.find 2
+ @file9 = DmsfFile.find 9
+ @file10 = DmsfFile.find 10
+ @file12 = DmsfFile.find 12
+ @folder1 = DmsfFolder.find 1
+ @folder2 = DmsfFolder.find 2
+ @folder3 = DmsfFolder.find 3
+ @folder6 = DmsfFolder.find 6
+ @folder7 = DmsfFolder.find 7
+ @folder10 = DmsfFolder.find 10
+ @role = Role.find_by(name: 'Manager')
+ @role.add_permission! :view_dmsf_folders
+ @role.add_permission! :folder_manipulation
+ @role.add_permission! :view_dmsf_files
+ @role.add_permission! :file_manipulation
+ @role.add_permission! :file_delete
+ Setting.plugin_redmine_dmsf['dmsf_webdav'] = '1'
+ Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] = 'WEBDAV_READ_WRITE'
+ Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = nil
+ Setting.plugin_redmine_dmsf['dmsf_storage_directory'] = File.join(%w(files dmsf))
+ FileUtils.cp_r File.join(File.expand_path('../fixtures/files', __FILE__), '.'), DmsfFile.storage_path
+ User.current = nil
end
+
+ def teardown
+ # Delete our tmp folder
+ begin
+ FileUtils.rm_rf DmsfFile.storage_path
+ rescue => e
+ error e.message
+ end
+ end
+
+ def self.fixtures(*table_names)
+ dir = File.join(File.dirname(__FILE__), 'fixtures')
+ table_names.each do |x|
+ ActiveRecord::FixtureSet.create_fixtures(dir, x) if File.exist?(File.join(dir, "#{x}.yml"))
+ end
+ super table_names
+ end
+
+ protected
+
+ def check_headers_exist
+ assert !(response.headers.nil? || response.headers.empty?),
+ 'Head returned without headers' # Headers exist?
+ values = {}
+ values[:etag] = { optional: true, content: response.headers['Etag'] }
+ values[:content_type] = response.headers['Content-Type']
+ values[:last_modified] = { optional: true, content: response.headers['Last-Modified'] }
+ single_optional = false
+ values.each do |key,val|
+ if val.is_a?(Hash)
+ if val[:optional].nil? || !val[:optional]
+ assert(!(val[:content].nil? || val[:content].empty?), "Expected header #{key} was empty." ) if single_optional
+ else
+ single_optional = true
+ end
+ else
+ assert !(val.nil? || val.empty?), "Expected header #{key} was empty."
+ end
+ end
+ end
+
+ def check_headers_dont_exist
+ assert !(response.headers.nil? || response.headers.empty?), 'Head returned without headers' # Headers exist?
+ values = {}
+ values[:etag] = response.headers['Etag']
+ values[:last_modified] = response.headers['Last-Modified']
+ values.each do |key,val|
+ assert (val.nil? || val.empty?), "Expected header #{key} should be empty."
+ end
+ end
+
end
+
end
end
\ No newline at end of file
diff --git a/test/test_case.rb b/test/test_case.rb
index 1cc5a3e7..fd42c188 100644
--- a/test/test_case.rb
+++ b/test/test_case.rb
@@ -29,26 +29,70 @@ module RedmineDmsf
# Ultimately it allows for better integration without blowing redmine fixtures up,
# and allowing us to suppliment redmine fixtures if we need to.
def self.fixtures(*table_names)
- dir = File.join( File.dirname(__FILE__), '/fixtures')
+ dir = File.join(File.dirname(__FILE__), 'fixtures')
table_names.each do |x|
- ActiveRecord::FixtureSet.create_fixtures(dir, x) if File.exist?("#{dir}/#{x}.yml")
+ ActiveRecord::FixtureSet.create_fixtures(dir, x) if File.exist?(File.join(dir, "#{x}.yml"))
end
- super(table_names)
+ super table_names
end
def setup
- if ::Rails::VERSION::MAJOR >= 5
- if ::Rails::VERSION::MINOR >= 1
- @request = ActionController::TestRequest.create(self.class.controller_class)
- else
- @request = ActionController::TestRequest.create
- end
- else
- @request = ActionController::TestRequest.new
+ @admin = User.find_by(login: 'admin')
+ @jsmith = User.find_by(login: 'jsmith')
+ @dlopper = User.find_by(login: 'dlopper')
+ @someone = User.find_by(login: 'someone')
+ @project1 = Project.find 1
+ Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = '1'
+ @project1_name = RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1)
+ @project1_uri = Addressable::URI.escape(@project1_name)
+ @project2 = Project.find 2
+ @project3 = Project.find 3
+ [@project1, @project2, @project3].each do |project|
+ project.enable_module! :dmsf
+ project.enable_module! :issue_tracking
end
- @response = ActionController::TestResponse.new
+ @file1 = DmsfFile.find 1
+ @file2 = DmsfFile.find 2
+ @file6 = DmsfFile.find 6
+ @file9 = DmsfFile.find 9
+ @file10 = DmsfFile.find 10
+ @file12 = DmsfFile.find 12
+ @folder1 = DmsfFolder.find 1
+ @folder2 = DmsfFolder.find 2
+ @folder3 = DmsfFolder.find 3
+ @folder4 = DmsfFolder.find 4
+ @folder5 = DmsfFolder.find 5
+ @folder6 = DmsfFolder.find 6
+ @folder7 = DmsfFolder.find 7
+ @role_manager = Role.find_by(name: 'Manager')
+ @role_developer = Role.find_by(name: 'Developer')
+ [@role_manager, @role_developer].each do |role|
+ role.add_permission! :view_dmsf_folders
+ role.add_permission! :folder_manipulation
+ role.add_permission! :view_dmsf_files
+ role.add_permission! :file_manipulation
+ role.add_permission! :file_delete
+ role.add_permission! :email_documents
+ role.add_permission! :manage_workflows
+ role.add_permission! :file_approval
+ end
+ Setting.plugin_redmine_dmsf['dmsf_webdav'] = '1'
+ Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] = 'WEBDAV_READ_WRITE'
+ Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = nil
+ Setting.plugin_redmine_dmsf['dmsf_storage_directory'] = File.join(%w(files dmsf))
+ FileUtils.cp_r File.join(File.expand_path('../fixtures/files', __FILE__), '.'), DmsfFile.storage_path
+ User.current = nil
end
-
+
+ def teardown
+ # Delete our tmp folder
+ begin
+ FileUtils.rm_rf DmsfFile.storage_path
+ rescue => e
+ error e.message
+ end
+ end
+
end
end
end
\ No newline at end of file
diff --git a/test/unit/attachable_patch_test.rb b/test/unit/attachable_patch_test.rb
index 9172e782..82e8c99e 100644
--- a/test/unit/attachable_patch_test.rb
+++ b/test/unit/attachable_patch_test.rb
@@ -25,6 +25,7 @@ class AttachablePatchTest < RedmineDmsf::Test::UnitTest
fixtures :dmsf_folders, :dmsf_files, :dmsf_file_revisions, :issues
def setup
+ super
@issue1 = Issue.find 1
@issue2 = Issue.find 2
end
diff --git a/test/unit/dmsf_file_revision_test.rb b/test/unit/dmsf_file_revision_test.rb
index a349de3a..b404dc72 100644
--- a/test/unit/dmsf_file_revision_test.rb
+++ b/test/unit/dmsf_file_revision_test.rb
@@ -24,43 +24,18 @@ require File.expand_path('../../test_helper', __FILE__)
class DmsfFileRevisionTest < RedmineDmsf::Test::UnitTest
include Redmine::I18n
- fixtures :projects, :users, :email_addresses, :dmsf_folders, :dmsf_files, :dmsf_file_revisions, :roles, :members,
- :member_roles, :enabled_modules, :enumerations, :dmsf_locks, :dmsf_workflows, :dmsf_workflow_steps,
+ fixtures :projects, :users, :email_addresses, :dmsf_folders, :dmsf_files, :dmsf_file_revisions, :roles,
+ :members, :member_roles, :enabled_modules, :enumerations, :dmsf_locks, :dmsf_workflows, :dmsf_workflow_steps,
:dmsf_workflow_step_assignments, :dmsf_workflow_step_actions
def setup
+ super
@revision1 = DmsfFileRevision.find 1
@revision2 = DmsfFileRevision.find 2
@revision3 = DmsfFileRevision.find 3
@revision5 = DmsfFileRevision.find 5
@revision8 = DmsfFileRevision.find 8
@wf1 = DmsfWorkflow.find 1
- @admin = User.find 1
- @jsmith = User.find 2
- @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
- end
-
- def teardown
- # Delete our tmp folder
- begin
- FileUtils.rm_rf DmsfFile.storage_path
- rescue => e
- error e.message
- end
- Setting.plugin_redmine_dmsf['dmsf_storage_directory'] = @dmsf_storage_directory
- end
-
- def test_truth
- assert_kind_of DmsfFileRevision, @revision1
- assert_kind_of DmsfFileRevision, @revision2
- assert_kind_of DmsfFileRevision, @revision3
- assert_kind_of DmsfFileRevision, @revision5
- assert_kind_of DmsfFileRevision, @revision8
- assert_kind_of DmsfWorkflow, @wf1
- assert_kind_of User, @admin
- assert_kind_of User, @jsmith
end
def test_delete_restore
diff --git a/test/unit/dmsf_file_test.rb b/test/unit/dmsf_file_test.rb
index 18cdfc3a..d3eb0c80 100644
--- a/test/unit/dmsf_file_test.rb
+++ b/test/unit/dmsf_file_test.rb
@@ -28,42 +28,10 @@ class DmsfFileTest < RedmineDmsf::Test::UnitTest
:dmsf_workflow_step_assignments
def setup
- @admin = User.find 1
- @jsmith = User.find 2
- @project1 = Project.find 1
- @project2 = Project.find 2
- @file1 = DmsfFile.find 1
- @file2 = DmsfFile.find 2
- @file3 = DmsfFile.find 3
- @file4 = DmsfFile.find 4
- @file5 = DmsfFile.find 5
- @file6 = DmsfFile.find 6
- @file7 = DmsfFile.find 7
- @file8 = DmsfFile.find 8
- @folder1 = DmsfFolder.find 1
+ super
@issue1 = Issue.find 1
@wf1 = DmsfWorkflow.find 1
@wf2 = DmsfWorkflow.find 2
- User.current = nil
- end
-
- def test_truth
- assert_kind_of User, @admin
- assert_kind_of User, @jsmith
- assert_kind_of Project, @project1
- assert_kind_of Project, @project2
- assert_kind_of DmsfFile, @file1
- assert_kind_of DmsfFile, @file2
- assert_kind_of DmsfFile, @file3
- assert_kind_of DmsfFile, @file4
- assert_kind_of DmsfFile, @file5
- assert_kind_of DmsfFile, @file6
- assert_kind_of DmsfFile, @file7
- assert_kind_of DmsfFile, @file8
- assert_kind_of DmsfFolder, @folder1
- assert_kind_of Issue, @issue1
- assert_kind_of DmsfWorkflow, @wf1
- assert_kind_of DmsfWorkflow, @wf2
end
def test_project_file_count_differs_from_project_visibility_count
@@ -94,20 +62,12 @@ class DmsfFileTest < RedmineDmsf::Test::UnitTest
def test_file_locked_is_not_locked_for_user_who_locked
User.current = @admin
- @file1.lock!
- assert !@file1.locked_for_user?,
- "#{@file1.name} is locked for #{User.current}"
- @file1.unlock!
+ assert !@file2.locked_for_user?, "#{@file2.name} is locked for #{User.current}"
end
def test_file_locked_is_locked_for_user_who_didnt_lock
- User.current = @admin
- @file1.lock!
User.current = @jsmith
- assert @file1.locked_for_user?,
- "#{@file1.name} is locked for #{User.current}"
- User.current = @admin
- @file1.unlock!
+ assert @file2.locked_for_user?, "#{@file1.name} is locked for #{User.current}"
end
def test_file_with_no_locks_reported_unlocked
@@ -127,7 +87,6 @@ class DmsfFileTest < RedmineDmsf::Test::UnitTest
assert_equal 0, @file4.dmsf_file_revisions.visible.all.size
# Links should not be deleted
assert_equal 2, @file4.referenced_links.visible.all.size
- @file4.dmsf_folder.lock!
end
def test_restore
@@ -138,7 +97,6 @@ class DmsfFileTest < RedmineDmsf::Test::UnitTest
assert !@file4.deleted?, "File #{@file4} hasn't been restored"
assert_equal 1, @file4.dmsf_file_revisions.visible.all.size
assert_equal 2, @file4.referenced_links.visible.all.size
- @file4.dmsf_folder.lock!
end
def test_destroy
@@ -149,7 +107,6 @@ class DmsfFileTest < RedmineDmsf::Test::UnitTest
@file4.delete true
assert_equal 0, @file4.dmsf_file_revisions.all.size
assert_equal 0, @file4.referenced_links.all.size
- @file4.dmsf_folder.lock!
end
def test_copy_to_filename
diff --git a/test/unit/dmsf_folder_permission_test.rb b/test/unit/dmsf_folder_permission_test.rb
index f0de5e69..cf24bbb1 100644
--- a/test/unit/dmsf_folder_permission_test.rb
+++ b/test/unit/dmsf_folder_permission_test.rb
@@ -25,15 +25,10 @@ class DmsfFolderPermissionTest < RedmineDmsf::Test::UnitTest
fixtures :dmsf_folder_permissions, :dmsf_folders
def setup
- @folder1 = DmsfFolder.find 1
+ super
@permission1 = DmsfFolderPermission.find 1
end
- def test_truth
- assert_kind_of DmsfFolder, @folder1
- assert_kind_of DmsfFolderPermission, @permission1
- end
-
def test_scope
assert_equal 2, DmsfFolderPermission.all.size
end
diff --git a/test/unit/dmsf_folder_test.rb b/test/unit/dmsf_folder_test.rb
index 43e23332..50a678d7 100644
--- a/test/unit/dmsf_folder_test.rb
+++ b/test/unit/dmsf_folder_test.rb
@@ -26,56 +26,20 @@ class DmsfFolderTest < RedmineDmsf::Test::UnitTest
fixtures :projects, :users, :email_addresses, :dmsf_folders, :roles, :members, :member_roles,
:dmsf_folder_permissions, :dmsf_locks
- def setup
- @project1 = Project.find 1
- @project1.enable_module! :dmsf
- @project2 = Project.find 2
- @project2.enable_module! :dmsf
- @folder1 = DmsfFolder.find 1
- @folder2 = DmsfFolder.find 2
- @folder3 = DmsfFolder.find 3
- @folder4 = DmsfFolder.find 4
- @folder5 = DmsfFolder.find 5
- @folder6 = DmsfFolder.find 6
- @folder7 = DmsfFolder.find 7
- @jsmith = User.find 2 # Manager
- @dlopper = User.find 3 # Developer
- @manager_role = Role.find_by(name: 'Manager')
- @manager_role.add_permission! :view_dmsf_folders
- developer_role = Role.find 2
- developer_role.add_permission! :view_dmsf_folders
- User.current = @jsmith
- end
-
- def test_truth
- assert_kind_of DmsfFolder, @folder1
- assert_kind_of DmsfFolder, @folder2
- assert_kind_of DmsfFolder, @folder3
- assert_kind_of DmsfFolder, @folder4
- assert_kind_of DmsfFolder, @folder5
- assert_kind_of DmsfFolder, @folder6
- assert_kind_of DmsfFolder, @folder7
- assert_kind_of Project, @project1
- assert_kind_of Project, @project2
- assert_kind_of User, @jsmith
- assert_kind_of User, @dlopper
- assert_kind_of Role, @manager_role
- end
-
def test_visiblity
# The role has got permissions
User.current = @jsmith
- assert_equal 7, DmsfFolder.where(project_id: 1).all.size
- assert_equal 5, DmsfFolder.visible.where(project_id: 1).all.size
+ assert_equal 7, DmsfFolder.where(project_id: @project1.id).all.size
+ assert_equal 5, DmsfFolder.visible.where(project_id: @project1.id).all.size
# The user has got permissions
User.current = @dlopper
# Hasn't got permissions for @folder7
@folder7.dmsf_folder_permissions.where(object_type: 'User').delete_all
- assert_equal 4, DmsfFolder.visible.where(project_id: 1).all.size
+ assert_equal 4, DmsfFolder.visible.where(project_id: @project1.id).all.size
# Anonymous user
User.current = User.anonymous
@project1.add_default_member User.anonymous
- assert_equal 5, DmsfFolder.visible.where(project_id: 1).all.size
+ assert_equal 5, DmsfFolder.visible.where(project_id: @project1.id).all.size
end
def test_permissions
@@ -210,10 +174,11 @@ class DmsfFolderTest < RedmineDmsf::Test::UnitTest
end
def test_move_to
+ User.current = @jsmith
assert @folder1.move_to(@project2, nil)
assert_equal @project2, @folder1.project
@folder1.dmsf_folders.each do |d|
- assert_equal @project2, d.project
+ assert_equal @project2.identifier, d.project.identifier
end
@folder1.dmsf_files.each do |f|
assert_equal @project2, f.project
diff --git a/test/unit/dmsf_link_test.rb b/test/unit/dmsf_link_test.rb
index d628453f..ee88688d 100644
--- a/test/unit/dmsf_link_test.rb
+++ b/test/unit/dmsf_link_test.rb
@@ -23,28 +23,14 @@ require File.expand_path('../../test_helper', __FILE__)
class DmsfLinksTest < RedmineDmsf::Test::UnitTest
- fixtures :projects, :members, :dmsf_files, :dmsf_file_revisions,
- :dmsf_folders, :dmsf_links
+ fixtures :users, :email_addresses, :roles, :projects, :members, :member_roles, :dmsf_files,
+ :dmsf_file_revisions, :dmsf_folders, :dmsf_links
def setup
- @project1 = Project.find 1
- @folder1 = DmsfFolder.find 1
- @folder2 = DmsfFolder.find 2
- @file1 = DmsfFile.find 1
- @file4 = DmsfFile.find 4
+ super
@folder_link = DmsfLink.find 1
@file_link = DmsfLink.find 2
end
-
- def test_truth
- assert_kind_of Project, @project1
- assert_kind_of DmsfFolder, @folder1
- assert_kind_of DmsfFolder, @folder2
- assert_kind_of DmsfFile, @file1
- assert_kind_of DmsfFile, @file4
- assert_kind_of DmsfLink, @folder_link
- assert_kind_of DmsfLink, @file_link
- end
def test_create_folder_link
folder_link = DmsfLink.new
diff --git a/test/unit/dmsf_lock_test.rb b/test/unit/dmsf_lock_test.rb
index 94adff03..214b66c1 100644
--- a/test/unit/dmsf_lock_test.rb
+++ b/test/unit/dmsf_lock_test.rb
@@ -23,25 +23,12 @@
require File.expand_path('../../test_helper.rb', __FILE__)
class DmsfLockTest < RedmineDmsf::Test::UnitTest
- fixtures :projects, :users, :email_addresses, :dmsf_folders, :dmsf_files,
- :dmsf_file_revisions, :roles, :members, :member_roles, :enabled_modules,
- :enumerations, :dmsf_locks
+ fixtures :projects, :users, :email_addresses, :dmsf_folders, :dmsf_files, :dmsf_file_revisions, :roles,
+ :members, :member_roles, :enabled_modules, :enumerations, :dmsf_locks
def setup
+ super
@lock = DmsfLock.find 1
- @folder2 = DmsfFolder.find 2
- @folder7 = DmsfFolder.find 7
- @file4 = DmsfFile.find 4
- @jsmith = User.find 2
- @admin = User.find 1
- end
-
- def test_truth
- assert_kind_of DmsfLock, @lock
- assert_kind_of DmsfFile, @file4
- assert_kind_of DmsfFolder, @folder2
- assert_kind_of User, @jsmith
- assert_kind_of User, @admin
end
def test_lock_type_is_enumerable
@@ -114,7 +101,6 @@ class DmsfLockTest < RedmineDmsf::Test::UnitTest
end
end
@folder2.lock!
- User.current = nil
end
def test_expired
diff --git a/test/unit/dmsf_mailer_test.rb b/test/unit/dmsf_mailer_test.rb
index cb32d5f0..e96f44fd 100644
--- a/test/unit/dmsf_mailer_test.rb
+++ b/test/unit/dmsf_mailer_test.rb
@@ -24,29 +24,18 @@ require File.expand_path('../../test_helper', __FILE__)
class DmsfMailerTest < RedmineDmsf::Test::UnitTest
include Redmine::I18n
- fixtures :users, :projects, :dmsf_files, :dmsf_workflows, :dmsf_file_revisions, :members, :email_addresses,
- :roles, :member_roles
+ fixtures :users, :email_addresses, :projects, :dmsf_files, :dmsf_workflows, :dmsf_folders,
+ :dmsf_file_revisions, :members, :roles, :member_roles
def setup
- @user2 = User.find 2
- @file1 = DmsfFile.find 1
+ super
@file1.notify_activate
@wf1 = DmsfWorkflow.find 1
@rev2 = DmsfFileRevision.find 2
- @project1 = Project.find 1
# Mailer settings
ActionMailer::Base.deliveries.clear
Setting.plain_text_mail = '0'
Setting.default_language = 'en'
- User.current = nil
- end
-
- def test_truth
- assert_kind_of User, @user2
- assert_kind_of DmsfFile, @file1
- assert_kind_of DmsfFileRevision, @rev2
- assert_kind_of DmsfWorkflow, @wf1
- assert_kind_of Project, @project1
end
def test_files_updated
@@ -66,22 +55,22 @@ class DmsfMailerTest < RedmineDmsf::Test::UnitTest
def test_send_documents
email_params = Hash.new
body = 'Test'
- email_params[:to] = @user2.mail
- email_params[:from] = @user2.mail
+ email_params[:to] = @jsmith.mail
+ email_params[:from] = @jsmith.mail
email_params[:body] = body
email_params[:links_only] = '1'
email_params[:public_urls] == '0'
email_params[:expired_at] = DateTime.current.to_s
email_params[:folders] = nil
email_params[:files] = "[\"#{@file1.id}\"]"
- DmsfMailer.deliver_send_documents(@file1.project, email_params, User.current)
+ DmsfMailer.deliver_send_documents(@file1.project, email_params, @jsmith)
email = last_email
assert text_part(email).body.include? body
assert html_part(email).body.include? body
end
def test_workflow_notification
- DmsfMailer.deliver_workflow_notification([@user2], @wf1, @rev2, :text_email_subject_started,
+ DmsfMailer.deliver_workflow_notification([@jsmith], @wf1, @rev2, :text_email_subject_started,
:text_email_started, :text_email_to_proceed)
email = last_email
assert text_part(email).body.include? l(:text_email_subject_started)
@@ -104,21 +93,5 @@ class DmsfMailerTest < RedmineDmsf::Test::UnitTest
users = DmsfMailer.get_notify_users(@project1, [@file1])
assert users.blank?
end
-
- private
-
- def last_email
- mail = ActionMailer::Base.deliveries.last
- assert_not_nil mail
- mail
- end
-
- def text_part(email)
- email.parts.detect {|part| part.content_type.include?('text/plain')}
- end
-
- def html_part(email)
- email.parts.detect {|part| part.content_type.include?('text/html')}
- end
-
+
end
\ No newline at end of file
diff --git a/test/unit/dmsf_public_url_test.rb b/test/unit/dmsf_public_url_test.rb
index a106d90e..cd611c5f 100644
--- a/test/unit/dmsf_public_url_test.rb
+++ b/test/unit/dmsf_public_url_test.rb
@@ -23,24 +23,17 @@ require File.expand_path('../../test_helper', __FILE__)
class DmsfPublicUrlsTest < RedmineDmsf::Test::UnitTest
- fixtures :dmsf_files, :dmsf_file_revisions, :dmsf_public_urls, :users
+ fixtures :dmsf_files, :dmsf_file_revisions, :dmsf_public_urls, :users, :email_addresses
def setup
- @file1 = DmsfFile.find 1
+ super
@dmsf_public_url1 = DmsfPublicUrl.find 1
- @user2 = User.find 2
end
-
- def test_truth
- assert_kind_of DmsfFile, @file1
- assert_kind_of DmsfPublicUrl, @dmsf_public_url1
- assert_kind_of User, @user2
- end
-
+
def test_create
url = DmsfPublicUrl.new
url.dmsf_file = @file1
- url.user = @user2
+ url.user = @jsmith
url.expire_at = DateTime.current + 1.day
assert url.save, url.errors.full_messages.to_sentence
assert_not_nil url.token
diff --git a/test/unit/dmsf_workflow_step_action_test.rb b/test/unit/dmsf_workflow_step_action_test.rb
index 287ccc56..bb240a1c 100644
--- a/test/unit/dmsf_workflow_step_action_test.rb
+++ b/test/unit/dmsf_workflow_step_action_test.rb
@@ -32,12 +32,6 @@ class DmsfWorkflowStepActionTest < RedmineDmsf::Test::UnitTest
@wfsac3 = DmsfWorkflowStepAction.find 3
end
- def test_truth
- assert_kind_of DmsfWorkflowStepAction, @wfsac1
- assert_kind_of DmsfWorkflowStepAction, @wfsac2
- assert_kind_of DmsfWorkflowStepAction, @wfsac3
- end
-
def test_create
wfsac = DmsfWorkflowStepAction.new
wfsac.dmsf_workflow_step_assignment_id = 1
diff --git a/test/unit/dmsf_workflow_step_assignment_test.rb b/test/unit/dmsf_workflow_step_assignment_test.rb
index 232c2e13..7e92e941 100644
--- a/test/unit/dmsf_workflow_step_assignment_test.rb
+++ b/test/unit/dmsf_workflow_step_assignment_test.rb
@@ -31,11 +31,6 @@ class WorkflowStepAssignmentTest < RedmineDmsf::Test::UnitTest
@wfsa2 = DmsfWorkflowStepAssignment.find 2
end
- def test_truth
- assert_kind_of DmsfWorkflowStepAssignment, @wfsa1
- assert_kind_of DmsfWorkflowStepAssignment, @wfsa2
- end
-
def test_create
wfsa = DmsfWorkflowStepAssignment.new
wfsa.dmsf_workflow_step_id = 5
diff --git a/test/unit/dmsf_workflow_step_test.rb b/test/unit/dmsf_workflow_step_test.rb
index 4a4b20af..54f17888 100644
--- a/test/unit/dmsf_workflow_step_test.rb
+++ b/test/unit/dmsf_workflow_step_test.rb
@@ -35,16 +35,7 @@ class DmsfWorkflowStepTest < RedmineDmsf::Test::UnitTest
@revision2 = DmsfFileRevision.find 2
@wf2 = DmsfWorkflow.find 2
end
-
- def test_truth
- assert_kind_of DmsfWorkflowStep, @wfs1
- assert_kind_of DmsfWorkflowStep, @wfs2
- assert_kind_of DmsfWorkflowStep, @wfs5
- assert_kind_of DmsfFileRevision, @revision1
- assert_kind_of DmsfFileRevision, @revision2
- assert_kind_of DmsfWorkflow, @wf2
- end
-
+
def test_create
wfs = DmsfWorkflowStep.new
wfs.dmsf_workflow_id = 1
diff --git a/test/unit/dmsf_workflow_test.rb b/test/unit/dmsf_workflow_test.rb
index 2fcf89a3..a3a8bd99 100644
--- a/test/unit/dmsf_workflow_test.rb
+++ b/test/unit/dmsf_workflow_test.rb
@@ -23,11 +23,12 @@ require File.expand_path('../../test_helper', __FILE__)
class DmsfWorkflowTest < RedmineDmsf::Test::UnitTest
- fixtures :users, :email_addresses, :projects, :members, :dmsf_files,
- :dmsf_file_revisions, :dmsf_workflows, :dmsf_workflow_steps,
- :dmsf_workflow_step_assignments, :dmsf_workflow_step_actions
+ fixtures :users, :email_addresses, :projects, :members, :roles, :member_roles, :dmsf_files,
+ :dmsf_file_revisions, :dmsf_workflows, :dmsf_workflow_steps, :dmsf_workflow_step_assignments,
+ :dmsf_workflow_step_actions
- def setup
+ def setup
+ super
@wf1 = DmsfWorkflow.find 1
@wf2 = DmsfWorkflow.find 2
@wf3 = DmsfWorkflow.find 3
@@ -40,25 +41,6 @@ class DmsfWorkflowTest < RedmineDmsf::Test::UnitTest
@wfsac1 = DmsfWorkflowStepAction.find 1
@revision1 = DmsfFileRevision.find 1
@revision2 = DmsfFileRevision.find 2
- @project = Project.find 2
- @project5 = Project.find 5
- end
-
- def test_truth
- assert_kind_of DmsfWorkflow, @wf1
- assert_kind_of DmsfWorkflow, @wf2
- assert_kind_of DmsfWorkflow, @wf3
- assert_kind_of DmsfWorkflowStep, @wfs1
- assert_kind_of DmsfWorkflowStep, @wfs2
- assert_kind_of DmsfWorkflowStep, @wfs3
- assert_kind_of DmsfWorkflowStep, @wfs4
- assert_kind_of DmsfWorkflowStep, @wfs5
- assert_kind_of DmsfWorkflowStepAssignment, @wfsa1
- assert_kind_of DmsfWorkflowStepAction, @wfsac1
- assert_kind_of DmsfFileRevision, @revision1
- assert_kind_of DmsfFileRevision, @revision2
- assert_kind_of Project, @project
- assert_kind_of Project, @project5
end
def test_create
@@ -69,11 +51,11 @@ class DmsfWorkflowTest < RedmineDmsf::Test::UnitTest
def test_update
@wf1.name = 'wf1a'
- @wf1.project_id = 5
+ @wf1.project_id = @project5.id
assert @wf1.save, @wf1.errors.full_messages.to_sentence
@wf1.reload
assert_equal 'wf1a', @wf1.name
- assert_equal 5, @wf1.project_id
+ assert_equal @project5.id, @wf1.project_id
end
def test_validate_name_length
@@ -111,7 +93,7 @@ class DmsfWorkflowTest < RedmineDmsf::Test::UnitTest
# Global workflow
assert_nil @wf2.project
# Project workflow
- @wf2.project_id = 5
+ @wf2.project_id = @project5.id
assert @wf2.project
end
@@ -205,10 +187,10 @@ class DmsfWorkflowTest < RedmineDmsf::Test::UnitTest
wsa = DmsfWorkflowStepAction.new
wsa.dmsf_workflow_step_assignment_id = 9
wsa.action = DmsfWorkflowStepAction::ACTION_APPROVE
- wsa.author_id = User.current.id
+ wsa.author_id = @jsmith.id
assert wsa.save
# The workflow is finished
- assert @wf1.try_finish(@revision1, @wfsac1, User.current.id)
+ assert @wf1.try_finish(@revision1, @wfsac1, @jsmith.id)
@revision1.reload
assert_equal DmsfWorkflow::STATE_APPROVED, @revision1.workflow
end
@@ -217,7 +199,7 @@ class DmsfWorkflowTest < RedmineDmsf::Test::UnitTest
# The forkflow is waiting for an approval
assert_equal DmsfWorkflow::STATE_WAITING_FOR_APPROVAL, @revision1.workflow
# The workflow is not finished
- assert !@wf1.try_finish(@revision1, @wfsac1, User.current.id)
+ assert !@wf1.try_finish(@revision1, @wfsac1, @jsmith.id)
@revision1.reload
assert_equal DmsfWorkflow::STATE_WAITING_FOR_APPROVAL, @revision1.workflow
end
diff --git a/test/unit/project_patch_test.rb b/test/unit/project_patch_test.rb
index 16b16a94..9b2f1b5e 100644
--- a/test/unit/project_patch_test.rb
+++ b/test/unit/project_patch_test.rb
@@ -22,20 +22,8 @@
require File.expand_path('../../test_helper', __FILE__)
class ProjectPatchTest < RedmineDmsf::Test::UnitTest
- fixtures :projects, :dmsf_files, :dmsf_file_revisions, :dmsf_links, :dmsf_folders, :dmsf_workflows, :users
-
- def setup
- @project1 = Project.find 1
- @project2 = Project.find 2
- @project3 = Project.find 3
- User.current = User.find 1
- end
-
- def test_truth
- assert_kind_of Project, @project1
- assert_kind_of Project, @project2
- assert_kind_of Project, @project3
- end
+ fixtures :projects, :dmsf_files, :dmsf_file_revisions, :dmsf_links, :dmsf_folders, :dmsf_workflows,
+ :users, :email_addresses, :dmsf_locks, :roles, :members, :member_roles
def test_project_has_dmsf_files
assert @project1.respond_to?(:dmsf_files)
@@ -79,8 +67,9 @@ class ProjectPatchTest < RedmineDmsf::Test::UnitTest
end
def test_copy_dmsf
+ User.current = @jsmith
assert_equal 4, @project1.dmsf_files.visible.all.size
- assert_equal 4, @project1.dmsf_folders.visible.all.size
+ assert_equal 3, @project1.dmsf_folders.visible.all.size
assert_equal 2, @project1.file_links.visible.all.size
assert_equal 1, @project1.folder_links.visible.all.size
assert_equal 1, @project1.url_links.visible.all.size
@@ -91,7 +80,7 @@ class ProjectPatchTest < RedmineDmsf::Test::UnitTest
assert_equal 0, @project3.url_links.visible.all.size
@project3.copy_dmsf @project1
assert_equal 4, @project3.dmsf_files.visible.all.size
- assert_equal 5, @project3.dmsf_folders.all.size
+ assert_equal 0, @project3.dmsf_folders.visible.all.size
assert_equal 2, @project3.file_links.visible.all.size
assert_equal 1, @project3.folder_links.visible.all.size
assert_equal 1, @project3.url_links.visible.all.size
diff --git a/test/unit/user_patch_test.rb b/test/unit/user_patch_test.rb
index b6a030e4..0f23464c 100644
--- a/test/unit/user_patch_test.rb
+++ b/test/unit/user_patch_test.rb
@@ -22,19 +22,12 @@
require File.expand_path('../../test_helper', __FILE__)
class UserPatchTest < RedmineDmsf::Test::UnitTest
- fixtures :users, :projects, :dmsf_files, :dmsf_file_revisions, :dmsf_folders, :dmsf_links
-
- def setup
- @user2 = User.find 2
- end
-
- def test_truth
- assert_kind_of User, @user2
- end
+ fixtures :users, :email_addresses, :projects, :dmsf_files, :dmsf_file_revisions, :dmsf_folders,
+ :dmsf_links
def test_remove_dmsf_references
- id = @user2.id
- @user2.destroy
+ id = @jsmith.id
+ @jsmith.destroy
assert_equal 0, DmsfFileRevisionAccess.where(user_id: id).all.size
assert_equal 0, DmsfFileRevision.where(user_id: id).all.size
assert_equal 0, DmsfFileRevision.where(dmsf_workflow_assigned_by_user_id: id).all.size
diff --git a/test/unit_test.rb b/test/unit_test.rb
index cf927c51..5de1b158 100644
--- a/test/unit_test.rb
+++ b/test/unit_test.rb
@@ -25,16 +25,78 @@ module RedmineDmsf
module Test
class UnitTest < ActiveSupport::TestCase
+ def setup
+ @admin = User.find_by(login: 'admin')
+ @jsmith = User.find_by(login: 'jsmith')
+ @dlopper = User.find_by(login: 'dlopper')
+ @manager_role = Role.find_by(name: 'Manager')
+ @developer_role = Role.find_by(name: 'Developer')
+ [@manager_role, @developer_role].each do |role|
+ role.add_permission! :view_dmsf_folders
+ role.add_permission! :folder_manipulation
+ role.add_permission! :view_dmsf_files
+ role.add_permission! :file_manipulation
+ role.add_permission! :file_delete
+ end
+ @project1 = Project.find 1
+ @project2 = Project.find 2
+ @project3 = Project.find 3
+ @project5 = Project.find 5
+ [@project1, @project2, @project3, @project5].each do |project|
+ project.enable_module! :dmsf
+ end
+ @file1 = DmsfFile.find 1
+ @file2 = DmsfFile.find 2
+ @file4 = DmsfFile.find 4
+ @file5 = DmsfFile.find 5
+ @file7 = DmsfFile.find 7
+ @file8 = DmsfFile.find 8
+ @folder1 = DmsfFolder.find 1
+ @folder2 = DmsfFolder.find 2
+ @folder6 = DmsfFolder.find 6
+ @folder7 = DmsfFolder.find 7
+ Setting.plugin_redmine_dmsf['dmsf_storage_directory'] = File.join(%w(files dmsf))
+ FileUtils.cp_r File.join(File.expand_path('../fixtures/files', __FILE__), '.'), DmsfFile.storage_path
+ User.current = nil
+ end
+
+ def teardown
+ # Delete our tmp folder
+ begin
+ FileUtils.rm_rf DmsfFile.storage_path
+ rescue => e
+ error e.message
+ end
+ end
+
# Allow us to override the fixtures method to implement fixtures for our plugin.
# Ultimately it allows for better integration without blowing redmine fixtures up,
# and allowing us to suppliment redmine fixtures if we need to.
def self.fixtures(*table_names)
- dir = File.join( File.dirname(__FILE__), '/fixtures')
+ dir = File.join(File.dirname(__FILE__), 'fixtures')
table_names.each do |x|
- ActiveRecord::FixtureSet.create_fixtures(dir, x) if File.exist?("#{dir}/#{x}.yml")
+ ActiveRecord::FixtureSet.create_fixtures(dir, x) if File.exist?(File.join(dir, "#{x}.yml"))
end
- super(table_names)
- end
+ super table_names
+ end
+
+ protected
+
+ def last_email
+ mail = ActionMailer::Base.deliveries.last
+ assert_not_nil mail
+ mail
+ end
+
+ def text_part(email)
+ email.parts.detect {|part| part.content_type.include?('text/plain')}
+ end
+
+ def html_part(email)
+ email.parts.detect {|part| part.content_type.include?('text/html')}
+ end
+
end
+
end
end
\ No newline at end of file