From 14e6386b3ceb0ab1d13ddd1353722d56785f9007 Mon Sep 17 00:00:00 2001 From: Dino Maric Date: Thu, 13 Jul 2017 21:54:06 +0200 Subject: Fix regular expression on s3 test URL generation test (#44) So tests are passing if the bucket name is rails-active storage. But developers specify their own s3 tests configuration (in my case was activestorage-test) then this regex fails. Also the first part is dynamic and based on bucket name and region --- test/service/s3_service_test.rb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'test/service') diff --git a/test/service/s3_service_test.rb b/test/service/s3_service_test.rb index 167aa78a17..4875ac908b 100644 --- a/test/service/s3_service_test.rb +++ b/test/service/s3_service_test.rb @@ -16,7 +16,7 @@ if SERVICE_CONFIGURATIONS[:s3] key = SecureRandom.base58(24) data = "Something else entirely!" direct_upload_url = @service.url_for_direct_upload(key, expires_in: 5.minutes, content_type: "text/plain", content_length: data.size) - + url = URI.parse(direct_upload_url).to_s.split("?").first query = CGI::parse(URI.parse(direct_upload_url).query).collect { |(k, v)| [ k, v.first ] }.to_h @@ -30,16 +30,16 @@ if SERVICE_CONFIGURATIONS[:s3] }, debug_output: STDOUT ) - + assert_equal data, @service.download(key) ensure @service.delete key end end - + test "signed URL generation" do - assert_match /rails-activestorage\.s3\.amazonaws\.com.*response-content-disposition=inline.*avatar\.png/, - @service.url(FIXTURE_KEY, expires_in: 5.minutes, disposition: :inline, filename: "avatar.png") + assert_match /.+s3.+amazonaws.com.*response-content-disposition=inline.*avatar\.png/, + @service.url(FIXTURE_KEY, expires_in: 5.minutes, disposition: :inline, filename: "avatar.png") end end else -- cgit v1.2.3 From 6dcdc5c9abb8e4e93a2c582b11ff4bb77d62ed3b Mon Sep 17 00:00:00 2001 From: Cristian Bica Date: Fri, 14 Jul 2017 01:09:56 +0300 Subject: Added rubocop / codeclimate config and fixed current offenses (#45) --- test/service/configurator_test.rb | 1 - test/service/disk_service_test.rb | 2 +- test/service/mirror_service_test.rb | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) (limited to 'test/service') diff --git a/test/service/configurator_test.rb b/test/service/configurator_test.rb index f8e4dccc9c..c69b8d5087 100644 --- a/test/service/configurator_test.rb +++ b/test/service/configurator_test.rb @@ -12,4 +12,3 @@ class ActiveStorage::Service::ConfiguratorTest < ActiveSupport::TestCase end end end - diff --git a/test/service/disk_service_test.rb b/test/service/disk_service_test.rb index f7752b25ef..e9a96003f1 100644 --- a/test/service/disk_service_test.rb +++ b/test/service/disk_service_test.rb @@ -7,6 +7,6 @@ class ActiveStorage::Service::DiskServiceTest < ActiveSupport::TestCase test "url generation" do assert_match /rails\/active_storage\/disk\/.*\/avatar\.png\?disposition=inline/, - @service.url(FIXTURE_KEY, expires_in: 5.minutes, disposition: :inline, filename: "avatar.png") + @service.url(FIXTURE_KEY, expires_in: 5.minutes, disposition: :inline, filename: "avatar.png") end end diff --git a/test/service/mirror_service_test.rb b/test/service/mirror_service_test.rb index 8bda01f169..3639f83d38 100644 --- a/test/service/mirror_service_test.rb +++ b/test/service/mirror_service_test.rb @@ -8,7 +8,7 @@ class ActiveStorage::Service::MirrorServiceTest < ActiveSupport::TestCase end.to_h config = mirror_config.merge \ - mirror: { service: "Mirror", primary: 'primary', mirrors: mirror_config.keys }, + mirror: { service: "Mirror", primary: "primary", mirrors: mirror_config.keys }, primary: { service: "Disk", root: Dir.mktmpdir("active_storage_tests_primary") } SERVICE = ActiveStorage::Service.configure :mirror, config -- cgit v1.2.3 From 2f15938587a6a3fa1ce6745511aeb81d833e51c2 Mon Sep 17 00:00:00 2001 From: George Claghorn Date: Sun, 16 Jul 2017 19:17:18 -0400 Subject: Fix S3 direct upload test --- test/service/s3_service_test.rb | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) (limited to 'test/service') diff --git a/test/service/s3_service_test.rb b/test/service/s3_service_test.rb index 4875ac908b..81eff2c02d 100644 --- a/test/service/s3_service_test.rb +++ b/test/service/s3_service_test.rb @@ -9,25 +9,15 @@ if SERVICE_CONFIGURATIONS[:s3] include ActiveStorage::Service::SharedServiceTests test "direct upload" do - # FIXME: This test is failing because of a mismatched request signature, but it works in the browser. - skip - begin key = SecureRandom.base58(24) data = "Something else entirely!" - direct_upload_url = @service.url_for_direct_upload(key, expires_in: 5.minutes, content_type: "text/plain", content_length: data.size) - - url = URI.parse(direct_upload_url).to_s.split("?").first - query = CGI::parse(URI.parse(direct_upload_url).query).collect { |(k, v)| [ k, v.first ] }.to_h + url = @service.url_for_direct_upload(key, expires_in: 5.minutes, content_type: "text/plain", content_length: data.size) - HTTParty.post( + HTTParty.put( url, - query: query, body: data, - headers: { - "Content-Type": "text/plain", - "Origin": "http://localhost:3000" - }, + headers: { "Content-Type" => "text/plain" }, debug_output: STDOUT ) -- cgit v1.2.3 From be526d16fe29cf2c6c75a0c10b355271a87527d7 Mon Sep 17 00:00:00 2001 From: Michael Herold Date: Mon, 17 Jul 2017 08:17:09 -0500 Subject: Add direct upload support to GCS service --- test/service/gcs_service_test.rb | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'test/service') diff --git a/test/service/gcs_service_test.rb b/test/service/gcs_service_test.rb index 7d4700498b..3d70080af4 100644 --- a/test/service/gcs_service_test.rb +++ b/test/service/gcs_service_test.rb @@ -1,4 +1,5 @@ require "service/shared_service_tests" +require "httparty" if SERVICE_CONFIGURATIONS[:gcs] class ActiveStorage::Service::GCSServiceTest < ActiveSupport::TestCase @@ -6,6 +7,25 @@ if SERVICE_CONFIGURATIONS[:gcs] include ActiveStorage::Service::SharedServiceTests + test "direct upload" do + begin + key = SecureRandom.base58(24) + data = "Something else entirely!" + direct_upload_url = @service.url_for_direct_upload(key, expires_in: 5.minutes, content_type: "text/plain", content_length: data.size) + + HTTParty.put( + direct_upload_url, + body: data, + headers: { "Content-Type" => "text/plain" }, + debug_output: STDOUT + ) + + assert_equal data, @service.download(key) + ensure + @service.delete key + end + end + test "signed URL generation" do travel_to Time.now do url = SERVICE.bucket.signed_url(FIXTURE_KEY, expires: 120) + -- cgit v1.2.3 From bb7b8348e6f307fb9b7279bbab4ea19e9313a45e Mon Sep 17 00:00:00 2001 From: George Claghorn Date: Mon, 17 Jul 2017 09:19:14 -0400 Subject: Remove unused require --- test/service/s3_service_test.rb | 1 - 1 file changed, 1 deletion(-) (limited to 'test/service') diff --git a/test/service/s3_service_test.rb b/test/service/s3_service_test.rb index 81eff2c02d..d823e1fdca 100644 --- a/test/service/s3_service_test.rb +++ b/test/service/s3_service_test.rb @@ -1,6 +1,5 @@ require "service/shared_service_tests" require "httparty" -require "uri" if SERVICE_CONFIGURATIONS[:s3] class ActiveStorage::Service::S3ServiceTest < ActiveSupport::TestCase -- cgit v1.2.3 From c8ad7dc13bbdc7b5c3305d5fd0a93f47d0f4baa4 Mon Sep 17 00:00:00 2001 From: "James T. Perreault" Date: Mon, 17 Jul 2017 10:17:33 -0400 Subject: Replace hard-coded S3 bucket name with configured bucket --- test/service/s3_service_test.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'test/service') diff --git a/test/service/s3_service_test.rb b/test/service/s3_service_test.rb index d823e1fdca..6115cb8db0 100644 --- a/test/service/s3_service_test.rb +++ b/test/service/s3_service_test.rb @@ -27,7 +27,7 @@ if SERVICE_CONFIGURATIONS[:s3] end test "signed URL generation" do - assert_match /.+s3.+amazonaws.com.*response-content-disposition=inline.*avatar\.png/, + assert_match /#{SERVICE_CONFIGURATIONS[:s3][:bucket]}\.s3.(\S+)?amazonaws.com.*response-content-disposition=inline.*avatar\.png/, @service.url(FIXTURE_KEY, expires_in: 5.minutes, disposition: :inline, filename: "avatar.png") end end -- cgit v1.2.3 From d0d4e33b86369e4b7c5656dd5db60e04f8c4d76e Mon Sep 17 00:00:00 2001 From: George Claghorn Date: Wed, 19 Jul 2017 13:58:23 -0400 Subject: Use descriptive new freeze_time helper --- test/service/gcs_service_test.rb | 2 +- test/service/mirror_service_test.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'test/service') diff --git a/test/service/gcs_service_test.rb b/test/service/gcs_service_test.rb index 3d70080af4..4cde4b9289 100644 --- a/test/service/gcs_service_test.rb +++ b/test/service/gcs_service_test.rb @@ -27,7 +27,7 @@ if SERVICE_CONFIGURATIONS[:gcs] end test "signed URL generation" do - travel_to Time.now do + freeze_time do url = SERVICE.bucket.signed_url(FIXTURE_KEY, expires: 120) + "&response-content-disposition=inline%3B+filename%3D%22test.txt%22" diff --git a/test/service/mirror_service_test.rb b/test/service/mirror_service_test.rb index 3639f83d38..fd3d8125d6 100644 --- a/test/service/mirror_service_test.rb +++ b/test/service/mirror_service_test.rb @@ -45,7 +45,7 @@ class ActiveStorage::Service::MirrorServiceTest < ActiveSupport::TestCase end test "URL generation in primary service" do - travel_to Time.now do + freeze_time do assert_equal SERVICE.primary.url(FIXTURE_KEY, expires_in: 2.minutes, disposition: :inline, filename: "test.txt"), @service.url(FIXTURE_KEY, expires_in: 2.minutes, disposition: :inline, filename: "test.txt") end -- cgit v1.2.3 From 32331b19e1da8bdab3c9f6d1666ac2d3108e5042 Mon Sep 17 00:00:00 2001 From: James Baer Date: Thu, 20 Jul 2017 12:29:37 -0400 Subject: Accept S3 upload options (e.g. server_side_encryption) --- test/service/s3_service_test.rb | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'test/service') diff --git a/test/service/s3_service_test.rb b/test/service/s3_service_test.rb index 6115cb8db0..049511497b 100644 --- a/test/service/s3_service_test.rb +++ b/test/service/s3_service_test.rb @@ -30,6 +30,24 @@ if SERVICE_CONFIGURATIONS[:s3] assert_match /#{SERVICE_CONFIGURATIONS[:s3][:bucket]}\.s3.(\S+)?amazonaws.com.*response-content-disposition=inline.*avatar\.png/, @service.url(FIXTURE_KEY, expires_in: 5.minutes, disposition: :inline, filename: "avatar.png") end + + test "uploading with server-side encryption" do + config = {} + config[:s3] = SERVICE_CONFIGURATIONS[:s3].merge \ + upload: { server_side_encryption: "AES256" } + + sse_service = ActiveStorage::Service.configure(:s3, config) + + begin + key = SecureRandom.base58(24) + data = "Something else entirely!" + sse_service.upload(key, StringIO.new(data), checksum: Digest::MD5.base64digest(data)) + + assert_equal "AES256", sse_service.bucket.object(key).server_side_encryption + ensure + sse_service.delete key + end + end end else puts "Skipping S3 Service tests because no S3 configuration was supplied" -- cgit v1.2.3