mirror of
https://git.kescher.at/CatCatNya/catstodon.git
synced 2024-11-26 11:21:36 +01:00
Autofix Rubocop RSpec/LeadingSubject (#23670)
This commit is contained in:
parent
4ea1e0fceb
commit
4552685f6b
78 changed files with 256 additions and 338 deletions
|
@ -952,88 +952,6 @@ RSpec/InstanceVariable:
|
||||||
- 'spec/services/search_service_spec.rb'
|
- 'spec/services/search_service_spec.rb'
|
||||||
- 'spec/services/unblock_domain_service_spec.rb'
|
- 'spec/services/unblock_domain_service_spec.rb'
|
||||||
|
|
||||||
# Offense count: 118
|
|
||||||
# This cop supports safe autocorrection (--autocorrect).
|
|
||||||
RSpec/LeadingSubject:
|
|
||||||
Exclude:
|
|
||||||
- 'spec/controllers/activitypub/collections_controller_spec.rb'
|
|
||||||
- 'spec/controllers/activitypub/followers_synchronizations_controller_spec.rb'
|
|
||||||
- 'spec/controllers/activitypub/inboxes_controller_spec.rb'
|
|
||||||
- 'spec/controllers/activitypub/outboxes_controller_spec.rb'
|
|
||||||
- 'spec/controllers/admin/invites_controller_spec.rb'
|
|
||||||
- 'spec/controllers/auth/registrations_controller_spec.rb'
|
|
||||||
- 'spec/controllers/well_known/webfinger_controller_spec.rb'
|
|
||||||
- 'spec/lib/activitypub/activity/accept_spec.rb'
|
|
||||||
- 'spec/lib/activitypub/activity/announce_spec.rb'
|
|
||||||
- 'spec/lib/activitypub/activity/create_spec.rb'
|
|
||||||
- 'spec/lib/activitypub/activity/reject_spec.rb'
|
|
||||||
- 'spec/lib/activitypub/activity/undo_spec.rb'
|
|
||||||
- 'spec/lib/activitypub/activity/update_spec.rb'
|
|
||||||
- 'spec/lib/activitypub/adapter_spec.rb'
|
|
||||||
- 'spec/lib/activitypub/dereferencer_spec.rb'
|
|
||||||
- 'spec/lib/activitypub/linked_data_signature_spec.rb'
|
|
||||||
- 'spec/lib/link_details_extractor_spec.rb'
|
|
||||||
- 'spec/lib/status_filter_spec.rb'
|
|
||||||
- 'spec/lib/status_reach_finder_spec.rb'
|
|
||||||
- 'spec/lib/suspicious_sign_in_detector_spec.rb'
|
|
||||||
- 'spec/lib/text_formatter_spec.rb'
|
|
||||||
- 'spec/lib/vacuum/backups_vacuum_spec.rb'
|
|
||||||
- 'spec/lib/vacuum/media_attachments_vacuum_spec.rb'
|
|
||||||
- 'spec/lib/vacuum/preview_cards_vacuum_spec.rb'
|
|
||||||
- 'spec/lib/vacuum/statuses_vacuum_spec.rb'
|
|
||||||
- 'spec/models/account/field_spec.rb'
|
|
||||||
- 'spec/models/account_spec.rb'
|
|
||||||
- 'spec/models/account_statuses_cleanup_policy_spec.rb'
|
|
||||||
- 'spec/models/account_statuses_filter_spec.rb'
|
|
||||||
- 'spec/models/concerns/account_interactions_spec.rb'
|
|
||||||
- 'spec/models/custom_emoji_filter_spec.rb'
|
|
||||||
- 'spec/models/custom_emoji_spec.rb'
|
|
||||||
- 'spec/models/home_feed_spec.rb'
|
|
||||||
- 'spec/models/media_attachment_spec.rb'
|
|
||||||
- 'spec/models/public_feed_spec.rb'
|
|
||||||
- 'spec/models/remote_follow_spec.rb'
|
|
||||||
- 'spec/models/setting_spec.rb'
|
|
||||||
- 'spec/models/status_spec.rb'
|
|
||||||
- 'spec/models/user_spec.rb'
|
|
||||||
- 'spec/models/web/push_subscription_spec.rb'
|
|
||||||
- 'spec/presenters/familiar_followers_presenter_spec.rb'
|
|
||||||
- 'spec/serializers/activitypub/note_spec.rb'
|
|
||||||
- 'spec/serializers/activitypub/update_poll_spec.rb'
|
|
||||||
- 'spec/serializers/rest/account_serializer_spec.rb'
|
|
||||||
- 'spec/services/activitypub/fetch_featured_collection_service_spec.rb'
|
|
||||||
- 'spec/services/activitypub/fetch_featured_tags_collection_service_spec.rb'
|
|
||||||
- 'spec/services/activitypub/fetch_remote_status_service_spec.rb'
|
|
||||||
- 'spec/services/activitypub/fetch_replies_service_spec.rb'
|
|
||||||
- 'spec/services/activitypub/process_account_service_spec.rb'
|
|
||||||
- 'spec/services/activitypub/process_collection_service_spec.rb'
|
|
||||||
- 'spec/services/activitypub/process_status_update_service_spec.rb'
|
|
||||||
- 'spec/services/activitypub/synchronize_followers_service_spec.rb'
|
|
||||||
- 'spec/services/after_block_domain_from_account_service_spec.rb'
|
|
||||||
- 'spec/services/app_sign_up_service_spec.rb'
|
|
||||||
- 'spec/services/authorize_follow_service_spec.rb'
|
|
||||||
- 'spec/services/block_domain_service_spec.rb'
|
|
||||||
- 'spec/services/block_service_spec.rb'
|
|
||||||
- 'spec/services/clear_domain_media_service_spec.rb'
|
|
||||||
- 'spec/services/delete_account_service_spec.rb'
|
|
||||||
- 'spec/services/fan_out_on_write_service_spec.rb'
|
|
||||||
- 'spec/services/favourite_service_spec.rb'
|
|
||||||
- 'spec/services/fetch_resource_service_spec.rb'
|
|
||||||
- 'spec/services/follow_service_spec.rb'
|
|
||||||
- 'spec/services/process_mentions_service_spec.rb'
|
|
||||||
- 'spec/services/purge_domain_service_spec.rb'
|
|
||||||
- 'spec/services/reblog_service_spec.rb'
|
|
||||||
- 'spec/services/reject_follow_service_spec.rb'
|
|
||||||
- 'spec/services/remove_from_follwers_service_spec.rb'
|
|
||||||
- 'spec/services/report_service_spec.rb'
|
|
||||||
- 'spec/services/suspend_account_service_spec.rb'
|
|
||||||
- 'spec/services/unallow_domain_service_spec.rb'
|
|
||||||
- 'spec/services/unblock_service_spec.rb'
|
|
||||||
- 'spec/services/unfollow_service_spec.rb'
|
|
||||||
- 'spec/services/unsuspend_account_service_spec.rb'
|
|
||||||
- 'spec/validators/blacklisted_email_validator_spec.rb'
|
|
||||||
- 'spec/workers/move_worker_spec.rb'
|
|
||||||
- 'spec/workers/unfollow_follow_worker_spec.rb'
|
|
||||||
|
|
||||||
# Offense count: 15
|
# Offense count: 15
|
||||||
RSpec/LeakyConstantDeclaration:
|
RSpec/LeakyConstantDeclaration:
|
||||||
Exclude:
|
Exclude:
|
||||||
|
|
|
@ -35,11 +35,11 @@ RSpec.describe ActivityPub::CollectionsController, type: :controller do
|
||||||
describe 'GET #show' do
|
describe 'GET #show' do
|
||||||
context 'when id is "featured"' do
|
context 'when id is "featured"' do
|
||||||
context 'without signature' do
|
context 'without signature' do
|
||||||
let(:remote_account) { nil }
|
subject(:body) { body_as_json }
|
||||||
|
|
||||||
subject(:response) { get :show, params: { id: 'featured', account_username: account.username } }
|
subject(:response) { get :show, params: { id: 'featured', account_username: account.username } }
|
||||||
|
|
||||||
subject(:body) { body_as_json }
|
let(:remote_account) { nil }
|
||||||
|
|
||||||
it 'returns http success' do
|
it 'returns http success' do
|
||||||
expect(response).to have_http_status(200)
|
expect(response).to have_http_status(200)
|
||||||
|
|
|
@ -32,11 +32,11 @@ RSpec.describe ActivityPub::FollowersSynchronizationsController, type: :controll
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'with signature from example.com' do
|
context 'with signature from example.com' do
|
||||||
let(:remote_account) { Fabricate(:account, domain: 'example.com', uri: 'https://example.com/instance') }
|
subject(:body) { body_as_json }
|
||||||
|
|
||||||
subject(:response) { get :show, params: { account_username: account.username } }
|
subject(:response) { get :show, params: { account_username: account.username } }
|
||||||
|
|
||||||
subject(:body) { body_as_json }
|
let(:remote_account) { Fabricate(:account, domain: 'example.com', uri: 'https://example.com/instance') }
|
||||||
|
|
||||||
it 'returns http success' do
|
it 'returns http success' do
|
||||||
expect(response).to have_http_status(200)
|
expect(response).to have_http_status(200)
|
||||||
|
|
|
@ -22,10 +22,10 @@ RSpec.describe ActivityPub::InboxesController, type: :controller do
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'for a specific account' do
|
context 'for a specific account' do
|
||||||
let(:account) { Fabricate(:account) }
|
|
||||||
|
|
||||||
subject(:response) { post :create, params: { account_username: account.username }, body: '{}' }
|
subject(:response) { post :create, params: { account_username: account.username }, body: '{}' }
|
||||||
|
|
||||||
|
let(:account) { Fabricate(:account) }
|
||||||
|
|
||||||
context 'when account is permanently suspended' do
|
context 'when account is permanently suspended' do
|
||||||
before do
|
before do
|
||||||
account.suspend!
|
account.suspend!
|
||||||
|
|
|
@ -33,11 +33,11 @@ RSpec.describe ActivityPub::OutboxesController, type: :controller do
|
||||||
|
|
||||||
describe 'GET #show' do
|
describe 'GET #show' do
|
||||||
context 'without signature' do
|
context 'without signature' do
|
||||||
let(:remote_account) { nil }
|
subject(:body) { body_as_json }
|
||||||
|
|
||||||
subject(:response) { get :show, params: { account_username: account.username, page: page } }
|
subject(:response) { get :show, params: { account_username: account.username, page: page } }
|
||||||
|
|
||||||
subject(:body) { body_as_json }
|
let(:remote_account) { nil }
|
||||||
|
|
||||||
context 'with page not requested' do
|
context 'with page not requested' do
|
||||||
let(:page) { nil }
|
let(:page) { nil }
|
||||||
|
|
|
@ -33,10 +33,10 @@ describe Admin::InvitesController do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe 'DELETE #destroy' do
|
describe 'DELETE #destroy' do
|
||||||
let!(:invite) { Fabricate(:invite, expires_at: nil) }
|
|
||||||
|
|
||||||
subject { delete :destroy, params: { id: invite.id } }
|
subject { delete :destroy, params: { id: invite.id } }
|
||||||
|
|
||||||
|
let!(:invite) { Fabricate(:invite, expires_at: nil) }
|
||||||
|
|
||||||
it 'expires invite' do
|
it 'expires invite' do
|
||||||
expect(subject).to redirect_to admin_invites_path
|
expect(subject).to redirect_to admin_invites_path
|
||||||
expect(invite.reload).to be_expired
|
expect(invite.reload).to be_expired
|
||||||
|
|
|
@ -95,18 +95,18 @@ RSpec.describe Auth::RegistrationsController, type: :controller do
|
||||||
before { request.env['devise.mapping'] = Devise.mappings[:user] }
|
before { request.env['devise.mapping'] = Devise.mappings[:user] }
|
||||||
|
|
||||||
context do
|
context do
|
||||||
around do |example|
|
|
||||||
registrations_mode = Setting.registrations_mode
|
|
||||||
example.run
|
|
||||||
Setting.registrations_mode = registrations_mode
|
|
||||||
end
|
|
||||||
|
|
||||||
subject do
|
subject do
|
||||||
Setting.registrations_mode = 'open'
|
Setting.registrations_mode = 'open'
|
||||||
request.headers['Accept-Language'] = accept_language
|
request.headers['Accept-Language'] = accept_language
|
||||||
post :create, params: { user: { account_attributes: { username: 'test' }, email: 'test@example.com', password: '12345678', password_confirmation: '12345678', agreement: 'true' } }
|
post :create, params: { user: { account_attributes: { username: 'test' }, email: 'test@example.com', password: '12345678', password_confirmation: '12345678', agreement: 'true' } }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
around do |example|
|
||||||
|
registrations_mode = Setting.registrations_mode
|
||||||
|
example.run
|
||||||
|
Setting.registrations_mode = registrations_mode
|
||||||
|
end
|
||||||
|
|
||||||
it 'redirects to setup' do
|
it 'redirects to setup' do
|
||||||
subject
|
subject
|
||||||
expect(response).to redirect_to auth_setup_path
|
expect(response).to redirect_to auth_setup_path
|
||||||
|
@ -121,18 +121,18 @@ RSpec.describe Auth::RegistrationsController, type: :controller do
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when user has not agreed to terms of service' do
|
context 'when user has not agreed to terms of service' do
|
||||||
around do |example|
|
|
||||||
registrations_mode = Setting.registrations_mode
|
|
||||||
example.run
|
|
||||||
Setting.registrations_mode = registrations_mode
|
|
||||||
end
|
|
||||||
|
|
||||||
subject do
|
subject do
|
||||||
Setting.registrations_mode = 'open'
|
Setting.registrations_mode = 'open'
|
||||||
request.headers['Accept-Language'] = accept_language
|
request.headers['Accept-Language'] = accept_language
|
||||||
post :create, params: { user: { account_attributes: { username: 'test' }, email: 'test@example.com', password: '12345678', password_confirmation: '12345678', agreement: 'false' } }
|
post :create, params: { user: { account_attributes: { username: 'test' }, email: 'test@example.com', password: '12345678', password_confirmation: '12345678', agreement: 'false' } }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
around do |example|
|
||||||
|
registrations_mode = Setting.registrations_mode
|
||||||
|
example.run
|
||||||
|
Setting.registrations_mode = registrations_mode
|
||||||
|
end
|
||||||
|
|
||||||
it 'does not create user' do
|
it 'does not create user' do
|
||||||
subject
|
subject
|
||||||
user = User.find_by(email: 'test@example.com')
|
user = User.find_by(email: 'test@example.com')
|
||||||
|
@ -141,18 +141,18 @@ RSpec.describe Auth::RegistrationsController, type: :controller do
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'approval-based registrations without invite' do
|
context 'approval-based registrations without invite' do
|
||||||
around do |example|
|
|
||||||
registrations_mode = Setting.registrations_mode
|
|
||||||
example.run
|
|
||||||
Setting.registrations_mode = registrations_mode
|
|
||||||
end
|
|
||||||
|
|
||||||
subject do
|
subject do
|
||||||
Setting.registrations_mode = 'approved'
|
Setting.registrations_mode = 'approved'
|
||||||
request.headers['Accept-Language'] = accept_language
|
request.headers['Accept-Language'] = accept_language
|
||||||
post :create, params: { user: { account_attributes: { username: 'test' }, email: 'test@example.com', password: '12345678', password_confirmation: '12345678', agreement: 'true' } }
|
post :create, params: { user: { account_attributes: { username: 'test' }, email: 'test@example.com', password: '12345678', password_confirmation: '12345678', agreement: 'true' } }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
around do |example|
|
||||||
|
registrations_mode = Setting.registrations_mode
|
||||||
|
example.run
|
||||||
|
Setting.registrations_mode = registrations_mode
|
||||||
|
end
|
||||||
|
|
||||||
it 'redirects to setup' do
|
it 'redirects to setup' do
|
||||||
subject
|
subject
|
||||||
expect(response).to redirect_to auth_setup_path
|
expect(response).to redirect_to auth_setup_path
|
||||||
|
@ -168,12 +168,6 @@ RSpec.describe Auth::RegistrationsController, type: :controller do
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'approval-based registrations with expired invite' do
|
context 'approval-based registrations with expired invite' do
|
||||||
around do |example|
|
|
||||||
registrations_mode = Setting.registrations_mode
|
|
||||||
example.run
|
|
||||||
Setting.registrations_mode = registrations_mode
|
|
||||||
end
|
|
||||||
|
|
||||||
subject do
|
subject do
|
||||||
Setting.registrations_mode = 'approved'
|
Setting.registrations_mode = 'approved'
|
||||||
request.headers['Accept-Language'] = accept_language
|
request.headers['Accept-Language'] = accept_language
|
||||||
|
@ -181,6 +175,12 @@ RSpec.describe Auth::RegistrationsController, type: :controller do
|
||||||
post :create, params: { user: { account_attributes: { username: 'test' }, email: 'test@example.com', password: '12345678', password_confirmation: '12345678', invite_code: invite.code, agreement: 'true' } }
|
post :create, params: { user: { account_attributes: { username: 'test' }, email: 'test@example.com', password: '12345678', password_confirmation: '12345678', invite_code: invite.code, agreement: 'true' } }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
around do |example|
|
||||||
|
registrations_mode = Setting.registrations_mode
|
||||||
|
example.run
|
||||||
|
Setting.registrations_mode = registrations_mode
|
||||||
|
end
|
||||||
|
|
||||||
it 'redirects to setup' do
|
it 'redirects to setup' do
|
||||||
subject
|
subject
|
||||||
expect(response).to redirect_to auth_setup_path
|
expect(response).to redirect_to auth_setup_path
|
||||||
|
@ -196,14 +196,6 @@ RSpec.describe Auth::RegistrationsController, type: :controller do
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'approval-based registrations with valid invite and required invite text' do
|
context 'approval-based registrations with valid invite and required invite text' do
|
||||||
around do |example|
|
|
||||||
registrations_mode = Setting.registrations_mode
|
|
||||||
require_invite_text = Setting.require_invite_text
|
|
||||||
example.run
|
|
||||||
Setting.require_invite_text = require_invite_text
|
|
||||||
Setting.registrations_mode = registrations_mode
|
|
||||||
end
|
|
||||||
|
|
||||||
subject do
|
subject do
|
||||||
inviter = Fabricate(:user, confirmed_at: 2.days.ago)
|
inviter = Fabricate(:user, confirmed_at: 2.days.ago)
|
||||||
Setting.registrations_mode = 'approved'
|
Setting.registrations_mode = 'approved'
|
||||||
|
@ -213,6 +205,14 @@ RSpec.describe Auth::RegistrationsController, type: :controller do
|
||||||
post :create, params: { user: { account_attributes: { username: 'test' }, email: 'test@example.com', password: '12345678', password_confirmation: '12345678', invite_code: invite.code, agreement: 'true' } }
|
post :create, params: { user: { account_attributes: { username: 'test' }, email: 'test@example.com', password: '12345678', password_confirmation: '12345678', invite_code: invite.code, agreement: 'true' } }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
around do |example|
|
||||||
|
registrations_mode = Setting.registrations_mode
|
||||||
|
require_invite_text = Setting.require_invite_text
|
||||||
|
example.run
|
||||||
|
Setting.require_invite_text = require_invite_text
|
||||||
|
Setting.registrations_mode = registrations_mode
|
||||||
|
end
|
||||||
|
|
||||||
it 'redirects to setup' do
|
it 'redirects to setup' do
|
||||||
subject
|
subject
|
||||||
expect(response).to redirect_to auth_setup_path
|
expect(response).to redirect_to auth_setup_path
|
||||||
|
|
|
@ -4,6 +4,10 @@ describe WellKnown::WebfingerController, type: :controller do
|
||||||
render_views
|
render_views
|
||||||
|
|
||||||
describe 'GET #show' do
|
describe 'GET #show' do
|
||||||
|
subject do
|
||||||
|
get :show, params: { resource: resource }, format: :json
|
||||||
|
end
|
||||||
|
|
||||||
let(:alternate_domains) { [] }
|
let(:alternate_domains) { [] }
|
||||||
let(:alice) { Fabricate(:account, username: 'alice') }
|
let(:alice) { Fabricate(:account, username: 'alice') }
|
||||||
let(:resource) { nil }
|
let(:resource) { nil }
|
||||||
|
@ -15,10 +19,6 @@ describe WellKnown::WebfingerController, type: :controller do
|
||||||
Rails.configuration.x.alternate_domains = tmp
|
Rails.configuration.x.alternate_domains = tmp
|
||||||
end
|
end
|
||||||
|
|
||||||
subject do
|
|
||||||
get :show, params: { resource: resource }, format: :json
|
|
||||||
end
|
|
||||||
|
|
||||||
shared_examples 'a successful response' do
|
shared_examples 'a successful response' do
|
||||||
it 'returns http success' do
|
it 'returns http success' do
|
||||||
expect(response).to have_http_status(200)
|
expect(response).to have_http_status(200)
|
||||||
|
|
|
@ -42,6 +42,8 @@ RSpec.describe ActivityPub::Activity::Accept do
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'given a relay' do
|
context 'given a relay' do
|
||||||
|
subject { described_class.new(json, sender) }
|
||||||
|
|
||||||
let!(:relay) { Fabricate(:relay, state: :pending, follow_activity_id: 'https://abc-123/456') }
|
let!(:relay) { Fabricate(:relay, state: :pending, follow_activity_id: 'https://abc-123/456') }
|
||||||
|
|
||||||
let(:json) do
|
let(:json) do
|
||||||
|
@ -59,8 +61,6 @@ RSpec.describe ActivityPub::Activity::Accept do
|
||||||
}.with_indifferent_access
|
}.with_indifferent_access
|
||||||
end
|
end
|
||||||
|
|
||||||
subject { described_class.new(json, sender) }
|
|
||||||
|
|
||||||
it 'marks the relay as accepted' do
|
it 'marks the relay as accepted' do
|
||||||
subject.perform
|
subject.perform
|
||||||
expect(relay.reload.accepted?).to be true
|
expect(relay.reload.accepted?).to be true
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe ActivityPub::Activity::Announce do
|
RSpec.describe ActivityPub::Activity::Announce do
|
||||||
|
subject { described_class.new(json, sender) }
|
||||||
|
|
||||||
let(:sender) { Fabricate(:account, followers_url: 'http://example.com/followers', uri: 'https://example.com/actor') }
|
let(:sender) { Fabricate(:account, followers_url: 'http://example.com/followers', uri: 'https://example.com/actor') }
|
||||||
let(:recipient) { Fabricate(:account) }
|
let(:recipient) { Fabricate(:account) }
|
||||||
let(:status) { Fabricate(:status, account: recipient) }
|
let(:status) { Fabricate(:status, account: recipient) }
|
||||||
|
@ -27,8 +29,6 @@ RSpec.describe ActivityPub::Activity::Announce do
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
subject { described_class.new(json, sender) }
|
|
||||||
|
|
||||||
describe '#perform' do
|
describe '#perform' do
|
||||||
context 'when sender is followed by a local account' do
|
context 'when sender is followed by a local account' do
|
||||||
before do
|
before do
|
||||||
|
@ -110,13 +110,13 @@ RSpec.describe ActivityPub::Activity::Announce do
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when the sender is relayed' do
|
context 'when the sender is relayed' do
|
||||||
|
subject { described_class.new(json, sender, relayed_through_actor: relay_account) }
|
||||||
|
|
||||||
let!(:relay_account) { Fabricate(:account, inbox_url: 'https://relay.example.com/inbox') }
|
let!(:relay_account) { Fabricate(:account, inbox_url: 'https://relay.example.com/inbox') }
|
||||||
let!(:relay) { Fabricate(:relay, inbox_url: 'https://relay.example.com/inbox') }
|
let!(:relay) { Fabricate(:relay, inbox_url: 'https://relay.example.com/inbox') }
|
||||||
|
|
||||||
let(:object_json) { 'https://example.com/actor/hello-world' }
|
let(:object_json) { 'https://example.com/actor/hello-world' }
|
||||||
|
|
||||||
subject { described_class.new(json, sender, relayed_through_actor: relay_account) }
|
|
||||||
|
|
||||||
before do
|
before do
|
||||||
stub_request(:get, 'https://example.com/actor/hello-world').to_return(body: Oj.dump(unknown_object_json))
|
stub_request(:get, 'https://example.com/actor/hello-world').to_return(body: Oj.dump(unknown_object_json))
|
||||||
end
|
end
|
||||||
|
|
|
@ -752,6 +752,8 @@ RSpec.describe ActivityPub::Activity::Create do
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'with an encrypted message' do
|
context 'with an encrypted message' do
|
||||||
|
subject { described_class.new(json, sender, delivery: true, delivered_to_account_id: recipient.id) }
|
||||||
|
|
||||||
let(:recipient) { Fabricate(:account) }
|
let(:recipient) { Fabricate(:account) }
|
||||||
let(:object_json) do
|
let(:object_json) do
|
||||||
{
|
{
|
||||||
|
@ -776,8 +778,6 @@ RSpec.describe ActivityPub::Activity::Create do
|
||||||
end
|
end
|
||||||
let(:target_device) { Fabricate(:device, account: recipient) }
|
let(:target_device) { Fabricate(:device, account: recipient) }
|
||||||
|
|
||||||
subject { described_class.new(json, sender, delivery: true, delivered_to_account_id: recipient.id) }
|
|
||||||
|
|
||||||
before do
|
before do
|
||||||
subject.perform
|
subject.perform
|
||||||
end
|
end
|
||||||
|
@ -831,6 +831,8 @@ RSpec.describe ActivityPub::Activity::Create do
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when sender replies to local status' do
|
context 'when sender replies to local status' do
|
||||||
|
subject { described_class.new(json, sender, delivery: true) }
|
||||||
|
|
||||||
let!(:local_status) { Fabricate(:status) }
|
let!(:local_status) { Fabricate(:status) }
|
||||||
let(:object_json) do
|
let(:object_json) do
|
||||||
{
|
{
|
||||||
|
@ -841,8 +843,6 @@ RSpec.describe ActivityPub::Activity::Create do
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
subject { described_class.new(json, sender, delivery: true) }
|
|
||||||
|
|
||||||
before do
|
before do
|
||||||
subject.perform
|
subject.perform
|
||||||
end
|
end
|
||||||
|
@ -856,6 +856,8 @@ RSpec.describe ActivityPub::Activity::Create do
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when sender targets a local user' do
|
context 'when sender targets a local user' do
|
||||||
|
subject { described_class.new(json, sender, delivery: true) }
|
||||||
|
|
||||||
let!(:local_account) { Fabricate(:account) }
|
let!(:local_account) { Fabricate(:account) }
|
||||||
let(:object_json) do
|
let(:object_json) do
|
||||||
{
|
{
|
||||||
|
@ -866,8 +868,6 @@ RSpec.describe ActivityPub::Activity::Create do
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
subject { described_class.new(json, sender, delivery: true) }
|
|
||||||
|
|
||||||
before do
|
before do
|
||||||
subject.perform
|
subject.perform
|
||||||
end
|
end
|
||||||
|
@ -881,6 +881,8 @@ RSpec.describe ActivityPub::Activity::Create do
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when sender cc\'s a local user' do
|
context 'when sender cc\'s a local user' do
|
||||||
|
subject { described_class.new(json, sender, delivery: true) }
|
||||||
|
|
||||||
let!(:local_account) { Fabricate(:account) }
|
let!(:local_account) { Fabricate(:account) }
|
||||||
let(:object_json) do
|
let(:object_json) do
|
||||||
{
|
{
|
||||||
|
@ -891,8 +893,6 @@ RSpec.describe ActivityPub::Activity::Create do
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
subject { described_class.new(json, sender, delivery: true) }
|
|
||||||
|
|
||||||
before do
|
before do
|
||||||
subject.perform
|
subject.perform
|
||||||
end
|
end
|
||||||
|
|
|
@ -121,6 +121,8 @@ RSpec.describe ActivityPub::Activity::Reject do
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'given a relay' do
|
context 'given a relay' do
|
||||||
|
subject { described_class.new(json, sender) }
|
||||||
|
|
||||||
let!(:relay) { Fabricate(:relay, state: :pending, follow_activity_id: 'https://abc-123/456') }
|
let!(:relay) { Fabricate(:relay, state: :pending, follow_activity_id: 'https://abc-123/456') }
|
||||||
|
|
||||||
let(:json) do
|
let(:json) do
|
||||||
|
@ -138,8 +140,6 @@ RSpec.describe ActivityPub::Activity::Reject do
|
||||||
}.with_indifferent_access
|
}.with_indifferent_access
|
||||||
end
|
end
|
||||||
|
|
||||||
subject { described_class.new(json, sender) }
|
|
||||||
|
|
||||||
it 'marks the relay as rejected' do
|
it 'marks the relay as rejected' do
|
||||||
subject.perform
|
subject.perform
|
||||||
expect(relay.reload.rejected?).to be true
|
expect(relay.reload.rejected?).to be true
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe ActivityPub::Activity::Undo do
|
RSpec.describe ActivityPub::Activity::Undo do
|
||||||
|
subject { described_class.new(json, sender) }
|
||||||
|
|
||||||
let(:sender) { Fabricate(:account, domain: 'example.com') }
|
let(:sender) { Fabricate(:account, domain: 'example.com') }
|
||||||
|
|
||||||
let(:json) do
|
let(:json) do
|
||||||
|
@ -13,8 +15,6 @@ RSpec.describe ActivityPub::Activity::Undo do
|
||||||
}.with_indifferent_access
|
}.with_indifferent_access
|
||||||
end
|
end
|
||||||
|
|
||||||
subject { described_class.new(json, sender) }
|
|
||||||
|
|
||||||
describe '#perform' do
|
describe '#perform' do
|
||||||
context 'with Announce' do
|
context 'with Announce' do
|
||||||
let(:status) { Fabricate(:status) }
|
let(:status) { Fabricate(:status) }
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe ActivityPub::Activity::Update do
|
RSpec.describe ActivityPub::Activity::Update do
|
||||||
|
subject { described_class.new(json, sender) }
|
||||||
|
|
||||||
let!(:sender) { Fabricate(:account) }
|
let!(:sender) { Fabricate(:account) }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
sender.update!(uri: ActivityPub::TagManager.instance.uri_for(sender))
|
sender.update!(uri: ActivityPub::TagManager.instance.uri_for(sender))
|
||||||
end
|
end
|
||||||
|
|
||||||
subject { described_class.new(json, sender) }
|
|
||||||
|
|
||||||
describe '#perform' do
|
describe '#perform' do
|
||||||
context 'with an Actor object' do
|
context 'with an Actor object' do
|
||||||
let(:modified_sender) do
|
let(:modified_sender) do
|
||||||
|
|
|
@ -41,10 +41,10 @@ RSpec.describe ActivityPub::Adapter do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '#serializable_hash' do
|
describe '#serializable_hash' do
|
||||||
let(:serializer_class) {}
|
|
||||||
|
|
||||||
subject { ActiveModelSerializers::SerializableResource.new(TestObject.new(foo: 'bar'), serializer: serializer_class, adapter: described_class).as_json }
|
subject { ActiveModelSerializers::SerializableResource.new(TestObject.new(foo: 'bar'), serializer: serializer_class, adapter: described_class).as_json }
|
||||||
|
|
||||||
|
let(:serializer_class) {}
|
||||||
|
|
||||||
context 'when serializer defines no context' do
|
context 'when serializer defines no context' do
|
||||||
let(:serializer_class) { TestWithBasicContextSerializer }
|
let(:serializer_class) { TestWithBasicContextSerializer }
|
||||||
|
|
||||||
|
|
|
@ -2,13 +2,13 @@ require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe ActivityPub::Dereferencer do
|
RSpec.describe ActivityPub::Dereferencer do
|
||||||
describe '#object' do
|
describe '#object' do
|
||||||
|
subject { described_class.new(uri, permitted_origin: permitted_origin, signature_actor: signature_actor).object }
|
||||||
|
|
||||||
let(:object) { { '@context': 'https://www.w3.org/ns/activitystreams', id: 'https://example.com/foo', type: 'Note', content: 'Hoge' } }
|
let(:object) { { '@context': 'https://www.w3.org/ns/activitystreams', id: 'https://example.com/foo', type: 'Note', content: 'Hoge' } }
|
||||||
let(:permitted_origin) { 'https://example.com' }
|
let(:permitted_origin) { 'https://example.com' }
|
||||||
let(:signature_actor) { nil }
|
let(:signature_actor) { nil }
|
||||||
let(:uri) { nil }
|
let(:uri) { nil }
|
||||||
|
|
||||||
subject { described_class.new(uri, permitted_origin: permitted_origin, signature_actor: signature_actor).object }
|
|
||||||
|
|
||||||
before do
|
before do
|
||||||
stub_request(:get, 'https://example.com/foo').to_return(body: Oj.dump(object), headers: { 'Content-Type' => 'application/activity+json' })
|
stub_request(:get, 'https://example.com/foo').to_return(body: Oj.dump(object), headers: { 'Content-Type' => 'application/activity+json' })
|
||||||
end
|
end
|
||||||
|
|
|
@ -3,6 +3,8 @@ require 'rails_helper'
|
||||||
RSpec.describe ActivityPub::LinkedDataSignature do
|
RSpec.describe ActivityPub::LinkedDataSignature do
|
||||||
include JsonLdHelper
|
include JsonLdHelper
|
||||||
|
|
||||||
|
subject { described_class.new(json) }
|
||||||
|
|
||||||
let!(:sender) { Fabricate(:account, uri: 'http://example.com/alice') }
|
let!(:sender) { Fabricate(:account, uri: 'http://example.com/alice') }
|
||||||
|
|
||||||
let(:raw_json) do
|
let(:raw_json) do
|
||||||
|
@ -14,8 +16,6 @@ RSpec.describe ActivityPub::LinkedDataSignature do
|
||||||
|
|
||||||
let(:json) { raw_json.merge('signature' => signature) }
|
let(:json) { raw_json.merge('signature' => signature) }
|
||||||
|
|
||||||
subject { described_class.new(json) }
|
|
||||||
|
|
||||||
before do
|
before do
|
||||||
stub_jsonld_contexts!
|
stub_jsonld_contexts!
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe LinkDetailsExtractor do
|
RSpec.describe LinkDetailsExtractor do
|
||||||
|
subject { described_class.new(original_url, html, html_charset) }
|
||||||
|
|
||||||
let(:original_url) { '' }
|
let(:original_url) { '' }
|
||||||
let(:html) { '' }
|
let(:html) { '' }
|
||||||
let(:html_charset) { nil }
|
let(:html_charset) { nil }
|
||||||
|
|
||||||
subject { described_class.new(original_url, html, html_charset) }
|
|
||||||
|
|
||||||
describe '#canonical_url' do
|
describe '#canonical_url' do
|
||||||
let(:original_url) { 'https://foo.com/article?bar=baz123' }
|
let(:original_url) { 'https://foo.com/article?bar=baz123' }
|
||||||
|
|
||||||
|
|
|
@ -31,10 +31,10 @@ describe StatusFilter do
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'with real account' do
|
context 'with real account' do
|
||||||
let(:account) { Fabricate(:account) }
|
|
||||||
|
|
||||||
subject { described_class.new(status, account) }
|
subject { described_class.new(status, account) }
|
||||||
|
|
||||||
|
let(:account) { Fabricate(:account) }
|
||||||
|
|
||||||
context 'when there are no connections' do
|
context 'when there are no connections' do
|
||||||
it { is_expected.to_not be_filtered }
|
it { is_expected.to_not be_filtered }
|
||||||
end
|
end
|
||||||
|
|
|
@ -5,13 +5,13 @@ require 'rails_helper'
|
||||||
describe StatusReachFinder do
|
describe StatusReachFinder do
|
||||||
describe '#inboxes' do
|
describe '#inboxes' do
|
||||||
context 'for a local status' do
|
context 'for a local status' do
|
||||||
|
subject { described_class.new(status) }
|
||||||
|
|
||||||
let(:parent_status) { nil }
|
let(:parent_status) { nil }
|
||||||
let(:visibility) { :public }
|
let(:visibility) { :public }
|
||||||
let(:alice) { Fabricate(:account, username: 'alice') }
|
let(:alice) { Fabricate(:account, username: 'alice') }
|
||||||
let(:status) { Fabricate(:status, account: alice, thread: parent_status, visibility: visibility) }
|
let(:status) { Fabricate(:status, account: alice, thread: parent_status, visibility: visibility) }
|
||||||
|
|
||||||
subject { described_class.new(status) }
|
|
||||||
|
|
||||||
context 'when it contains mentions of remote accounts' do
|
context 'when it contains mentions of remote accounts' do
|
||||||
let(:bob) { Fabricate(:account, username: 'bob', domain: 'foo.bar', protocol: :activitypub, inbox_url: 'https://foo.bar/inbox') }
|
let(:bob) { Fabricate(:account, username: 'bob', domain: 'foo.bar', protocol: :activitypub, inbox_url: 'https://foo.bar/inbox') }
|
||||||
|
|
||||||
|
|
|
@ -2,12 +2,12 @@ require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe SuspiciousSignInDetector do
|
RSpec.describe SuspiciousSignInDetector do
|
||||||
describe '#suspicious?' do
|
describe '#suspicious?' do
|
||||||
|
subject { described_class.new(user).suspicious?(request) }
|
||||||
|
|
||||||
let(:user) { Fabricate(:user, current_sign_in_at: 1.day.ago) }
|
let(:user) { Fabricate(:user, current_sign_in_at: 1.day.ago) }
|
||||||
let(:request) { double(remote_ip: remote_ip) }
|
let(:request) { double(remote_ip: remote_ip) }
|
||||||
let(:remote_ip) { nil }
|
let(:remote_ip) { nil }
|
||||||
|
|
||||||
subject { described_class.new(user).suspicious?(request) }
|
|
||||||
|
|
||||||
context 'when user has 2FA enabled' do
|
context 'when user has 2FA enabled' do
|
||||||
before do
|
before do
|
||||||
user.update!(otp_required_for_login: true)
|
user.update!(otp_required_for_login: true)
|
||||||
|
|
|
@ -2,10 +2,10 @@ require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe TextFormatter do
|
RSpec.describe TextFormatter do
|
||||||
describe '#to_s' do
|
describe '#to_s' do
|
||||||
let(:preloaded_accounts) { nil }
|
|
||||||
|
|
||||||
subject { described_class.new(text, preloaded_accounts: preloaded_accounts).to_s }
|
subject { described_class.new(text, preloaded_accounts: preloaded_accounts).to_s }
|
||||||
|
|
||||||
|
let(:preloaded_accounts) { nil }
|
||||||
|
|
||||||
context 'given text containing plain text' do
|
context 'given text containing plain text' do
|
||||||
let(:text) { 'text' }
|
let(:text) { 'text' }
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe Vacuum::BackupsVacuum do
|
RSpec.describe Vacuum::BackupsVacuum do
|
||||||
let(:retention_period) { 7.days }
|
|
||||||
|
|
||||||
subject { described_class.new(retention_period) }
|
subject { described_class.new(retention_period) }
|
||||||
|
|
||||||
|
let(:retention_period) { 7.days }
|
||||||
|
|
||||||
describe '#perform' do
|
describe '#perform' do
|
||||||
let!(:expired_backup) { Fabricate(:backup, created_at: (retention_period + 1.day).ago) }
|
let!(:expired_backup) { Fabricate(:backup, created_at: (retention_period + 1.day).ago) }
|
||||||
let!(:current_backup) { Fabricate(:backup) }
|
let!(:current_backup) { Fabricate(:backup) }
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe Vacuum::MediaAttachmentsVacuum do
|
RSpec.describe Vacuum::MediaAttachmentsVacuum do
|
||||||
|
subject { described_class.new(retention_period) }
|
||||||
|
|
||||||
let(:retention_period) { 7.days }
|
let(:retention_period) { 7.days }
|
||||||
let(:remote_status) { Fabricate(:status, account: Fabricate(:account, domain: 'example.com')) }
|
let(:remote_status) { Fabricate(:status, account: Fabricate(:account, domain: 'example.com')) }
|
||||||
let(:local_status) { Fabricate(:status) }
|
let(:local_status) { Fabricate(:status) }
|
||||||
|
|
||||||
subject { described_class.new(retention_period) }
|
|
||||||
|
|
||||||
describe '#perform' do
|
describe '#perform' do
|
||||||
let!(:old_remote_media) { Fabricate(:media_attachment, remote_url: 'https://example.com/foo.png', status: remote_status, created_at: (retention_period + 1.day).ago, updated_at: (retention_period + 1.day).ago) }
|
let!(:old_remote_media) { Fabricate(:media_attachment, remote_url: 'https://example.com/foo.png', status: remote_status, created_at: (retention_period + 1.day).ago, updated_at: (retention_period + 1.day).ago) }
|
||||||
let!(:old_local_media) { Fabricate(:media_attachment, status: local_status, created_at: (retention_period + 1.day).ago, updated_at: (retention_period + 1.day).ago) }
|
let!(:old_local_media) { Fabricate(:media_attachment, status: local_status, created_at: (retention_period + 1.day).ago, updated_at: (retention_period + 1.day).ago) }
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe Vacuum::PreviewCardsVacuum do
|
RSpec.describe Vacuum::PreviewCardsVacuum do
|
||||||
let(:retention_period) { 7.days }
|
|
||||||
|
|
||||||
subject { described_class.new(retention_period) }
|
subject { described_class.new(retention_period) }
|
||||||
|
|
||||||
|
let(:retention_period) { 7.days }
|
||||||
|
|
||||||
describe '#perform' do
|
describe '#perform' do
|
||||||
let!(:orphaned_preview_card) { Fabricate(:preview_card, created_at: 2.days.ago) }
|
let!(:orphaned_preview_card) { Fabricate(:preview_card, created_at: 2.days.ago) }
|
||||||
let!(:old_preview_card) { Fabricate(:preview_card, updated_at: (retention_period + 1.day).ago) }
|
let!(:old_preview_card) { Fabricate(:preview_card, updated_at: (retention_period + 1.day).ago) }
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe Vacuum::StatusesVacuum do
|
RSpec.describe Vacuum::StatusesVacuum do
|
||||||
|
subject { described_class.new(retention_period) }
|
||||||
|
|
||||||
let(:retention_period) { 7.days }
|
let(:retention_period) { 7.days }
|
||||||
|
|
||||||
let(:remote_account) { Fabricate(:account, domain: 'example.com') }
|
let(:remote_account) { Fabricate(:account, domain: 'example.com') }
|
||||||
|
|
||||||
subject { described_class.new(retention_period) }
|
|
||||||
|
|
||||||
describe '#perform' do
|
describe '#perform' do
|
||||||
let!(:remote_status_old) { Fabricate(:status, account: remote_account, created_at: (retention_period + 2.days).ago) }
|
let!(:remote_status_old) { Fabricate(:status, account: remote_account, created_at: (retention_period + 2.days).ago) }
|
||||||
let!(:remote_status_recent) { Fabricate(:status, account: remote_account, created_at: (retention_period - 2.days).ago) }
|
let!(:remote_status_recent) { Fabricate(:status, account: remote_account, created_at: (retention_period - 2.days).ago) }
|
||||||
|
|
|
@ -2,10 +2,10 @@ require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe Account::Field, type: :model do
|
RSpec.describe Account::Field, type: :model do
|
||||||
describe '#verified?' do
|
describe '#verified?' do
|
||||||
let(:account) { double('Account', local?: true) }
|
|
||||||
|
|
||||||
subject { described_class.new(account, 'name' => 'Foo', 'value' => 'Bar', 'verified_at' => verified_at) }
|
subject { described_class.new(account, 'name' => 'Foo', 'value' => 'Bar', 'verified_at' => verified_at) }
|
||||||
|
|
||||||
|
let(:account) { double('Account', local?: true) }
|
||||||
|
|
||||||
context 'when verified_at is set' do
|
context 'when verified_at is set' do
|
||||||
let(:verified_at) { Time.now.utc.iso8601 }
|
let(:verified_at) { Time.now.utc.iso8601 }
|
||||||
|
|
||||||
|
@ -24,11 +24,11 @@ RSpec.describe Account::Field, type: :model do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '#mark_verified!' do
|
describe '#mark_verified!' do
|
||||||
|
subject { described_class.new(account, original_hash) }
|
||||||
|
|
||||||
let(:account) { double('Account', local?: true) }
|
let(:account) { double('Account', local?: true) }
|
||||||
let(:original_hash) { { 'name' => 'Foo', 'value' => 'Bar' } }
|
let(:original_hash) { { 'name' => 'Foo', 'value' => 'Bar' } }
|
||||||
|
|
||||||
subject { described_class.new(account, original_hash) }
|
|
||||||
|
|
||||||
before do
|
before do
|
||||||
subject.mark_verified!
|
subject.mark_verified!
|
||||||
end
|
end
|
||||||
|
@ -43,10 +43,10 @@ RSpec.describe Account::Field, type: :model do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '#verifiable?' do
|
describe '#verifiable?' do
|
||||||
let(:account) { double('Account', local?: local) }
|
|
||||||
|
|
||||||
subject { described_class.new(account, 'name' => 'Foo', 'value' => value) }
|
subject { described_class.new(account, 'name' => 'Foo', 'value' => value) }
|
||||||
|
|
||||||
|
let(:account) { double('Account', local?: local) }
|
||||||
|
|
||||||
context 'for local accounts' do
|
context 'for local accounts' do
|
||||||
let(:local) { true }
|
let(:local) { true }
|
||||||
|
|
||||||
|
|
|
@ -2,10 +2,10 @@ require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe Account, type: :model do
|
RSpec.describe Account, type: :model do
|
||||||
context do
|
context do
|
||||||
let(:bob) { Fabricate(:account, username: 'bob') }
|
|
||||||
|
|
||||||
subject { Fabricate(:account) }
|
subject { Fabricate(:account) }
|
||||||
|
|
||||||
|
let(:bob) { Fabricate(:account, username: 'bob') }
|
||||||
|
|
||||||
describe '#suspend!' do
|
describe '#suspend!' do
|
||||||
it 'marks the account as suspended' do
|
it 'marks the account as suspended' do
|
||||||
subject.suspend!
|
subject.suspend!
|
||||||
|
@ -87,14 +87,14 @@ RSpec.describe Account, type: :model do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe 'Local domain user methods' do
|
describe 'Local domain user methods' do
|
||||||
|
subject { Fabricate(:account, domain: nil, username: 'alice') }
|
||||||
|
|
||||||
around do |example|
|
around do |example|
|
||||||
before = Rails.configuration.x.local_domain
|
before = Rails.configuration.x.local_domain
|
||||||
example.run
|
example.run
|
||||||
Rails.configuration.x.local_domain = before
|
Rails.configuration.x.local_domain = before
|
||||||
end
|
end
|
||||||
|
|
||||||
subject { Fabricate(:account, domain: nil, username: 'alice') }
|
|
||||||
|
|
||||||
describe '#to_webfinger_s' do
|
describe '#to_webfinger_s' do
|
||||||
it 'returns a webfinger string for the account' do
|
it 'returns a webfinger string for the account' do
|
||||||
Rails.configuration.x.local_domain = 'example.com'
|
Rails.configuration.x.local_domain = 'example.com'
|
||||||
|
@ -243,13 +243,13 @@ RSpec.describe Account, type: :model do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '#favourited?' do
|
describe '#favourited?' do
|
||||||
|
subject { Fabricate(:account) }
|
||||||
|
|
||||||
let(:original_status) do
|
let(:original_status) do
|
||||||
author = Fabricate(:account, username: 'original')
|
author = Fabricate(:account, username: 'original')
|
||||||
Fabricate(:status, account: author)
|
Fabricate(:status, account: author)
|
||||||
end
|
end
|
||||||
|
|
||||||
subject { Fabricate(:account) }
|
|
||||||
|
|
||||||
context 'when the status is a reblog of another status' do
|
context 'when the status is a reblog of another status' do
|
||||||
let(:original_reblog) do
|
let(:original_reblog) do
|
||||||
author = Fabricate(:account, username: 'original_reblogger')
|
author = Fabricate(:account, username: 'original_reblogger')
|
||||||
|
@ -281,13 +281,13 @@ RSpec.describe Account, type: :model do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '#reblogged?' do
|
describe '#reblogged?' do
|
||||||
|
subject { Fabricate(:account) }
|
||||||
|
|
||||||
let(:original_status) do
|
let(:original_status) do
|
||||||
author = Fabricate(:account, username: 'original')
|
author = Fabricate(:account, username: 'original')
|
||||||
Fabricate(:status, account: author)
|
Fabricate(:status, account: author)
|
||||||
end
|
end
|
||||||
|
|
||||||
subject { Fabricate(:account) }
|
|
||||||
|
|
||||||
context 'when the status is a reblog of another status' do
|
context 'when the status is a reblog of another status' do
|
||||||
let(:original_reblog) do
|
let(:original_reblog) do
|
||||||
author = Fabricate(:account, username: 'original_reblogger')
|
author = Fabricate(:account, username: 'original_reblogger')
|
||||||
|
|
|
@ -132,11 +132,11 @@ RSpec.describe AccountStatusesCleanupPolicy, type: :model do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '#invalidate_last_inspected' do
|
describe '#invalidate_last_inspected' do
|
||||||
|
subject { account_statuses_cleanup_policy.invalidate_last_inspected(status, action) }
|
||||||
|
|
||||||
let(:account_statuses_cleanup_policy) { Fabricate(:account_statuses_cleanup_policy, account: account) }
|
let(:account_statuses_cleanup_policy) { Fabricate(:account_statuses_cleanup_policy, account: account) }
|
||||||
let(:status) { Fabricate(:status, id: 10, account: account) }
|
let(:status) { Fabricate(:status, id: 10, account: account) }
|
||||||
|
|
||||||
subject { account_statuses_cleanup_policy.invalidate_last_inspected(status, action) }
|
|
||||||
|
|
||||||
before do
|
before do
|
||||||
account_statuses_cleanup_policy.record_last_inspected(42)
|
account_statuses_cleanup_policy.record_last_inspected(42)
|
||||||
end
|
end
|
||||||
|
@ -231,11 +231,11 @@ RSpec.describe AccountStatusesCleanupPolicy, type: :model do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '#compute_cutoff_id' do
|
describe '#compute_cutoff_id' do
|
||||||
|
subject { account_statuses_cleanup_policy.compute_cutoff_id }
|
||||||
|
|
||||||
let!(:unrelated_status) { Fabricate(:status, created_at: 3.years.ago) }
|
let!(:unrelated_status) { Fabricate(:status, created_at: 3.years.ago) }
|
||||||
let(:account_statuses_cleanup_policy) { Fabricate(:account_statuses_cleanup_policy, account: account) }
|
let(:account_statuses_cleanup_policy) { Fabricate(:account_statuses_cleanup_policy, account: account) }
|
||||||
|
|
||||||
subject { account_statuses_cleanup_policy.compute_cutoff_id }
|
|
||||||
|
|
||||||
context 'when the account has posted multiple toots' do
|
context 'when the account has posted multiple toots' do
|
||||||
let!(:very_old_status) { Fabricate(:status, created_at: 3.years.ago, account: account) }
|
let!(:very_old_status) { Fabricate(:status, created_at: 3.years.ago, account: account) }
|
||||||
let!(:old_status) { Fabricate(:status, created_at: 3.weeks.ago, account: account) }
|
let!(:old_status) { Fabricate(:status, created_at: 3.weeks.ago, account: account) }
|
||||||
|
@ -254,6 +254,8 @@ RSpec.describe AccountStatusesCleanupPolicy, type: :model do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '#statuses_to_delete' do
|
describe '#statuses_to_delete' do
|
||||||
|
subject { account_statuses_cleanup_policy.statuses_to_delete }
|
||||||
|
|
||||||
let!(:unrelated_status) { Fabricate(:status, created_at: 3.years.ago) }
|
let!(:unrelated_status) { Fabricate(:status, created_at: 3.years.ago) }
|
||||||
let!(:very_old_status) { Fabricate(:status, created_at: 3.years.ago, account: account) }
|
let!(:very_old_status) { Fabricate(:status, created_at: 3.years.ago, account: account) }
|
||||||
let!(:pinned_status) { Fabricate(:status, created_at: 1.year.ago, account: account) }
|
let!(:pinned_status) { Fabricate(:status, created_at: 1.year.ago, account: account) }
|
||||||
|
@ -275,8 +277,6 @@ RSpec.describe AccountStatusesCleanupPolicy, type: :model do
|
||||||
|
|
||||||
let(:account_statuses_cleanup_policy) { Fabricate(:account_statuses_cleanup_policy, account: account) }
|
let(:account_statuses_cleanup_policy) { Fabricate(:account_statuses_cleanup_policy, account: account) }
|
||||||
|
|
||||||
subject { account_statuses_cleanup_policy.statuses_to_delete }
|
|
||||||
|
|
||||||
before do
|
before do
|
||||||
4.times { faved4.increment_count!(:favourites_count) }
|
4.times { faved4.increment_count!(:favourites_count) }
|
||||||
5.times { faved5.increment_count!(:favourites_count) }
|
5.times { faved5.increment_count!(:favourites_count) }
|
||||||
|
@ -285,11 +285,11 @@ RSpec.describe AccountStatusesCleanupPolicy, type: :model do
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when passed a max_id' do
|
context 'when passed a max_id' do
|
||||||
|
subject { account_statuses_cleanup_policy.statuses_to_delete(50, old_status.id).pluck(:id) }
|
||||||
|
|
||||||
let!(:old_status) { Fabricate(:status, created_at: 1.year.ago, account: account) }
|
let!(:old_status) { Fabricate(:status, created_at: 1.year.ago, account: account) }
|
||||||
let!(:slightly_less_old_status) { Fabricate(:status, created_at: 6.months.ago, account: account) }
|
let!(:slightly_less_old_status) { Fabricate(:status, created_at: 6.months.ago, account: account) }
|
||||||
|
|
||||||
subject { account_statuses_cleanup_policy.statuses_to_delete(50, old_status.id).pluck(:id) }
|
|
||||||
|
|
||||||
it 'returns statuses including max_id' do
|
it 'returns statuses including max_id' do
|
||||||
expect(subject).to include(old_status.id)
|
expect(subject).to include(old_status.id)
|
||||||
end
|
end
|
||||||
|
@ -304,11 +304,11 @@ RSpec.describe AccountStatusesCleanupPolicy, type: :model do
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when passed a min_id' do
|
context 'when passed a min_id' do
|
||||||
|
subject { account_statuses_cleanup_policy.statuses_to_delete(50, recent_status.id, old_status.id).pluck(:id) }
|
||||||
|
|
||||||
let!(:old_status) { Fabricate(:status, created_at: 1.year.ago, account: account) }
|
let!(:old_status) { Fabricate(:status, created_at: 1.year.ago, account: account) }
|
||||||
let!(:slightly_less_old_status) { Fabricate(:status, created_at: 6.months.ago, account: account) }
|
let!(:slightly_less_old_status) { Fabricate(:status, created_at: 6.months.ago, account: account) }
|
||||||
|
|
||||||
subject { account_statuses_cleanup_policy.statuses_to_delete(50, recent_status.id, old_status.id).pluck(:id) }
|
|
||||||
|
|
||||||
it 'returns statuses including min_id' do
|
it 'returns statuses including min_id' do
|
||||||
expect(subject).to include(old_status.id)
|
expect(subject).to include(old_status.id)
|
||||||
end
|
end
|
||||||
|
|
|
@ -3,12 +3,12 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe AccountStatusesFilter do
|
RSpec.describe AccountStatusesFilter do
|
||||||
|
subject { described_class.new(account, current_account, params) }
|
||||||
|
|
||||||
let(:account) { Fabricate(:account) }
|
let(:account) { Fabricate(:account) }
|
||||||
let(:current_account) { nil }
|
let(:current_account) { nil }
|
||||||
let(:params) { {} }
|
let(:params) { {} }
|
||||||
|
|
||||||
subject { described_class.new(account, current_account, params) }
|
|
||||||
|
|
||||||
def status!(visibility)
|
def status!(visibility)
|
||||||
Fabricate(:status, account: account, visibility: visibility)
|
Fabricate(:status, account: account, visibility: visibility)
|
||||||
end
|
end
|
||||||
|
|
|
@ -225,10 +225,10 @@ describe AccountInteractions do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '#mute_conversation!' do
|
describe '#mute_conversation!' do
|
||||||
let(:conversation) { Fabricate(:conversation) }
|
|
||||||
|
|
||||||
subject { account.mute_conversation!(conversation) }
|
subject { account.mute_conversation!(conversation) }
|
||||||
|
|
||||||
|
let(:conversation) { Fabricate(:conversation) }
|
||||||
|
|
||||||
it 'creates and returns ConversationMute' do
|
it 'creates and returns ConversationMute' do
|
||||||
expect do
|
expect do
|
||||||
expect(subject).to be_a ConversationMute
|
expect(subject).to be_a ConversationMute
|
||||||
|
@ -237,10 +237,10 @@ describe AccountInteractions do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '#block_domain!' do
|
describe '#block_domain!' do
|
||||||
let(:domain) { 'example.com' }
|
|
||||||
|
|
||||||
subject { account.block_domain!(domain) }
|
subject { account.block_domain!(domain) }
|
||||||
|
|
||||||
|
let(:domain) { 'example.com' }
|
||||||
|
|
||||||
it 'creates and returns AccountDomainBlock' do
|
it 'creates and returns AccountDomainBlock' do
|
||||||
expect do
|
expect do
|
||||||
expect(subject).to be_a AccountDomainBlock
|
expect(subject).to be_a AccountDomainBlock
|
||||||
|
@ -303,10 +303,10 @@ describe AccountInteractions do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '#unmute_conversation!' do
|
describe '#unmute_conversation!' do
|
||||||
let(:conversation) { Fabricate(:conversation) }
|
|
||||||
|
|
||||||
subject { account.unmute_conversation!(conversation) }
|
subject { account.unmute_conversation!(conversation) }
|
||||||
|
|
||||||
|
let(:conversation) { Fabricate(:conversation) }
|
||||||
|
|
||||||
context 'muting the conversation' do
|
context 'muting the conversation' do
|
||||||
it 'returns destroyed ConversationMute' do
|
it 'returns destroyed ConversationMute' do
|
||||||
account.conversation_mutes.create(conversation: conversation)
|
account.conversation_mutes.create(conversation: conversation)
|
||||||
|
@ -323,10 +323,10 @@ describe AccountInteractions do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '#unblock_domain!' do
|
describe '#unblock_domain!' do
|
||||||
let(:domain) { 'example.com' }
|
|
||||||
|
|
||||||
subject { account.unblock_domain!(domain) }
|
subject { account.unblock_domain!(domain) }
|
||||||
|
|
||||||
|
let(:domain) { 'example.com' }
|
||||||
|
|
||||||
context 'blocking the domain' do
|
context 'blocking the domain' do
|
||||||
it 'returns destroyed AccountDomainBlock' do
|
it 'returns destroyed AccountDomainBlock' do
|
||||||
account_domain_block = Fabricate(:account_domain_block, domain: domain)
|
account_domain_block = Fabricate(:account_domain_block, domain: domain)
|
||||||
|
@ -395,10 +395,10 @@ describe AccountInteractions do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '#domain_blocking?' do
|
describe '#domain_blocking?' do
|
||||||
let(:domain) { 'example.com' }
|
|
||||||
|
|
||||||
subject { account.domain_blocking?(domain) }
|
subject { account.domain_blocking?(domain) }
|
||||||
|
|
||||||
|
let(:domain) { 'example.com' }
|
||||||
|
|
||||||
context 'blocking the domain' do
|
context 'blocking the domain' do
|
||||||
it 'returns true' do
|
it 'returns true' do
|
||||||
account_domain_block = Fabricate(:account_domain_block, domain: domain)
|
account_domain_block = Fabricate(:account_domain_block, domain: domain)
|
||||||
|
@ -433,10 +433,10 @@ describe AccountInteractions do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '#muting_conversation?' do
|
describe '#muting_conversation?' do
|
||||||
let(:conversation) { Fabricate(:conversation) }
|
|
||||||
|
|
||||||
subject { account.muting_conversation?(conversation) }
|
subject { account.muting_conversation?(conversation) }
|
||||||
|
|
||||||
|
let(:conversation) { Fabricate(:conversation) }
|
||||||
|
|
||||||
context 'muting the conversation' do
|
context 'muting the conversation' do
|
||||||
it 'returns true' do
|
it 'returns true' do
|
||||||
account.conversation_mutes.create(conversation: conversation)
|
account.conversation_mutes.create(conversation: conversation)
|
||||||
|
@ -452,13 +452,13 @@ describe AccountInteractions do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '#muting_notifications?' do
|
describe '#muting_notifications?' do
|
||||||
|
subject { account.muting_notifications?(target_account) }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
mute = Fabricate(:mute, target_account: target_account, account: account, hide_notifications: hide)
|
mute = Fabricate(:mute, target_account: target_account, account: account, hide_notifications: hide)
|
||||||
account.mute_relationships << mute
|
account.mute_relationships << mute
|
||||||
end
|
end
|
||||||
|
|
||||||
subject { account.muting_notifications?(target_account) }
|
|
||||||
|
|
||||||
context 'muting notifications of target_account' do
|
context 'muting notifications of target_account' do
|
||||||
let(:hide) { true }
|
let(:hide) { true }
|
||||||
|
|
||||||
|
@ -494,10 +494,10 @@ describe AccountInteractions do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '#favourited?' do
|
describe '#favourited?' do
|
||||||
let(:status) { Fabricate(:status, account: account, favourites: favourites) }
|
|
||||||
|
|
||||||
subject { account.favourited?(status) }
|
subject { account.favourited?(status) }
|
||||||
|
|
||||||
|
let(:status) { Fabricate(:status, account: account, favourites: favourites) }
|
||||||
|
|
||||||
context 'favorited' do
|
context 'favorited' do
|
||||||
let(:favourites) { [Fabricate(:favourite, account: account)] }
|
let(:favourites) { [Fabricate(:favourite, account: account)] }
|
||||||
|
|
||||||
|
@ -516,10 +516,10 @@ describe AccountInteractions do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '#reblogged?' do
|
describe '#reblogged?' do
|
||||||
let(:status) { Fabricate(:status, account: account, reblogs: reblogs) }
|
|
||||||
|
|
||||||
subject { account.reblogged?(status) }
|
subject { account.reblogged?(status) }
|
||||||
|
|
||||||
|
let(:status) { Fabricate(:status, account: account, reblogs: reblogs) }
|
||||||
|
|
||||||
context 'reblogged' do
|
context 'reblogged' do
|
||||||
let(:reblogs) { [Fabricate(:status, account: account)] }
|
let(:reblogs) { [Fabricate(:status, account: account)] }
|
||||||
|
|
||||||
|
@ -538,10 +538,10 @@ describe AccountInteractions do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '#pinned?' do
|
describe '#pinned?' do
|
||||||
let(:status) { Fabricate(:status, account: account) }
|
|
||||||
|
|
||||||
subject { account.pinned?(status) }
|
subject { account.pinned?(status) }
|
||||||
|
|
||||||
|
let(:status) { Fabricate(:status, account: account) }
|
||||||
|
|
||||||
context 'pinned' do
|
context 'pinned' do
|
||||||
it 'returns true' do
|
it 'returns true' do
|
||||||
Fabricate(:status_pin, account: account, status: status)
|
Fabricate(:status_pin, account: account, status: status)
|
||||||
|
|
|
@ -4,12 +4,12 @@ require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe CustomEmojiFilter do
|
RSpec.describe CustomEmojiFilter do
|
||||||
describe '#results' do
|
describe '#results' do
|
||||||
|
subject { described_class.new(params).results }
|
||||||
|
|
||||||
let!(:custom_emoji_0) { Fabricate(:custom_emoji, domain: 'a') }
|
let!(:custom_emoji_0) { Fabricate(:custom_emoji, domain: 'a') }
|
||||||
let!(:custom_emoji_1) { Fabricate(:custom_emoji, domain: 'b') }
|
let!(:custom_emoji_1) { Fabricate(:custom_emoji, domain: 'b') }
|
||||||
let!(:custom_emoji_2) { Fabricate(:custom_emoji, domain: nil, shortcode: 'hoge') }
|
let!(:custom_emoji_2) { Fabricate(:custom_emoji, domain: nil, shortcode: 'hoge') }
|
||||||
|
|
||||||
subject { described_class.new(params).results }
|
|
||||||
|
|
||||||
context 'params have values' do
|
context 'params have values' do
|
||||||
context 'local' do
|
context 'local' do
|
||||||
let(:params) { { local: true } }
|
let(:params) { { local: true } }
|
||||||
|
|
|
@ -2,10 +2,10 @@ require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe CustomEmoji, type: :model do
|
RSpec.describe CustomEmoji, type: :model do
|
||||||
describe '#search' do
|
describe '#search' do
|
||||||
let(:custom_emoji) { Fabricate(:custom_emoji, shortcode: shortcode) }
|
|
||||||
|
|
||||||
subject { described_class.search(search_term) }
|
subject { described_class.search(search_term) }
|
||||||
|
|
||||||
|
let(:custom_emoji) { Fabricate(:custom_emoji, shortcode: shortcode) }
|
||||||
|
|
||||||
context 'shortcode is exact' do
|
context 'shortcode is exact' do
|
||||||
let(:shortcode) { 'blobpats' }
|
let(:shortcode) { 'blobpats' }
|
||||||
let(:search_term) { 'blobpats' }
|
let(:search_term) { 'blobpats' }
|
||||||
|
@ -26,10 +26,10 @@ RSpec.describe CustomEmoji, type: :model do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '#local?' do
|
describe '#local?' do
|
||||||
let(:custom_emoji) { Fabricate(:custom_emoji, domain: domain) }
|
|
||||||
|
|
||||||
subject { custom_emoji.local? }
|
subject { custom_emoji.local? }
|
||||||
|
|
||||||
|
let(:custom_emoji) { Fabricate(:custom_emoji, domain: domain) }
|
||||||
|
|
||||||
context 'domain is nil' do
|
context 'domain is nil' do
|
||||||
let(:domain) { nil }
|
let(:domain) { nil }
|
||||||
|
|
||||||
|
@ -55,10 +55,10 @@ RSpec.describe CustomEmoji, type: :model do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '.from_text' do
|
describe '.from_text' do
|
||||||
let!(:emojo) { Fabricate(:custom_emoji) }
|
|
||||||
|
|
||||||
subject { described_class.from_text(text, nil) }
|
subject { described_class.from_text(text, nil) }
|
||||||
|
|
||||||
|
let!(:emojo) { Fabricate(:custom_emoji) }
|
||||||
|
|
||||||
context 'with plain text' do
|
context 'with plain text' do
|
||||||
let(:text) { 'Hello :coolcat:' }
|
let(:text) { 'Hello :coolcat:' }
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe HomeFeed, type: :model do
|
RSpec.describe HomeFeed, type: :model do
|
||||||
let(:account) { Fabricate(:account) }
|
|
||||||
|
|
||||||
subject { described_class.new(account) }
|
subject { described_class.new(account) }
|
||||||
|
|
||||||
|
let(:account) { Fabricate(:account) }
|
||||||
|
|
||||||
describe '#get' do
|
describe '#get' do
|
||||||
before do
|
before do
|
||||||
Fabricate(:status, account: account, id: 1)
|
Fabricate(:status, account: account, id: 1)
|
||||||
|
|
|
@ -2,10 +2,10 @@ require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe MediaAttachment, type: :model do
|
RSpec.describe MediaAttachment, type: :model do
|
||||||
describe 'local?' do
|
describe 'local?' do
|
||||||
let(:media_attachment) { Fabricate(:media_attachment, remote_url: remote_url) }
|
|
||||||
|
|
||||||
subject { media_attachment.local? }
|
subject { media_attachment.local? }
|
||||||
|
|
||||||
|
let(:media_attachment) { Fabricate(:media_attachment, remote_url: remote_url) }
|
||||||
|
|
||||||
context 'remote_url is blank' do
|
context 'remote_url is blank' do
|
||||||
let(:remote_url) { '' }
|
let(:remote_url) { '' }
|
||||||
|
|
||||||
|
@ -24,10 +24,10 @@ RSpec.describe MediaAttachment, type: :model do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe 'needs_redownload?' do
|
describe 'needs_redownload?' do
|
||||||
let(:media_attachment) { Fabricate(:media_attachment, remote_url: remote_url, file: file) }
|
|
||||||
|
|
||||||
subject { media_attachment.needs_redownload? }
|
subject { media_attachment.needs_redownload? }
|
||||||
|
|
||||||
|
let(:media_attachment) { Fabricate(:media_attachment, remote_url: remote_url, file: file) }
|
||||||
|
|
||||||
context 'file is blank' do
|
context 'file is blank' do
|
||||||
let(:file) { nil }
|
let(:file) { nil }
|
||||||
|
|
||||||
|
|
|
@ -40,6 +40,8 @@ RSpec.describe PublicFeed, type: :model do
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'without local_only option' do
|
context 'without local_only option' do
|
||||||
|
subject { described_class.new(viewer).get(20).map(&:id) }
|
||||||
|
|
||||||
let(:viewer) { nil }
|
let(:viewer) { nil }
|
||||||
|
|
||||||
let!(:local_account) { Fabricate(:account, domain: nil) }
|
let!(:local_account) { Fabricate(:account, domain: nil) }
|
||||||
|
@ -47,8 +49,6 @@ RSpec.describe PublicFeed, type: :model do
|
||||||
let!(:local_status) { Fabricate(:status, account: local_account) }
|
let!(:local_status) { Fabricate(:status, account: local_account) }
|
||||||
let!(:remote_status) { Fabricate(:status, account: remote_account) }
|
let!(:remote_status) { Fabricate(:status, account: remote_account) }
|
||||||
|
|
||||||
subject { described_class.new(viewer).get(20).map(&:id) }
|
|
||||||
|
|
||||||
context 'without a viewer' do
|
context 'without a viewer' do
|
||||||
let(:viewer) { nil }
|
let(:viewer) { nil }
|
||||||
|
|
||||||
|
@ -75,13 +75,13 @@ RSpec.describe PublicFeed, type: :model do
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'with a local_only option set' do
|
context 'with a local_only option set' do
|
||||||
|
subject { described_class.new(viewer, local: true).get(20).map(&:id) }
|
||||||
|
|
||||||
let!(:local_account) { Fabricate(:account, domain: nil) }
|
let!(:local_account) { Fabricate(:account, domain: nil) }
|
||||||
let!(:remote_account) { Fabricate(:account, domain: 'test.com') }
|
let!(:remote_account) { Fabricate(:account, domain: 'test.com') }
|
||||||
let!(:local_status) { Fabricate(:status, account: local_account) }
|
let!(:local_status) { Fabricate(:status, account: local_account) }
|
||||||
let!(:remote_status) { Fabricate(:status, account: remote_account) }
|
let!(:remote_status) { Fabricate(:status, account: remote_account) }
|
||||||
|
|
||||||
subject { described_class.new(viewer, local: true).get(20).map(&:id) }
|
|
||||||
|
|
||||||
context 'without a viewer' do
|
context 'without a viewer' do
|
||||||
let(:viewer) { nil }
|
let(:viewer) { nil }
|
||||||
|
|
||||||
|
@ -108,13 +108,13 @@ RSpec.describe PublicFeed, type: :model do
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'with a remote_only option set' do
|
context 'with a remote_only option set' do
|
||||||
|
subject { described_class.new(viewer, remote: true).get(20).map(&:id) }
|
||||||
|
|
||||||
let!(:local_account) { Fabricate(:account, domain: nil) }
|
let!(:local_account) { Fabricate(:account, domain: nil) }
|
||||||
let!(:remote_account) { Fabricate(:account, domain: 'test.com') }
|
let!(:remote_account) { Fabricate(:account, domain: 'test.com') }
|
||||||
let!(:local_status) { Fabricate(:status, account: local_account) }
|
let!(:local_status) { Fabricate(:status, account: local_account) }
|
||||||
let!(:remote_status) { Fabricate(:status, account: remote_account) }
|
let!(:remote_status) { Fabricate(:status, account: remote_account) }
|
||||||
|
|
||||||
subject { described_class.new(viewer, remote: true).get(20).map(&:id) }
|
|
||||||
|
|
||||||
context 'without a viewer' do
|
context 'without a viewer' do
|
||||||
let(:viewer) { nil }
|
let(:viewer) { nil }
|
||||||
|
|
||||||
|
@ -135,12 +135,12 @@ RSpec.describe PublicFeed, type: :model do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe 'with an account passed in' do
|
describe 'with an account passed in' do
|
||||||
|
subject { described_class.new(@account).get(20).map(&:id) }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
@account = Fabricate(:account)
|
@account = Fabricate(:account)
|
||||||
end
|
end
|
||||||
|
|
||||||
subject { described_class.new(@account).get(20).map(&:id) }
|
|
||||||
|
|
||||||
it 'excludes statuses from accounts blocked by the account' do
|
it 'excludes statuses from accounts blocked by the account' do
|
||||||
blocked = Fabricate(:account)
|
blocked = Fabricate(:account)
|
||||||
@account.block!(blocked)
|
@account.block!(blocked)
|
||||||
|
|
|
@ -51,6 +51,8 @@ RSpec.describe RemoteFollow do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '#subscribe_address_for' do
|
describe '#subscribe_address_for' do
|
||||||
|
subject { remote_follow.subscribe_address_for(account) }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
remote_follow.valid?
|
remote_follow.valid?
|
||||||
end
|
end
|
||||||
|
@ -58,8 +60,6 @@ RSpec.describe RemoteFollow do
|
||||||
let(:attrs) { { acct: 'gargron@quitter.no' } }
|
let(:attrs) { { acct: 'gargron@quitter.no' } }
|
||||||
let(:account) { Fabricate(:account, username: 'alice') }
|
let(:account) { Fabricate(:account, username: 'alice') }
|
||||||
|
|
||||||
subject { remote_follow.subscribe_address_for(account) }
|
|
||||||
|
|
||||||
it 'returns subscribe address' do
|
it 'returns subscribe address' do
|
||||||
expect(subject).to eq 'https://quitter.no/main/ostatussub?profile=https%3A%2F%2Fcb6e6126.ngrok.io%2Fusers%2Falice'
|
expect(subject).to eq 'https://quitter.no/main/ostatussub?profile=https%3A%2F%2Fcb6e6126.ngrok.io%2Fusers%2Falice'
|
||||||
end
|
end
|
||||||
|
|
|
@ -163,12 +163,12 @@ RSpec.describe Setting, type: :model do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '.default_settings' do
|
describe '.default_settings' do
|
||||||
|
subject { described_class.default_settings }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
allow(RailsSettings::Default).to receive(:enabled?).and_return(enabled)
|
allow(RailsSettings::Default).to receive(:enabled?).and_return(enabled)
|
||||||
end
|
end
|
||||||
|
|
||||||
subject { described_class.default_settings }
|
|
||||||
|
|
||||||
context 'RailsSettings::Default.enabled? is false' do
|
context 'RailsSettings::Default.enabled? is false' do
|
||||||
let(:enabled) { false }
|
let(:enabled) { false }
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe Status, type: :model do
|
RSpec.describe Status, type: :model do
|
||||||
|
subject { Fabricate(:status, account: alice) }
|
||||||
|
|
||||||
let(:alice) { Fabricate(:account, username: 'alice') }
|
let(:alice) { Fabricate(:account, username: 'alice') }
|
||||||
let(:bob) { Fabricate(:account, username: 'bob') }
|
let(:bob) { Fabricate(:account, username: 'bob') }
|
||||||
let(:other) { Fabricate(:status, account: bob, text: 'Skulls for the skull god! The enemy\'s gates are sideways!') }
|
let(:other) { Fabricate(:status, account: bob, text: 'Skulls for the skull god! The enemy\'s gates are sideways!') }
|
||||||
|
|
||||||
subject { Fabricate(:status, account: alice) }
|
|
||||||
|
|
||||||
describe '#local?' do
|
describe '#local?' do
|
||||||
it 'returns true when no remote URI is set' do
|
it 'returns true when no remote URI is set' do
|
||||||
expect(subject.local?).to be true
|
expect(subject.local?).to be true
|
||||||
|
@ -204,11 +204,11 @@ RSpec.describe Status, type: :model do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '.mutes_map' do
|
describe '.mutes_map' do
|
||||||
|
subject { Status.mutes_map([status.conversation.id], account) }
|
||||||
|
|
||||||
let(:status) { Fabricate(:status) }
|
let(:status) { Fabricate(:status) }
|
||||||
let(:account) { Fabricate(:account) }
|
let(:account) { Fabricate(:account) }
|
||||||
|
|
||||||
subject { Status.mutes_map([status.conversation.id], account) }
|
|
||||||
|
|
||||||
it 'returns a hash' do
|
it 'returns a hash' do
|
||||||
expect(subject).to be_a Hash
|
expect(subject).to be_a Hash
|
||||||
end
|
end
|
||||||
|
@ -220,11 +220,11 @@ RSpec.describe Status, type: :model do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '.favourites_map' do
|
describe '.favourites_map' do
|
||||||
|
subject { Status.favourites_map([status], account) }
|
||||||
|
|
||||||
let(:status) { Fabricate(:status) }
|
let(:status) { Fabricate(:status) }
|
||||||
let(:account) { Fabricate(:account) }
|
let(:account) { Fabricate(:account) }
|
||||||
|
|
||||||
subject { Status.favourites_map([status], account) }
|
|
||||||
|
|
||||||
it 'returns a hash' do
|
it 'returns a hash' do
|
||||||
expect(subject).to be_a Hash
|
expect(subject).to be_a Hash
|
||||||
end
|
end
|
||||||
|
@ -236,11 +236,11 @@ RSpec.describe Status, type: :model do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '.reblogs_map' do
|
describe '.reblogs_map' do
|
||||||
|
subject { Status.reblogs_map([status], account) }
|
||||||
|
|
||||||
let(:status) { Fabricate(:status) }
|
let(:status) { Fabricate(:status) }
|
||||||
let(:account) { Fabricate(:account) }
|
let(:account) { Fabricate(:account) }
|
||||||
|
|
||||||
subject { Status.reblogs_map([status], account) }
|
|
||||||
|
|
||||||
it 'returns a hash' do
|
it 'returns a hash' do
|
||||||
expect(subject).to be_a Hash
|
expect(subject).to be_a Hash
|
||||||
end
|
end
|
||||||
|
|
|
@ -142,10 +142,10 @@ RSpec.describe User, type: :model do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '#confirm' do
|
describe '#confirm' do
|
||||||
let(:new_email) { 'new-email@example.com' }
|
|
||||||
|
|
||||||
subject { user.confirm }
|
subject { user.confirm }
|
||||||
|
|
||||||
|
let(:new_email) { 'new-email@example.com' }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
allow(TriggerWebhookWorker).to receive(:perform_async)
|
allow(TriggerWebhookWorker).to receive(:perform_async)
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe Web::PushSubscription, type: :model do
|
RSpec.describe Web::PushSubscription, type: :model do
|
||||||
|
subject { described_class.new(data: data) }
|
||||||
|
|
||||||
let(:account) { Fabricate(:account) }
|
let(:account) { Fabricate(:account) }
|
||||||
|
|
||||||
let(:policy) { 'all' }
|
let(:policy) { 'all' }
|
||||||
|
@ -19,8 +21,6 @@ RSpec.describe Web::PushSubscription, type: :model do
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
subject { described_class.new(data: data) }
|
|
||||||
|
|
||||||
describe '#pushable?' do
|
describe '#pushable?' do
|
||||||
let(:notification_type) { :mention }
|
let(:notification_type) { :mention }
|
||||||
let(:notification) { Fabricate(:notification, account: account, type: notification_type) }
|
let(:notification) { Fabricate(:notification, account: account, type: notification_type) }
|
||||||
|
|
|
@ -4,12 +4,12 @@ require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe FamiliarFollowersPresenter do
|
RSpec.describe FamiliarFollowersPresenter do
|
||||||
describe '#accounts' do
|
describe '#accounts' do
|
||||||
|
subject { described_class.new(requested_accounts, account.id) }
|
||||||
|
|
||||||
let(:account) { Fabricate(:account) }
|
let(:account) { Fabricate(:account) }
|
||||||
let(:familiar_follower) { Fabricate(:account) }
|
let(:familiar_follower) { Fabricate(:account) }
|
||||||
let(:requested_accounts) { Fabricate.times(2, :account) }
|
let(:requested_accounts) { Fabricate.times(2, :account) }
|
||||||
|
|
||||||
subject { described_class.new(requested_accounts, account.id) }
|
|
||||||
|
|
||||||
before do
|
before do
|
||||||
familiar_follower.follow!(requested_accounts.first)
|
familiar_follower.follow!(requested_accounts.first)
|
||||||
account.follow!(familiar_follower)
|
account.follow!(familiar_follower)
|
||||||
|
|
|
@ -3,6 +3,8 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
describe ActivityPub::NoteSerializer do
|
describe ActivityPub::NoteSerializer do
|
||||||
|
subject { JSON.parse(@serialization.to_json) }
|
||||||
|
|
||||||
let!(:account) { Fabricate(:account) }
|
let!(:account) { Fabricate(:account) }
|
||||||
let!(:other) { Fabricate(:account) }
|
let!(:other) { Fabricate(:account) }
|
||||||
let!(:parent) { Fabricate(:status, account: account, visibility: :public) }
|
let!(:parent) { Fabricate(:status, account: account, visibility: :public) }
|
||||||
|
@ -16,8 +18,6 @@ describe ActivityPub::NoteSerializer do
|
||||||
@serialization = ActiveModelSerializers::SerializableResource.new(parent, serializer: ActivityPub::NoteSerializer, adapter: ActivityPub::Adapter)
|
@serialization = ActiveModelSerializers::SerializableResource.new(parent, serializer: ActivityPub::NoteSerializer, adapter: ActivityPub::Adapter)
|
||||||
end
|
end
|
||||||
|
|
||||||
subject { JSON.parse(@serialization.to_json) }
|
|
||||||
|
|
||||||
it 'has a Note type' do
|
it 'has a Note type' do
|
||||||
expect(subject['type']).to eql('Note')
|
expect(subject['type']).to eql('Note')
|
||||||
end
|
end
|
||||||
|
|
|
@ -3,6 +3,8 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
describe ActivityPub::UpdatePollSerializer do
|
describe ActivityPub::UpdatePollSerializer do
|
||||||
|
subject { JSON.parse(@serialization.to_json) }
|
||||||
|
|
||||||
let(:account) { Fabricate(:account) }
|
let(:account) { Fabricate(:account) }
|
||||||
let(:poll) { Fabricate(:poll, account: account) }
|
let(:poll) { Fabricate(:poll, account: account) }
|
||||||
let!(:status) { Fabricate(:status, account: account, poll: poll) }
|
let!(:status) { Fabricate(:status, account: account, poll: poll) }
|
||||||
|
@ -11,8 +13,6 @@ describe ActivityPub::UpdatePollSerializer do
|
||||||
@serialization = ActiveModelSerializers::SerializableResource.new(status, serializer: ActivityPub::UpdatePollSerializer, adapter: ActivityPub::Adapter)
|
@serialization = ActiveModelSerializers::SerializableResource.new(status, serializer: ActivityPub::UpdatePollSerializer, adapter: ActivityPub::Adapter)
|
||||||
end
|
end
|
||||||
|
|
||||||
subject { JSON.parse(@serialization.to_json) }
|
|
||||||
|
|
||||||
it 'has a Update type' do
|
it 'has a Update type' do
|
||||||
expect(subject['type']).to eql('Update')
|
expect(subject['type']).to eql('Update')
|
||||||
end
|
end
|
||||||
|
|
|
@ -3,12 +3,12 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
describe REST::AccountSerializer do
|
describe REST::AccountSerializer do
|
||||||
|
subject { JSON.parse(ActiveModelSerializers::SerializableResource.new(account, serializer: REST::AccountSerializer).to_json) }
|
||||||
|
|
||||||
let(:role) { Fabricate(:user_role, name: 'Role', highlighted: true) }
|
let(:role) { Fabricate(:user_role, name: 'Role', highlighted: true) }
|
||||||
let(:user) { Fabricate(:user, role: role) }
|
let(:user) { Fabricate(:user, role: role) }
|
||||||
let(:account) { user.account }
|
let(:account) { user.account }
|
||||||
|
|
||||||
subject { JSON.parse(ActiveModelSerializers::SerializableResource.new(account, serializer: REST::AccountSerializer).to_json) }
|
|
||||||
|
|
||||||
context 'when the account is suspended' do
|
context 'when the account is suspended' do
|
||||||
before do
|
before do
|
||||||
account.suspend!
|
account.suspend!
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe ActivityPub::FetchFeaturedCollectionService, type: :service do
|
RSpec.describe ActivityPub::FetchFeaturedCollectionService, type: :service do
|
||||||
|
subject { described_class.new }
|
||||||
|
|
||||||
let(:actor) { Fabricate(:account, domain: 'example.com', uri: 'https://example.com/account', featured_collection_url: 'https://example.com/account/pinned') }
|
let(:actor) { Fabricate(:account, domain: 'example.com', uri: 'https://example.com/account', featured_collection_url: 'https://example.com/account/pinned') }
|
||||||
|
|
||||||
let!(:known_status) { Fabricate(:status, account: actor, uri: 'https://example.com/account/pinned/1') }
|
let!(:known_status) { Fabricate(:status, account: actor, uri: 'https://example.com/account/pinned/1') }
|
||||||
|
@ -56,8 +58,6 @@ RSpec.describe ActivityPub::FetchFeaturedCollectionService, type: :service do
|
||||||
}.with_indifferent_access
|
}.with_indifferent_access
|
||||||
end
|
end
|
||||||
|
|
||||||
subject { described_class.new }
|
|
||||||
|
|
||||||
shared_examples 'sets pinned posts' do
|
shared_examples 'sets pinned posts' do
|
||||||
before do
|
before do
|
||||||
stub_request(:get, 'https://example.com/account/pinned/1').to_return(status: 200, body: Oj.dump(status_json_1))
|
stub_request(:get, 'https://example.com/account/pinned/1').to_return(status: 200, body: Oj.dump(status_json_1))
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe ActivityPub::FetchFeaturedTagsCollectionService, type: :service do
|
RSpec.describe ActivityPub::FetchFeaturedTagsCollectionService, type: :service do
|
||||||
|
subject { described_class.new }
|
||||||
|
|
||||||
let(:collection_url) { 'https://example.com/account/tags' }
|
let(:collection_url) { 'https://example.com/account/tags' }
|
||||||
let(:actor) { Fabricate(:account, domain: 'example.com', uri: 'https://example.com/account') }
|
let(:actor) { Fabricate(:account, domain: 'example.com', uri: 'https://example.com/account') }
|
||||||
|
|
||||||
|
@ -21,8 +23,6 @@ RSpec.describe ActivityPub::FetchFeaturedTagsCollectionService, type: :service d
|
||||||
}.with_indifferent_access
|
}.with_indifferent_access
|
||||||
end
|
end
|
||||||
|
|
||||||
subject { described_class.new }
|
|
||||||
|
|
||||||
shared_examples 'sets featured tags' do
|
shared_examples 'sets featured tags' do
|
||||||
before do
|
before do
|
||||||
subject.call(actor, collection_url)
|
subject.call(actor, collection_url)
|
||||||
|
|
|
@ -3,6 +3,8 @@ require 'rails_helper'
|
||||||
RSpec.describe ActivityPub::FetchRemoteStatusService, type: :service do
|
RSpec.describe ActivityPub::FetchRemoteStatusService, type: :service do
|
||||||
include ActionView::Helpers::TextHelper
|
include ActionView::Helpers::TextHelper
|
||||||
|
|
||||||
|
subject { described_class.new }
|
||||||
|
|
||||||
let!(:sender) { Fabricate(:account, domain: 'foo.bar', uri: 'https://foo.bar') }
|
let!(:sender) { Fabricate(:account, domain: 'foo.bar', uri: 'https://foo.bar') }
|
||||||
let!(:recipient) { Fabricate(:account) }
|
let!(:recipient) { Fabricate(:account) }
|
||||||
|
|
||||||
|
@ -18,8 +20,6 @@ RSpec.describe ActivityPub::FetchRemoteStatusService, type: :service do
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
subject { described_class.new }
|
|
||||||
|
|
||||||
before do
|
before do
|
||||||
stub_request(:get, 'https://foo.bar/watch?v=12345').to_return(status: 404, body: '')
|
stub_request(:get, 'https://foo.bar/watch?v=12345').to_return(status: 404, body: '')
|
||||||
stub_request(:get, object[:id]).to_return(body: Oj.dump(object))
|
stub_request(:get, object[:id]).to_return(body: Oj.dump(object))
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe ActivityPub::FetchRepliesService, type: :service do
|
RSpec.describe ActivityPub::FetchRepliesService, type: :service do
|
||||||
|
subject { described_class.new }
|
||||||
|
|
||||||
let(:actor) { Fabricate(:account, domain: 'example.com', uri: 'http://example.com/account') }
|
let(:actor) { Fabricate(:account, domain: 'example.com', uri: 'http://example.com/account') }
|
||||||
let(:status) { Fabricate(:status, account: actor) }
|
let(:status) { Fabricate(:status, account: actor) }
|
||||||
let(:collection_uri) { 'http://example.com/replies/1' }
|
let(:collection_uri) { 'http://example.com/replies/1' }
|
||||||
|
@ -28,8 +30,6 @@ RSpec.describe ActivityPub::FetchRepliesService, type: :service do
|
||||||
}.with_indifferent_access
|
}.with_indifferent_access
|
||||||
end
|
end
|
||||||
|
|
||||||
subject { described_class.new }
|
|
||||||
|
|
||||||
describe '#call' do
|
describe '#call' do
|
||||||
context 'when the payload is a Collection with inlined replies' do
|
context 'when the payload is a Collection with inlined replies' do
|
||||||
context 'when passing the collection itself' do
|
context 'when passing the collection itself' do
|
||||||
|
|
|
@ -31,6 +31,8 @@ RSpec.describe ActivityPub::ProcessAccountService, type: :service do
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when account is not suspended' do
|
context 'when account is not suspended' do
|
||||||
|
subject { described_class.new.call('alice', 'example.com', payload) }
|
||||||
|
|
||||||
let!(:account) { Fabricate(:account, username: 'alice', domain: 'example.com') }
|
let!(:account) { Fabricate(:account, username: 'alice', domain: 'example.com') }
|
||||||
|
|
||||||
let(:payload) do
|
let(:payload) do
|
||||||
|
@ -46,8 +48,6 @@ RSpec.describe ActivityPub::ProcessAccountService, type: :service do
|
||||||
allow(Admin::SuspensionWorker).to receive(:perform_async)
|
allow(Admin::SuspensionWorker).to receive(:perform_async)
|
||||||
end
|
end
|
||||||
|
|
||||||
subject { described_class.new.call('alice', 'example.com', payload) }
|
|
||||||
|
|
||||||
it 'suspends account remotely' do
|
it 'suspends account remotely' do
|
||||||
expect(subject.suspended?).to be true
|
expect(subject.suspended?).to be true
|
||||||
expect(subject.suspension_origin_remote?).to be true
|
expect(subject.suspension_origin_remote?).to be true
|
||||||
|
@ -60,6 +60,8 @@ RSpec.describe ActivityPub::ProcessAccountService, type: :service do
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when account is suspended' do
|
context 'when account is suspended' do
|
||||||
|
subject { described_class.new.call('alice', 'example.com', payload) }
|
||||||
|
|
||||||
let!(:account) { Fabricate(:account, username: 'alice', domain: 'example.com', display_name: '') }
|
let!(:account) { Fabricate(:account, username: 'alice', domain: 'example.com', display_name: '') }
|
||||||
|
|
||||||
let(:payload) do
|
let(:payload) do
|
||||||
|
@ -78,8 +80,6 @@ RSpec.describe ActivityPub::ProcessAccountService, type: :service do
|
||||||
account.suspend!(origin: suspension_origin)
|
account.suspend!(origin: suspension_origin)
|
||||||
end
|
end
|
||||||
|
|
||||||
subject { described_class.new.call('alice', 'example.com', payload) }
|
|
||||||
|
|
||||||
context 'locally' do
|
context 'locally' do
|
||||||
let(:suspension_origin) { :local }
|
let(:suspension_origin) { :local }
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe ActivityPub::ProcessCollectionService, type: :service do
|
RSpec.describe ActivityPub::ProcessCollectionService, type: :service do
|
||||||
|
subject { described_class.new }
|
||||||
|
|
||||||
let(:actor) { Fabricate(:account, domain: 'example.com', uri: 'http://example.com/account') }
|
let(:actor) { Fabricate(:account, domain: 'example.com', uri: 'http://example.com/account') }
|
||||||
|
|
||||||
let(:payload) do
|
let(:payload) do
|
||||||
|
@ -19,8 +21,6 @@ RSpec.describe ActivityPub::ProcessCollectionService, type: :service do
|
||||||
|
|
||||||
let(:json) { Oj.dump(payload) }
|
let(:json) { Oj.dump(payload) }
|
||||||
|
|
||||||
subject { described_class.new }
|
|
||||||
|
|
||||||
describe '#call' do
|
describe '#call' do
|
||||||
context 'when actor is suspended' do
|
context 'when actor is suspended' do
|
||||||
before do
|
before do
|
||||||
|
|
|
@ -5,6 +5,8 @@ def poll_option_json(name, votes)
|
||||||
end
|
end
|
||||||
|
|
||||||
RSpec.describe ActivityPub::ProcessStatusUpdateService, type: :service do
|
RSpec.describe ActivityPub::ProcessStatusUpdateService, type: :service do
|
||||||
|
subject { described_class.new }
|
||||||
|
|
||||||
let!(:status) { Fabricate(:status, text: 'Hello world', account: Fabricate(:account, domain: 'example.com')) }
|
let!(:status) { Fabricate(:status, text: 'Hello world', account: Fabricate(:account, domain: 'example.com')) }
|
||||||
let(:payload) do
|
let(:payload) do
|
||||||
{
|
{
|
||||||
|
@ -35,8 +37,6 @@ RSpec.describe ActivityPub::ProcessStatusUpdateService, type: :service do
|
||||||
media_attachments.each { |m| status.media_attachments << m }
|
media_attachments.each { |m| status.media_attachments << m }
|
||||||
end
|
end
|
||||||
|
|
||||||
subject { described_class.new }
|
|
||||||
|
|
||||||
describe '#call' do
|
describe '#call' do
|
||||||
it 'updates text' do
|
it 'updates text' do
|
||||||
subject.call(status, json)
|
subject.call(status, json)
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe ActivityPub::SynchronizeFollowersService, type: :service do
|
RSpec.describe ActivityPub::SynchronizeFollowersService, type: :service do
|
||||||
|
subject { described_class.new }
|
||||||
|
|
||||||
let(:actor) { Fabricate(:account, domain: 'example.com', uri: 'http://example.com/account', inbox_url: 'http://example.com/inbox') }
|
let(:actor) { Fabricate(:account, domain: 'example.com', uri: 'http://example.com/account', inbox_url: 'http://example.com/inbox') }
|
||||||
let(:alice) { Fabricate(:account, username: 'alice') }
|
let(:alice) { Fabricate(:account, username: 'alice') }
|
||||||
let(:bob) { Fabricate(:account, username: 'bob') }
|
let(:bob) { Fabricate(:account, username: 'bob') }
|
||||||
|
@ -25,8 +27,6 @@ RSpec.describe ActivityPub::SynchronizeFollowersService, type: :service do
|
||||||
}.with_indifferent_access
|
}.with_indifferent_access
|
||||||
end
|
end
|
||||||
|
|
||||||
subject { described_class.new }
|
|
||||||
|
|
||||||
shared_examples 'synchronizes followers' do
|
shared_examples 'synchronizes followers' do
|
||||||
before do
|
before do
|
||||||
alice.follow!(actor)
|
alice.follow!(actor)
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe AfterBlockDomainFromAccountService, type: :service do
|
RSpec.describe AfterBlockDomainFromAccountService, type: :service do
|
||||||
|
subject { AfterBlockDomainFromAccountService.new }
|
||||||
|
|
||||||
let!(:wolf) { Fabricate(:account, username: 'wolf', domain: 'evil.org', inbox_url: 'https://evil.org/inbox', protocol: :activitypub) }
|
let!(:wolf) { Fabricate(:account, username: 'wolf', domain: 'evil.org', inbox_url: 'https://evil.org/inbox', protocol: :activitypub) }
|
||||||
let!(:alice) { Fabricate(:account, username: 'alice') }
|
let!(:alice) { Fabricate(:account, username: 'alice') }
|
||||||
|
|
||||||
subject { AfterBlockDomainFromAccountService.new }
|
|
||||||
|
|
||||||
before do
|
before do
|
||||||
stub_jsonld_contexts!
|
stub_jsonld_contexts!
|
||||||
allow(ActivityPub::DeliveryWorker).to receive(:perform_async)
|
allow(ActivityPub::DeliveryWorker).to receive(:perform_async)
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe AppSignUpService, type: :service do
|
RSpec.describe AppSignUpService, type: :service do
|
||||||
|
subject { described_class.new }
|
||||||
|
|
||||||
let(:app) { Fabricate(:application, scopes: 'read write') }
|
let(:app) { Fabricate(:application, scopes: 'read write') }
|
||||||
let(:good_params) { { username: 'alice', password: '12345678', email: 'good@email.com', agreement: true } }
|
let(:good_params) { { username: 'alice', password: '12345678', email: 'good@email.com', agreement: true } }
|
||||||
let(:remote_ip) { IPAddr.new('198.0.2.1') }
|
let(:remote_ip) { IPAddr.new('198.0.2.1') }
|
||||||
|
|
||||||
subject { described_class.new }
|
|
||||||
|
|
||||||
describe '#call' do
|
describe '#call' do
|
||||||
it 'returns nil when registrations are closed' do
|
it 'returns nil when registrations are closed' do
|
||||||
tmp = Setting.registrations_mode
|
tmp = Setting.registrations_mode
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe AuthorizeFollowService, type: :service do
|
RSpec.describe AuthorizeFollowService, type: :service do
|
||||||
let(:sender) { Fabricate(:account, username: 'alice') }
|
|
||||||
|
|
||||||
subject { AuthorizeFollowService.new }
|
subject { AuthorizeFollowService.new }
|
||||||
|
|
||||||
|
let(:sender) { Fabricate(:account, username: 'alice') }
|
||||||
|
|
||||||
describe 'local' do
|
describe 'local' do
|
||||||
let(:bob) { Fabricate(:account, username: 'bob') }
|
let(:bob) { Fabricate(:account, username: 'bob') }
|
||||||
|
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe BlockDomainService, type: :service do
|
RSpec.describe BlockDomainService, type: :service do
|
||||||
|
subject { BlockDomainService.new }
|
||||||
|
|
||||||
let!(:bad_account) { Fabricate(:account, username: 'badguy666', domain: 'evil.org') }
|
let!(:bad_account) { Fabricate(:account, username: 'badguy666', domain: 'evil.org') }
|
||||||
let!(:bad_status1) { Fabricate(:status, account: bad_account, text: 'You suck') }
|
let!(:bad_status1) { Fabricate(:status, account: bad_account, text: 'You suck') }
|
||||||
let!(:bad_status2) { Fabricate(:status, account: bad_account, text: 'Hahaha') }
|
let!(:bad_status2) { Fabricate(:status, account: bad_account, text: 'Hahaha') }
|
||||||
let!(:bad_attachment) { Fabricate(:media_attachment, account: bad_account, status: bad_status2, file: attachment_fixture('attachment.jpg')) }
|
let!(:bad_attachment) { Fabricate(:media_attachment, account: bad_account, status: bad_status2, file: attachment_fixture('attachment.jpg')) }
|
||||||
let!(:already_banned_account) { Fabricate(:account, username: 'badguy', domain: 'evil.org', suspended: true, silenced: true) }
|
let!(:already_banned_account) { Fabricate(:account, username: 'badguy', domain: 'evil.org', suspended: true, silenced: true) }
|
||||||
|
|
||||||
subject { BlockDomainService.new }
|
|
||||||
|
|
||||||
describe 'for a suspension' do
|
describe 'for a suspension' do
|
||||||
before do
|
before do
|
||||||
subject.call(DomainBlock.create!(domain: 'evil.org', severity: :suspend))
|
subject.call(DomainBlock.create!(domain: 'evil.org', severity: :suspend))
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe BlockService, type: :service do
|
RSpec.describe BlockService, type: :service do
|
||||||
let(:sender) { Fabricate(:account, username: 'alice') }
|
|
||||||
|
|
||||||
subject { BlockService.new }
|
subject { BlockService.new }
|
||||||
|
|
||||||
|
let(:sender) { Fabricate(:account, username: 'alice') }
|
||||||
|
|
||||||
describe 'local' do
|
describe 'local' do
|
||||||
let(:bob) { Fabricate(:account, username: 'bob') }
|
let(:bob) { Fabricate(:account, username: 'bob') }
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe ClearDomainMediaService, type: :service do
|
RSpec.describe ClearDomainMediaService, type: :service do
|
||||||
|
subject { ClearDomainMediaService.new }
|
||||||
|
|
||||||
let!(:bad_account) { Fabricate(:account, username: 'badguy666', domain: 'evil.org') }
|
let!(:bad_account) { Fabricate(:account, username: 'badguy666', domain: 'evil.org') }
|
||||||
let!(:bad_status1) { Fabricate(:status, account: bad_account, text: 'You suck') }
|
let!(:bad_status1) { Fabricate(:status, account: bad_account, text: 'You suck') }
|
||||||
let!(:bad_status2) { Fabricate(:status, account: bad_account, text: 'Hahaha') }
|
let!(:bad_status2) { Fabricate(:status, account: bad_account, text: 'Hahaha') }
|
||||||
let!(:bad_attachment) { Fabricate(:media_attachment, account: bad_account, status: bad_status2, file: attachment_fixture('attachment.jpg')) }
|
let!(:bad_attachment) { Fabricate(:media_attachment, account: bad_account, status: bad_status2, file: attachment_fixture('attachment.jpg')) }
|
||||||
|
|
||||||
subject { ClearDomainMediaService.new }
|
|
||||||
|
|
||||||
describe 'for a silence with reject media' do
|
describe 'for a silence with reject media' do
|
||||||
before do
|
before do
|
||||||
subject.call(DomainBlock.create!(domain: 'evil.org', severity: :silence, reject_media: true))
|
subject.call(DomainBlock.create!(domain: 'evil.org', severity: :silence, reject_media: true))
|
||||||
|
|
|
@ -2,6 +2,8 @@ require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe DeleteAccountService, type: :service do
|
RSpec.describe DeleteAccountService, type: :service do
|
||||||
shared_examples 'common behavior' do
|
shared_examples 'common behavior' do
|
||||||
|
subject { described_class.new.call(account) }
|
||||||
|
|
||||||
let!(:status) { Fabricate(:status, account: account) }
|
let!(:status) { Fabricate(:status, account: account) }
|
||||||
let!(:mention) { Fabricate(:mention, account: local_follower) }
|
let!(:mention) { Fabricate(:mention, account: local_follower) }
|
||||||
let!(:status_with_mention) { Fabricate(:status, account: account, mentions: [mention]) }
|
let!(:status_with_mention) { Fabricate(:status, account: account, mentions: [mention]) }
|
||||||
|
@ -23,8 +25,6 @@ RSpec.describe DeleteAccountService, type: :service do
|
||||||
|
|
||||||
let!(:account_note) { Fabricate(:account_note, account: account) }
|
let!(:account_note) { Fabricate(:account_note, account: account) }
|
||||||
|
|
||||||
subject { described_class.new.call(account) }
|
|
||||||
|
|
||||||
it 'deletes associated owned records' do
|
it 'deletes associated owned records' do
|
||||||
expect { subject }.to change {
|
expect { subject }.to change {
|
||||||
[
|
[
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe FanOutOnWriteService, type: :service do
|
RSpec.describe FanOutOnWriteService, type: :service do
|
||||||
|
subject { described_class.new }
|
||||||
|
|
||||||
let(:last_active_at) { Time.now.utc }
|
let(:last_active_at) { Time.now.utc }
|
||||||
let(:status) { Fabricate(:status, account: alice, visibility: visibility, text: 'Hello @bob #hoge') }
|
let(:status) { Fabricate(:status, account: alice, visibility: visibility, text: 'Hello @bob #hoge') }
|
||||||
|
|
||||||
|
@ -8,8 +10,6 @@ RSpec.describe FanOutOnWriteService, type: :service do
|
||||||
let!(:bob) { Fabricate(:user, current_sign_in_at: last_active_at, account_attributes: { username: 'bob' }).account }
|
let!(:bob) { Fabricate(:user, current_sign_in_at: last_active_at, account_attributes: { username: 'bob' }).account }
|
||||||
let!(:tom) { Fabricate(:user, current_sign_in_at: last_active_at).account }
|
let!(:tom) { Fabricate(:user, current_sign_in_at: last_active_at).account }
|
||||||
|
|
||||||
subject { described_class.new }
|
|
||||||
|
|
||||||
before do
|
before do
|
||||||
bob.follow!(alice)
|
bob.follow!(alice)
|
||||||
tom.follow!(alice)
|
tom.follow!(alice)
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe FavouriteService, type: :service do
|
RSpec.describe FavouriteService, type: :service do
|
||||||
let(:sender) { Fabricate(:account, username: 'alice') }
|
|
||||||
|
|
||||||
subject { FavouriteService.new }
|
subject { FavouriteService.new }
|
||||||
|
|
||||||
|
let(:sender) { Fabricate(:account, username: 'alice') }
|
||||||
|
|
||||||
describe 'local' do
|
describe 'local' do
|
||||||
let(:bob) { Fabricate(:account) }
|
let(:bob) { Fabricate(:account) }
|
||||||
let(:status) { Fabricate(:status, account: bob) }
|
let(:status) { Fabricate(:status, account: bob) }
|
||||||
|
|
|
@ -2,10 +2,10 @@ require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe FetchResourceService, type: :service do
|
RSpec.describe FetchResourceService, type: :service do
|
||||||
describe '#call' do
|
describe '#call' do
|
||||||
let(:url) { 'http://example.com' }
|
|
||||||
|
|
||||||
subject { described_class.new.call(url) }
|
subject { described_class.new.call(url) }
|
||||||
|
|
||||||
|
let(:url) { 'http://example.com' }
|
||||||
|
|
||||||
context 'with blank url' do
|
context 'with blank url' do
|
||||||
let(:url) { '' }
|
let(:url) { '' }
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe FollowService, type: :service do
|
RSpec.describe FollowService, type: :service do
|
||||||
let(:sender) { Fabricate(:account, username: 'alice') }
|
|
||||||
|
|
||||||
subject { FollowService.new }
|
subject { FollowService.new }
|
||||||
|
|
||||||
|
let(:sender) { Fabricate(:account, username: 'alice') }
|
||||||
|
|
||||||
context 'local account' do
|
context 'local account' do
|
||||||
describe 'locked account' do
|
describe 'locked account' do
|
||||||
let(:bob) { Fabricate(:account, locked: true, username: 'bob') }
|
let(:bob) { Fabricate(:account, locked: true, username: 'bob') }
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe ProcessMentionsService, type: :service do
|
RSpec.describe ProcessMentionsService, type: :service do
|
||||||
let(:account) { Fabricate(:account, username: 'alice') }
|
|
||||||
|
|
||||||
subject { ProcessMentionsService.new }
|
subject { ProcessMentionsService.new }
|
||||||
|
|
||||||
|
let(:account) { Fabricate(:account, username: 'alice') }
|
||||||
|
|
||||||
context 'when mentions contain blocked accounts' do
|
context 'when mentions contain blocked accounts' do
|
||||||
let(:non_blocked_account) { Fabricate(:account) }
|
let(:non_blocked_account) { Fabricate(:account) }
|
||||||
let(:individually_blocked_account) { Fabricate(:account) }
|
let(:individually_blocked_account) { Fabricate(:account) }
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe PurgeDomainService, type: :service do
|
RSpec.describe PurgeDomainService, type: :service do
|
||||||
|
subject { PurgeDomainService.new }
|
||||||
|
|
||||||
let!(:old_account) { Fabricate(:account, domain: 'obsolete.org') }
|
let!(:old_account) { Fabricate(:account, domain: 'obsolete.org') }
|
||||||
let!(:old_status1) { Fabricate(:status, account: old_account) }
|
let!(:old_status1) { Fabricate(:status, account: old_account) }
|
||||||
let!(:old_status2) { Fabricate(:status, account: old_account) }
|
let!(:old_status2) { Fabricate(:status, account: old_account) }
|
||||||
let!(:old_attachment) { Fabricate(:media_attachment, account: old_account, status: old_status2, file: attachment_fixture('attachment.jpg')) }
|
let!(:old_attachment) { Fabricate(:media_attachment, account: old_account, status: old_status2, file: attachment_fixture('attachment.jpg')) }
|
||||||
|
|
||||||
subject { PurgeDomainService.new }
|
|
||||||
|
|
||||||
describe 'for a suspension' do
|
describe 'for a suspension' do
|
||||||
before do
|
before do
|
||||||
subject.call('obsolete.org')
|
subject.call('obsolete.org')
|
||||||
|
|
|
@ -4,12 +4,12 @@ RSpec.describe ReblogService, type: :service do
|
||||||
let(:alice) { Fabricate(:account, username: 'alice') }
|
let(:alice) { Fabricate(:account, username: 'alice') }
|
||||||
|
|
||||||
context 'creates a reblog with appropriate visibility' do
|
context 'creates a reblog with appropriate visibility' do
|
||||||
|
subject { ReblogService.new }
|
||||||
|
|
||||||
let(:visibility) { :public }
|
let(:visibility) { :public }
|
||||||
let(:reblog_visibility) { :public }
|
let(:reblog_visibility) { :public }
|
||||||
let(:status) { Fabricate(:status, account: alice, visibility: visibility) }
|
let(:status) { Fabricate(:status, account: alice, visibility: visibility) }
|
||||||
|
|
||||||
subject { ReblogService.new }
|
|
||||||
|
|
||||||
before do
|
before do
|
||||||
subject.call(alice, status, visibility: reblog_visibility)
|
subject.call(alice, status, visibility: reblog_visibility)
|
||||||
end
|
end
|
||||||
|
@ -45,11 +45,11 @@ RSpec.describe ReblogService, type: :service do
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'ActivityPub' do
|
context 'ActivityPub' do
|
||||||
|
subject { ReblogService.new }
|
||||||
|
|
||||||
let(:bob) { Fabricate(:account, username: 'bob', protocol: :activitypub, domain: 'example.com', inbox_url: 'http://example.com/inbox') }
|
let(:bob) { Fabricate(:account, username: 'bob', protocol: :activitypub, domain: 'example.com', inbox_url: 'http://example.com/inbox') }
|
||||||
let(:status) { Fabricate(:status, account: bob) }
|
let(:status) { Fabricate(:status, account: bob) }
|
||||||
|
|
||||||
subject { ReblogService.new }
|
|
||||||
|
|
||||||
before do
|
before do
|
||||||
stub_request(:post, bob.inbox_url)
|
stub_request(:post, bob.inbox_url)
|
||||||
allow(ActivityPub::DistributionWorker).to receive(:perform_async)
|
allow(ActivityPub::DistributionWorker).to receive(:perform_async)
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe RejectFollowService, type: :service do
|
RSpec.describe RejectFollowService, type: :service do
|
||||||
let(:sender) { Fabricate(:account, username: 'alice') }
|
|
||||||
|
|
||||||
subject { RejectFollowService.new }
|
subject { RejectFollowService.new }
|
||||||
|
|
||||||
|
let(:sender) { Fabricate(:account, username: 'alice') }
|
||||||
|
|
||||||
describe 'local' do
|
describe 'local' do
|
||||||
let(:bob) { Fabricate(:account) }
|
let(:bob) { Fabricate(:account) }
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe RemoveFromFollowersService, type: :service do
|
RSpec.describe RemoveFromFollowersService, type: :service do
|
||||||
let(:bob) { Fabricate(:account, username: 'bob') }
|
|
||||||
|
|
||||||
subject { RemoveFromFollowersService.new }
|
subject { RemoveFromFollowersService.new }
|
||||||
|
|
||||||
|
let(:bob) { Fabricate(:account, username: 'bob') }
|
||||||
|
|
||||||
describe 'local' do
|
describe 'local' do
|
||||||
let(:sender) { Fabricate(:account, username: 'alice') }
|
let(:sender) { Fabricate(:account, username: 'alice') }
|
||||||
|
|
||||||
|
|
|
@ -29,13 +29,13 @@ RSpec.describe ReportService, type: :service do
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when the reported status is a DM' do
|
context 'when the reported status is a DM' do
|
||||||
let(:target_account) { Fabricate(:account) }
|
|
||||||
let(:status) { Fabricate(:status, account: target_account, visibility: :direct) }
|
|
||||||
|
|
||||||
subject do
|
subject do
|
||||||
-> { described_class.new.call(source_account, target_account, status_ids: [status.id]) }
|
-> { described_class.new.call(source_account, target_account, status_ids: [status.id]) }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
let(:target_account) { Fabricate(:account) }
|
||||||
|
let(:status) { Fabricate(:status, account: target_account, visibility: :direct) }
|
||||||
|
|
||||||
context 'when it is addressed to the reporter' do
|
context 'when it is addressed to the reporter' do
|
||||||
before do
|
before do
|
||||||
status.mentions.create(account: source_account)
|
status.mentions.create(account: source_account)
|
||||||
|
@ -85,13 +85,13 @@ RSpec.describe ReportService, type: :service do
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when other reports already exist for the same target' do
|
context 'when other reports already exist for the same target' do
|
||||||
let!(:target_account) { Fabricate(:account) }
|
|
||||||
let!(:other_report) { Fabricate(:report, target_account: target_account) }
|
|
||||||
|
|
||||||
subject do
|
subject do
|
||||||
-> { described_class.new.call(source_account, target_account) }
|
-> { described_class.new.call(source_account, target_account) }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
let!(:target_account) { Fabricate(:account) }
|
||||||
|
let!(:other_report) { Fabricate(:report, target_account: target_account) }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
ActionMailer::Base.deliveries.clear
|
ActionMailer::Base.deliveries.clear
|
||||||
source_account.user.settings.notification_emails['report'] = true
|
source_account.user.settings.notification_emails['report'] = true
|
||||||
|
|
|
@ -2,11 +2,11 @@ require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe SuspendAccountService, type: :service do
|
RSpec.describe SuspendAccountService, type: :service do
|
||||||
shared_examples 'common behavior' do
|
shared_examples 'common behavior' do
|
||||||
|
subject { described_class.new.call(account) }
|
||||||
|
|
||||||
let!(:local_follower) { Fabricate(:user, current_sign_in_at: 1.hour.ago).account }
|
let!(:local_follower) { Fabricate(:user, current_sign_in_at: 1.hour.ago).account }
|
||||||
let!(:list) { Fabricate(:list, account: local_follower) }
|
let!(:list) { Fabricate(:list, account: local_follower) }
|
||||||
|
|
||||||
subject { described_class.new.call(account) }
|
|
||||||
|
|
||||||
before do
|
before do
|
||||||
allow(FeedManager.instance).to receive(:unmerge_from_home).and_return(nil)
|
allow(FeedManager.instance).to receive(:unmerge_from_home).and_return(nil)
|
||||||
allow(FeedManager.instance).to receive(:unmerge_from_list).and_return(nil)
|
allow(FeedManager.instance).to receive(:unmerge_from_list).and_return(nil)
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe UnallowDomainService, type: :service do
|
RSpec.describe UnallowDomainService, type: :service do
|
||||||
|
subject { UnallowDomainService.new }
|
||||||
|
|
||||||
let!(:bad_account) { Fabricate(:account, username: 'badguy666', domain: 'evil.org') }
|
let!(:bad_account) { Fabricate(:account, username: 'badguy666', domain: 'evil.org') }
|
||||||
let!(:bad_status1) { Fabricate(:status, account: bad_account, text: 'You suck') }
|
let!(:bad_status1) { Fabricate(:status, account: bad_account, text: 'You suck') }
|
||||||
let!(:bad_status2) { Fabricate(:status, account: bad_account, text: 'Hahaha') }
|
let!(:bad_status2) { Fabricate(:status, account: bad_account, text: 'Hahaha') }
|
||||||
|
@ -8,8 +10,6 @@ RSpec.describe UnallowDomainService, type: :service do
|
||||||
let!(:already_banned_account) { Fabricate(:account, username: 'badguy', domain: 'evil.org', suspended: true, silenced: true) }
|
let!(:already_banned_account) { Fabricate(:account, username: 'badguy', domain: 'evil.org', suspended: true, silenced: true) }
|
||||||
let!(:domain_allow) { Fabricate(:domain_allow, domain: 'evil.org') }
|
let!(:domain_allow) { Fabricate(:domain_allow, domain: 'evil.org') }
|
||||||
|
|
||||||
subject { UnallowDomainService.new }
|
|
||||||
|
|
||||||
context 'in limited federation mode' do
|
context 'in limited federation mode' do
|
||||||
before do
|
before do
|
||||||
allow(subject).to receive(:whitelist_mode?).and_return(true)
|
allow(subject).to receive(:whitelist_mode?).and_return(true)
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe UnblockService, type: :service do
|
RSpec.describe UnblockService, type: :service do
|
||||||
let(:sender) { Fabricate(:account, username: 'alice') }
|
|
||||||
|
|
||||||
subject { UnblockService.new }
|
subject { UnblockService.new }
|
||||||
|
|
||||||
|
let(:sender) { Fabricate(:account, username: 'alice') }
|
||||||
|
|
||||||
describe 'local' do
|
describe 'local' do
|
||||||
let(:bob) { Fabricate(:account) }
|
let(:bob) { Fabricate(:account) }
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe UnfollowService, type: :service do
|
RSpec.describe UnfollowService, type: :service do
|
||||||
let(:sender) { Fabricate(:account, username: 'alice') }
|
|
||||||
|
|
||||||
subject { UnfollowService.new }
|
subject { UnfollowService.new }
|
||||||
|
|
||||||
|
let(:sender) { Fabricate(:account, username: 'alice') }
|
||||||
|
|
||||||
describe 'local' do
|
describe 'local' do
|
||||||
let(:bob) { Fabricate(:account, username: 'bob') }
|
let(:bob) { Fabricate(:account, username: 'bob') }
|
||||||
|
|
||||||
|
|
|
@ -2,11 +2,11 @@ require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe UnsuspendAccountService, type: :service do
|
RSpec.describe UnsuspendAccountService, type: :service do
|
||||||
shared_examples 'common behavior' do
|
shared_examples 'common behavior' do
|
||||||
|
subject { described_class.new.call(account) }
|
||||||
|
|
||||||
let!(:local_follower) { Fabricate(:user, current_sign_in_at: 1.hour.ago).account }
|
let!(:local_follower) { Fabricate(:user, current_sign_in_at: 1.hour.ago).account }
|
||||||
let!(:list) { Fabricate(:list, account: local_follower) }
|
let!(:list) { Fabricate(:list, account: local_follower) }
|
||||||
|
|
||||||
subject { described_class.new.call(account) }
|
|
||||||
|
|
||||||
before do
|
before do
|
||||||
allow(FeedManager.instance).to receive(:merge_into_home).and_return(nil)
|
allow(FeedManager.instance).to receive(:merge_into_home).and_return(nil)
|
||||||
allow(FeedManager.instance).to receive(:merge_into_list).and_return(nil)
|
allow(FeedManager.instance).to receive(:merge_into_list).and_return(nil)
|
||||||
|
|
|
@ -4,6 +4,8 @@ require 'rails_helper'
|
||||||
|
|
||||||
RSpec.describe BlacklistedEmailValidator, type: :validator do
|
RSpec.describe BlacklistedEmailValidator, type: :validator do
|
||||||
describe '#validate' do
|
describe '#validate' do
|
||||||
|
subject { described_class.new.validate(user); errors }
|
||||||
|
|
||||||
let(:user) { double(email: 'info@mail.com', sign_up_ip: '1.2.3.4', errors: errors) }
|
let(:user) { double(email: 'info@mail.com', sign_up_ip: '1.2.3.4', errors: errors) }
|
||||||
let(:errors) { double(add: nil) }
|
let(:errors) { double(add: nil) }
|
||||||
|
|
||||||
|
@ -12,8 +14,6 @@ RSpec.describe BlacklistedEmailValidator, type: :validator do
|
||||||
allow_any_instance_of(described_class).to receive(:blocked_email_provider?) { blocked_email }
|
allow_any_instance_of(described_class).to receive(:blocked_email_provider?) { blocked_email }
|
||||||
end
|
end
|
||||||
|
|
||||||
subject { described_class.new.validate(user); errors }
|
|
||||||
|
|
||||||
context 'when e-mail provider is blocked' do
|
context 'when e-mail provider is blocked' do
|
||||||
let(:blocked_email) { true }
|
let(:blocked_email) { true }
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,8 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
describe MoveWorker do
|
describe MoveWorker do
|
||||||
|
subject { described_class.new }
|
||||||
|
|
||||||
let(:local_follower) { Fabricate(:account) }
|
let(:local_follower) { Fabricate(:account) }
|
||||||
let(:blocking_account) { Fabricate(:account) }
|
let(:blocking_account) { Fabricate(:account) }
|
||||||
let(:muting_account) { Fabricate(:account) }
|
let(:muting_account) { Fabricate(:account) }
|
||||||
|
@ -14,8 +16,6 @@ describe MoveWorker do
|
||||||
|
|
||||||
let(:block_service) { double }
|
let(:block_service) { double }
|
||||||
|
|
||||||
subject { described_class.new }
|
|
||||||
|
|
||||||
before do
|
before do
|
||||||
local_follower.follow!(source_account)
|
local_follower.follow!(source_account)
|
||||||
blocking_account.block!(source_account)
|
blocking_account.block!(source_account)
|
||||||
|
|
|
@ -3,13 +3,13 @@
|
||||||
require 'rails_helper'
|
require 'rails_helper'
|
||||||
|
|
||||||
describe UnfollowFollowWorker do
|
describe UnfollowFollowWorker do
|
||||||
|
subject { described_class.new }
|
||||||
|
|
||||||
let(:local_follower) { Fabricate(:account) }
|
let(:local_follower) { Fabricate(:account) }
|
||||||
let(:source_account) { Fabricate(:account) }
|
let(:source_account) { Fabricate(:account) }
|
||||||
let(:target_account) { Fabricate(:account) }
|
let(:target_account) { Fabricate(:account) }
|
||||||
let(:show_reblogs) { true }
|
let(:show_reblogs) { true }
|
||||||
|
|
||||||
subject { described_class.new }
|
|
||||||
|
|
||||||
before do
|
before do
|
||||||
local_follower.follow!(source_account, reblogs: show_reblogs)
|
local_follower.follow!(source_account, reblogs: show_reblogs)
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue