aboutsummaryrefslogtreecommitdiffstats
path: root/test/gcs_site_test.rb
diff options
context:
space:
mode:
authorGeorge Claghorn <george.claghorn@gmail.com>2017-07-03 17:54:57 -0400
committerGitHub <noreply@github.com>2017-07-03 17:54:57 -0400
commit52171ac2788183816cd5e8b145ab4408a7310978 (patch)
treed445fba118828d461070494de396493ded6d0f08 /test/gcs_site_test.rb
parenta91a30260b0d474fd1704b4cde7ee7c3bd1d9a41 (diff)
downloadrails-52171ac2788183816cd5e8b145ab4408a7310978.tar.gz
rails-52171ac2788183816cd5e8b145ab4408a7310978.tar.bz2
rails-52171ac2788183816cd5e8b145ab4408a7310978.zip
Add a Google Cloud Storage site
Diffstat (limited to 'test/gcs_site_test.rb')
-rw-r--r--test/gcs_site_test.rb64
1 files changed, 64 insertions, 0 deletions
diff --git a/test/gcs_site_test.rb b/test/gcs_site_test.rb
new file mode 100644
index 0000000000..7363850ce7
--- /dev/null
+++ b/test/gcs_site_test.rb
@@ -0,0 +1,64 @@
+require "test_helper"
+require "fileutils"
+require "tmpdir"
+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!")
+
+ setup do
+ @site = ActiveFile::Sites::GCSSite.new(
+ project: ENV["GCS_PROJECT"],
+ keyfile: ENV["GCS_KEYFILE"],
+ bucket: ENV["GCS_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 GCS Site tests because ENV variables are missing"
+end