Merge branch 'master' into glitch-soc/merge-upstream

Conflicts:
- app/controllers/directories_controller.rb
- app/controllers/settings/applications_controller.rb
- app/controllers/settings/base_controller.rb
- app/controllers/settings/deletes_controller.rb
- app/controllers/settings/exports_controller.rb
- app/controllers/settings/follower_domains_controller.rb
- app/controllers/settings/imports_controller.rb
- app/controllers/settings/migrations_controller.rb
- app/controllers/settings/notifications_controller.rb
- app/controllers/settings/preferences_controller.rb
- app/controllers/settings/sessions_controller.rb
- app/controllers/settings/two_factor_authentication/confirmations_controller.rb
- app/controllers/settings/two_factor_authentication/recovery_codes_controller.rb
- app/controllers/settings/two_factor_authentications_controller.rb

Conflicts were due to some refactoring already made in glitch-soc
when introducing flavours.
This commit is contained in:
Thibaut Girka
2018-12-15 10:38:54 +01:00
141 changed files with 1238 additions and 402 deletions

View File

@@ -0,0 +1,25 @@
# frozen_string_literal: true
require 'rails_helper'
RSpec.describe ActivityPub::CollectionsController, type: :controller do
describe 'POST #show' do
let(:account) { Fabricate(:account) }
context 'id is "featured"' do
it 'returns 200 with "application/activity+json"' do
post :show, params: { id: 'featured', account_username: account.username }
expect(response).to have_http_status(200)
expect(response.content_type).to eq 'application/activity+json'
end
end
context 'id is not "featured"' do
it 'returns 404' do
post :show, params: { id: 'hoge', account_username: account.username }
expect(response).to have_http_status(404)
end
end
end
end

View File

@@ -0,0 +1,14 @@
# frozen_string_literal: true
require 'rails_helper'
describe Admin::ActionLogsController, type: :controller do
describe 'GET #index' do
it 'returns 200' do
sign_in Fabricate(:user, admin: true)
get :index, params: { page: 1 }
expect(response).to have_http_status(200)
end
end
end

View File

@@ -0,0 +1,14 @@
# frozen_string_literal: true
require 'rails_helper'
describe Admin::DashboardController, type: :controller do
describe 'GET #index' do
it 'returns 200' do
sign_in Fabricate(:user, admin: true)
get :index
expect(response).to have_http_status(200)
end
end
end

View File

@@ -1,3 +1,5 @@
# frozen_string_literal: true
require 'rails_helper'
describe Admin::InvitesController do
@@ -40,4 +42,18 @@ describe Admin::InvitesController do
expect(invite.reload).to be_expired
end
end
describe 'POST #deactivate_all' do
it 'expires all invites, then redirects to admin_invites_path' do
invites = Fabricate.times(2, :invite, expires_at: nil)
post :deactivate_all
invites.each do |invite|
expect(invite.reload).to be_expired
end
expect(response).to redirect_to admin_invites_path
end
end
end

View File

@@ -7,6 +7,13 @@ describe Admin::SuspensionsController do
sign_in Fabricate(:user, admin: true), scope: :user
end
describe 'GET #new' do
it 'returns 200' do
get :new, params: { account_id: Fabricate(:account).id, report_id: Fabricate(:report).id }
expect(response).to have_http_status(200)
end
end
describe 'POST #create' do
it 'redirects to admin accounts page' do
account = Fabricate(:account, suspended: false)

View File

@@ -0,0 +1,71 @@
# frozen_string_literal: true
require 'rails_helper'
RSpec.describe Admin::TagsController, type: :controller do
render_views
before do
sign_in Fabricate(:user, admin: true)
end
describe 'GET #index' do
before do
account_tag_stat = Fabricate(:tag).account_tag_stat
account_tag_stat.update(hidden: hidden, accounts_count: 1)
get :index, params: { hidden: hidden }
end
context 'with hidden tags' do
let(:hidden) { true }
it 'returns status 200' do
expect(response).to have_http_status(200)
end
end
context 'without hidden tags' do
let(:hidden) { false }
it 'returns status 200' do
expect(response).to have_http_status(200)
end
end
end
describe 'POST #hide' do
let(:tag) { Fabricate(:tag) }
before do
tag.account_tag_stat.update(hidden: false)
post :hide, params: { id: tag.id }
end
it 'hides tag' do
tag.reload
expect(tag).to be_hidden
end
it 'redirects to admin_tags_path' do
expect(response).to redirect_to(admin_tags_path(controller.instance_variable_get(:@filter_params)))
end
end
describe 'POST #unhide' do
let(:tag) { Fabricate(:tag) }
before do
tag.account_tag_stat.update(hidden: true)
post :unhide, params: { id: tag.id }
end
it 'unhides tag' do
tag.reload
expect(tag).not_to be_hidden
end
it 'redirects to admin_tags_path' do
expect(response).to redirect_to(admin_tags_path(controller.instance_variable_get(:@filter_params)))
end
end
end

View File

@@ -0,0 +1,39 @@
# frozen_string_literal: true
require 'rails_helper'
describe RemoteInteractionController, type: :controller do
render_views
let(:status) { Fabricate(:status) }
describe 'GET #new' do
it 'returns 200' do
get :new, params: { id: status.id }
expect(response).to have_http_status(200)
end
end
describe 'POST #create' do
context '@remote_follow is valid' do
it 'returns 302' do
allow_any_instance_of(RemoteFollow).to receive(:valid?) { true }
allow_any_instance_of(RemoteFollow).to receive(:addressable_template) do
Addressable::Template.new('https://hoge.com')
end
post :create, params: { id: status.id, remote_follow: { acct: '@hoge' } }
expect(response).to have_http_status(302)
end
end
context '@remote_follow is invalid' do
it 'returns 200' do
allow_any_instance_of(RemoteFollow).to receive(:valid?) { false }
post :create, params: { id: status.id, remote_follow: { acct: '@hoge' } }
expect(response).to have_http_status(200)
end
end
end
end

View File

@@ -1,3 +1,5 @@
# frozen_string_literal: true
require 'rails_helper'
describe Settings::ExportsController do
@@ -28,4 +30,23 @@ describe Settings::ExportsController do
end
end
end
describe 'POST #create' do
before do
sign_in Fabricate(:user), scope: :user
end
it 'redirects to settings_export_path' do
post :create
expect(response).to redirect_to(settings_export_path)
end
it 'queues BackupWorker job by 1' do
Sidekiq::Testing.fake! do
expect do
post :create
end.to change(BackupWorker.jobs, :size).by(1)
end
end
end
end

View File

@@ -26,4 +26,26 @@ RSpec.describe Settings::ProfilesController, type: :controller do
expect(ActivityPub::UpdateDistributionWorker).to have_received(:perform_async).with(account.id)
end
end
describe 'PUT #update with new profile image' do
it 'updates profile image' do
allow(ActivityPub::UpdateDistributionWorker).to receive(:perform_async)
account = Fabricate(:account, user: @user, display_name: 'AvatarTest')
expect(account.avatar.instance.avatar_file_name).to be_nil
put :update, params: { account: { avatar: fixture_file_upload('files/avatar.gif', 'image/gif') } }
expect(response).to redirect_to(settings_profile_path)
expect(account.reload.avatar.instance.avatar_file_name).not_to be_nil
expect(ActivityPub::UpdateDistributionWorker).to have_received(:perform_async).with(account.id)
end
end
describe 'PUT #update with oversized image' do
it 'gives the user an error message' do
allow(ActivityPub::UpdateDistributionWorker).to receive(:perform_async)
account = Fabricate(:account, user: @user, display_name: 'AvatarTest')
put :update, params: { account: { avatar: fixture_file_upload('files/4096x4097.png', 'image/png') } }
expect(response.body).to include('images are not supported')
end
end
end