diff options
Diffstat (limited to 'test/sites')
-rw-r--r-- | test/sites/disk_site_test.rb | 8 | ||||
-rw-r--r-- | test/sites/gcs_site_test.rb | 13 | ||||
-rw-r--r-- | test/sites/s3_site_test.rb | 16 | ||||
-rw-r--r-- | test/sites/shared_site_tests.rb | 56 |
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 |