Merge remote-tracking branch 'parent/main' into upstream-20240109
This commit is contained in:
commit
d35fa72842
333 changed files with 4444 additions and 2541 deletions
|
@ -5,7 +5,7 @@ require 'rails_helper'
|
|||
RSpec.describe Admin::AccountActionsController do
|
||||
render_views
|
||||
|
||||
let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
|
||||
let(:user) { Fabricate(:admin_user) }
|
||||
|
||||
before do
|
||||
sign_in user, scope: :user
|
||||
|
|
|
@ -8,7 +8,7 @@ RSpec.describe Admin::AccountsController do
|
|||
before { sign_in current_user, scope: :user }
|
||||
|
||||
describe 'GET #index' do
|
||||
let(:current_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
|
||||
let(:current_user) { Fabricate(:admin_user) }
|
||||
let(:params) do
|
||||
{
|
||||
origin: 'local',
|
||||
|
@ -53,7 +53,7 @@ RSpec.describe Admin::AccountsController do
|
|||
end
|
||||
|
||||
describe 'GET #show' do
|
||||
let(:current_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
|
||||
let(:current_user) { Fabricate(:admin_user) }
|
||||
|
||||
describe 'account moderation notes' do
|
||||
let(:account) { Fabricate(:account) }
|
||||
|
|
|
@ -16,7 +16,7 @@ RSpec.describe Admin::ActionLogsController do
|
|||
|
||||
describe 'GET #index' do
|
||||
it 'returns 200' do
|
||||
sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin'))
|
||||
sign_in Fabricate(:admin_user)
|
||||
get :index, params: { page: 1 }
|
||||
|
||||
expect(response).to have_http_status(200)
|
||||
|
|
|
@ -20,7 +20,7 @@ RSpec.describe Admin::BaseController do
|
|||
|
||||
it 'returns private cache control headers' do
|
||||
routes.draw { get 'success' => 'admin/base#success' }
|
||||
sign_in(Fabricate(:user, role: UserRole.find_by(name: 'Moderator')))
|
||||
sign_in(Fabricate(:moderator_user))
|
||||
get :success
|
||||
|
||||
expect(response.headers['Cache-Control']).to include('private, no-store')
|
||||
|
@ -28,14 +28,14 @@ RSpec.describe Admin::BaseController do
|
|||
|
||||
it 'renders admin layout as a moderator' do
|
||||
routes.draw { get 'success' => 'admin/base#success' }
|
||||
sign_in(Fabricate(:user, role: UserRole.find_by(name: 'Moderator')))
|
||||
sign_in(Fabricate(:moderator_user))
|
||||
get :success
|
||||
expect(response).to render_template layout: 'admin'
|
||||
end
|
||||
|
||||
it 'renders admin layout as an admin' do
|
||||
routes.draw { get 'success' => 'admin/base#success' }
|
||||
sign_in(Fabricate(:user, role: UserRole.find_by(name: 'Admin')))
|
||||
sign_in(Fabricate(:admin_user))
|
||||
get :success
|
||||
expect(response).to render_template layout: 'admin'
|
||||
end
|
||||
|
|
|
@ -5,7 +5,7 @@ require 'rails_helper'
|
|||
RSpec.describe Admin::ChangeEmailsController do
|
||||
render_views
|
||||
|
||||
let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
|
||||
let(:admin) { Fabricate(:admin_user) }
|
||||
|
||||
before do
|
||||
sign_in admin
|
||||
|
|
|
@ -6,7 +6,7 @@ RSpec.describe Admin::ConfirmationsController do
|
|||
render_views
|
||||
|
||||
before do
|
||||
sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')), scope: :user
|
||||
sign_in Fabricate(:admin_user), scope: :user
|
||||
end
|
||||
|
||||
describe 'POST #create' do
|
||||
|
|
|
@ -6,7 +6,7 @@ RSpec.describe Admin::DashboardController do
|
|||
render_views
|
||||
|
||||
describe 'GET #index' do
|
||||
let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Owner')) }
|
||||
let(:user) { Fabricate(:owner_user) }
|
||||
|
||||
before do
|
||||
stub_system_checks
|
||||
|
|
|
@ -16,7 +16,7 @@ RSpec.describe Admin::Disputes::AppealsController do
|
|||
let(:appeal) { Fabricate(:appeal, strike: strike, account: target_account) }
|
||||
|
||||
describe 'GET #index' do
|
||||
let(:current_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
|
||||
let(:current_user) { Fabricate(:admin_user) }
|
||||
|
||||
before { appeal }
|
||||
|
||||
|
@ -32,7 +32,7 @@ RSpec.describe Admin::Disputes::AppealsController do
|
|||
describe 'POST #approve' do
|
||||
subject { post :approve, params: { id: appeal.id } }
|
||||
|
||||
let(:current_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
|
||||
let(:current_user) { Fabricate(:admin_user) }
|
||||
|
||||
it 'redirects back to the strike page and notifies target account about approved appeal', :inline_jobs do
|
||||
emails = capture_emails { subject }
|
||||
|
@ -56,7 +56,7 @@ RSpec.describe Admin::Disputes::AppealsController do
|
|||
describe 'POST #reject' do
|
||||
subject { post :reject, params: { id: appeal.id } }
|
||||
|
||||
let(:current_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
|
||||
let(:current_user) { Fabricate(:admin_user) }
|
||||
|
||||
it 'redirects back to the strike page and notifies target account about rejected appeal', :inline_jobs do
|
||||
emails = capture_emails { subject }
|
||||
|
|
|
@ -6,7 +6,7 @@ RSpec.describe Admin::DomainBlocksController do
|
|||
render_views
|
||||
|
||||
before do
|
||||
sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')), scope: :user
|
||||
sign_in Fabricate(:admin_user), scope: :user
|
||||
end
|
||||
|
||||
describe 'GET #new' do
|
||||
|
|
|
@ -6,7 +6,7 @@ RSpec.describe Admin::EmailDomainBlocksController do
|
|||
render_views
|
||||
|
||||
before do
|
||||
sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')), scope: :user
|
||||
sign_in Fabricate(:admin_user), scope: :user
|
||||
end
|
||||
|
||||
describe 'GET #index' do
|
||||
|
|
|
@ -6,7 +6,7 @@ RSpec.describe Admin::ExportDomainAllowsController do
|
|||
render_views
|
||||
|
||||
before do
|
||||
sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')), scope: :user
|
||||
sign_in Fabricate(:admin_user), scope: :user
|
||||
end
|
||||
|
||||
describe 'GET #new' do
|
||||
|
|
|
@ -6,7 +6,7 @@ RSpec.describe Admin::ExportDomainBlocksController do
|
|||
render_views
|
||||
|
||||
before do
|
||||
sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')), scope: :user
|
||||
sign_in Fabricate(:admin_user), scope: :user
|
||||
end
|
||||
|
||||
describe 'GET #new' do
|
||||
|
|
|
@ -5,7 +5,7 @@ require 'rails_helper'
|
|||
RSpec.describe Admin::FollowRecommendationsController do
|
||||
render_views
|
||||
|
||||
let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
|
||||
let(:user) { Fabricate(:admin_user) }
|
||||
|
||||
before do
|
||||
sign_in user, scope: :user
|
||||
|
|
|
@ -5,7 +5,7 @@ require 'rails_helper'
|
|||
RSpec.describe Admin::InstancesController do
|
||||
render_views
|
||||
|
||||
let(:current_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
|
||||
let(:current_user) { Fabricate(:admin_user) }
|
||||
|
||||
let!(:account_popular_main) { Fabricate(:account, domain: 'popular') }
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ require 'rails_helper'
|
|||
RSpec.describe Admin::RelationshipsController do
|
||||
render_views
|
||||
|
||||
let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
|
||||
let(:user) { Fabricate(:admin_user) }
|
||||
|
||||
before do
|
||||
sign_in user, scope: :user
|
||||
|
|
|
@ -1,100 +0,0 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe Admin::RelaysController do
|
||||
render_views
|
||||
|
||||
let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
|
||||
|
||||
before do
|
||||
sign_in user, scope: :user
|
||||
end
|
||||
|
||||
describe 'GET #index' do
|
||||
it 'returns http success' do
|
||||
get :index
|
||||
|
||||
expect(response).to have_http_status(:success)
|
||||
end
|
||||
end
|
||||
|
||||
describe 'GET #new' do
|
||||
it 'returns http success and renders view' do
|
||||
get :new
|
||||
|
||||
expect(response).to have_http_status(:success)
|
||||
expect(response).to render_template(:new)
|
||||
end
|
||||
end
|
||||
|
||||
describe 'POST #create' do
|
||||
context 'with valid data' do
|
||||
let(:inbox_url) { 'https://example.com/inbox' }
|
||||
|
||||
before do
|
||||
stub_request(:post, inbox_url).to_return(status: 200)
|
||||
end
|
||||
|
||||
it 'creates a new relay and redirects' do
|
||||
expect do
|
||||
post :create, params: { relay: { inbox_url: inbox_url } }
|
||||
end.to change(Relay, :count).by(1)
|
||||
|
||||
expect(response).to redirect_to(admin_relays_path)
|
||||
end
|
||||
end
|
||||
|
||||
context 'with invalid data' do
|
||||
it 'does not create new a relay and renders new' do
|
||||
expect do
|
||||
post :create, params: { relay: { inbox_url: 'invalid' } }
|
||||
end.to_not change(Relay, :count)
|
||||
|
||||
expect(response).to have_http_status(:success)
|
||||
expect(response).to render_template(:new)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'DELETE #destroy' do
|
||||
let(:relay) { Fabricate(:relay) }
|
||||
|
||||
it 'deletes an existing relay' do
|
||||
delete :destroy, params: { id: relay.id }
|
||||
|
||||
expect { relay.reload }.to raise_error(ActiveRecord::RecordNotFound)
|
||||
expect(response).to redirect_to(admin_relays_path)
|
||||
end
|
||||
end
|
||||
|
||||
describe 'POST #enable' do
|
||||
let(:relay) { Fabricate(:relay, state: :idle) }
|
||||
|
||||
before do
|
||||
stub_request(:post, /example.com/).to_return(status: 200)
|
||||
end
|
||||
|
||||
it 'updates a relay from idle to pending' do
|
||||
post :enable, params: { id: relay.id }
|
||||
|
||||
expect(relay.reload).to be_pending
|
||||
expect(response).to redirect_to(admin_relays_path)
|
||||
end
|
||||
end
|
||||
|
||||
describe 'POST #disable' do
|
||||
let(:relay) { Fabricate(:relay, state: :pending) }
|
||||
|
||||
before do
|
||||
stub_request(:post, /example.com/).to_return(status: 200)
|
||||
end
|
||||
|
||||
it 'updates a relay from pending to idle' do
|
||||
post :disable, params: { id: relay.id }
|
||||
|
||||
expect(relay.reload).to be_idle
|
||||
expect(response).to redirect_to(admin_relays_path)
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,104 +0,0 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe Admin::ReportNotesController do
|
||||
render_views
|
||||
|
||||
let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
|
||||
|
||||
before do
|
||||
sign_in user, scope: :user
|
||||
end
|
||||
|
||||
describe 'POST #create' do
|
||||
subject { post :create, params: params }
|
||||
|
||||
let(:report) { Fabricate(:report, action_taken_at: action_taken, action_taken_by_account_id: account_id) }
|
||||
|
||||
context 'when parameter is valid' do
|
||||
context 'when report is unsolved' do
|
||||
let(:action_taken) { nil }
|
||||
let(:account_id) { nil }
|
||||
|
||||
context 'when create_and_resolve flag is on' do
|
||||
let(:params) { { report_note: { report_id: report.id, content: 'test content' }, create_and_resolve: nil } }
|
||||
|
||||
it 'creates a report note and resolves report' do
|
||||
expect { subject }.to change(ReportNote, :count).by(1)
|
||||
expect(report.reload).to be_action_taken
|
||||
expect(response).to redirect_to admin_reports_path
|
||||
end
|
||||
end
|
||||
|
||||
context 'when create_and_resolve flag is false' do
|
||||
let(:params) { { report_note: { report_id: report.id, content: 'test content' } } }
|
||||
|
||||
it 'creates a report note and does not resolve report' do
|
||||
expect { subject }.to change(ReportNote, :count).by(1)
|
||||
expect(report.reload).to_not be_action_taken
|
||||
expect(response).to redirect_to admin_report_path(report)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'when report is resolved' do
|
||||
let(:action_taken) { Time.now.utc }
|
||||
let(:account_id) { user.account.id }
|
||||
|
||||
context 'when create_and_unresolve flag is on' do
|
||||
let(:params) { { report_note: { report_id: report.id, content: 'test content' }, create_and_unresolve: nil } }
|
||||
|
||||
it 'creates a report note and unresolves report' do
|
||||
expect { subject }.to change(ReportNote, :count).by(1)
|
||||
expect(report.reload).to_not be_action_taken
|
||||
expect(response).to redirect_to admin_report_path(report)
|
||||
end
|
||||
end
|
||||
|
||||
context 'when create_and_unresolve flag is false' do
|
||||
let(:params) { { report_note: { report_id: report.id, content: 'test content' } } }
|
||||
|
||||
it 'creates a report note and does not unresolve report' do
|
||||
expect { subject }.to change(ReportNote, :count).by(1)
|
||||
expect(report.reload).to be_action_taken
|
||||
expect(response).to redirect_to admin_report_path(report)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'when content is too short' do
|
||||
let(:params) { { report_note: { report_id: report.id, content: '' } } }
|
||||
let(:action_taken) { nil }
|
||||
let(:account_id) { nil }
|
||||
|
||||
it 'renders admin/reports/show' do
|
||||
expect { subject }.to_not change(ReportNote, :count)
|
||||
expect(subject).to render_template 'admin/reports/show'
|
||||
end
|
||||
end
|
||||
|
||||
context 'when content is too long' do
|
||||
let(:params) { { report_note: { report_id: report.id, content: 'test' * ReportNote::CONTENT_SIZE_LIMIT } } }
|
||||
let(:action_taken) { nil }
|
||||
let(:account_id) { nil }
|
||||
|
||||
it 'renders admin/reports/show' do
|
||||
expect { subject }.to_not change(ReportNote, :count)
|
||||
expect(subject).to render_template 'admin/reports/show'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'DELETE #destroy' do
|
||||
subject { delete :destroy, params: { id: report_note.id } }
|
||||
|
||||
let!(:report_note) { Fabricate(:report_note) }
|
||||
|
||||
it 'deletes note' do
|
||||
expect { subject }.to change(ReportNote, :count).by(-1)
|
||||
expect(response).to redirect_to admin_report_path(report_note.report)
|
||||
end
|
||||
end
|
||||
end
|
|
@ -5,7 +5,7 @@ require 'rails_helper'
|
|||
RSpec.describe Admin::Reports::ActionsController do
|
||||
render_views
|
||||
|
||||
let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
|
||||
let(:user) { Fabricate(:admin_user) }
|
||||
|
||||
before do
|
||||
sign_in user, scope: :user
|
||||
|
|
|
@ -5,7 +5,7 @@ require 'rails_helper'
|
|||
RSpec.describe Admin::ReportsController do
|
||||
render_views
|
||||
|
||||
let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
|
||||
let(:user) { Fabricate(:admin_user) }
|
||||
|
||||
before do
|
||||
sign_in user, scope: :user
|
||||
|
|
|
@ -1,85 +0,0 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe Admin::RulesController do
|
||||
render_views
|
||||
|
||||
let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
|
||||
|
||||
before do
|
||||
sign_in user, scope: :user
|
||||
end
|
||||
|
||||
describe 'GET #index' do
|
||||
it 'returns http success' do
|
||||
get :index
|
||||
|
||||
expect(response).to have_http_status(:success)
|
||||
end
|
||||
end
|
||||
|
||||
describe 'GET #edit' do
|
||||
let(:rule) { Fabricate(:rule) }
|
||||
|
||||
it 'returns http success and renders edit' do
|
||||
get :edit, params: { id: rule.id }
|
||||
|
||||
expect(response).to have_http_status(:success)
|
||||
expect(response).to render_template(:edit)
|
||||
end
|
||||
end
|
||||
|
||||
describe 'POST #create' do
|
||||
context 'with valid data' do
|
||||
it 'creates a new rule and redirects' do
|
||||
expect do
|
||||
post :create, params: { rule: { text: 'The rule text.' } }
|
||||
end.to change(Rule, :count).by(1)
|
||||
|
||||
expect(response).to redirect_to(admin_rules_path)
|
||||
end
|
||||
end
|
||||
|
||||
context 'with invalid data' do
|
||||
it 'does creates a new rule and renders index' do
|
||||
expect do
|
||||
post :create, params: { rule: { text: '' } }
|
||||
end.to_not change(Rule, :count)
|
||||
|
||||
expect(response).to render_template(:index)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'PUT #update' do
|
||||
let(:rule) { Fabricate(:rule, text: 'Original text') }
|
||||
|
||||
context 'with valid data' do
|
||||
it 'updates the rule and redirects' do
|
||||
put :update, params: { id: rule.id, rule: { text: 'Updated text.' } }
|
||||
|
||||
expect(response).to redirect_to(admin_rules_path)
|
||||
end
|
||||
end
|
||||
|
||||
context 'with invalid data' do
|
||||
it 'does not update the rule and renders index' do
|
||||
put :update, params: { id: rule.id, rule: { text: '' } }
|
||||
|
||||
expect(response).to render_template(:edit)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'DELETE #destroy' do
|
||||
let!(:rule) { Fabricate(:rule) }
|
||||
|
||||
it 'destroys the rule and redirects' do
|
||||
delete :destroy, params: { id: rule.id }
|
||||
|
||||
expect(rule.reload).to be_discarded
|
||||
expect(response).to redirect_to(admin_rules_path)
|
||||
end
|
||||
end
|
||||
end
|
|
@ -7,7 +7,7 @@ RSpec.describe Admin::Settings::BrandingController do
|
|||
|
||||
describe 'When signed in as an admin' do
|
||||
before do
|
||||
sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')), scope: :user
|
||||
sign_in Fabricate(:admin_user), scope: :user
|
||||
end
|
||||
|
||||
describe 'PUT #update' do
|
||||
|
|
|
@ -5,7 +5,7 @@ require 'rails_helper'
|
|||
RSpec.describe Admin::SiteUploadsController do
|
||||
render_views
|
||||
|
||||
let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
|
||||
let(:user) { Fabricate(:admin_user) }
|
||||
|
||||
before do
|
||||
sign_in user, scope: :user
|
||||
|
|
|
@ -5,7 +5,7 @@ require 'rails_helper'
|
|||
RSpec.describe Admin::StatusesController do
|
||||
render_views
|
||||
|
||||
let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
|
||||
let(:user) { Fabricate(:admin_user) }
|
||||
let(:account) { Fabricate(:account) }
|
||||
let!(:status) { Fabricate(:status, account: account) }
|
||||
let(:media_attached_status) { Fabricate(:status, account: account, sensitive: !sensitive) }
|
||||
|
|
|
@ -5,7 +5,7 @@ require 'rails_helper'
|
|||
RSpec.describe Admin::TermsOfService::DistributionsController do
|
||||
render_views
|
||||
|
||||
let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
|
||||
let(:user) { Fabricate(:admin_user) }
|
||||
let(:terms_of_service) { Fabricate(:terms_of_service, notification_sent_at: nil) }
|
||||
|
||||
before do
|
||||
|
|
|
@ -5,7 +5,7 @@ require 'rails_helper'
|
|||
RSpec.describe Admin::TermsOfService::DraftsController do
|
||||
render_views
|
||||
|
||||
let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
|
||||
let(:user) { Fabricate(:admin_user) }
|
||||
|
||||
before do
|
||||
sign_in user, scope: :user
|
||||
|
|
|
@ -5,7 +5,7 @@ require 'rails_helper'
|
|||
RSpec.describe Admin::TermsOfService::GeneratesController do
|
||||
render_views
|
||||
|
||||
let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
|
||||
let(:user) { Fabricate(:admin_user) }
|
||||
|
||||
before do
|
||||
sign_in user, scope: :user
|
||||
|
|
|
@ -5,7 +5,7 @@ require 'rails_helper'
|
|||
RSpec.describe Admin::TermsOfService::HistoriesController do
|
||||
render_views
|
||||
|
||||
let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
|
||||
let(:user) { Fabricate(:admin_user) }
|
||||
|
||||
before do
|
||||
sign_in user, scope: :user
|
||||
|
|
|
@ -5,7 +5,7 @@ require 'rails_helper'
|
|||
RSpec.describe Admin::TermsOfService::PreviewsController do
|
||||
render_views
|
||||
|
||||
let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
|
||||
let(:user) { Fabricate(:admin_user) }
|
||||
let(:terms_of_service) { Fabricate(:terms_of_service, notification_sent_at: nil) }
|
||||
|
||||
before do
|
||||
|
|
|
@ -5,7 +5,7 @@ require 'rails_helper'
|
|||
RSpec.describe Admin::TermsOfService::TestsController do
|
||||
render_views
|
||||
|
||||
let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
|
||||
let(:user) { Fabricate(:admin_user) }
|
||||
let(:terms_of_service) { Fabricate(:terms_of_service, notification_sent_at: nil) }
|
||||
|
||||
before do
|
||||
|
|
|
@ -5,7 +5,7 @@ require 'rails_helper'
|
|||
RSpec.describe Admin::TermsOfServiceController do
|
||||
render_views
|
||||
|
||||
let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
|
||||
let(:user) { Fabricate(:admin_user) }
|
||||
|
||||
before do
|
||||
sign_in user, scope: :user
|
||||
|
|
|
@ -5,7 +5,7 @@ require 'rails_helper'
|
|||
RSpec.describe Admin::Trends::Links::PreviewCardProvidersController do
|
||||
render_views
|
||||
|
||||
let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
|
||||
let(:user) { Fabricate(:admin_user) }
|
||||
|
||||
before do
|
||||
sign_in user, scope: :user
|
||||
|
|
|
@ -5,7 +5,7 @@ require 'rails_helper'
|
|||
RSpec.describe Admin::Trends::LinksController do
|
||||
render_views
|
||||
|
||||
let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
|
||||
let(:user) { Fabricate(:admin_user) }
|
||||
|
||||
before do
|
||||
sign_in user, scope: :user
|
||||
|
|
|
@ -5,7 +5,7 @@ require 'rails_helper'
|
|||
RSpec.describe Admin::Trends::StatusesController do
|
||||
render_views
|
||||
|
||||
let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
|
||||
let(:user) { Fabricate(:admin_user) }
|
||||
|
||||
before do
|
||||
sign_in user, scope: :user
|
||||
|
|
|
@ -5,7 +5,7 @@ require 'rails_helper'
|
|||
RSpec.describe Admin::Trends::TagsController do
|
||||
render_views
|
||||
|
||||
let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
|
||||
let(:user) { Fabricate(:admin_user) }
|
||||
|
||||
before do
|
||||
sign_in user, scope: :user
|
||||
|
|
|
@ -9,7 +9,7 @@ RSpec.describe Admin::Users::TwoFactorAuthenticationsController do
|
|||
let(:user) { Fabricate(:user) }
|
||||
|
||||
before do
|
||||
sign_in Fabricate(:user, role: UserRole.find_by(name: 'Admin')), scope: :user
|
||||
sign_in Fabricate(:admin_user), scope: :user
|
||||
end
|
||||
|
||||
describe 'DELETE #destroy' do
|
||||
|
|
|
@ -1,85 +0,0 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe Admin::WarningPresetsController do
|
||||
render_views
|
||||
|
||||
let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
|
||||
|
||||
before do
|
||||
sign_in user, scope: :user
|
||||
end
|
||||
|
||||
describe 'GET #index' do
|
||||
it 'returns http success' do
|
||||
get :index
|
||||
|
||||
expect(response).to have_http_status(:success)
|
||||
end
|
||||
end
|
||||
|
||||
describe 'GET #edit' do
|
||||
let(:account_warning_preset) { Fabricate(:account_warning_preset) }
|
||||
|
||||
it 'returns http success and renders edit' do
|
||||
get :edit, params: { id: account_warning_preset.id }
|
||||
|
||||
expect(response).to have_http_status(:success)
|
||||
expect(response).to render_template(:edit)
|
||||
end
|
||||
end
|
||||
|
||||
describe 'POST #create' do
|
||||
context 'with valid data' do
|
||||
it 'creates a new account_warning_preset and redirects' do
|
||||
expect do
|
||||
post :create, params: { account_warning_preset: { text: 'The account_warning_preset text.' } }
|
||||
end.to change(AccountWarningPreset, :count).by(1)
|
||||
|
||||
expect(response).to redirect_to(admin_warning_presets_path)
|
||||
end
|
||||
end
|
||||
|
||||
context 'with invalid data' do
|
||||
it 'does creates a new account_warning_preset and renders index' do
|
||||
expect do
|
||||
post :create, params: { account_warning_preset: { text: '' } }
|
||||
end.to_not change(AccountWarningPreset, :count)
|
||||
|
||||
expect(response).to render_template(:index)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'PUT #update' do
|
||||
let(:account_warning_preset) { Fabricate(:account_warning_preset, text: 'Original text') }
|
||||
|
||||
context 'with valid data' do
|
||||
it 'updates the account_warning_preset and redirects' do
|
||||
put :update, params: { id: account_warning_preset.id, account_warning_preset: { text: 'Updated text.' } }
|
||||
|
||||
expect(response).to redirect_to(admin_warning_presets_path)
|
||||
end
|
||||
end
|
||||
|
||||
context 'with invalid data' do
|
||||
it 'does not update the account_warning_preset and renders index' do
|
||||
put :update, params: { id: account_warning_preset.id, account_warning_preset: { text: '' } }
|
||||
|
||||
expect(response).to render_template(:edit)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'DELETE #destroy' do
|
||||
let!(:account_warning_preset) { Fabricate(:account_warning_preset) }
|
||||
|
||||
it 'destroys the account_warning_preset and redirects' do
|
||||
delete :destroy, params: { id: account_warning_preset.id }
|
||||
|
||||
expect { account_warning_preset.reload }.to raise_error(ActiveRecord::RecordNotFound)
|
||||
expect(response).to redirect_to(admin_warning_presets_path)
|
||||
end
|
||||
end
|
||||
end
|
|
@ -5,7 +5,7 @@ require 'rails_helper'
|
|||
RSpec.describe Admin::Webhooks::SecretsController do
|
||||
render_views
|
||||
|
||||
let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
|
||||
let(:user) { Fabricate(:admin_user) }
|
||||
|
||||
before do
|
||||
sign_in user, scope: :user
|
||||
|
|
|
@ -1,47 +0,0 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe Disputes::AppealsController do
|
||||
render_views
|
||||
|
||||
before { sign_in current_user, scope: :user }
|
||||
|
||||
let!(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
|
||||
|
||||
describe '#create' do
|
||||
subject { post :create, params: params }
|
||||
|
||||
context 'with valid params' do
|
||||
let(:current_user) { Fabricate(:user) }
|
||||
let(:strike) { Fabricate(:account_warning, target_account: current_user.account) }
|
||||
let(:params) { { strike_id: strike.id, appeal: { text: 'Foo' } } }
|
||||
|
||||
it 'notifies staff about new appeal and redirects back to strike page', :inline_jobs do
|
||||
emails = capture_emails { subject }
|
||||
|
||||
expect(emails.size)
|
||||
.to eq(1)
|
||||
expect(emails.first)
|
||||
.to have_attributes(
|
||||
to: contain_exactly(admin.email),
|
||||
subject: eq(I18n.t('admin_mailer.new_appeal.subject', username: current_user.account.acct, instance: Rails.configuration.x.local_domain))
|
||||
)
|
||||
expect(response).to redirect_to(disputes_strike_path(strike.id))
|
||||
end
|
||||
end
|
||||
|
||||
context 'with invalid params' do
|
||||
let(:current_user) { Fabricate(:user) }
|
||||
let(:strike) { Fabricate(:account_warning, target_account: current_user.account) }
|
||||
let(:params) { { strike_id: strike.id, appeal: { text: '' } } }
|
||||
|
||||
it 'does not send email and renders strike show page', :inline_jobs do
|
||||
emails = capture_emails { subject }
|
||||
|
||||
expect(emails).to be_empty
|
||||
expect(response).to render_template('disputes/strikes/show')
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,104 +0,0 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe Settings::MigrationsController do
|
||||
render_views
|
||||
|
||||
describe 'GET #show' do
|
||||
context 'when user is not sign in' do
|
||||
subject { get :show }
|
||||
|
||||
it { is_expected.to redirect_to new_user_session_path }
|
||||
end
|
||||
|
||||
context 'when user is sign in' do
|
||||
subject { get :show }
|
||||
|
||||
let(:user) { Fabricate(:account, moved_to_account: moved_to_account).user }
|
||||
|
||||
before { sign_in user, scope: :user }
|
||||
|
||||
context 'when user does not have moved to account' do
|
||||
let(:moved_to_account) { nil }
|
||||
|
||||
it 'renders show page' do
|
||||
expect(subject).to have_http_status 200
|
||||
expect(subject).to render_template :show
|
||||
end
|
||||
end
|
||||
|
||||
context 'when user has a moved to account' do
|
||||
let(:moved_to_account) { Fabricate(:account) }
|
||||
|
||||
it 'renders show page' do
|
||||
expect(subject).to have_http_status 200
|
||||
expect(subject).to render_template :show
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe 'POST #create' do
|
||||
context 'when user is not sign in' do
|
||||
subject { post :create }
|
||||
|
||||
it { is_expected.to redirect_to new_user_session_path }
|
||||
end
|
||||
|
||||
context 'when user is signed in' do
|
||||
subject { post :create, params: { account_migration: { acct: acct, current_password: '12345678' } } }
|
||||
|
||||
let(:user) { Fabricate(:user, password: '12345678') }
|
||||
|
||||
before { sign_in user, scope: :user }
|
||||
|
||||
context 'when migration account is changed' do
|
||||
let(:acct) { Fabricate(:account, also_known_as: [ActivityPub::TagManager.instance.uri_for(user.account)]) }
|
||||
|
||||
it 'updates moved to account' do
|
||||
expect(subject).to redirect_to settings_migration_path
|
||||
expect(user.account.reload.moved_to_account_id).to eq acct.id
|
||||
end
|
||||
end
|
||||
|
||||
context 'when acct is the current account' do
|
||||
let(:acct) { user.account }
|
||||
|
||||
it 'does not update the moved account', :aggregate_failures do
|
||||
subject
|
||||
|
||||
expect(user.account.reload.moved_to_account_id).to be_nil
|
||||
expect(response).to render_template :show
|
||||
end
|
||||
end
|
||||
|
||||
context 'when target account does not reference the account being moved from' do
|
||||
let(:acct) { Fabricate(:account, also_known_as: []) }
|
||||
|
||||
it 'does not update the moved account', :aggregate_failures do
|
||||
subject
|
||||
|
||||
expect(user.account.reload.moved_to_account_id).to be_nil
|
||||
expect(response).to render_template :show
|
||||
end
|
||||
end
|
||||
|
||||
context 'when a recent migration already exists' do
|
||||
let(:acct) { Fabricate(:account, also_known_as: [ActivityPub::TagManager.instance.uri_for(user.account)]) }
|
||||
|
||||
before do
|
||||
moved_to = Fabricate(:account, also_known_as: [ActivityPub::TagManager.instance.uri_for(user.account)])
|
||||
user.account.migrations.create!(acct: moved_to.acct)
|
||||
end
|
||||
|
||||
it 'does not update the moved account', :aggregate_failures do
|
||||
subject
|
||||
|
||||
expect(user.account.reload.moved_to_account_id).to be_nil
|
||||
expect(response).to render_template :show
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -13,3 +13,15 @@ Fabricator(:user) do
|
|||
current_sign_in_at { Time.zone.now }
|
||||
agreement true
|
||||
end
|
||||
|
||||
Fabricator(:admin_user, from: :user) do
|
||||
role UserRole.find_by(name: 'Admin')
|
||||
end
|
||||
|
||||
Fabricator(:moderator_user, from: :user) do
|
||||
role UserRole.find_by(name: 'Moderator')
|
||||
end
|
||||
|
||||
Fabricator(:owner_user, from: :user) do
|
||||
role UserRole.find_by(name: 'Owner')
|
||||
end
|
||||
|
|
|
@ -79,6 +79,26 @@ RSpec.describe ThemeHelper do
|
|||
end
|
||||
end
|
||||
|
||||
describe '#custom_stylesheet' do
|
||||
context 'when custom css setting value digest is present' do
|
||||
before { Rails.cache.write(:setting_digest_custom_css, '1a2s3d4f1a2s3d4f') }
|
||||
|
||||
it 'returns value from settings' do
|
||||
expect(custom_stylesheet)
|
||||
.to match('/css/custom-1a2s3d4f.css')
|
||||
end
|
||||
end
|
||||
|
||||
context 'when custom css setting value digest is not present' do
|
||||
before { Rails.cache.delete(:setting_digest_custom_css) }
|
||||
|
||||
it 'returns default value' do
|
||||
expect(custom_stylesheet)
|
||||
.to be_blank
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def html_links
|
||||
|
|
|
@ -1342,7 +1342,7 @@ RSpec.describe ActivityPub::Activity::Create do
|
|||
type: 'Document',
|
||||
mediaType: 'image/png',
|
||||
url: 'http://example.com/attachment.png',
|
||||
name: '*' * 1500,
|
||||
name: '*' * MediaAttachment::MAX_DESCRIPTION_LENGTH,
|
||||
},
|
||||
],
|
||||
}
|
||||
|
@ -1354,7 +1354,7 @@ RSpec.describe ActivityPub::Activity::Create do
|
|||
status = sender.statuses.first
|
||||
|
||||
expect(status).to_not be_nil
|
||||
expect(status.media_attachments.map(&:description)).to include('*' * 1500)
|
||||
expect(status.media_attachments.map(&:description)).to include('*' * MediaAttachment::MAX_DESCRIPTION_LENGTH)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -1369,7 +1369,7 @@ RSpec.describe ActivityPub::Activity::Create do
|
|||
type: 'Document',
|
||||
mediaType: 'image/png',
|
||||
url: 'http://example.com/attachment.png',
|
||||
summary: '*' * 1500,
|
||||
summary: '*' * MediaAttachment::MAX_DESCRIPTION_LENGTH,
|
||||
},
|
||||
],
|
||||
}
|
||||
|
@ -1381,7 +1381,7 @@ RSpec.describe ActivityPub::Activity::Create do
|
|||
status = sender.statuses.first
|
||||
|
||||
expect(status).to_not be_nil
|
||||
expect(status.media_attachments.map(&:description)).to include('*' * 1500)
|
||||
expect(status.media_attachments.map(&:description)).to include('*' * MediaAttachment::MAX_DESCRIPTION_LENGTH)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -1486,7 +1486,7 @@ RSpec.describe ActivityPub::Activity::Create do
|
|||
expect { subject.perform }
|
||||
.to change(sender.statuses, :count).by(1)
|
||||
.and change { sender.featured_tags.first.reload.statuses_count }.by(1)
|
||||
.and change { sender.featured_tags.first.reload.last_status_at }.from(nil).to(be_within(0.1).of(Time.now.utc))
|
||||
.and change { sender.featured_tags.first.reload.last_status_at }.from(nil).to(be_present)
|
||||
|
||||
status = sender.statuses.first
|
||||
|
||||
|
|
|
@ -48,14 +48,34 @@ RSpec.describe Account do
|
|||
end
|
||||
|
||||
describe '#local?' do
|
||||
it 'returns true when the account is local' do
|
||||
it 'returns true when domain is null' do
|
||||
account = Fabricate(:account, domain: nil)
|
||||
expect(account.local?).to be true
|
||||
expect(account).to be_local
|
||||
end
|
||||
|
||||
it 'returns false when the account is on a different domain' do
|
||||
it 'returns false when domain is present' do
|
||||
account = Fabricate(:account, domain: 'foreign.tld')
|
||||
expect(account.local?).to be false
|
||||
expect(account).to_not be_local
|
||||
end
|
||||
end
|
||||
|
||||
describe '#remote?' do
|
||||
context 'when the domain is null' do
|
||||
subject { Fabricate.build :account, domain: nil }
|
||||
|
||||
it { is_expected.to_not be_remote }
|
||||
end
|
||||
|
||||
context 'when the domain is blank' do
|
||||
subject { Fabricate.build :account, domain: '' }
|
||||
|
||||
it { is_expected.to_not be_remote }
|
||||
end
|
||||
|
||||
context 'when the domain is present' do
|
||||
subject { Fabricate.build :account, domain: 'host.example' }
|
||||
|
||||
it { is_expected.to be_remote }
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -1045,6 +1065,9 @@ RSpec.describe Account do
|
|||
it { is_expected.to validate_length_of(:display_name).is_at_most(described_class::DISPLAY_NAME_LENGTH_LIMIT) }
|
||||
|
||||
it { is_expected.to_not allow_values(account_note_over_limit).for(:note) }
|
||||
|
||||
it { is_expected.to allow_value(fields_empty_name_value).for(:fields) }
|
||||
it { is_expected.to_not allow_values(fields_over_limit, fields_empty_name).for(:fields) }
|
||||
end
|
||||
|
||||
context 'when account is remote' do
|
||||
|
@ -1077,6 +1100,18 @@ RSpec.describe Account do
|
|||
def account_note_over_limit
|
||||
'a' * described_class::NOTE_LENGTH_LIMIT * 2
|
||||
end
|
||||
|
||||
def fields_empty_name_value
|
||||
Array.new(4) { { 'name' => '', 'value' => '' } }
|
||||
end
|
||||
|
||||
def fields_over_limit
|
||||
Array.new(described_class::DEFAULT_FIELDS_SIZE + 1) { { 'name' => 'Name', 'value' => 'Value', 'verified_at' => '01/01/1970' } }
|
||||
end
|
||||
|
||||
def fields_empty_name
|
||||
[{ 'name' => '', 'value' => 'Value', 'verified_at' => '01/01/1970' }]
|
||||
end
|
||||
end
|
||||
|
||||
describe 'scopes' do
|
||||
|
|
26
spec/models/account_summary_spec.rb
Normal file
26
spec/models/account_summary_spec.rb
Normal file
|
@ -0,0 +1,26 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe AccountSummary do
|
||||
describe 'Scopes' do
|
||||
describe '.localized' do
|
||||
let(:first) { Fabricate :account }
|
||||
let(:last) { Fabricate :account }
|
||||
|
||||
before do
|
||||
Fabricate :status, account: first, language: 'en'
|
||||
Fabricate :status, account: last, language: 'es'
|
||||
described_class.refresh
|
||||
end
|
||||
|
||||
it 'returns records in order of language' do
|
||||
expect(described_class.localized('en'))
|
||||
.to contain_exactly(
|
||||
have_attributes(account_id: first.id, language: 'en'),
|
||||
have_attributes(account_id: last.id, language: 'es')
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -8,7 +8,7 @@ RSpec.describe Admin::AccountAction do
|
|||
describe '#save!' do
|
||||
subject { account_action.save! }
|
||||
|
||||
let(:account) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
|
||||
let(:account) { Fabricate(:admin_user).account }
|
||||
let(:target_account) { Fabricate(:account) }
|
||||
let(:type) { 'disable' }
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@ RSpec.describe Appeal do
|
|||
it { is_expected.to validate_length_of(:text).is_at_most(described_class::TEXT_LENGTH_LIMIT) }
|
||||
|
||||
context 'with a strike created too long ago' do
|
||||
let(:strike) { Fabricate.build :account_warning, created_at: 100.days.ago }
|
||||
let(:strike) { Fabricate.build :account_warning, created_at: (described_class::MAX_STRIKE_AGE * 2).ago }
|
||||
|
||||
it { is_expected.to_not allow_values(strike).for(:strike).against(:base).on(:create) }
|
||||
end
|
||||
|
|
15
spec/models/doorkeeper/application_spec.rb
Normal file
15
spec/models/doorkeeper/application_spec.rb
Normal file
|
@ -0,0 +1,15 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe Doorkeeper::Application do
|
||||
describe 'Associations' do
|
||||
it { is_expected.to have_many(:created_users).class_name('User').inverse_of(:created_by_application).with_foreign_key(:created_by_application_id) }
|
||||
end
|
||||
|
||||
describe 'Validations' do
|
||||
it { is_expected.to validate_length_of(:name).is_at_most(described_class::APP_NAME_LIMIT) }
|
||||
it { is_expected.to validate_length_of(:redirect_uri).is_at_most(described_class::APP_REDIRECT_URI_LIMIT) }
|
||||
it { is_expected.to validate_length_of(:website).is_at_most(described_class::APP_WEBSITE_LIMIT) }
|
||||
end
|
||||
end
|
|
@ -8,7 +8,7 @@ RSpec.describe Form::AccountBatch do
|
|||
describe '#save' do
|
||||
subject { account_batch.save }
|
||||
|
||||
let(:account) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
|
||||
let(:account) { Fabricate(:admin_user).account }
|
||||
let(:account_ids) { [] }
|
||||
let(:query) { Account.none }
|
||||
|
||||
|
|
|
@ -17,4 +17,40 @@ RSpec.describe Form::AdminSettings do
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#save' do
|
||||
describe 'updating digest values' do
|
||||
context 'when updating custom css to real value' do
|
||||
subject { described_class.new(custom_css: css) }
|
||||
|
||||
let(:css) { 'body { color: red; }' }
|
||||
let(:digested) { Digest::SHA256.hexdigest(css) }
|
||||
|
||||
it 'changes relevant digest value' do
|
||||
expect { subject.save }
|
||||
.to(change { Rails.cache.read(:setting_digest_custom_css) }.to(digested))
|
||||
end
|
||||
end
|
||||
|
||||
context 'when updating custom css to empty value' do
|
||||
subject { described_class.new(custom_css: '') }
|
||||
|
||||
before { Rails.cache.write(:setting_digest_custom_css, 'previous-value') }
|
||||
|
||||
it 'changes relevant digest value' do
|
||||
expect { subject.save }
|
||||
.to(change { Rails.cache.read(:setting_digest_custom_css) }.to(be_blank))
|
||||
end
|
||||
end
|
||||
|
||||
context 'when updating other fields' do
|
||||
subject { described_class.new(site_contact_email: 'test@example.host') }
|
||||
|
||||
it 'does not update digests' do
|
||||
expect { subject.save }
|
||||
.to(not_change { Rails.cache.read(:setting_digest_custom_css) })
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -7,7 +7,7 @@ RSpec.describe Form::CustomEmojiBatch do
|
|||
subject { described_class.new({ current_account: account }.merge(options)) }
|
||||
|
||||
let(:options) { {} }
|
||||
let(:account) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
|
||||
let(:account) { Fabricate(:admin_user).account }
|
||||
|
||||
context 'with empty custom_emoji_ids' do
|
||||
let(:options) { { custom_emoji_ids: [] } }
|
||||
|
|
|
@ -3,6 +3,29 @@
|
|||
require 'rails_helper'
|
||||
|
||||
RSpec.describe SoftwareUpdate do
|
||||
describe 'Scopes' do
|
||||
describe '.urgent' do
|
||||
let!(:urgent_update) { Fabricate :software_update, urgent: true }
|
||||
let!(:non_urgent_update) { Fabricate :software_update, urgent: false }
|
||||
|
||||
it 'returns records that are urgent' do
|
||||
expect(described_class.urgent)
|
||||
.to include(urgent_update)
|
||||
.and not_include(non_urgent_update)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '.by_version' do
|
||||
let!(:latest_update) { Fabricate :software_update, version: '4.0.0' }
|
||||
let!(:older_update) { Fabricate :software_update, version: '3.0.0' }
|
||||
|
||||
it 'returns record in gem version order' do
|
||||
expect(described_class.by_version)
|
||||
.to eq([older_update, latest_update])
|
||||
end
|
||||
end
|
||||
|
||||
describe '#pending?' do
|
||||
subject { described_class.new(version: update_version) }
|
||||
|
||||
|
|
|
@ -633,7 +633,7 @@ RSpec.describe User do
|
|||
end
|
||||
|
||||
describe '.those_who_can' do
|
||||
before { Fabricate(:user, role: UserRole.find_by(name: 'Moderator')) }
|
||||
before { Fabricate(:moderator_user) }
|
||||
|
||||
context 'when there are not any user roles' do
|
||||
before { UserRole.destroy_all }
|
||||
|
@ -650,7 +650,7 @@ RSpec.describe User do
|
|||
end
|
||||
|
||||
context 'when there are users with roles' do
|
||||
let!(:admin_user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
|
||||
let!(:admin_user) { Fabricate(:admin_user) }
|
||||
|
||||
it 'returns the users with the role' do
|
||||
expect(described_class.those_who_can(:manage_blocks)).to eq([admin_user])
|
||||
|
|
|
@ -18,7 +18,7 @@ RSpec.describe Webhook do
|
|||
subject { Fabricate.build :webhook, current_account: account }
|
||||
|
||||
context 'with account that has permissions' do
|
||||
let(:account) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
|
||||
let(:account) { Fabricate(:admin_user).account }
|
||||
|
||||
it { is_expected.to allow_values(%w(account.created)).for(:events) }
|
||||
end
|
||||
|
|
|
@ -5,7 +5,7 @@ require 'rails_helper'
|
|||
RSpec.describe AccountModerationNotePolicy do
|
||||
subject { described_class }
|
||||
|
||||
let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
|
||||
let(:admin) { Fabricate(:admin_user).account }
|
||||
let(:john) { Fabricate(:account) }
|
||||
|
||||
permissions :create? do
|
||||
|
|
|
@ -5,7 +5,7 @@ require 'rails_helper'
|
|||
RSpec.describe AccountPolicy do
|
||||
subject { described_class }
|
||||
|
||||
let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
|
||||
let(:admin) { Fabricate(:admin_user).account }
|
||||
let(:john) { Fabricate(:account) }
|
||||
let(:alice) { Fabricate(:account) }
|
||||
|
||||
|
@ -70,7 +70,7 @@ RSpec.describe AccountPolicy do
|
|||
end
|
||||
|
||||
permissions :suspend?, :silence? do
|
||||
let(:staff) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
|
||||
let(:staff) { Fabricate(:admin_user).account }
|
||||
|
||||
context 'when staff' do
|
||||
context 'when record is staff' do
|
||||
|
@ -94,7 +94,7 @@ RSpec.describe AccountPolicy do
|
|||
end
|
||||
|
||||
permissions :memorialize? do
|
||||
let(:other_admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
|
||||
let(:other_admin) { Fabricate(:admin_user).account }
|
||||
|
||||
context 'when admin' do
|
||||
context 'when record is admin' do
|
||||
|
|
|
@ -5,7 +5,7 @@ require 'rails_helper'
|
|||
RSpec.describe AccountWarningPolicy do
|
||||
subject { described_class }
|
||||
|
||||
let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
|
||||
let(:admin) { Fabricate(:admin_user).account }
|
||||
let(:account) { Fabricate(:account) }
|
||||
|
||||
permissions :show? do
|
||||
|
|
|
@ -4,7 +4,7 @@ require 'rails_helper'
|
|||
|
||||
RSpec.describe AccountWarningPresetPolicy do
|
||||
let(:policy) { described_class }
|
||||
let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
|
||||
let(:admin) { Fabricate(:admin_user).account }
|
||||
let(:john) { Fabricate(:account) }
|
||||
|
||||
permissions :index?, :create?, :update?, :destroy? do
|
||||
|
|
|
@ -4,7 +4,7 @@ require 'rails_helper'
|
|||
|
||||
RSpec.describe Admin::StatusPolicy do
|
||||
let(:policy) { described_class }
|
||||
let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
|
||||
let(:admin) { Fabricate(:admin_user).account }
|
||||
let(:john) { Fabricate(:account) }
|
||||
let(:status) { Fabricate(:status, visibility: status_visibility) }
|
||||
let(:status_visibility) { :public }
|
||||
|
|
|
@ -4,7 +4,7 @@ require 'rails_helper'
|
|||
|
||||
RSpec.describe AnnouncementPolicy do
|
||||
let(:policy) { described_class }
|
||||
let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
|
||||
let(:admin) { Fabricate(:admin_user).account }
|
||||
let(:john) { Fabricate(:account) }
|
||||
|
||||
permissions :index?, :create?, :update?, :destroy? do
|
||||
|
|
|
@ -4,7 +4,7 @@ require 'rails_helper'
|
|||
|
||||
RSpec.describe AppealPolicy do
|
||||
let(:policy) { described_class }
|
||||
let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
|
||||
let(:admin) { Fabricate(:admin_user).account }
|
||||
let(:john) { Fabricate(:account) }
|
||||
let(:appeal) { Fabricate(:appeal) }
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ require 'rails_helper'
|
|||
RSpec.describe AuditLogPolicy do
|
||||
subject { described_class }
|
||||
|
||||
let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
|
||||
let(:admin) { Fabricate(:admin_user).account }
|
||||
let(:account) { Fabricate(:account) }
|
||||
|
||||
permissions :index? do
|
||||
|
|
|
@ -23,22 +23,30 @@ RSpec.describe BackupPolicy do
|
|||
|
||||
context 'when backups are too old' do
|
||||
it 'permits' do
|
||||
travel(-8.days) do
|
||||
travel(-before_time) do
|
||||
Fabricate(:backup, user: john.user)
|
||||
end
|
||||
|
||||
expect(subject).to permit(john, Backup)
|
||||
end
|
||||
|
||||
def before_time
|
||||
described_class::MIN_AGE + 2.days
|
||||
end
|
||||
end
|
||||
|
||||
context 'when backups are newer' do
|
||||
it 'denies' do
|
||||
travel(-3.days) do
|
||||
travel(-within_time) do
|
||||
Fabricate(:backup, user: john.user)
|
||||
end
|
||||
|
||||
expect(subject).to_not permit(john, Backup)
|
||||
end
|
||||
|
||||
def within_time
|
||||
described_class::MIN_AGE - 2.days
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -4,7 +4,7 @@ require 'rails_helper'
|
|||
|
||||
RSpec.describe CanonicalEmailBlockPolicy do
|
||||
let(:policy) { described_class }
|
||||
let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
|
||||
let(:admin) { Fabricate(:admin_user).account }
|
||||
let(:john) { Fabricate(:account) }
|
||||
|
||||
permissions :index?, :show?, :test?, :create?, :destroy? do
|
||||
|
|
|
@ -5,7 +5,7 @@ require 'rails_helper'
|
|||
RSpec.describe CustomEmojiPolicy do
|
||||
subject { described_class }
|
||||
|
||||
let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
|
||||
let(:admin) { Fabricate(:admin_user).account }
|
||||
let(:john) { Fabricate(:account) }
|
||||
|
||||
permissions :index?, :enable?, :disable? do
|
||||
|
|
|
@ -5,7 +5,7 @@ require 'rails_helper'
|
|||
RSpec.describe DashboardPolicy do
|
||||
subject { described_class }
|
||||
|
||||
let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
|
||||
let(:admin) { Fabricate(:admin_user).account }
|
||||
let(:account) { Fabricate(:account) }
|
||||
|
||||
permissions :index? do
|
||||
|
|
|
@ -4,7 +4,7 @@ require 'rails_helper'
|
|||
|
||||
RSpec.describe DeliveryPolicy do
|
||||
let(:policy) { described_class }
|
||||
let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
|
||||
let(:admin) { Fabricate(:admin_user).account }
|
||||
let(:john) { Fabricate(:account) }
|
||||
|
||||
permissions :clear_delivery_errors?, :restart_delivery?, :stop_delivery? do
|
||||
|
|
|
@ -5,7 +5,7 @@ require 'rails_helper'
|
|||
RSpec.describe DomainAllowPolicy do
|
||||
subject { described_class }
|
||||
|
||||
let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
|
||||
let(:admin) { Fabricate(:admin_user).account }
|
||||
let(:john) { Fabricate(:account) }
|
||||
|
||||
permissions :index?, :show?, :create?, :destroy? do
|
||||
|
|
|
@ -5,7 +5,7 @@ require 'rails_helper'
|
|||
RSpec.describe DomainBlockPolicy do
|
||||
subject { described_class }
|
||||
|
||||
let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
|
||||
let(:admin) { Fabricate(:admin_user).account }
|
||||
let(:john) { Fabricate(:account) }
|
||||
|
||||
permissions :index?, :show?, :create?, :destroy?, :update? do
|
||||
|
|
|
@ -5,7 +5,7 @@ require 'rails_helper'
|
|||
RSpec.describe EmailDomainBlockPolicy do
|
||||
subject { described_class }
|
||||
|
||||
let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
|
||||
let(:admin) { Fabricate(:admin_user).account }
|
||||
let(:john) { Fabricate(:account) }
|
||||
|
||||
permissions :index?, :show?, :create?, :destroy? do
|
||||
|
|
|
@ -4,7 +4,7 @@ require 'rails_helper'
|
|||
|
||||
RSpec.describe FollowRecommendationPolicy do
|
||||
let(:policy) { described_class }
|
||||
let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
|
||||
let(:admin) { Fabricate(:admin_user).account }
|
||||
let(:john) { Fabricate(:account) }
|
||||
|
||||
permissions :show?, :suppress?, :unsuppress? do
|
||||
|
|
|
@ -5,7 +5,7 @@ require 'rails_helper'
|
|||
RSpec.describe InstancePolicy do
|
||||
subject { described_class }
|
||||
|
||||
let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
|
||||
let(:admin) { Fabricate(:admin_user).account }
|
||||
let(:john) { Fabricate(:account) }
|
||||
|
||||
permissions :index?, :show?, :destroy? do
|
||||
|
|
|
@ -5,7 +5,7 @@ require 'rails_helper'
|
|||
RSpec.describe InvitePolicy do
|
||||
subject { described_class }
|
||||
|
||||
let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
|
||||
let(:admin) { Fabricate(:admin_user).account }
|
||||
let(:john) { Fabricate(:user).account }
|
||||
|
||||
permissions :index? do
|
||||
|
|
|
@ -4,7 +4,7 @@ require 'rails_helper'
|
|||
|
||||
RSpec.describe IpBlockPolicy do
|
||||
let(:policy) { described_class }
|
||||
let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
|
||||
let(:admin) { Fabricate(:admin_user).account }
|
||||
let(:john) { Fabricate(:account) }
|
||||
|
||||
permissions :index?, :show?, :create?, :update?, :destroy? do
|
||||
|
|
|
@ -4,7 +4,7 @@ require 'rails_helper'
|
|||
|
||||
RSpec.describe PreviewCardPolicy do
|
||||
let(:policy) { described_class }
|
||||
let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
|
||||
let(:admin) { Fabricate(:admin_user).account }
|
||||
let(:john) { Fabricate(:account) }
|
||||
|
||||
permissions :index?, :review? do
|
||||
|
|
|
@ -4,7 +4,7 @@ require 'rails_helper'
|
|||
|
||||
RSpec.describe PreviewCardProviderPolicy do
|
||||
let(:policy) { described_class }
|
||||
let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
|
||||
let(:admin) { Fabricate(:admin_user).account }
|
||||
let(:john) { Fabricate(:account) }
|
||||
|
||||
permissions :index?, :review? do
|
||||
|
|
|
@ -5,7 +5,7 @@ require 'rails_helper'
|
|||
RSpec.describe RelayPolicy do
|
||||
subject { described_class }
|
||||
|
||||
let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
|
||||
let(:admin) { Fabricate(:admin_user).account }
|
||||
let(:john) { Fabricate(:account) }
|
||||
|
||||
permissions :update? do
|
||||
|
|
|
@ -5,7 +5,7 @@ require 'rails_helper'
|
|||
RSpec.describe ReportNotePolicy do
|
||||
subject { described_class }
|
||||
|
||||
let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
|
||||
let(:admin) { Fabricate(:admin_user).account }
|
||||
let(:john) { Fabricate(:account) }
|
||||
|
||||
permissions :create? do
|
||||
|
|
|
@ -5,7 +5,7 @@ require 'rails_helper'
|
|||
RSpec.describe ReportPolicy do
|
||||
subject { described_class }
|
||||
|
||||
let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
|
||||
let(:admin) { Fabricate(:admin_user).account }
|
||||
let(:john) { Fabricate(:account) }
|
||||
|
||||
permissions :update?, :index?, :show? do
|
||||
|
|
|
@ -4,7 +4,7 @@ require 'rails_helper'
|
|||
|
||||
RSpec.describe RulePolicy do
|
||||
let(:policy) { described_class }
|
||||
let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
|
||||
let(:admin) { Fabricate(:admin_user).account }
|
||||
let(:john) { Fabricate(:account) }
|
||||
|
||||
permissions :index?, :create?, :update?, :destroy? do
|
||||
|
|
|
@ -5,7 +5,7 @@ require 'rails_helper'
|
|||
RSpec.describe SettingsPolicy do
|
||||
subject { described_class }
|
||||
|
||||
let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
|
||||
let(:admin) { Fabricate(:admin_user).account }
|
||||
let(:john) { Fabricate(:account) }
|
||||
|
||||
permissions :update?, :show?, :destroy? do
|
||||
|
|
|
@ -5,7 +5,7 @@ require 'rails_helper'
|
|||
RSpec.describe SoftwareUpdatePolicy do
|
||||
subject { described_class }
|
||||
|
||||
let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Owner')).account }
|
||||
let(:admin) { Fabricate(:owner_user).account }
|
||||
let(:john) { Fabricate(:account) }
|
||||
|
||||
permissions :index? do
|
||||
|
|
|
@ -5,7 +5,7 @@ require 'rails_helper'
|
|||
RSpec.describe StatusPolicy, type: :model do
|
||||
subject { described_class }
|
||||
|
||||
let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
|
||||
let(:admin) { Fabricate(:admin_user) }
|
||||
let(:alice) { Fabricate(:account, username: 'alice') }
|
||||
let(:bob) { Fabricate(:account, username: 'bob') }
|
||||
let(:status) { Fabricate(:status, account: alice) }
|
||||
|
|
|
@ -5,7 +5,7 @@ require 'rails_helper'
|
|||
RSpec.describe TagPolicy do
|
||||
subject { described_class }
|
||||
|
||||
let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
|
||||
let(:admin) { Fabricate(:admin_user).account }
|
||||
let(:john) { Fabricate(:account) }
|
||||
|
||||
permissions :index?, :show?, :update?, :review? do
|
||||
|
|
|
@ -5,7 +5,7 @@ require 'rails_helper'
|
|||
RSpec.describe TermsOfServicePolicy do
|
||||
subject { described_class }
|
||||
|
||||
let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
|
||||
let(:admin) { Fabricate(:admin_user).account }
|
||||
let(:john) { Fabricate(:account) }
|
||||
|
||||
permissions :index?, :create? do
|
||||
|
|
|
@ -5,7 +5,7 @@ require 'rails_helper'
|
|||
RSpec.describe UserPolicy do
|
||||
subject { described_class }
|
||||
|
||||
let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
|
||||
let(:admin) { Fabricate(:admin_user).account }
|
||||
let(:john) { Fabricate(:account) }
|
||||
|
||||
permissions :reset_password?, :change_email? do
|
||||
|
|
|
@ -5,7 +5,7 @@ require 'rails_helper'
|
|||
RSpec.describe UserRolePolicy do
|
||||
subject { described_class }
|
||||
|
||||
let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
|
||||
let(:admin) { Fabricate(:admin_user).account }
|
||||
let(:account) { Fabricate(:account) }
|
||||
|
||||
permissions :index?, :create? do
|
||||
|
|
|
@ -4,7 +4,7 @@ require 'rails_helper'
|
|||
|
||||
RSpec.describe WebhookPolicy do
|
||||
let(:policy) { described_class }
|
||||
let(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')).account }
|
||||
let(:admin) { Fabricate(:admin_user).account }
|
||||
let(:john) { Fabricate(:account) }
|
||||
|
||||
permissions :index?, :create? do
|
||||
|
|
|
@ -119,6 +119,11 @@ RSpec.configure do |config|
|
|||
config.include CommandLineHelpers, type: :cli
|
||||
config.include SystemHelpers, type: :system
|
||||
|
||||
# TODO: Remove when Devise fixes https://github.com/heartcombo/devise/issues/5705
|
||||
config.before do
|
||||
Rails.application.reload_routes_unless_loaded
|
||||
end
|
||||
|
||||
config.around(:each, use_transactional_tests: false) do |example|
|
||||
self.use_transactional_tests = false
|
||||
example.run
|
||||
|
|
|
@ -85,7 +85,7 @@ RSpec.describe 'credentials API' do
|
|||
end
|
||||
|
||||
describe 'with invalid data' do
|
||||
let(:params) { { note: 'This is too long. ' * 30 } }
|
||||
let(:params) { { note: 'a' * 2 * Account::NOTE_LENGTH_LIMIT } }
|
||||
|
||||
it 'returns http unprocessable entity' do
|
||||
subject
|
||||
|
|
|
@ -29,7 +29,7 @@ RSpec.describe 'Accounts Notes API' do
|
|||
end
|
||||
|
||||
context 'when account note exceeds allowed length', :aggregate_failures do
|
||||
let(:comment) { 'a' * 2_001 }
|
||||
let(:comment) { 'a' * AccountNote::COMMENT_SIZE_LIMIT * 2 }
|
||||
|
||||
it 'does not create account note' do
|
||||
subject
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
require 'rails_helper'
|
||||
|
||||
RSpec.describe 'Admin Dimensions' do
|
||||
let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
|
||||
let(:user) { Fabricate(:admin_user) }
|
||||
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
|
||||
let(:headers) { { 'Authorization' => "Bearer #{token.token}" } }
|
||||
let(:account) { Fabricate(:account) }
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
require 'rails_helper'
|
||||
|
||||
RSpec.describe 'Admin Measures' do
|
||||
let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
|
||||
let(:user) { Fabricate(:admin_user) }
|
||||
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
|
||||
let(:headers) { { 'Authorization' => "Bearer #{token.token}" } }
|
||||
let(:account) { Fabricate(:account) }
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
require 'rails_helper'
|
||||
|
||||
RSpec.describe 'Admin Retention' do
|
||||
let(:user) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
|
||||
let(:user) { Fabricate(:admin_user) }
|
||||
let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: scopes) }
|
||||
let(:headers) { { 'Authorization' => "Bearer #{token.token}" } }
|
||||
let(:account) { Fabricate(:account) }
|
||||
|
|
|
@ -122,7 +122,7 @@ RSpec.describe 'Apps' do
|
|||
end
|
||||
|
||||
context 'with a too-long name' do
|
||||
let(:client_name) { 'hoge' * 20 }
|
||||
let(:client_name) { 'a' * Doorkeeper::Application::APP_NAME_LIMIT * 2 }
|
||||
|
||||
it 'returns http unprocessable entity' do
|
||||
subject
|
||||
|
@ -134,7 +134,7 @@ RSpec.describe 'Apps' do
|
|||
end
|
||||
|
||||
context 'with a too-long website' do
|
||||
let(:website) { "https://foo.bar/#{'hoge' * 2_000}" }
|
||||
let(:website) { "https://foo.bar/#{'a' * Doorkeeper::Application::APP_WEBSITE_LIMIT * 2}" }
|
||||
|
||||
it 'returns http unprocessable entity' do
|
||||
subject
|
||||
|
@ -146,7 +146,7 @@ RSpec.describe 'Apps' do
|
|||
end
|
||||
|
||||
context 'with a too-long redirect_uri' do
|
||||
let(:redirect_uris) { "https://app.example/#{'hoge' * 2_000}" }
|
||||
let(:redirect_uris) { "https://app.example/#{'a' * Doorkeeper::Application::APP_REDIRECT_URI_LIMIT * 2}" }
|
||||
|
||||
it 'returns http unprocessable entity' do
|
||||
subject
|
||||
|
|
|
@ -13,7 +13,7 @@ RSpec.describe 'Reports' do
|
|||
post '/api/v1/reports', headers: headers, params: params
|
||||
end
|
||||
|
||||
let!(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) }
|
||||
let!(:admin) { Fabricate(:admin_user) }
|
||||
let(:status) { Fabricate(:status) }
|
||||
let(:target_account) { status.account }
|
||||
let(:category) { 'other' }
|
||||
|
|
|
@ -33,7 +33,7 @@ RSpec.describe 'Media API', :attachment_processing do
|
|||
let(:params) do
|
||||
{
|
||||
file: fixture_file_upload('attachment-jpg.123456_abcd', 'image/jpeg'),
|
||||
description: 'aa' * MediaAttachment::MAX_DESCRIPTION_LENGTH,
|
||||
description: 'a' * MediaAttachment::MAX_DESCRIPTION_LENGTH * 2,
|
||||
}
|
||||
end
|
||||
|
||||
|
|
|
@ -2,9 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe Auth::ChallengesController do
|
||||
render_views
|
||||
|
||||
RSpec.describe 'Auth Challenges' do
|
||||
let(:password) { 'foobar12345' }
|
||||
let(:user) { Fabricate(:user, password: password) }
|
||||
|
||||
|
@ -14,9 +12,9 @@ RSpec.describe Auth::ChallengesController do
|
|||
let(:return_to) { edit_user_registration_path }
|
||||
|
||||
context 'with correct password' do
|
||||
before { post :create, params: { form_challenge: { return_to: return_to, current_password: password } } }
|
||||
|
||||
it 'redirects back and sets challenge passed at in session' do
|
||||
post '/auth/challenge', params: { form_challenge: { return_to: return_to, current_password: password } }
|
||||
|
||||
expect(response)
|
||||
.to redirect_to(return_to)
|
||||
expect(session[:challenge_passed_at])
|
||||
|
@ -25,13 +23,12 @@ RSpec.describe Auth::ChallengesController do
|
|||
end
|
||||
|
||||
context 'with incorrect password' do
|
||||
before { post :create, params: { form_challenge: { return_to: return_to, current_password: 'hhfggjjd562' } } }
|
||||
|
||||
it 'renders challenge, displays error, does not set session' do
|
||||
expect(response)
|
||||
.to render_template('auth/challenges/new')
|
||||
post '/auth/challenge', params: { form_challenge: { return_to: return_to, current_password: 'hhfggjjd562' } }
|
||||
|
||||
expect(response.body)
|
||||
.to include 'Invalid password'
|
||||
.to include(I18n.t('challenge.prompt'))
|
||||
.and include('Invalid password')
|
||||
expect(session[:challenge_passed_at])
|
||||
.to be_nil
|
||||
end
|
|
@ -10,6 +10,7 @@ module TestEndpoints
|
|||
/.well-known/nodeinfo
|
||||
/nodeinfo/2.0
|
||||
/manifest
|
||||
/css/custom-1a2s3d4f.css
|
||||
/custom.css
|
||||
/actor
|
||||
/api/v1/instance/extended_description
|
||||
|
@ -172,7 +173,7 @@ RSpec.describe 'Caching behavior' do
|
|||
|
||||
before_all do
|
||||
alice = Fabricate(:account, username: 'alice')
|
||||
user = Fabricate(:user, email: 'user@host.example', role: UserRole.find_by(name: 'Moderator'))
|
||||
user = Fabricate(:moderator_user, email: 'user@host.example')
|
||||
status = Fabricate(:status, account: alice, id: 110_224_538_612_341_312)
|
||||
Fabricate(:status, account: alice, id: 110_224_538_643_211_312, visibility: :private)
|
||||
Fabricate(:invite, code: 'abcdef')
|
||||
|
|
|
@ -5,10 +5,10 @@ require 'rails_helper'
|
|||
RSpec.describe 'Custom CSS' do
|
||||
include RoutingHelper
|
||||
|
||||
describe 'GET /custom.css' do
|
||||
describe 'GET /css/:id.css' do
|
||||
context 'without any CSS or User Roles' do
|
||||
it 'returns empty stylesheet' do
|
||||
get '/custom.css'
|
||||
get '/css/custom-123.css'
|
||||
|
||||
expect(response)
|
||||
.to have_http_status(200)
|
||||
|
@ -27,7 +27,7 @@ RSpec.describe 'Custom CSS' do
|
|||
end
|
||||
|
||||
it 'returns stylesheet from settings' do
|
||||
get '/custom.css'
|
||||
get '/css/custom-456.css'
|
||||
|
||||
expect(response)
|
||||
.to have_http_status(200)
|
||||
|
@ -45,34 +45,5 @@ RSpec.describe 'Custom CSS' do
|
|||
CSS
|
||||
end
|
||||
end
|
||||
|
||||
context 'with highlighted colored UserRole records' do
|
||||
before do
|
||||
_highlighted_colored = Fabricate :user_role, highlighted: true, color: '#336699', id: '123_123_123'
|
||||
_highlighted_no_color = Fabricate :user_role, highlighted: true, color: ''
|
||||
_no_highlight_with_color = Fabricate :user_role, highlighted: false, color: ''
|
||||
end
|
||||
|
||||
it 'returns stylesheet from settings' do
|
||||
get '/custom.css'
|
||||
|
||||
expect(response)
|
||||
.to have_http_status(200)
|
||||
.and have_cacheable_headers
|
||||
.and have_attributes(
|
||||
content_type: match('text/css')
|
||||
)
|
||||
expect(response.body.strip)
|
||||
.to eq(expected_css)
|
||||
end
|
||||
|
||||
def expected_css
|
||||
<<~CSS.strip
|
||||
.user-role-123123123 {
|
||||
--user-role-accent: #336699;
|
||||
}
|
||||
CSS
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
21
spec/requests/settings/migrations_spec.rb
Normal file
21
spec/requests/settings/migrations_spec.rb
Normal file
|
@ -0,0 +1,21 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe 'Settings Migrations' do
|
||||
describe 'GET #show' do
|
||||
context 'when user is not signed in' do
|
||||
subject { get '/settings/migration' }
|
||||
|
||||
it { is_expected.to redirect_to new_user_session_path }
|
||||
end
|
||||
end
|
||||
|
||||
describe 'POST #create' do
|
||||
context 'when user is not signed in' do
|
||||
subject { post '/settings/migration' }
|
||||
|
||||
it { is_expected.to redirect_to new_user_session_path }
|
||||
end
|
||||
end
|
||||
end
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue