FIX: `UserNotificationsHelper#logo_url' to work with S3 based uploads.

https://meta.discourse.org/t/digest-logo-not-working/103255
This commit is contained in:
Guo Xiang Tan 2018-12-06 09:37:35 +08:00
parent dcf9c6da59
commit 27c793a192
2 changed files with 73 additions and 6 deletions

View File

@ -1,4 +1,5 @@
module UserNotificationsHelper
include GlobalPath
def indent(text, by = 2)
spacer = " " * by
@ -22,11 +23,9 @@ module UserNotificationsHelper
logo_url = SiteSetting.site_logo_url if logo_url.blank? || logo_url =~ /\.svg$/i
return nil if logo_url.blank? || logo_url =~ /\.svg$/i
if logo_url !~ /http(s)?\:\/\//
logo_url = "#{Discourse.base_url}#{logo_url}"
end
logo_url
uri = URI.parse(UrlHelper.absolute(upload_cdn_path(logo_url)))
uri.scheme = SiteSetting.scheme if uri.scheme.blank?
uri.to_s
end
def html_site_link(color)

View File

@ -1,7 +1,7 @@
require 'rails_helper'
describe UserNotificationsHelper do
describe 'email_excerpt' do
describe '#email_excerpt' do
let(:paragraphs) { [
"<p>This is the first paragraph, but you should read more.</p>",
"<p>And here is its friend, the second paragraph.</p>"
@ -53,4 +53,72 @@ describe UserNotificationsHelper do
expect(helper.email_excerpt(cooked)).to eq "<p>BEFORE</p><blockquote>\n <p>This is a user quote</p>\n</blockquote><p>AFTER</p>"
end
end
describe '#logo_url' do
describe 'local store' do
let(:upload) { Fabricate(:upload, sha1: "somesha1") }
before do
SiteSetting.logo = upload
end
it 'should return the right URL' do
expect(helper.logo_url).to eq(
"http://test.localhost/uploads/default/original/1X/somesha1.png"
)
end
describe 'when cdn path is configured' do
before do
GlobalSetting.expects(:cdn_url)
.returns('https://some.localcdn.com')
.at_least_once
end
it 'should return the right URL' do
expect(helper.logo_url).to eq(
"https://some.localcdn.com/uploads/default/original/1X/somesha1.png"
)
end
end
describe 'when logo is an SVG' do
let(:upload) { Fabricate(:upload, extension: "svg") }
it 'should return nil' do
expect(helper.logo_url).to eq(nil)
end
end
end
describe 's3 store' do
let(:upload) { Fabricate(:upload_s3, sha1: "somesha1") }
before do
SiteSetting.enable_s3_uploads = true
SiteSetting.s3_upload_bucket = "s3-upload-bucket"
SiteSetting.s3_access_key_id = "some key"
SiteSetting.s3_secret_access_key = "some secret key"
SiteSetting.logo = upload
end
it 'should return the right URL' do
expect(helper.logo_url).to eq(
"http://s3-upload-bucket.s3.dualstack.us-east-1.amazonaws.com/original/1X/somesha1.png"
)
end
describe 'when cdn path is configured' do
before do
SiteSetting.s3_cdn_url = 'https://some.cdn.com'
end
it 'should return the right url' do
expect(helper.logo_url).to eq(
"https://some.cdn.com/original/1X/somesha1.png"
)
end
end
end
end
end