diff options
author | ThibG <thib@sitedethib.com> | 2020-01-08 22:42:05 +0100 |
---|---|---|
committer | Eugen Rochko <eugen@zeonfederated.com> | 2020-01-08 22:42:05 +0100 |
commit | 51eb1115035499a47bb03670c03afbd03ce7c5ac (patch) | |
tree | 06d01371e28750c502cf39dfdc50ce75a5e93941 | |
parent | 345dd93310a6ce830444f6f875204d30c43c5a1e (diff) |
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.
-rw-r--r-- | app/models/domain_block.rb | 2 | ||||
-rw-r--r-- | spec/models/domain_block_spec.rb | 10 |
2 files changed, 11 insertions, 1 deletions
diff --git a/app/models/domain_block.rb b/app/models/domain_block.rb index 4e865b850..f0a5bd296 100644 --- a/app/models/domain_block.rb +++ b/app/models/domain_block.rb @@ -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 diff --git a/spec/models/domain_block_spec.rb b/spec/models/domain_block_spec.rb index d98c5e118..28647dc89 100644 --- a/spec/models/domain_block_spec.rb +++ b/spec/models/domain_block_spec.rb @@ -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 |