diff options
author | Claudio B <claudiob@inventati.org> | 2017-08-04 15:56:14 -0700 |
---|---|---|
committer | David Heinemeier Hansson <david@loudthinking.com> | 2017-08-04 17:56:14 -0500 |
commit | b9f0eb24ed6a86aec3881b43e6b0028a306465b2 (patch) | |
tree | fa17069286badaaa9748a64a621ddb276bb8c380 | |
parent | 12d944f7651f79541d9f55fc6900d7fe4e3c62bc (diff) | |
download | rails-b9f0eb24ed6a86aec3881b43e6b0028a306465b2.tar.gz rails-b9f0eb24ed6a86aec3881b43e6b0028a306465b2.tar.bz2 rails-b9f0eb24ed6a86aec3881b43e6b0028a306465b2.zip |
Fix tests for AWS buckets that include a . (#30059)
If an AWS bucket name includes a `.` (e.g. `bucket.name`), then the canonical
URL for an object will start with "https://s3.amazonaws.com/bucket.name/"
and not with "https://bucket.name.s3.amazonaws.com/".
The URL tests have now been separated into two separate asserts, to ensure
that both the "s3.amazonaws.com" and the "bucket.name" components are included,
but not specifically in that order.
-rw-r--r-- | activestorage/test/controllers/direct_uploads_controller_test.rb | 3 | ||||
-rw-r--r-- | activestorage/test/service/s3_service_test.rb | 7 |
2 files changed, 7 insertions, 3 deletions
diff --git a/activestorage/test/controllers/direct_uploads_controller_test.rb b/activestorage/test/controllers/direct_uploads_controller_test.rb index 69d8ff2ab3..b9f9bd8cb4 100644 --- a/activestorage/test/controllers/direct_uploads_controller_test.rb +++ b/activestorage/test/controllers/direct_uploads_controller_test.rb @@ -24,7 +24,8 @@ if SERVICE_CONFIGURATIONS[:s3] && SERVICE_CONFIGURATIONS[:s3][:access_key_id].pr assert_equal 6, details["byte_size"] assert_equal checksum, details["checksum"] assert_equal "text/plain", details["content_type"] - assert_match /#{SERVICE_CONFIGURATIONS[:s3][:bucket]}\.s3.(\S+)?amazonaws\.com/, details["direct_upload"]["url"] + assert_match SERVICE_CONFIGURATIONS[:s3][:bucket], details["direct_upload"]["url"] + assert_match /s3\.(\S+)?amazonaws\.com/, details["direct_upload"]["url"] assert_equal({ "Content-Type" => "text/plain", "Content-MD5" => checksum }, details["direct_upload"]["headers"]) end end diff --git a/activestorage/test/service/s3_service_test.rb b/activestorage/test/service/s3_service_test.rb index ec80cbce61..6d613fd4fc 100644 --- a/activestorage/test/service/s3_service_test.rb +++ b/activestorage/test/service/s3_service_test.rb @@ -30,8 +30,11 @@ if SERVICE_CONFIGURATIONS[:s3] && SERVICE_CONFIGURATIONS[:s3][:access_key_id].pr end test "signed URL generation" do - assert_match /#{SERVICE_CONFIGURATIONS[:s3][:bucket]}\.s3.(\S+)?amazonaws.com.*response-content-disposition=inline.*avatar\.png.*response-content-type=image%2Fpng/, - @service.url(FIXTURE_KEY, expires_in: 5.minutes, disposition: :inline, filename: "avatar.png", content_type: "image/png") + url = @service.url(FIXTURE_KEY, expires_in: 5.minutes, + disposition: :inline, filename: "avatar.png", content_type: "image/png") + + assert_match /s3\.(\S+)?amazonaws.com.*response-content-disposition=inline.*avatar\.png.*response-content-type=image%2Fpng/, url + assert_match SERVICE_CONFIGURATIONS[:s3][:bucket], url end test "uploading with server-side encryption" do |