Fixes #12795
It was already possible to create domain blocks for TLDs, but those
weren't enforced, nor editable. This commit changes it so that they
are enforced and editable.
segments = uri.normalized_host.split('.')
variants = segments.map.with_index { |_, i| segments[i..-1].join('.') }
- where(domain: variants[0..-2]).order(Arel.sql('char_length(domain) desc')).first
+ where(domain: variants).order(Arel.sql('char_length(domain) desc')).first
end
end
block = Fabricate(:domain_block, domain: 'sub.example.com')
expect(DomainBlock.rule_for('sub.example.com')).to eq block
end
+
+ it 'returns a rule matching a blocked TLD' do
+ block = Fabricate(:domain_block, domain: 'google')
+ expect(DomainBlock.rule_for('google')).to eq block
+ end
+
+ it 'returns a rule matching a subdomain of a blocked TLD' do
+ block = Fabricate(:domain_block, domain: 'google')
+ expect(DomainBlock.rule_for('maps.google')).to eq block
+ end
end
describe '#stricter_than?' do