Merge branch 'main' into glitch-soc/merge-upstream
Conflicts: - `README.md`: Upstream updated copyright year, we don't mention it so kept our version. - `app/controllers/admin/dashboard_controller.rb`: Not really a conflict, upstream change (removing the spam checker) too close to glitch-soc changes. Ported upstream changes. - `app/models/form/admin_settings.rb`: Same. - `app/services/remove_status_service.rb`: Same. - `app/views/admin/settings/edit.html.haml`: Same. - `config/settings.yml`: Same. - `config/environments/production.rb`: Not a real conflict, upstream added a default HTTP header, but we have extra headers in glitch-soc. Added the header.
This commit is contained in:
47
spec/models/canonical_email_block_spec.rb
Normal file
47
spec/models/canonical_email_block_spec.rb
Normal file
@ -0,0 +1,47 @@
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe CanonicalEmailBlock, type: :model do
|
||||
describe '#email=' do
|
||||
let(:target_hash) { '973dfe463ec85785f5f95af5ba3906eedb2d931c24e69824a89ea65dba4e813b' }
|
||||
|
||||
it 'sets canonical_email_hash' do
|
||||
subject.email = 'test@example.com'
|
||||
expect(subject.canonical_email_hash).to eq target_hash
|
||||
end
|
||||
|
||||
it 'sets the same hash even with dot permutations' do
|
||||
subject.email = 't.e.s.t@example.com'
|
||||
expect(subject.canonical_email_hash).to eq target_hash
|
||||
end
|
||||
|
||||
it 'sets the same hash even with extensions' do
|
||||
subject.email = 'test+mastodon1@example.com'
|
||||
expect(subject.canonical_email_hash).to eq target_hash
|
||||
end
|
||||
|
||||
it 'sets the same hash with different casing' do
|
||||
subject.email = 'Test@EXAMPLE.com'
|
||||
expect(subject.canonical_email_hash).to eq target_hash
|
||||
end
|
||||
end
|
||||
|
||||
describe '.block?' do
|
||||
let!(:canonical_email_block) { Fabricate(:canonical_email_block, email: 'foo@bar.com') }
|
||||
|
||||
it 'returns true for the same email' do
|
||||
expect(described_class.block?('foo@bar.com')).to be true
|
||||
end
|
||||
|
||||
it 'returns true for the same email with dots' do
|
||||
expect(described_class.block?('f.oo@bar.com')).to be true
|
||||
end
|
||||
|
||||
it 'returns true for the same email with extensions' do
|
||||
expect(described_class.block?('foo+spam@bar.com')).to be true
|
||||
end
|
||||
|
||||
it 'returns false for different email' do
|
||||
expect(described_class.block?('hoge@bar.com')).to be false
|
||||
end
|
||||
end
|
||||
end
|
4
spec/models/follow_recommendation_suppression_spec.rb
Normal file
4
spec/models/follow_recommendation_suppression_spec.rb
Normal file
@ -0,0 +1,4 @@
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe FollowRecommendationSuppression, type: :model do
|
||||
end
|
@ -1,16 +1,94 @@
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe Web::PushSubscription, type: :model do
|
||||
let(:alerts) { { mention: true, reblog: false, follow: true, follow_request: false, favourite: true } }
|
||||
let(:push_subscription) { Web::PushSubscription.new(data: { alerts: alerts }) }
|
||||
let(:account) { Fabricate(:account) }
|
||||
|
||||
let(:policy) { 'all' }
|
||||
|
||||
let(:data) do
|
||||
{
|
||||
policy: policy,
|
||||
|
||||
alerts: {
|
||||
mention: true,
|
||||
reblog: false,
|
||||
follow: true,
|
||||
follow_request: false,
|
||||
favourite: true,
|
||||
},
|
||||
}
|
||||
end
|
||||
|
||||
subject { described_class.new(data: data) }
|
||||
|
||||
describe '#pushable?' do
|
||||
it 'obeys alert settings' do
|
||||
expect(push_subscription.send(:pushable?, Notification.new(activity_type: 'Mention'))).to eq true
|
||||
expect(push_subscription.send(:pushable?, Notification.new(activity_type: 'Status'))).to eq false
|
||||
expect(push_subscription.send(:pushable?, Notification.new(activity_type: 'Follow'))).to eq true
|
||||
expect(push_subscription.send(:pushable?, Notification.new(activity_type: 'FollowRequest'))).to eq false
|
||||
expect(push_subscription.send(:pushable?, Notification.new(activity_type: 'Favourite'))).to eq true
|
||||
let(:notification_type) { :mention }
|
||||
let(:notification) { Fabricate(:notification, account: account, type: notification_type) }
|
||||
|
||||
%i(mention reblog follow follow_request favourite).each do |type|
|
||||
context "when notification is a #{type}" do
|
||||
let(:notification_type) { type }
|
||||
|
||||
it "returns boolean corresonding to alert setting" do
|
||||
expect(subject.pushable?(notification)).to eq data[:alerts][type]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'when policy is all' do
|
||||
let(:policy) { 'all' }
|
||||
|
||||
it 'returns true' do
|
||||
expect(subject.pushable?(notification)).to eq true
|
||||
end
|
||||
end
|
||||
|
||||
context 'when policy is none' do
|
||||
let(:policy) { 'none' }
|
||||
|
||||
it 'returns false' do
|
||||
expect(subject.pushable?(notification)).to eq false
|
||||
end
|
||||
end
|
||||
|
||||
context 'when policy is followed' do
|
||||
let(:policy) { 'followed' }
|
||||
|
||||
context 'and notification is from someone you follow' do
|
||||
before do
|
||||
account.follow!(notification.from_account)
|
||||
end
|
||||
|
||||
it 'returns true' do
|
||||
expect(subject.pushable?(notification)).to eq true
|
||||
end
|
||||
end
|
||||
|
||||
context 'and notification is not from someone you follow' do
|
||||
it 'returns false' do
|
||||
expect(subject.pushable?(notification)).to eq false
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'when policy is follower' do
|
||||
let(:policy) { 'follower' }
|
||||
|
||||
context 'and notification is from someone who follows you' do
|
||||
before do
|
||||
notification.from_account.follow!(account)
|
||||
end
|
||||
|
||||
it 'returns true' do
|
||||
expect(subject.pushable?(notification)).to eq true
|
||||
end
|
||||
end
|
||||
|
||||
context 'and notification is not from someone who follows you' do
|
||||
it 'returns false' do
|
||||
expect(subject.pushable?(notification)).to eq false
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Reference in New Issue
Block a user