~cytrogen/masto-fe

b922ad7a1b4bc8d968d0df2c7f307d4fec53435d — Claire 2 years ago 2b45fec
Fix crash when S3_ALIAS_HOST or S3_CLOUDFRONT_HOST have a path component (#25018)

2 files changed, 15 insertions(+), 9 deletions(-)

M app/helpers/application_helper.rb
M spec/helpers/application_helper_spec.rb
M app/helpers/application_helper.rb => app/helpers/application_helper.rb +3 -3
@@ 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

M spec/helpers/application_helper_spec.rb => spec/helpers/application_helper_spec.rb +12 -6
@@ 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