aboutsummaryrefslogtreecommitdiffstats
path: root/test/sites
diff options
context:
space:
mode:
Diffstat (limited to 'test/sites')
-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.rb56
4 files changed, 93 insertions, 0 deletions
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/sites/shared_site_tests.rb b/test/sites/shared_site_tests.rb
new file mode 100644
index 0000000000..fd900be4a4
--- /dev/null
+++ b/test/sites/shared_site_tests.rb
@@ -0,0 +1,56 @@
+require "test_helper"
+require "active_support/core_ext/securerandom"
+
+module ActiveFile::Sites::SharedSiteTests
+ extend ActiveSupport::Concern
+
+ FIXTURE_KEY = SecureRandom.base58(24)
+ FIXTURE_FILE = StringIO.new("Hello world!")
+
+ included do
+ setup do
+ @site = self.class.const_get(:SITE)
+ @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
+end