From 9f6a4d8eec20e5e95514f892ae9aef6c5d531212 Mon Sep 17 00:00:00 2001
From: Karel Picman
Date: Thu, 13 Jul 2017 10:30:31 +0200
Subject: [PATCH] WebDAV PROPSTATS and PROPFIND caching change #742
---
app/views/settings/_dmsf_settings.html.erb | 8 -
init.rb | 1 -
lib/redmine_dmsf/webdav/cache.rb | 57 +--
.../webdav/dmsf_webdav_propfind_test.rb | 432 ++++++------------
test/unit/dmsf_file_revision_test.rb | 9 +-
test/unit/dmsf_file_test.rb | 16 +-
test/unit/dmsf_folder_test.rb | 18 +-
7 files changed, 166 insertions(+), 375 deletions(-)
diff --git a/app/views/settings/_dmsf_settings.html.erb b/app/views/settings/_dmsf_settings.html.erb
index f3834af1..c3f6023a 100644
--- a/app/views/settings/_dmsf_settings.html.erb
+++ b/app/views/settings/_dmsf_settings.html.erb
@@ -187,14 +187,6 @@
-
- <%= content_tag(:label, l(:label_memcached_servers)) %>
- <%= text_field_tag 'settings[dmsf_memcached_servers]', @settings['dmsf_memcached_servers'], :size => 50 %>
-
- <%= l(:text_memcached_servers) %>
-
-
-
<%= content_tag(:label, l(:label_webdav_ignore)) %>
<%= text_field_tag 'settings[dmsf_webdav_ignore]', @settings['dmsf_webdav_ignore'], :size => 50 %>
diff --git a/init.rb b/init.rb
index f4ff894e..78776e69 100644
--- a/init.rb
+++ b/init.rb
@@ -48,7 +48,6 @@ Redmine::Plugin.register :redmine_dmsf do
'dmsf_display_notified_recipients' => 0,
'dmsf_global_title_format' => '',
'dmsf_columns' => %w(title size modified version workflow author),
- 'dmsf_memcached_servers' => '',
'dmsf_webdav_ignore' => '^(\._|\.DS_Store$|Thumbs.db$)',
'dmsf_webdav_disable_versioning' => '^\~\$|\.tmp$',
'dmsf_keep_documents_locked' => false,
diff --git a/lib/redmine_dmsf/webdav/cache.rb b/lib/redmine_dmsf/webdav/cache.rb
index cd4a9bd5..262fba96 100644
--- a/lib/redmine_dmsf/webdav/cache.rb
+++ b/lib/redmine_dmsf/webdav/cache.rb
@@ -23,62 +23,33 @@ module RedmineDmsf
module Webdav
class Cache
def self.read(name, options = nil)
- init unless defined?(@@WebDAVCache)
- @@WebDAVCache.read(name, options) unless name.blank?
+ Rails.cache.read(name, options)
end
-
+
def self.write(name, value, options = nil)
- init unless defined?(@@WebDAVCache)
- @@WebDAVCache.write(name, value, options) unless name.blank?
+ Rails.cache.write(name, value, options)
end
-
+
def self.delete(name, options = nil)
- init unless defined?(@@WebDAVCache)
- @@WebDAVCache.delete(name, options) unless name.blank?
+ Rails.cache.delete(name, options)
end
-
+
def self.exist?(name, options = nil)
- init unless defined?(@@WebDAVCache)
- @@WebDAVCache.exist?(name, options) unless name.blank?
+ Rails.cache.exist?(name, options)
+ end
+
+ def self.clear
+ Rails.cache.clear
end
def self.invalidate_item(key)
- init unless defined?(@@WebDAVCache)
return if key.blank?
# Write an .invalid entry to notify anyone that is currently creating a response
- # that that response is invalid and should not be cached
- @@WebDAVCache.write("#{key}.invalid", expires_in: 60.seconds)
+ self.write("#{key}.invalid", expires_in: 60.seconds)
# Delete any existing entry in the cache
- @@WebDAVCache.delete(key)
- end
-
- def self.cache
- @@WebDAVCache
- end
-
- def self.init_testcache
- #puts "Webdav::Cache: Enable MemoryStore cache."
- @@WebDAVCache = ActiveSupport::Cache::MemoryStore.new(:namespace => "RedmineDmsfWebDAV")
- end
-
- def self.init_nullcache
- #puts "Webdav::Cache: Disable cache."
- @@WebDAVCache = ActiveSupport::Cache::NullStore.new
- end
-
- private
-
- def self.init
- if Setting.plugin_redmine_dmsf['dmsf_memcached_servers'].nil? || Setting.plugin_redmine_dmsf['dmsf_memcached_servers'].empty?
- # Disable caching by using a null cache
- Rails.logger.info "Webdav::Cache: Cache disabled!"
- @@WebDAVCache = ActiveSupport::Cache::NullStore.new
- else
- # Create cache using the provided server address
- Rails.logger.info "Webdav::Cache: Cache enabled, using memcached server '#{Setting.plugin_redmine_dmsf['dmsf_memcached_servers']}'"
- @@WebDAVCache = ActiveSupport::Cache::MemCacheStore.new(Setting.plugin_redmine_dmsf['dmsf_memcached_servers'])
- end
+ self.delete(key)
end
+
end
end
end
\ No newline at end of file
diff --git a/test/integration/webdav/dmsf_webdav_propfind_test.rb b/test/integration/webdav/dmsf_webdav_propfind_test.rb
index e21fd702..aea5cdd1 100644
--- a/test/integration/webdav/dmsf_webdav_propfind_test.rb
+++ b/test/integration/webdav/dmsf_webdav_propfind_test.rb
@@ -32,24 +32,21 @@ class DmsfWebdavPropfindTest < RedmineDmsf::Test::IntegrationTest
@jsmith = credentials 'jsmith' # Not a member of project1
@project1 = Project.find_by_id 1 # DMSF enabled
@project2 = Project.find_by_id 2 # DMSF disabled
-
- # Folders in project1/
+ # Folders in project1
@folder1 = DmsfFolder.find_by_id 1
@folder6 = DmsfFolder.find_by_id 6
- # Files in project1/
+ # Files in project1
@file1 = DmsfFile.find_by_id 1
@file9 = DmsfFile.find_by_id 9
@file10 = DmsfFile.find_by_id 10
-
Setting.plugin_redmine_dmsf['dmsf_webdav'] = '1'
Setting.plugin_redmine_dmsf['dmsf_webdav_strategy'] = 'WEBDAV_READ_WRITE'
-
# Temporarily enable project names to generate names for project1
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
- RedmineDmsf::Webdav::Cache.init_nullcache
+ RedmineDmsf::Webdav::Cache.clear
end
def test_truth
@@ -58,332 +55,201 @@ class DmsfWebdavPropfindTest < RedmineDmsf::Test::IntegrationTest
end
def test_propfind_denied_for_anonymous
- xml_http_request :propfind, '/dmsf/webdav/', nil,
- {:HTTP_DEPTH => '0'}
+ xml_http_request :propfind, '/dmsf/webdav/', nil, {:HTTP_DEPTH => '0'}
assert_response 401
end
def test_propfind_depth0_on_root_for_non_member
- xml_http_request :propfind, '/dmsf/webdav/', nil,
- @jsmith.merge!({:HTTP_DEPTH => '0'})
+ xml_http_request :propfind, '/dmsf/webdav/', nil, @jsmith.merge!({:HTTP_DEPTH => '0'})
assert_response 207 # MultiStatus
- assert_match 'http://www.example.com:80/dmsf/webdav/', response.body
- assert_match '/', response.body
- assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/", response.body
- assert_no_match "#{@project1.identifier}", response.body
- assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project2.identifier}/", response.body
- assert_no_match "#{@project2.identifier}", response.body
+ 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
- xml_http_request :propfind, '/dmsf/webdav/', nil,
- @jsmith.merge!({:HTTP_DEPTH => '1'})
-
+ xml_http_request :propfind, '/dmsf/webdav/', nil, @jsmith.merge!({:HTTP_DEPTH => '1'})
assert_response 207 # MultiStatus
- assert_match 'http://www.example.com:80/dmsf/webdav/', response.body
- assert_match '/', response.body
- assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/", response.body
- assert_no_match "#{@project1.identifier}", response.body
- assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project2.identifier}/", response.body
- assert_no_match "#{@project2.identifier}", response.body
+ assert response.body.include?('http://www.example.com:80/dmsf/webdav/')
+ assert response.body.include?( '/')
end
def test_propfind_depth0_on_root_for_admin
- xml_http_request :propfind, '/dmsf/webdav/', nil,
- @admin.merge!({:HTTP_DEPTH => '0'})
-
+ xml_http_request :propfind, '/dmsf/webdav/', nil, @admin.merge!({:HTTP_DEPTH => '0'})
assert_response 207 # MultiStatus
- assert_match 'http://www.example.com:80/dmsf/webdav/', response.body
- assert_match '/', response.body
- assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/", response.body
- assert_no_match "#{@project1.identifier}", response.body
- assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project2.identifier}/", response.body
- assert_no_match "#{@project2.identifier}", response.body
+ assert response.body.include?('http://www.example.com:80/dmsf/webdav/')
+ assert response.body.include?('/')
end
def test_propfind_depth1_on_root_for_admin
- xml_http_request :propfind, '/dmsf/webdav/', nil,
- @admin.merge!({:HTTP_DEPTH => '1'})
-
+ xml_http_request :propfind, '/dmsf/webdav/', nil, @admin.merge!({:HTTP_DEPTH => '1'})
assert_response 207 # MultiStatus
- assert_match 'http://www.example.com:80/dmsf/webdav/', response.body
- assert_match 'D:displayname>/', response.body
- assert_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/", response.body
- assert_match "#{@project1.identifier}", response.body
- assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project2.identifier}/", response.body
- assert_no_match "#{@project2.identifier}", response.body
+ assert response.body.include?('http://www.example.com:80/dmsf/webdav/')
+ assert response.body.include?('/')
end
def test_propfind_depth1_on_root_for_admin_with_project_names
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
- if Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] == true
- xml_http_request :propfind, '/dmsf/webdav/', nil,
- @admin.merge!({:HTTP_DEPTH => '1'})
- assert_response 207 # MultiStatus
- assert_match 'http://www.example.com:80/dmsf/webdav/', response.body
- assert_match '/', response.body
- # project.identifier should not match when using project names
- assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/", response.body
- assert_no_match "#{@project1.identifier}", response.body
- # but the project name should match
- assert_match "http://www.example.com:80/dmsf/webdav/#{@project1_uri}/", response.body
- assert_match "#{@project1_name}", response.body
- end
+ xml_http_request :propfind, '/dmsf/webdav/', nil, @admin.merge!({:HTTP_DEPTH => '1'})
+ assert_response 207 # MultiStatus
+ assert response.body.include?('http://www.example.com:80/dmsf/webdav/')
+ assert response.body.include?('/')
+ # project.identifier should not match when using project names
+ assert !response.body.include?("http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/")
+ assert !response.body.include?("#{@project1.identifier}")
+ # but the project name should match
+ assert response.body.include?("http://www.example.com:80/dmsf/webdav/#{@project1_uri}/")
+ assert response.body.include?("#{@project1_name}")
end
def test_propfind_depth0_on_project1_for_non_member
- xml_http_request :propfind, "/dmsf/webdav/#{@project1.identifier}", nil,
- @jsmith.merge!({:HTTP_DEPTH => '0'})
- assert_response 404
+ xml_http_request :propfind, "/dmsf/webdav/#{@project1.identifier}", nil, @jsmith.merge!({:HTTP_DEPTH => '0'})
+ assert_response :missing
end
def test_propfind_depth0_on_project1_for_admin
- xml_http_request :propfind, "/dmsf/webdav/#{@project1.identifier}", nil,
- @admin.merge!({:HTTP_DEPTH => '0'})
+ xml_http_request :propfind, "/dmsf/webdav/#{@project1.identifier}", nil, @admin.merge!({:HTTP_DEPTH => '0'})
assert_response 207 # MultiStatus
- assert_no_match 'http://www.example.com:80/dmsf/webdav/', response.body
- assert_no_match '/', response.body
- # Project
- assert_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/", response.body
- assert_match "#{@project1.identifier}", response.body
- # Folders
- assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@folder1.title}/", response.body
- assert_no_match "#{@folder1.title}", response.body
- assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@folder6.title}/", response.body
- assert_no_match "#{@folder6.title}", response.body
- # Files
- assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@file1.name}", response.body
- assert_no_match "#{@file1.name}", response.body
- assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@file9.name}", response.body
- assert_no_match "#{@file9.name}", response.body
- assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@file10.name}", response.body
- assert_no_match "#{@file10.name}", response.body
+ assert response.body.include?("http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/")
+ assert response.body.include?("#{@project1.identifier}")
end
def test_propfind_depth0_on_project1_for_admin_with_project_names
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
- if Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] == true
- xml_http_request :propfind, "/dmsf/webdav/#{@project1.identifier}", nil,
- @admin.merge!({:HTTP_DEPTH => '0'})
- assert_response 404
- xml_http_request :propfind, "/dmsf/webdav/#{@project1_uri}", nil,
- @admin.merge!({:HTTP_DEPTH => '0'})
- assert_response 207 # MultiStatus
- assert_no_match 'http://www.example.com:80/dmsf/webdav/', response.body
- assert_no_match '/', response.body
- # Project
- assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/", response.body
- assert_no_match "#{@project1.identifier}", response.body
- assert_match "http://www.example.com:80/dmsf/webdav/#{@project1_uri}/", response.body
- assert_match "#{@project1_name}", response.body
- end
- end
-
- def test_propfind_depth1_on_project1_for_admin
- xml_http_request :propfind, "/dmsf/webdav/#{@project1.identifier}", nil,
- @admin.merge!({:HTTP_DEPTH => '1'})
+ xml_http_request :propfind, "/dmsf/webdav/#{@project1.identifier}", nil, @admin.merge!({:HTTP_DEPTH => '0'})
+ assert_response :missing
+ xml_http_request :propfind, "/dmsf/webdav/#{@project1_uri}", nil, @admin.merge!({:HTTP_DEPTH => '0'})
+ assert_response 207 # MultiStatus
+ assert response.body.include?("http://www.example.com:80/dmsf/webdav/#{@project1_uri}/")
+ assert response.body.include?("#{@project1_name}")
+ end
+
+ def test_propfind_depth1_on_project1_for_admin
+ xml_http_request :propfind, "/dmsf/webdav/#{@project1.identifier}", nil, @admin.merge!({:HTTP_DEPTH => '1'})
assert_response 207 # MultiStatus
- assert_no_match 'http://www.example.com:80/dmsf/webdav/', response.body
- assert_no_match '/', response.body
# Project
- assert_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/", response.body
- assert_match "#{@project1.identifier}", response.body
+ assert response.body.include?("http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/")
+ assert response.body.include?("#{@project1.identifier}")
# Folders
- assert_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@folder1.title}/", response.body
- assert_match "#{@folder1.title}", response.body
- assert_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@folder6.title}/", response.body
- assert_match "#{@folder6.title}", response.body
+ assert response.body.include?("http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@folder1.title}/")
+ assert response.body.include?("#{@folder1.title}")
+ assert response.body.include?("http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@folder6.title}/")
+ assert response.body.include?("#{@folder6.title}")
# Files
- assert_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@file1.name}", response.body
- assert_match "#{@file1.name}", response.body
- assert_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@file9.name}", response.body
- assert_match "#{@file9.name}", response.body
- assert_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@file10.name}", response.body
- assert_match "#{@file10.name}", response.body
+ assert response.body.include?("http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@file1.name}")
+ assert response.body.include?("#{@file1.name}")
+ assert response.body.include?("http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@file9.name}")
+ assert response.body.include?("#{@file9.name}")
+ assert response.body.include?("http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@file10.name}")
+ assert response.body.include?("#{@file10.name}")
end
def test_propfind_depth1_on_project1_for_admin_with_project_names
Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
- if Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] == true
- xml_http_request :propfind, "/dmsf/webdav/#{@project1.identifier}", nil,
- @admin.merge!({:HTTP_DEPTH => '1'})
- assert_response 404
-
- xml_http_request :propfind, "/dmsf/webdav/#{@project1_uri}", nil,
- @admin.merge!({:HTTP_DEPTH => '1'})
- assert_response 207 # MultiStatus
-
- assert_no_match 'http://www.example.com:80/dmsf/webdav/', response.body
- assert_no_match '/', response.body
-
- # Project
- assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/", response.body
- assert_no_match "#{@project1.identifier}", response.body
- assert_match "http://www.example.com:80/dmsf/webdav/#{@project1_uri}/", response.body
- assert_match "#{@project1_name}", response.body
-
- # Folders
- assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@folder1.title}/", response.body
- assert_match "http://www.example.com:80/dmsf/webdav/#{@project1_uri}/#{@folder1.title}/", response.body
- assert_match "#{@folder1.title}", response.body
- assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@folder6.title}/", response.body
- assert_match "http://www.example.com:80/dmsf/webdav/#{@project1_uri}/#{@folder6.title}/", response.body
- assert_match "#{@folder6.title}", response.body
-
- # Files
- assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@file1.name}", response.body
- assert_match "http://www.example.com:80/dmsf/webdav/#{@project1_uri}/#{@file1.name}", response.body
- assert_match "#{@file1.name}", response.body
- assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@file9.name}", response.body
- assert_match "http://www.example.com:80/dmsf/webdav/#{@project1_uri}/#{@file9.name}", response.body
- assert_match "#{@file9.name}", response.body
- assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@file10.name}", response.body
- assert_match "http://www.example.com:80/dmsf/webdav/#{@project1_uri}/#{@file10.name}", response.body
- assert_match "#{@file10.name}", response.body
- end
+ xml_http_request :propfind, "/dmsf/webdav/#{@project1.identifier}", nil, @admin.merge!({:HTTP_DEPTH => '1'})
+ assert_response :missing
+ xml_http_request :propfind, "/dmsf/webdav/#{@project1_uri}", nil, @admin.merge!({:HTTP_DEPTH => '1'})
+ assert_response 207 # MultiStatus
+ # Project
+ assert response.body.include?("http://www.example.com:80/dmsf/webdav/#{@project1_uri}/")
+ # Folders
+ assert response.body.include?("http://www.example.com:80/dmsf/webdav/#{@project1_uri}/#{@folder1.title}/")
+ assert response.body.include?("#{@folder1.title}")
+ assert response.body.include?("http://www.example.com:80/dmsf/webdav/#{@project1_uri}/#{@folder6.title}/")
+ assert response.body.include?("#{@folder6.title}")
+ # Files
+ assert response.body.include?("http://www.example.com:80/dmsf/webdav/#{@project1_uri}/#{@file1.name}")
+ assert response.body.include?("#{@file1.name}")
+ assert response.body.include?("http://www.example.com:80/dmsf/webdav/#{@project1_uri}/#{@file9.name}")
+ assert response.body.include?("#{@file9.name}")
+ assert response.body.include?("http://www.example.com:80/dmsf/webdav/#{@project1_uri}/#{@file10.name}")
+ assert response.body.include?("#{@file10.name}")
end
def test_propfind_depth1_on_root_for_admin_with_project_names_and_cache
- RedmineDmsf::Webdav::Cache.init_testcache
- Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] = true
- if Setting.plugin_redmine_dmsf['dmsf_webdav_use_project_names'] == true
- # PROPSTATS for / and project1 should be cached.
- assert_difference 'RedmineDmsf::Webdav::Cache.cache.instance_variable_get(:@data).count', +2 do
- xml_http_request :propfind, '/dmsf/webdav/', nil,
- @admin.merge!({:HTTP_DEPTH => '1'})
- end
-
- assert_response 207 # MultiStatus
- assert_match 'http://www.example.com:80/dmsf/webdav/', response.body
- assert_match '/', response.body
-
- # project.identifier should not match when using project names
- assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/", response.body
- assert_no_match "#{@project1.identifier}", response.body
-
- # but the project name should match
- assert_match "http://www.example.com:80/dmsf/webdav/#{@project1_uri}/", response.body
- assert_match "#{@project1_name}", response.body
-
- # Rename project1
- @project1.name = 'Online Cookbook'
- @project1.save!
- project1_new_name = RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1)
- project1_new_uri = Addressable::URI.escape(project1_new_name)
-
- # PROPSTATS for / is already cached, but a new PROPSTATS should be cached for project1
- assert_difference 'RedmineDmsf::Webdav::Cache.cache.instance_variable_get(:@data).count', +1 do
- xml_http_request :propfind, '/dmsf/webdav/', nil,
- @admin.merge!({:HTTP_DEPTH => '1'})
- end
-
- assert_response 207 # MultiStatus
- assert_match 'http://www.example.com:80/dmsf/webdav/', response.body
- assert_match '/', response.body
-
- # project.identifier should not match when using project names
- assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/", response.body
- assert_no_match "#{@project1.identifier}", response.body
-
- # old project name should not match
- assert_no_match "http://www.example.com:80/dmsf/webdav/#{@project1_uri}/", response.body
- assert_no_match "#{@project1_uri}", response.body
-
- # but new project name should match
- assert_match "http://www.example.com:80/dmsf/webdav/#{project1_new_uri}/", response.body
- assert_match "#{project1_new_name}", response.body
- end
+ @project1.name = 'Online Cookbook'
+ @project1.save!
+ project1_new_name = RedmineDmsf::Webdav::ProjectResource.create_project_name(@project1)
+ project1_new_uri = Addressable::URI.escape(project1_new_name)
+ xml_http_request :propfind, "/dmsf/webdav/#{project1_new_uri}", nil, @admin.merge!({:HTTP_DEPTH => '1'})
+ assert_response 207 # MultiStatus
+ assert response.body.include?("http://www.example.com:80/dmsf/webdav/#{project1_new_uri}/")
+ assert response.body.include?("#{project1_new_name}")
end
def test_propfind_depth0_on_project1_for_admin_with_cache
- RedmineDmsf::Webdav::Cache.init_testcache
-
- assert_difference 'RedmineDmsf::Webdav::Cache.cache.instance_variable_get(:@data).count', +1 do
- xml_http_request :propfind, "/dmsf/webdav/#{@project1.identifier}", nil,
- @admin.merge!({:HTTP_DEPTH => '0'})
- assert_response 207 # MultiStatus
- end
-
- # Response should be correct
+ xml_http_request :propfind, "/dmsf/webdav/#{@project1.identifier}", nil, @admin.merge!({:HTTP_DEPTH => '0'})
+ assert_response 207 # MultiStatus
# Project
- assert_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/", response.body
+ assert response.body.include?("http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/")
# A new PROPSTATS entry should have been created for project1
- assert_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/", RedmineDmsf::Webdav::Cache.read("PROPSTATS/#{@project1.identifier}")
-
+ result = RedmineDmsf::Webdav::Cache.read("PROPSTATS/#{@project1.identifier}")
+ assert result
+ assert result.include?("http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/")
# Replace the PROPSTATS cache entry and make sure that it is used
RedmineDmsf::Webdav::Cache.write("PROPSTATS/#{@project1.identifier}", "Cached PROPSTATS/#{@project1.identifier}")
-
- assert_no_difference 'RedmineDmsf::Webdav::Cache.cache.instance_variable_get(:@data).count' do
- xml_http_request :propfind, "/dmsf/webdav/#{@project1.identifier}", nil,
- @admin.merge!({:HTTP_DEPTH => '0'})
- assert_response 207 # MultiStatus
- end
- assert_match "Cached PROPSTATS/#{@project1.identifier}", response.body
+ xml_http_request :propfind, "/dmsf/webdav/#{@project1.identifier}", nil, @admin.merge!({:HTTP_DEPTH => '0'})
+ assert_response 207 # MultiStatus
+ assert response.body.include?("Cached PROPSTATS/#{@project1.identifier}")
end
def test_propfind_depth1_on_project1_for_admin_with_cache
- RedmineDmsf::Webdav::Cache.init_testcache
-
- assert_difference 'RedmineDmsf::Webdav::Cache.cache.instance_variable_get(:@data).count', +10 do
- xml_http_request :propfind, "/dmsf/webdav/#{@project1.identifier}", nil,
- @admin.merge!({:HTTP_DEPTH => '1'})
- assert_response 207 # MultiStatus
- end
-
- # Project, a new PROPFIND and PROPSTATS should have been created for project1
- assert_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/", response.body
- assert_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/", RedmineDmsf::Webdav::Cache.read("PROPFIND/#{@project1.id}")
- assert_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/", RedmineDmsf::Webdav::Cache.read("PROPSTATS/#{@project1.identifier}")
- # Folders, new PROPSTATS should be created for each folder.
- assert_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@folder1.title}/", response.body
- assert_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@folder1.title}/", RedmineDmsf::Webdav::Cache.read("PROPSTATS/#{@project1.identifier}/#{@folder1.title}")
- assert_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@folder6.title}/", response.body
- assert_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@folder6.title}/", RedmineDmsf::Webdav::Cache.read("PROPSTATS/#{@project1.identifier}/#{@folder6.title}")
- # Files, new PROPSTATS should be created for each folder.
- assert_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@file1.name}", response.body
- assert_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@file1.name}", RedmineDmsf::Webdav::Cache.read("PROPSTATS/#{@file1.id}-#{@file1.last_revision.id}")
- assert_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@file9.name}", response.body
- assert_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@file9.name}", RedmineDmsf::Webdav::Cache.read("PROPSTATS/#{@file9.id}-#{@file9.last_revision.id}")
- assert_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@file10.name}", response.body
- assert_match "http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@file10.name}", RedmineDmsf::Webdav::Cache.read("PROPSTATS/#{@file10.id}-#{@file10.last_revision.id}")
-
+ xml_http_request :propfind, "/dmsf/webdav/#{@project1.identifier}", nil, @admin.merge!({:HTTP_DEPTH => '1'})
+ assert_response 207 # MultiStatus
+ # Project
+ assert response.body.include?("http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/")
+ result = RedmineDmsf::Webdav::Cache.read("PROPFIND/#{@project1.id}")
+ assert result
+ assert result.include?("http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/")
+ result = RedmineDmsf::Webdav::Cache.read("PROPSTATS/#{@project1.identifier}")
+ assert result
+ assert result.include?("http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/")
+ # Folders
+ assert response.body.include?("http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@folder1.title}/")
+ result = RedmineDmsf::Webdav::Cache.read("PROPSTATS/#{@project1.identifier}/#{@folder1.title}")
+ assert result
+ assert result.include?("http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@folder1.title}/")
+ assert response.body.include?("http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@folder6.title}/")
+ result = RedmineDmsf::Webdav::Cache.read("PROPSTATS/#{@project1.identifier}/#{@folder6.title}")
+ assert result
+ assert result.include?("http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@folder6.title}/")
+ # Files
+ assert response.body.include?("http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@file1.name}")
+ result = RedmineDmsf::Webdav::Cache.read("PROPSTATS/#{@file1.id}-#{@file1.last_revision.id}")
+ assert result
+ assert result.include?("http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@file1.name}")
+ assert response.body.include?("http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@file9.name}")
+ result = RedmineDmsf::Webdav::Cache.read("PROPSTATS/#{@file9.id}-#{@file9.last_revision.id}")
+ assert result
+ assert result.include?("http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@file9.name}")
+ assert response.body.include?("http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@file10.name}")
+ result = RedmineDmsf::Webdav::Cache.read("PROPSTATS/#{@file10.id}-#{@file10.last_revision.id}")
+ assert result
+ assert result.include?("http://www.example.com:80/dmsf/webdav/#{@project1.identifier}/#{@file10.name}")
# Replace PROPFIND and verify that cached entry is used.
RedmineDmsf::Webdav::Cache.write("PROPFIND/#{@project1.id}", "Cached PROPFIND/#{@project1.id}")
- assert_no_difference 'RedmineDmsf::Webdav::Cache.cache.instance_variable_get(:@data).count' do
- xml_http_request :propfind, "/dmsf/webdav/#{@project1.identifier}", nil,
- @admin.merge!({:HTTP_DEPTH => '1'})
- assert_response 207 # MultiStatus
- assert_match "Cached PROPFIND/#{@project1.id}", response.body
- end
-
+ xml_http_request :propfind, "/dmsf/webdav/#{@project1.identifier}", nil, @admin.merge!({:HTTP_DEPTH => '1'})
+ assert_response 207 # MultiStatus
+ assert response.body.include?("Cached PROPFIND/#{@project1.id}")
# Delete PROPFIND, replace PROPSTATS for one entry and verify that it is used when creating the response and new cache
RedmineDmsf::Webdav::Cache.invalidate_item("PROPFIND/#{@project1.id}")
assert !RedmineDmsf::Webdav::Cache.exist?("PROPFIND/#{@project1.id}")
assert RedmineDmsf::Webdav::Cache.exist?("PROPFIND/#{@project1.id}.invalid")
RedmineDmsf::Webdav::Cache.write("PROPSTATS/#{@project1.identifier}", "Cached PROPSTATS/#{@project1.identifier}")
# One PROPFIND entry is added and one .invalid entry is deleted, so no differenct.
- assert_no_difference 'RedmineDmsf::Webdav::Cache.cache.instance_variable_get(:@data).count' do
- xml_http_request :propfind, "/dmsf/webdav/#{@project1.identifier}", nil,
- @admin.merge!({:HTTP_DEPTH => "1"})
- assert_response 207 # MultiStatus
- end
- assert_match "Cached PROPSTATS/#{@project1.identifier}", response.body
- assert_match "Cached PROPSTATS/#{@project1.identifier}", RedmineDmsf::Webdav::Cache.read("PROPFIND/#{@project1.id}")
+ xml_http_request :propfind, "/dmsf/webdav/#{@project1.identifier}", nil, @admin.merge!({:HTTP_DEPTH => "1"})
+ assert_response 207 # MultiStatus
+ assert response.body.include?("Cached PROPSTATS/#{@project1.identifier}")
+ result = RedmineDmsf::Webdav::Cache.read("PROPFIND/#{@project1.id}")
+ assert result
+ assert result.include?("Cached PROPSTATS/#{@project1.identifier}")
assert !RedmineDmsf::Webdav::Cache.exist?("PROPFIND/#{@project1.id}.invalid")
end
def test_propfind_depth1_on_project1_for_admin_with_cache_and_locks
- RedmineDmsf::Webdav::Cache.init_testcache
-
log_user 'admin', 'admin' # login as admin
assert !User.current.anonymous?, 'Current user is anonymous'
-
- assert_difference 'RedmineDmsf::Webdav::Cache.cache.instance_variable_get(:@data).count', +10 do
- xml_http_request :propfind, "/dmsf/webdav/#{@project1.identifier}", nil,
- @admin.merge!({:HTTP_DEPTH => '1'})
- assert_response 207 # MultiStatus
- end
-
+ xml_http_request :propfind, "/dmsf/webdav/#{@project1.identifier}", nil, @admin.merge!({:HTTP_DEPTH => '1'})
+ assert_response 207 # MultiStatus
# Verify that everything exists in the cache as it should
assert RedmineDmsf::Webdav::Cache.exist?("PROPFIND/#{@project1.id}")
assert RedmineDmsf::Webdav::Cache.exist?("PROPSTATS/#{@project1.identifier}")
@@ -392,7 +258,6 @@ class DmsfWebdavPropfindTest < RedmineDmsf::Test::IntegrationTest
assert RedmineDmsf::Webdav::Cache.exist?("PROPSTATS/#{@file1.id}-#{@file1.last_revision.id}")
assert RedmineDmsf::Webdav::Cache.exist?("PROPSTATS/#{@file9.id}-#{@file9.last_revision.id}")
assert RedmineDmsf::Webdav::Cache.exist?("PROPSTATS/#{@file10.id}-#{@file10.last_revision.id}")
-
# Lock a file and verify that the PROPSTATS for the file and the PROPFIND were deleted
assert @file1.lock!, "File failed to be locked by #{User.current.name}"
assert !RedmineDmsf::Webdav::Cache.exist?("PROPFIND/#{@project1.id}")
@@ -403,16 +268,11 @@ class DmsfWebdavPropfindTest < RedmineDmsf::Test::IntegrationTest
assert !RedmineDmsf::Webdav::Cache.exist?("PROPSTATS/#{@file1.id}-#{@file1.last_revision.id}")
assert RedmineDmsf::Webdav::Cache.exist?("PROPSTATS/#{@file9.id}-#{@file9.last_revision.id}")
assert RedmineDmsf::Webdav::Cache.exist?("PROPSTATS/#{@file10.id}-#{@file10.last_revision.id}")
-
- assert_difference 'RedmineDmsf::Webdav::Cache.cache.instance_variable_get(:@data).count', +1 do
- xml_http_request :propfind, "/dmsf/webdav/#{@project1.identifier}", nil,
- @admin.merge!({:HTTP_DEPTH => '1'})
- assert_response 207 # MultiStatus
- end
+ xml_http_request :propfind, "/dmsf/webdav/#{@project1.identifier}", nil, @admin.merge!({:HTTP_DEPTH => '1'})
+ assert_response 207 # MultiStatus
assert RedmineDmsf::Webdav::Cache.exist?("PROPFIND/#{@project1.id}")
assert !RedmineDmsf::Webdav::Cache.exist?("PROPFIND/#{@project1.id}.invalid")
assert RedmineDmsf::Webdav::Cache.exist?("PROPSTATS/#{@file1.id}-#{@file1.last_revision.id}")
-
# Unlock a file and verify that the PROPSTATS for the file and the PROPFIND were deleted
assert @file1.unlock!, "File failed to be unlocked by #{User.current.name}"
assert !RedmineDmsf::Webdav::Cache.exist?("PROPFIND/#{@project1.id}")
@@ -423,16 +283,11 @@ class DmsfWebdavPropfindTest < RedmineDmsf::Test::IntegrationTest
assert !RedmineDmsf::Webdav::Cache.exist?("PROPSTATS/#{@file1.id}-#{@file1.last_revision.id}")
assert RedmineDmsf::Webdav::Cache.exist?("PROPSTATS/#{@file9.id}-#{@file9.last_revision.id}")
assert RedmineDmsf::Webdav::Cache.exist?("PROPSTATS/#{@file10.id}-#{@file10.last_revision.id}")
-
- assert_difference 'RedmineDmsf::Webdav::Cache.cache.instance_variable_get(:@data).count', +1 do
- xml_http_request :propfind, "/dmsf/webdav/#{@project1.identifier}", nil,
- @admin.merge!({:HTTP_DEPTH => '1'})
- assert_response 207 # MultiStatus
- end
+ xml_http_request :propfind, "/dmsf/webdav/#{@project1.identifier}", nil, @admin.merge!({:HTTP_DEPTH => '1'})
+ assert_response 207 # MultiStatus
assert RedmineDmsf::Webdav::Cache.exist?("PROPFIND/#{@project1.id}")
assert !RedmineDmsf::Webdav::Cache.exist?("PROPFIND/#{@project1.id}.invalid")
assert RedmineDmsf::Webdav::Cache.exist?("PROPSTATS/#{@file1.id}-#{@file1.last_revision.id}")
-
# Lock a folder and verify that the PROPSTATS for the file and the PROPFIND were deleted
assert @folder1.lock!, "File failed to be locked by #{User.current.name}"
assert !RedmineDmsf::Webdav::Cache.exist?("PROPFIND/#{@project1.id}")
@@ -443,16 +298,11 @@ class DmsfWebdavPropfindTest < RedmineDmsf::Test::IntegrationTest
assert RedmineDmsf::Webdav::Cache.exist?("PROPSTATS/#{@file1.id}-#{@file1.last_revision.id}")
assert RedmineDmsf::Webdav::Cache.exist?("PROPSTATS/#{@file9.id}-#{@file9.last_revision.id}")
assert RedmineDmsf::Webdav::Cache.exist?("PROPSTATS/#{@file10.id}-#{@file10.last_revision.id}")
-
- assert_difference 'RedmineDmsf::Webdav::Cache.cache.instance_variable_get(:@data).count', +1 do
- xml_http_request :propfind, "/dmsf/webdav/#{@project1.identifier}", nil,
- @admin.merge!({:HTTP_DEPTH => '1'})
- assert_response 207 # MultiStatus
- end
+ xml_http_request :propfind, "/dmsf/webdav/#{@project1.identifier}", nil, @admin.merge!({:HTTP_DEPTH => '1'})
+ assert_response 207 # MultiStatus
assert RedmineDmsf::Webdav::Cache.exist?("PROPFIND/#{@project1.id}")
assert !RedmineDmsf::Webdav::Cache.exist?("PROPFIND/#{@project1.id}.invalid")
assert RedmineDmsf::Webdav::Cache.exist?("PROPSTATS/#{@project1.identifier}/#{@folder1.title}")
-
# Unlock a folder and verify that the PROPSTATS for the file and the PROPFIND were deleted
assert @folder1.unlock!, "File failed to be unlocked by #{User.current.name}"
assert !RedmineDmsf::Webdav::Cache.exist?("PROPFIND/#{@project1.id}")
@@ -463,12 +313,8 @@ class DmsfWebdavPropfindTest < RedmineDmsf::Test::IntegrationTest
assert RedmineDmsf::Webdav::Cache.exist?("PROPSTATS/#{@file1.id}-#{@file1.last_revision.id}")
assert RedmineDmsf::Webdav::Cache.exist?("PROPSTATS/#{@file9.id}-#{@file9.last_revision.id}")
assert RedmineDmsf::Webdav::Cache.exist?("PROPSTATS/#{@file10.id}-#{@file10.last_revision.id}")
-
- assert_difference 'RedmineDmsf::Webdav::Cache.cache.instance_variable_get(:@data).count', +1 do
- xml_http_request :propfind, "/dmsf/webdav/#{@project1.identifier}", nil,
- @admin.merge!({:HTTP_DEPTH => '1'})
- assert_response 207 # MultiStatus
- end
+ xml_http_request :propfind, "/dmsf/webdav/#{@project1.identifier}", nil, @admin.merge!({:HTTP_DEPTH => '1'})
+ assert_response 207 # MultiStatus
assert RedmineDmsf::Webdav::Cache.exist?("PROPFIND/#{@project1.id}")
assert !RedmineDmsf::Webdav::Cache.exist?("PROPFIND/#{@project1.id}.invalid")
assert RedmineDmsf::Webdav::Cache.exist?("PROPSTATS/#{@project1.identifier}/#{@folder1.title}")
diff --git a/test/unit/dmsf_file_revision_test.rb b/test/unit/dmsf_file_revision_test.rb
index fcbd3ebe..9231ba3a 100644
--- a/test/unit/dmsf_file_revision_test.rb
+++ b/test/unit/dmsf_file_revision_test.rb
@@ -102,7 +102,7 @@ class DmsfFileRevisionTest < RedmineDmsf::Test::UnitTest
assert r1.save
# Just make sure the file exists
File.open(r1.disk_file, 'wb') do |f|
- f.write("1234")
+ f.write('1234')
end
# Directly after the file has been stored generate the r2 storage filename.
@@ -114,8 +114,7 @@ class DmsfFileRevisionTest < RedmineDmsf::Test::UnitTest
end
def test_save_and_destroy_with_cache
- RedmineDmsf::Webdav::Cache.init_testcache
-
+ Rails.cache.clear
# save
cache_key = @revision1.propfind_cache_key
RedmineDmsf::Webdav::Cache.write(cache_key, "")
@@ -125,7 +124,6 @@ class DmsfFileRevisionTest < RedmineDmsf::Test::UnitTest
assert !RedmineDmsf::Webdav::Cache.exist?(cache_key)
assert RedmineDmsf::Webdav::Cache.exist?("#{cache_key}.invalid")
RedmineDmsf::Webdav::Cache.delete("#{cache_key}.invalid")
-
# destroy
RedmineDmsf::Webdav::Cache.write(cache_key, "")
assert RedmineDmsf::Webdav::Cache.exist?(cache_key)
@@ -133,7 +131,6 @@ class DmsfFileRevisionTest < RedmineDmsf::Test::UnitTest
@revision1.destroy
assert !RedmineDmsf::Webdav::Cache.exist?(cache_key)
assert RedmineDmsf::Webdav::Cache.exist?("#{cache_key}.invalid")
-
# save!
cache_key = @revision2.propfind_cache_key
RedmineDmsf::Webdav::Cache.write(cache_key, "")
@@ -142,8 +139,6 @@ class DmsfFileRevisionTest < RedmineDmsf::Test::UnitTest
@revision2.save!
assert !RedmineDmsf::Webdav::Cache.exist?(cache_key)
assert RedmineDmsf::Webdav::Cache.exist?("#{cache_key}.invalid")
-
- RedmineDmsf::Webdav::Cache.init_nullcache
end
def test_workflow_tooltip
diff --git a/test/unit/dmsf_file_test.rb b/test/unit/dmsf_file_test.rb
index 9aa1d8cc..4a539171 100644
--- a/test/unit/dmsf_file_test.rb
+++ b/test/unit/dmsf_file_test.rb
@@ -167,45 +167,39 @@ class DmsfFileTest < RedmineDmsf::Test::UnitTest
end
def test_save_and_destroy_with_cache
- RedmineDmsf::Webdav::Cache.init_testcache
-
+ Rails.cache.clear
# save
cache_key = @file5.propfind_cache_key
- RedmineDmsf::Webdav::Cache.write(cache_key, "")
+ RedmineDmsf::Webdav::Cache.write(cache_key, '')
assert RedmineDmsf::Webdav::Cache.exist?(cache_key)
assert !RedmineDmsf::Webdav::Cache.exist?("#{cache_key}.invalid")
@file5.save
assert !RedmineDmsf::Webdav::Cache.exist?(cache_key)
assert RedmineDmsf::Webdav::Cache.exist?("#{cache_key}.invalid")
RedmineDmsf::Webdav::Cache.delete("#{cache_key}.invalid")
-
# destroy
- RedmineDmsf::Webdav::Cache.write(cache_key, "")
+ RedmineDmsf::Webdav::Cache.write(cache_key, '')
assert RedmineDmsf::Webdav::Cache.exist?(cache_key)
assert !RedmineDmsf::Webdav::Cache.exist?("#{cache_key}.invalid")
@file5.destroy
assert !RedmineDmsf::Webdav::Cache.exist?(cache_key)
assert RedmineDmsf::Webdav::Cache.exist?("#{cache_key}.invalid")
-
# save!
cache_key = @file6.propfind_cache_key
- RedmineDmsf::Webdav::Cache.write(cache_key, "")
+ RedmineDmsf::Webdav::Cache.write(cache_key, '')
assert RedmineDmsf::Webdav::Cache.exist?(cache_key)
assert !RedmineDmsf::Webdav::Cache.exist?("#{cache_key}.invalid")
@file6.save!
assert !RedmineDmsf::Webdav::Cache.exist?(cache_key)
assert RedmineDmsf::Webdav::Cache.exist?("#{cache_key}.invalid")
RedmineDmsf::Webdav::Cache.delete("#{cache_key}.invalid")
-
# destroy!
- RedmineDmsf::Webdav::Cache.write(cache_key, "")
+ RedmineDmsf::Webdav::Cache.write(cache_key, '')
assert RedmineDmsf::Webdav::Cache.exist?(cache_key)
assert !RedmineDmsf::Webdav::Cache.exist?("#{cache_key}.invalid")
@file6.destroy!
assert !RedmineDmsf::Webdav::Cache.exist?(cache_key)
assert RedmineDmsf::Webdav::Cache.exist?("#{cache_key}.invalid")
-
- RedmineDmsf::Webdav::Cache.init_nullcache
end
def test_project_project
diff --git a/test/unit/dmsf_folder_test.rb b/test/unit/dmsf_folder_test.rb
index 7865da83..4e735ec4 100644
--- a/test/unit/dmsf_folder_test.rb
+++ b/test/unit/dmsf_folder_test.rb
@@ -138,46 +138,40 @@ class DmsfFolderTest < RedmineDmsf::Test::UnitTest
end
def test_save_and_destroy_with_cache
- RedmineDmsf::Webdav::Cache.init_testcache
-
+ Rails.cache.clear
# save
cache_key = @folder4.propfind_cache_key
- RedmineDmsf::Webdav::Cache.write(cache_key, "")
+ RedmineDmsf::Webdav::Cache.write(cache_key, '')
assert RedmineDmsf::Webdav::Cache.exist?(cache_key)
assert !RedmineDmsf::Webdav::Cache.exist?("#{cache_key}.invalid")
@folder4.save
assert !RedmineDmsf::Webdav::Cache.exist?(cache_key)
assert RedmineDmsf::Webdav::Cache.exist?("#{cache_key}.invalid")
RedmineDmsf::Webdav::Cache.delete("#{cache_key}.invalid")
-
# destroy
- RedmineDmsf::Webdav::Cache.write(cache_key, "")
+ RedmineDmsf::Webdav::Cache.write(cache_key, '')
assert RedmineDmsf::Webdav::Cache.exist?(cache_key)
assert !RedmineDmsf::Webdav::Cache.exist?("#{cache_key}.invalid")
@folder4.destroy
assert !RedmineDmsf::Webdav::Cache.exist?(cache_key)
assert RedmineDmsf::Webdav::Cache.exist?("#{cache_key}.invalid")
- RedmineDmsf::Webdav::Cache.cache.clear
-
+ #RedmineDmsf::Webdav::Cache.cache.clear
# save!
cache_key = @folder5.propfind_cache_key
- RedmineDmsf::Webdav::Cache.write(cache_key, "")
+ RedmineDmsf::Webdav::Cache.write(cache_key, '')
assert RedmineDmsf::Webdav::Cache.exist?(cache_key)
assert !RedmineDmsf::Webdav::Cache.exist?("#{cache_key}.invalid")
@folder5.save!
assert !RedmineDmsf::Webdav::Cache.exist?(cache_key)
assert RedmineDmsf::Webdav::Cache.exist?("#{cache_key}.invalid")
RedmineDmsf::Webdav::Cache.delete("#{cache_key}.invalid")
-
# destroy!
- RedmineDmsf::Webdav::Cache.write(cache_key, "")
+ RedmineDmsf::Webdav::Cache.write(cache_key, '')
assert RedmineDmsf::Webdav::Cache.exist?(cache_key)
assert !RedmineDmsf::Webdav::Cache.exist?("#{cache_key}.invalid")
@folder5.destroy!
assert !RedmineDmsf::Webdav::Cache.exist?(cache_key)
assert RedmineDmsf::Webdav::Cache.exist?("#{cache_key}.invalid")
-
- RedmineDmsf::Webdav::Cache.init_nullcache
end
def test_to_csv