FIX: Okay, add support for hosts that have trailing paths

This commit is contained in:
Robin Ward 2015-08-10 15:26:58 -04:00
parent 73f547b019
commit b02d624503
2 changed files with 10 additions and 2 deletions

View File

@ -71,13 +71,15 @@ class SiteSetting < ActiveRecord::Base
def self.allows_embeddable_host?(host)
return false if embeddable_hosts.blank?
uri = URI(host) rescue nil
return false unless uri.present?
host = uri.host
return false unless host.present?
!!embeddable_hosts.split("\n").detect {|h| h.sub(/^https?\:\/\//, '') == host }
hosts = embeddable_hosts.split("\n").map {|h| (URI(h).host rescue nil) || h }
!!hosts.detect {|h| h == host}
end
def self.anonymous_homepage

View File

@ -68,7 +68,7 @@ describe EmbedController do
context "with multiple hosts" do
before do
SiteSetting.embeddable_hosts = "#{host}\nhttp://discourse.org"
SiteSetting.embeddable_hosts = "#{host}\nhttp://discourse.org\nhttps://example.com/1234"
end
context "success" do
@ -84,6 +84,12 @@ describe EmbedController do
expect(response).to be_success
end
it "works with a host with a path" do
controller.request.stubs(:referer).returns("https://example.com/some-other-path")
get :comments, embed_url: embed_url
expect(response).to be_success
end
it "doesn't work with a made up host" do
controller.request.stubs(:referer).returns("http://codinghorror.com/invalid-url")
get :comments, embed_url: embed_url