make sure we handle both s3 url formats

This commit is contained in:
Régis Hanol 2013-07-17 00:32:09 +02:00
parent 7ae2fe304d
commit 5c27dd175a
3 changed files with 23 additions and 1 deletions

View File

@ -99,7 +99,7 @@ class Upload < ActiveRecord::Base
end end
def self.is_on_s3?(url) def self.is_on_s3?(url)
SiteSetting.enable_s3_uploads? && url.start_with?(S3Store.base_url) SiteSetting.enable_s3_uploads? && (url.start_with?(S3Store.base_url) || url.start_with?(S3Store.base_url_old))
end end
def self.get_from_url(url) def self.get_from_url(url)

View File

@ -16,6 +16,10 @@ module S3Store
"//s3.amazonaws.com/#{SiteSetting.s3_upload_bucket}" "//s3.amazonaws.com/#{SiteSetting.s3_upload_bucket}"
end end
def self.base_url_old
"//#{SiteSetting.s3_upload_bucket.downcase}.s3.amazonaws.com"
end
def self.remove_file(url) def self.remove_file(url)
S3Store.check_missing_site_settings S3Store.check_missing_site_settings

View File

@ -174,6 +174,24 @@ describe Upload do
end end
context ".is_on_s3?" do
before do
SiteSetting.stubs(:enable_s3_uploads).returns(true)
SiteSetting.stubs(:s3_upload_bucket).returns("BuCkEt")
end
it "case-insensitively matches the old subdomain format" do
Upload.is_on_s3?("//bucket.s3.amazonaws.com/1337.png").should == true
end
it "case-sensitively matches the new folder format" do
Upload.is_on_s3?("//s3.amazonaws.com/BuCkEt/1337.png").should == true
Upload.is_on_s3?("//s3.amazonaws.com/bucket/1337.png").should == false
end
end
context ".get_from_url" do context ".get_from_url" do
it "works only when the file has been uploaded" do it "works only when the file has been uploaded" do