mirror of
https://github.com/mastodon/mastodon.git
synced 2025-01-10 04:06:27 +01:00
Move normalising back into model
This commit is contained in:
parent
a3da6fb3a1
commit
ac50f57e2c
@ -19,13 +19,7 @@ class Settings::VerificationsController < Settings::BaseController
|
|||||||
|
|
||||||
def account_params
|
def account_params
|
||||||
params.require(:account).permit(:attribution_domains).tap do |params|
|
params.require(:account).permit(:attribution_domains).tap do |params|
|
||||||
params[:attribution_domains] = params[:attribution_domains]&.lines&.map do |line|
|
params[:attribution_domains] = params[:attribution_domains].split if params[:attribution_domains]
|
||||||
line
|
|
||||||
.strip
|
|
||||||
.delete_prefix('http://')
|
|
||||||
.delete_prefix('https://')
|
|
||||||
.delete_prefix('*.')
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@ module Account::AttributionDomains
|
|||||||
extend ActiveSupport::Concern
|
extend ActiveSupport::Concern
|
||||||
|
|
||||||
included do
|
included do
|
||||||
normalizes :attribution_domains, with: ->(arr) { arr.uniq }
|
normalizes :attribution_domains, with: ->(arr) { arr.filter_map { |str| str.to_s.strip.delete_prefix('http://').delete_prefix('https://').delete_prefix('*.').presence }.uniq }
|
||||||
|
|
||||||
validates :attribution_domains, domain: true, length: { maximum: 100 }, if: -> { local? && will_save_change_to_attribution_domains? }
|
validates :attribution_domains, domain: true, length: { maximum: 100 }, if: -> { local? && will_save_change_to_attribution_domains? }
|
||||||
end
|
end
|
||||||
|
@ -756,7 +756,9 @@ RSpec.describe Account do
|
|||||||
end
|
end
|
||||||
|
|
||||||
describe 'attribution_domains' do
|
describe 'attribution_domains' do
|
||||||
it { is_expected.to normalize(:attribution_domains).from(['example.com', 'example.com', 'example.net']).to(['example.com', 'example.net']) }
|
it { is_expected.to normalize(:attribution_domains).from(['example.com', ' example.com ', ' example.net ']).to(['example.com', 'example.net']) }
|
||||||
|
it { is_expected.to normalize(:attribution_domains).from(['https://example.com', 'http://example.net', '*.example.org']).to(['example.com', 'example.net', 'example.org']) }
|
||||||
|
it { is_expected.to normalize(:attribution_domains).from(['', ' ', nil]).to([]) }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -800,7 +802,7 @@ RSpec.describe Account do
|
|||||||
it { is_expected.to_not allow_values(account_note_over_limit).for(:note) }
|
it { is_expected.to_not allow_values(account_note_over_limit).for(:note) }
|
||||||
|
|
||||||
it { is_expected.to allow_values([], ['example.com'], (1..100).to_a).for(:attribution_domains) }
|
it { is_expected.to allow_values([], ['example.com'], (1..100).to_a).for(:attribution_domains) }
|
||||||
it { is_expected.to_not allow_values([''], ['@'], (1..101).to_a).for(:attribution_domains) }
|
it { is_expected.to_not allow_values(['example com'], ['@'], (1..101).to_a).for(:attribution_domains) }
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when account is remote' do
|
context 'when account is remote' do
|
||||||
|
Loading…
x
Reference in New Issue
Block a user