Allow blocking TLDs, and fix TLD blocks not being editable (#12805)

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.
This commit is contained in:
ThibG authored and Eugen Rochko committed 2020-01-08 22:42:05 +01:00
1 parent 345dd93310
commit 51eb111503
2 files changed
+11 -1

No files matched your search

+1 -1
View File
@@ -54,7 +54,7 @@ class DomainBlock < ApplicationRecord
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
+10
View File
@@ -52,6 +52,16 @@ RSpec.describe DomainBlock, type: :model do
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