From c1b2c4fd9a3ae8110d75794c98fe0833c31ff9cc Mon Sep 17 00:00:00 2001 From: David Roetzel Date: Fri, 13 Sep 2024 13:37:15 +0200 Subject: [PATCH] Strip protocol from attribution domains (#31900) --- .../concerns/account/attribution_domains.rb | 6 +++- spec/models/account_spec.rb | 28 +++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/app/models/concerns/account/attribution_domains.rb b/app/models/concerns/account/attribution_domains.rb index 37a498a15..163c2291f 100644 --- a/app/models/concerns/account/attribution_domains.rb +++ b/app/models/concerns/account/attribution_domains.rb @@ -13,7 +13,11 @@ module Account::AttributionDomains def attribution_domains_as_text=(str) self[:attribution_domains] = str.split.filter_map do |line| - line.strip.delete_prefix('*.') + line + .strip + .delete_prefix('http://') + .delete_prefix('https://') + .delete_prefix('*.') end end diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb index e8d761f38..a8f6ed749 100644 --- a/spec/models/account_spec.rb +++ b/spec/models/account_spec.rb @@ -792,6 +792,34 @@ RSpec.describe Account do end end + describe '#attribution_domains_as_text=' do + subject { Fabricate(:account) } + + it 'sets attribution_domains accordingly' do + subject.attribution_domains_as_text = "hoge.com\nexample.com" + + expect(subject.attribution_domains).to contain_exactly('hoge.com', 'example.com') + end + + it 'strips leading "*."' do + subject.attribution_domains_as_text = "hoge.com\n*.example.com" + + expect(subject.attribution_domains).to contain_exactly('hoge.com', 'example.com') + end + + it 'strips the protocol if present' do + subject.attribution_domains_as_text = "http://hoge.com\nhttps://example.com" + + expect(subject.attribution_domains).to contain_exactly('hoge.com', 'example.com') + end + + it 'strips a combination of leading "*." and protocol' do + subject.attribution_domains_as_text = "http://*.hoge.com\nhttps://*.example.com" + + expect(subject.attribution_domains).to contain_exactly('hoge.com', 'example.com') + end + end + describe 'Normalizations' do describe 'username' do it { is_expected.to normalize(:username).from(" \u3000bob \t \u00a0 \n ").to('bob') }