From efd950ae706cfbb55dffebd5d0c85e30acfd7a45 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Tue, 4 Jul 2017 16:44:50 +0200 Subject: Use lazy-loaded factory method for site configuration --- test/site/.gitignore | 1 + test/site/configurations-example.yml | 11 ++++++ test/site/disk_site_test.rb | 8 +++++ test/site/gcs_site_test.rb | 11 ++++++ test/site/s3_site_test.rb | 11 ++++++ test/site/shared_site_tests.rb | 63 +++++++++++++++++++++++++++++++++++ test/sites/.gitignore | 1 - test/sites/configurations-example.yml | 11 ------ test/sites/disk_site_test.rb | 8 ----- test/sites/gcs_site_test.rb | 11 ------ test/sites/s3_site_test.rb | 11 ------ test/sites/shared_site_tests.rb | 63 ----------------------------------- test/test_helper.rb | 2 +- 13 files changed, 106 insertions(+), 106 deletions(-) create mode 100644 test/site/.gitignore create mode 100644 test/site/configurations-example.yml create mode 100644 test/site/disk_site_test.rb create mode 100644 test/site/gcs_site_test.rb create mode 100644 test/site/s3_site_test.rb create mode 100644 test/site/shared_site_tests.rb delete mode 100644 test/sites/.gitignore delete mode 100644 test/sites/configurations-example.yml delete mode 100644 test/sites/disk_site_test.rb delete mode 100644 test/sites/gcs_site_test.rb delete mode 100644 test/sites/s3_site_test.rb delete mode 100644 test/sites/shared_site_tests.rb (limited to 'test') diff --git a/test/site/.gitignore b/test/site/.gitignore new file mode 100644 index 0000000000..c102131f3d --- /dev/null +++ b/test/site/.gitignore @@ -0,0 +1 @@ +configurations.yml diff --git a/test/site/configurations-example.yml b/test/site/configurations-example.yml new file mode 100644 index 0000000000..031197342a --- /dev/null +++ b/test/site/configurations-example.yml @@ -0,0 +1,11 @@ +# Copy this file to configurations.yml and edit the credentials to match your IAM test account and bucket +s3: + access_key_id: + secret_access_key: + region: + bucket: + +gcs: + project: + keyfile: + bucket: diff --git a/test/site/disk_site_test.rb b/test/site/disk_site_test.rb new file mode 100644 index 0000000000..63f12ad335 --- /dev/null +++ b/test/site/disk_site_test.rb @@ -0,0 +1,8 @@ +require "tmpdir" +require "site/shared_site_tests" + +class ActiveFile::Site::DiskSiteTest < ActiveSupport::TestCase + SITE = ActiveFile::Site.configure(:Disk, root: File.join(Dir.tmpdir, "active_file")) + + include ActiveFile::Site::SharedSiteTests +end diff --git a/test/site/gcs_site_test.rb b/test/site/gcs_site_test.rb new file mode 100644 index 0000000000..c5f32a0595 --- /dev/null +++ b/test/site/gcs_site_test.rb @@ -0,0 +1,11 @@ +require "site/shared_site_tests" + +if SITE_CONFIGURATIONS[:gcs] + class ActiveFile::Site::GCSSiteTest < ActiveSupport::TestCase + SITE = ActiveFile::Site.configure(:GCS, SITE_CONFIGURATIONS[:gcs]) + + include ActiveFile::Site::SharedSiteTests + end +else + puts "Skipping GCS Site tests because no GCS configuration was supplied" +end diff --git a/test/site/s3_site_test.rb b/test/site/s3_site_test.rb new file mode 100644 index 0000000000..7629b78ad5 --- /dev/null +++ b/test/site/s3_site_test.rb @@ -0,0 +1,11 @@ +require "site/shared_site_tests" + +if SITE_CONFIGURATIONS[:s3] + class ActiveFile::Site::S3SiteTest < ActiveSupport::TestCase + SITE = ActiveFile::Site.configure(:S3, SITE_CONFIGURATIONS[:s3]) + + include ActiveFile::Site::SharedSiteTests + end +else + puts "Skipping S3 Site tests because no S3 configuration was supplied" +end 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 diff --git a/test/sites/.gitignore b/test/sites/.gitignore deleted file mode 100644 index c102131f3d..0000000000 --- a/test/sites/.gitignore +++ /dev/null @@ -1 +0,0 @@ -configurations.yml diff --git a/test/sites/configurations-example.yml b/test/sites/configurations-example.yml deleted file mode 100644 index 031197342a..0000000000 --- a/test/sites/configurations-example.yml +++ /dev/null @@ -1,11 +0,0 @@ -# Copy this file to configurations.yml and edit the credentials to match your IAM test account and bucket -s3: - access_key_id: - secret_access_key: - region: - bucket: - -gcs: - project: - keyfile: - bucket: diff --git a/test/sites/disk_site_test.rb b/test/sites/disk_site_test.rb deleted file mode 100644 index 0956f08528..0000000000 --- a/test/sites/disk_site_test.rb +++ /dev/null @@ -1,8 +0,0 @@ -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 deleted file mode 100644 index fbf6c4a242..0000000000 --- a/test/sites/gcs_site_test.rb +++ /dev/null @@ -1,11 +0,0 @@ -require "sites/shared_site_tests" - -if SITE_CONFIGURATIONS[:gcs] - class ActiveFile::Sites::GCSSiteTest < ActiveSupport::TestCase - SITE = ActiveFile::Sites::GCSSite.new(SITE_CONFIGURATIONS[:gcs]) - - include ActiveFile::Sites::SharedSiteTests - end -else - puts "Skipping GCS Site tests because no GCS configuration was supplied" -end diff --git a/test/sites/s3_site_test.rb b/test/sites/s3_site_test.rb deleted file mode 100644 index 12f5d084f6..0000000000 --- a/test/sites/s3_site_test.rb +++ /dev/null @@ -1,11 +0,0 @@ -require "sites/shared_site_tests" - -if SITE_CONFIGURATIONS[:s3] - class ActiveFile::Sites::S3SiteTest < ActiveSupport::TestCase - SITE = ActiveFile::Sites::S3Site.new(SITE_CONFIGURATIONS[:s3]) - - include ActiveFile::Sites::SharedSiteTests - end -else - puts "Skipping S3 Site tests because no S3 configuration was supplied" -end diff --git a/test/sites/shared_site_tests.rb b/test/sites/shared_site_tests.rb deleted file mode 100644 index de28d7ae63..0000000000 --- a/test/sites/shared_site_tests.rb +++ /dev/null @@ -1,63 +0,0 @@ -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::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 diff --git a/test/test_helper.rb b/test/test_helper.rb index 5be2631ceb..1f947fce90 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -6,7 +6,7 @@ require "byebug" require "active_file" require "active_file/site" -ActiveFile::Blob.site = ActiveFile::Sites::DiskSite.new(root: File.join(Dir.tmpdir, "active_file")) +ActiveFile::Blob.site = ActiveFile::Site.configure(:Disk, root: File.join(Dir.tmpdir, "active_file")) require "active_file/verified_key_with_expiration" ActiveFile::VerifiedKeyWithExpiration.verifier = ActiveSupport::MessageVerifier.new("Testing") -- cgit v1.2.3