Fix crash when S3_ALIAS_HOST or S3_CLOUDFRONT_HOST have a path component (#25018)
This commit is contained in:
parent
2b45fecde1
commit
b922ad7a1b
|
@ -169,11 +169,11 @@ module ApplicationHelper
|
|||
end
|
||||
|
||||
def storage_host
|
||||
URI::HTTPS.build(host: storage_host_name).to_s
|
||||
"https://#{storage_host_var}"
|
||||
end
|
||||
|
||||
def storage_host?
|
||||
storage_host_name.present?
|
||||
storage_host_var.present?
|
||||
end
|
||||
|
||||
def quote_wrap(text, line_width: 80, break_sequence: "\n")
|
||||
|
@ -234,7 +234,7 @@ module ApplicationHelper
|
|||
|
||||
private
|
||||
|
||||
def storage_host_name
|
||||
def storage_host_var
|
||||
ENV.fetch('S3_ALIAS_HOST', nil) || ENV.fetch('S3_CLOUDFRONT_HOST', nil)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -208,6 +208,18 @@ describe ApplicationHelper do
|
|||
end
|
||||
end
|
||||
|
||||
context 'when S3 alias includes a path component' do
|
||||
around do |example|
|
||||
ClimateControl.modify S3_ALIAS_HOST: 's3.alias/path' do
|
||||
example.run
|
||||
end
|
||||
end
|
||||
|
||||
it 'returns a correct URL' do
|
||||
expect(helper.storage_host).to eq('https://s3.alias/path')
|
||||
end
|
||||
end
|
||||
|
||||
context 'when S3 cloudfront is present' do
|
||||
around do |example|
|
||||
ClimateControl.modify S3_CLOUDFRONT_HOST: 's3.cloudfront' do
|
||||
|
@ -219,12 +231,6 @@ describe ApplicationHelper do
|
|||
expect(helper.storage_host).to eq('https://s3.cloudfront')
|
||||
end
|
||||
end
|
||||
|
||||
context 'when neither env value is present' do
|
||||
it 'returns false' do
|
||||
expect(helper.storage_host).to eq('https:')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'storage_host?' do
|
||||
|
|
Reference in New Issue