aboutsummaryrefslogtreecommitdiffstats
path: root/test/site/shared_site_tests.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/site/shared_site_tests.rb')
-rw-r--r--test/site/shared_site_tests.rb63
1 files changed, 63 insertions, 0 deletions
diff --git a/test/site/shared_site_tests.rb b/test/site/shared_site_tests.rb
new file mode 100644
index 0000000000..de1a54b874
--- /dev/null
+++ b/test/site/shared_site_tests.rb
@@ -0,0 +1,63 @@
+require "test_helper"
+require "active_support/core_ext/securerandom"
+require "yaml"
+
+SITE_CONFIGURATIONS = begin
+ YAML.load_file(File.expand_path("../configurations.yml", __FILE__)).deep_symbolize_keys
+rescue Errno::ENOENT
+ puts "Missing site configuration file in test/sites/configurations.yml"
+end
+
+module ActiveFile::Site::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