aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Rakefile2
-rw-r--r--lib/active_file/sites/disk_site.rb2
-rw-r--r--test/disk_site_test.rb51
-rw-r--r--test/s3_site_test.rb63
-rw-r--r--test/sites/disk_site_test.rb8
-rw-r--r--test/sites/gcs_site_test.rb13
-rw-r--r--test/sites/s3_site_test.rb16
-rw-r--r--test/sites/shared_site_tests.rb (renamed from test/gcs_site_test.rb)22
8 files changed, 47 insertions, 130 deletions
diff --git a/Rakefile b/Rakefile
index aec4d19100..f0baf50163 100644
--- a/Rakefile
+++ b/Rakefile
@@ -4,7 +4,7 @@ require "rake/testtask"
Rake::TestTask.new do |test|
test.libs << "test"
- test.test_files = FileList["test/*_test.rb"]
+ test.test_files = FileList["test/**/*_test.rb"]
test.warning = false
end
diff --git a/lib/active_file/sites/disk_site.rb b/lib/active_file/sites/disk_site.rb
index 7f151ed21b..41b883498a 100644
--- a/lib/active_file/sites/disk_site.rb
+++ b/lib/active_file/sites/disk_site.rb
@@ -30,7 +30,7 @@ class ActiveFile::Sites::DiskSite < ActiveFile::Site
end
def delete(key)
- File.delete path_for(key)
+ File.delete path_for(key) rescue Errno::ENOENT # Ignore files already deleted
end
def exist?(key)
diff --git a/test/disk_site_test.rb b/test/disk_site_test.rb
deleted file mode 100644
index 198283a97b..0000000000
--- a/test/disk_site_test.rb
+++ /dev/null
@@ -1,51 +0,0 @@
-require "test_helper"
-require "fileutils"
-require "tmpdir"
-require "active_support/core_ext/securerandom"
-require "active_file/site"
-
-class ActiveFile::DiskSiteTest < ActiveSupport::TestCase
- FIXTURE_KEY = SecureRandom.base58(24)
- FIXTURE_FILE = StringIO.new("Hello world!")
-
- setup do
- @site = ActiveFile::Sites::DiskSite.new(root: File.join(Dir.tmpdir, "active_file"))
- @site.upload FIXTURE_KEY, FIXTURE_FILE
- FIXTURE_FILE.rewind
- end
-
- teardown do
- FileUtils.rm_rf @site.root
- FIXTURE_FILE.rewind
- end
-
- test "uploading" do
- key = SecureRandom.base58(24)
- data = "Something else entirely!"
- @site.upload(key, StringIO.new(data))
-
- assert_equal data, @site.download(key)
- end
-
- test "downloading" do
- assert_equal FIXTURE_FILE.read, @site.download(FIXTURE_KEY)
- end
-
- test "existing" do
- assert @site.exist?(FIXTURE_KEY)
- assert_not @site.exist?(FIXTURE_KEY + "nonsense")
- end
-
- test "deleting" do
- @site.delete FIXTURE_KEY
- assert_not @site.exist?(FIXTURE_KEY)
- end
-
- test "sizing" do
- assert_equal FIXTURE_FILE.size, @site.byte_size(FIXTURE_KEY)
- end
-
- test "checksumming" do
- assert_equal Digest::MD5.hexdigest(FIXTURE_FILE.read), @site.checksum(FIXTURE_KEY)
- end
-end
diff --git a/test/s3_site_test.rb b/test/s3_site_test.rb
deleted file mode 100644
index 24a890e3ec..0000000000
--- a/test/s3_site_test.rb
+++ /dev/null
@@ -1,63 +0,0 @@
-require "test_helper"
-require "active_support/core_ext/securerandom"
-require "active_file/site"
-
-if ENV["AWS_ACCESS_KEY_ID"] && ENV["AWS_SECRET_ACCESS_KEY"] && ENV["AWS_REGION"] && ENV["AWS_S3_BUCKET"]
- class ActiveFile::S3SiteTest < ActiveSupport::TestCase
- FIXTURE_KEY = SecureRandom.base58(24).to_s
- FIXTURE_FILE = StringIO.new("Hello world!")
-
- setup do
- @site = ActiveFile::Sites::S3Site.new(
- access_key_id: ENV["AWS_ACCESS_KEY_ID"],
- secret_access_key: ENV["AWS_SECRET_ACCESS_KEY"],
- region: ENV["AWS_REGION"],
- bucket: ENV["AWS_S3_BUCKET"]
- )
-
- @site.upload FIXTURE_KEY, FIXTURE_FILE
- FIXTURE_FILE.rewind
- end
-
- teardown do
- @site.delete FIXTURE_KEY
- FIXTURE_FILE.rewind
- end
-
- test "uploading" do
- begin
- key = SecureRandom.base58(24)
- data = "Something else entirely!"
- @site.upload(key, StringIO.new(data))
-
- assert_equal data, @site.download(key)
- ensure
- @site.delete key
- end
- end
-
- test "downloading" do
- assert_equal FIXTURE_FILE.read, @site.download(FIXTURE_KEY)
- end
-
- test "existing" do
- assert @site.exist?(FIXTURE_KEY)
- assert_not @site.exist?(FIXTURE_KEY + "nonsense")
- end
-
- test "deleting" do
- @site.delete FIXTURE_KEY
- assert_not @site.exist?(FIXTURE_KEY)
- end
-
- test "sizing" do
- assert_equal FIXTURE_FILE.size, @site.byte_size(FIXTURE_KEY)
- end
-
- test "checksumming" do
- assert_equal Digest::MD5.hexdigest(FIXTURE_FILE.read), @site.checksum(FIXTURE_KEY)
- end
- end
-else
- puts "Skipping S3 Site tests because ENV variables are missing"
-end
diff --git a/test/sites/disk_site_test.rb b/test/sites/disk_site_test.rb
new file mode 100644
index 0000000000..0956f08528
--- /dev/null
+++ b/test/sites/disk_site_test.rb
@@ -0,0 +1,8 @@
+require "tmpdir"
+require "sites/shared_site_tests"
+
+class ActiveFile::Sites::DiskSiteTest < ActiveSupport::TestCase
+ SITE = ActiveFile::Sites::DiskSite.new(root: File.join(Dir.tmpdir, "active_file"))
+
+ include ActiveFile::Sites::SharedSiteTests
+end
diff --git a/test/sites/gcs_site_test.rb b/test/sites/gcs_site_test.rb
new file mode 100644
index 0000000000..e43223c28d
--- /dev/null
+++ b/test/sites/gcs_site_test.rb
@@ -0,0 +1,13 @@
+require "sites/shared_site_tests"
+
+if ENV["GCS_PROJECT"] && ENV["GCS_KEYFILE"] && ENV["GCS_BUCKET"]
+ class ActiveFile::Sites::GCSSiteTest < ActiveSupport::TestCase
+ SITE = ActiveFile::Sites::GCSSite.new(
+ project: ENV["GCS_PROJECT"], keyfile: ENV["GCS_KEYFILE"], bucket: ENV["GCS_BUCKET"]
+ )
+
+ include ActiveFile::Sites::SharedSiteTests
+ end
+else
+ puts "Skipping GCS Site tests because ENV variables are missing"
+end
diff --git a/test/sites/s3_site_test.rb b/test/sites/s3_site_test.rb
new file mode 100644
index 0000000000..9e165f0dea
--- /dev/null
+++ b/test/sites/s3_site_test.rb
@@ -0,0 +1,16 @@
+require "sites/shared_site_tests"
+
+if ENV["AWS_ACCESS_KEY_ID"] && ENV["AWS_SECRET_ACCESS_KEY"] && ENV["AWS_REGION"] && ENV["AWS_S3_BUCKET"]
+ class ActiveFile::Sites::S3SiteTest < ActiveSupport::TestCase
+ SITE = ActiveFile::Sites::S3Site.new(
+ access_key_id: ENV["AWS_ACCESS_KEY_ID"],
+ secret_access_key: ENV["AWS_SECRET_ACCESS_KEY"],
+ region: ENV["AWS_REGION"],
+ bucket: ENV["AWS_S3_BUCKET"]
+ )
+
+ include ActiveFile::Sites::SharedSiteTests
+ end
+else
+ puts "Skipping S3 Site tests because ENV variables are missing"
+end
diff --git a/test/gcs_site_test.rb b/test/sites/shared_site_tests.rb
index 468454a6fb..fd900be4a4 100644
--- a/test/gcs_site_test.rb
+++ b/test/sites/shared_site_tests.rb
@@ -1,19 +1,15 @@
require "test_helper"
require "active_support/core_ext/securerandom"
-require "active_file/site"
-if ENV["GCS_PROJECT"] && ENV["GCS_KEYFILE"] && ENV["GCS_BUCKET"]
- class ActiveFile::GCSSiteTest < ActiveSupport::TestCase
- FIXTURE_KEY = SecureRandom.base58(24).to_s
- FIXTURE_FILE = StringIO.new("Hello world!")
+module ActiveFile::Sites::SharedSiteTests
+ extend ActiveSupport::Concern
+
+ FIXTURE_KEY = SecureRandom.base58(24)
+ FIXTURE_FILE = StringIO.new("Hello world!")
+ included do
setup do
- @site = ActiveFile::Sites::GCSSite.new(
- project: ENV["GCS_PROJECT"],
- keyfile: ENV["GCS_KEYFILE"],
- bucket: ENV["GCS_BUCKET"]
- )
-
+ @site = self.class.const_get(:SITE)
@site.upload FIXTURE_KEY, FIXTURE_FILE
FIXTURE_FILE.rewind
end
@@ -52,11 +48,9 @@ if ENV["GCS_PROJECT"] && ENV["GCS_KEYFILE"] && ENV["GCS_BUCKET"]
test "sizing" do
assert_equal FIXTURE_FILE.size, @site.byte_size(FIXTURE_KEY)
end
-
+
test "checksumming" do
assert_equal Digest::MD5.hexdigest(FIXTURE_FILE.read), @site.checksum(FIXTURE_KEY)
end
end
-else
- puts "Skipping GCS Site tests because ENV variables are missing"
end