mirror of
https://github.com/discourse/discourse.git
synced 2024-11-24 11:12:23 +08:00
aac9f43038
In an earlier PR, we decided that we only want to block a domain if the blocked domain in the SiteSetting is the final destination (/t/59305). That PR used `FinalDestination#get`. `resolve` however is used several places but blocks domains along the redirect chain when certain options are provided. This commit changes the default options for `resolve` to not do that. Existing users of `FinalDestination#resolve` are - `Oneboxer#external_onebox` - our onebox helper `fetch_html_doc`, which is used in amazon, standard embed and youtube - these folks already go through `Oneboxer#external_onebox` which already blocks correctly
28 lines
1.1 KiB
Ruby
28 lines
1.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require "rails_helper"
|
|
|
|
describe Onebox::DomainChecker do
|
|
describe '.is_blocked?' do
|
|
before do
|
|
SiteSetting.blocked_onebox_domains = "api.cat.org|kitten.cloud"
|
|
end
|
|
|
|
describe "returns true when entirely matched" do
|
|
it { expect(described_class.is_blocked?("api.cat.org")).to be(true) }
|
|
it { expect(described_class.is_blocked?("kitten.cloud")).to be(true) }
|
|
it { expect(described_class.is_blocked?("api.dog.org")).to be(false) }
|
|
it { expect(described_class.is_blocked?("puppy.cloud")).to be(false) }
|
|
end
|
|
|
|
describe "returns true when ends with .<domain>" do
|
|
it { expect(described_class.is_blocked?("dev.api.cat.org")).to be(true) }
|
|
it { expect(described_class.is_blocked?(".api.cat.org")).to be(true) }
|
|
it { expect(described_class.is_blocked?("dev.kitten.cloud")).to be(true) }
|
|
it { expect(described_class.is_blocked?(".kitten.cloud")).to be(true) }
|
|
it { expect(described_class.is_blocked?("xapi.cat.org")).to be(false) }
|
|
it { expect(described_class.is_blocked?("xkitten.cloud")).to be(false) }
|
|
end
|
|
end
|
|
end
|