Merge branch 'master' into glitch-soc/merge-upstream
Conflicts: db/migrate/20170716191202_add_hide_notifications_to_mute.rb spec/controllers/application_controller_spec.rb Took our version, upstream changes were only minor style linting.
This commit is contained in:
@@ -3,8 +3,8 @@ require 'rails_helper'
|
||||
RSpec.describe AccountsController, type: :controller do
|
||||
render_views
|
||||
|
||||
let(:alice) { Fabricate(:account, username: 'alice') }
|
||||
let(:eve) { Fabricate(:user) }
|
||||
let(:alice) { Fabricate(:account, username: 'alice') }
|
||||
let(:eve) { Fabricate(:user) }
|
||||
|
||||
describe 'GET #show' do
|
||||
let!(:status1) { Status.create!(account: alice, text: 'Hello world') }
|
||||
|
||||
@@ -25,7 +25,7 @@ RSpec.describe Admin::AccountsController, type: :controller do
|
||||
expect(h[:remote]).to eq '1'
|
||||
expect(h[:by_domain]).to eq 'domain'
|
||||
expect(h[:silenced]).to eq '1'
|
||||
expect(h[:recent]).to eq '1'
|
||||
expect(h[:alphabetic]).to eq '1'
|
||||
expect(h[:suspended]).to eq '1'
|
||||
expect(h[:username]).to eq 'username'
|
||||
expect(h[:display_name]).to eq 'display name'
|
||||
@@ -40,7 +40,7 @@ RSpec.describe Admin::AccountsController, type: :controller do
|
||||
remote: '1',
|
||||
by_domain: 'domain',
|
||||
silenced: '1',
|
||||
recent: '1',
|
||||
alphabetic: '1',
|
||||
suspended: '1',
|
||||
username: 'username',
|
||||
display_name: 'display name',
|
||||
@@ -75,7 +75,6 @@ RSpec.describe Admin::AccountsController, type: :controller do
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
describe 'POST #subscribe' do
|
||||
subject { post :subscribe, params: { id: account.id } }
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ RSpec.describe Admin::EmailDomainBlocksController, type: :controller do
|
||||
|
||||
describe 'POST #create' do
|
||||
it 'blocks the domain when succeeded to save' do
|
||||
post :create, params: { email_domain_block: { domain: 'example.com'} }
|
||||
post :create, params: { email_domain_block: { domain: 'example.com' } }
|
||||
|
||||
expect(flash[:notice]).to eq I18n.t('admin.email_domain_blocks.created_msg')
|
||||
expect(response).to redirect_to(admin_email_domain_blocks_path)
|
||||
@@ -50,7 +50,7 @@ RSpec.describe Admin::EmailDomainBlocksController, type: :controller do
|
||||
describe 'DELETE #destroy' do
|
||||
it 'unblocks the domain' do
|
||||
email_domain_block = Fabricate(:email_domain_block)
|
||||
delete :destroy, params: { id: email_domain_block.id }
|
||||
delete :destroy, params: { id: email_domain_block.id }
|
||||
|
||||
expect(flash[:notice]).to eq I18n.t('admin.email_domain_blocks.destroyed_msg')
|
||||
expect(response).to redirect_to(admin_email_domain_blocks_path)
|
||||
|
||||
@@ -24,7 +24,7 @@ describe Admin::InvitesController do
|
||||
subject { post :create, params: { invite: { max_uses: '10', expires_in: 1800 } } }
|
||||
|
||||
it 'succeeds to create a invite' do
|
||||
expect{ subject }.to change { Invite.count }.by(1)
|
||||
expect { subject }.to change { Invite.count }.by(1)
|
||||
expect(subject).to redirect_to admin_invites_path
|
||||
expect(Invite.last).to have_attributes(user_id: user.id, max_uses: 10)
|
||||
end
|
||||
|
||||
@@ -15,7 +15,6 @@ describe Admin::ReportNotesController do
|
||||
let(:report) { Fabricate(:report, action_taken: action_taken, action_taken_by_account_id: account_id) }
|
||||
|
||||
context 'when parameter is valid' do
|
||||
|
||||
context 'when report is unsolved' do
|
||||
let(:action_taken) { false }
|
||||
let(:account_id) { nil }
|
||||
@@ -24,7 +23,7 @@ describe Admin::ReportNotesController do
|
||||
let(:params) { { report_note: { content: 'test content', report_id: report.id }, create_and_resolve: nil } }
|
||||
|
||||
it 'creates a report note and resolves report' do
|
||||
expect{ subject }.to change{ ReportNote.count }.by(1)
|
||||
expect { subject }.to change { ReportNote.count }.by(1)
|
||||
expect(report.reload).to be_action_taken
|
||||
expect(subject).to redirect_to admin_reports_path
|
||||
end
|
||||
@@ -34,7 +33,7 @@ describe Admin::ReportNotesController do
|
||||
let(:params) { { report_note: { content: 'test content', report_id: report.id } } }
|
||||
|
||||
it 'creates a report note and does not resolve report' do
|
||||
expect{ subject }.to change{ ReportNote.count }.by(1)
|
||||
expect { subject }.to change { ReportNote.count }.by(1)
|
||||
expect(report.reload).not_to be_action_taken
|
||||
expect(subject).to redirect_to admin_report_path(report)
|
||||
end
|
||||
@@ -49,7 +48,7 @@ describe Admin::ReportNotesController do
|
||||
let(:params) { { report_note: { content: 'test content', report_id: report.id }, create_and_unresolve: nil } }
|
||||
|
||||
it 'creates a report note and unresolves report' do
|
||||
expect{ subject }.to change{ ReportNote.count }.by(1)
|
||||
expect { subject }.to change { ReportNote.count }.by(1)
|
||||
expect(report.reload).not_to be_action_taken
|
||||
expect(subject).to redirect_to admin_report_path(report)
|
||||
end
|
||||
@@ -59,7 +58,7 @@ describe Admin::ReportNotesController do
|
||||
let(:params) { { report_note: { content: 'test content', report_id: report.id } } }
|
||||
|
||||
it 'creates a report note and does not unresolve report' do
|
||||
expect{ subject }.to change{ ReportNote.count }.by(1)
|
||||
expect { subject }.to change { ReportNote.count }.by(1)
|
||||
expect(report.reload).to be_action_taken
|
||||
expect(subject).to redirect_to admin_report_path(report)
|
||||
end
|
||||
@@ -84,7 +83,7 @@ describe Admin::ReportNotesController do
|
||||
let!(:report_note) { Fabricate(:report_note) }
|
||||
|
||||
it 'deletes note' do
|
||||
expect{ subject }.to change{ ReportNote.count }.by(-1)
|
||||
expect { subject }.to change { ReportNote.count }.by(-1)
|
||||
expect(subject).to redirect_to admin_report_path(report_note.report)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -13,7 +13,7 @@ describe Admin::ReportedStatusesController do
|
||||
|
||||
describe 'POST #create' do
|
||||
subject do
|
||||
-> { post :create, params: { :report_id => report, action => '', :form_status_batch => { status_ids: status_ids } } }
|
||||
-> { post :create, params: { :report_id => report, action => '', :form_status_batch => { status_ids: status_ids } } }
|
||||
end
|
||||
|
||||
let(:action) { 'nsfw_on' }
|
||||
|
||||
@@ -24,7 +24,7 @@ describe Admin::StatusesController do
|
||||
end
|
||||
|
||||
it 'returns http success with media' do
|
||||
get :index, params: { account_id: account.id , media: true }
|
||||
get :index, params: { account_id: account.id, media: true }
|
||||
|
||||
statuses = assigns(:statuses).to_a
|
||||
expect(statuses.size).to eq 1
|
||||
|
||||
@@ -154,7 +154,7 @@ RSpec.describe Api::V1::AccountsController, type: :controller do
|
||||
|
||||
before do
|
||||
user.account.follow!(other_account)
|
||||
post :mute, params: {id: other_account.id }
|
||||
post :mute, params: { id: other_account.id }
|
||||
end
|
||||
|
||||
it 'returns http success' do
|
||||
@@ -182,7 +182,7 @@ RSpec.describe Api::V1::AccountsController, type: :controller do
|
||||
|
||||
before do
|
||||
user.account.follow!(other_account)
|
||||
post :mute, params: {id: other_account.id, notifications: false }
|
||||
post :mute, params: { id: other_account.id, notifications: false }
|
||||
end
|
||||
|
||||
it 'returns http success' do
|
||||
|
||||
@@ -25,7 +25,6 @@ RSpec.describe Api::V1::Statuses::FavouritedByAccountsController, type: :control
|
||||
expect(response.headers['Link'].links.size).to eq(2)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
context 'without an oauth token' do
|
||||
|
||||
@@ -31,7 +31,7 @@ describe Api::V1::StreamingController do
|
||||
|
||||
describe 'GET #index' do
|
||||
it 'redirects to streaming host' do
|
||||
get :index, params: {access_token: 'deadbeef', stream: 'public'}
|
||||
get :index, params: { access_token: 'deadbeef', stream: 'public' }
|
||||
expect(response).to have_http_status(301)
|
||||
request_uri = URI.parse(request.url)
|
||||
redirect_to_uri = URI.parse(response.location)
|
||||
@@ -42,5 +42,4 @@ describe Api::V1::StreamingController do
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -5,7 +5,7 @@ require 'rails_helper'
|
||||
describe Api::V1::Timelines::HomeController do
|
||||
render_views
|
||||
|
||||
let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice'), current_sign_in_at: 1.day.ago) }
|
||||
let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice'), current_sign_in_at: 1.day.ago) }
|
||||
|
||||
before do
|
||||
allow(controller).to receive(:doorkeeper_token) { token }
|
||||
|
||||
@@ -5,7 +5,7 @@ require 'rails_helper'
|
||||
describe Api::V1::Timelines::PublicController do
|
||||
render_views
|
||||
|
||||
let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
|
||||
let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
|
||||
|
||||
before do
|
||||
allow(controller).to receive(:doorkeeper_token) { token }
|
||||
|
||||
@@ -14,7 +14,7 @@ describe Api::Web::EmbedsController do
|
||||
|
||||
context 'when successfully finds status' do
|
||||
let(:status) { Fabricate(:status) }
|
||||
let(:url) { "http://#{ Rails.configuration.x.web_domain }/@#{status.account.username}/#{status.id}" }
|
||||
let(:url) { "http://#{Rails.configuration.x.web_domain}/@#{status.account.username}/#{status.id}" }
|
||||
|
||||
it 'returns a right response' do
|
||||
expect(response).to have_http_status :ok
|
||||
|
||||
@@ -201,7 +201,7 @@ describe ApplicationController, type: :controller do
|
||||
describe 'raise_not_found' do
|
||||
it 'raises error' do
|
||||
controller.params[:unmatched_route] = 'unmatched'
|
||||
expect{ controller.raise_not_found }.to raise_error(ActionController::RoutingError, 'No route matches unmatched')
|
||||
expect { controller.raise_not_found }.to raise_error(ActionController::RoutingError, 'No route matches unmatched')
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -67,7 +67,7 @@ describe Auth::ConfirmationsController, type: :controller do
|
||||
end
|
||||
|
||||
describe 'PATCH #finish_signup' do
|
||||
subject { patch :finish_signup, params: { user: { email: email }} }
|
||||
subject { patch :finish_signup, params: { user: { email: email } } }
|
||||
|
||||
let(:user) { Fabricate(:user) }
|
||||
before do
|
||||
|
||||
@@ -8,6 +8,7 @@ describe ApplicationController, type: :controller do
|
||||
def index
|
||||
send_export_file
|
||||
end
|
||||
|
||||
def export_data
|
||||
@export.account.username
|
||||
end
|
||||
|
||||
@@ -43,7 +43,7 @@ describe InvitesController do
|
||||
let(:user) { Fabricate(:user, moderator: false, admin: true) }
|
||||
|
||||
it 'succeeds to create a invite' do
|
||||
expect{ subject }.to change { Invite.count }.by(1)
|
||||
expect { subject }.to change { Invite.count }.by(1)
|
||||
expect(subject).to redirect_to invites_path
|
||||
expect(Invite.last).to have_attributes(user_id: user.id, max_uses: 10)
|
||||
end
|
||||
|
||||
@@ -14,11 +14,11 @@ describe RemoteUnfollowsController do
|
||||
before do
|
||||
sign_in current_user
|
||||
current_account.follow!(remote_account)
|
||||
stub_request(:post, 'http://example.com/inbox'){ { status: 200 } }
|
||||
stub_request(:post, 'http://example.com/inbox') { { status: 200 } }
|
||||
end
|
||||
|
||||
context 'when successfully unfollow remote account' do
|
||||
let(:acct) {"acct:#{ remote_account.username }@#{ remote_account.domain }"}
|
||||
let(:acct) { "acct:#{remote_account.username}@#{remote_account.domain}" }
|
||||
|
||||
it do
|
||||
is_expected.to render_template :success
|
||||
@@ -27,7 +27,7 @@ describe RemoteUnfollowsController do
|
||||
end
|
||||
|
||||
context 'when fails to unfollow remote account' do
|
||||
let(:acct) {"acct:#{ remote_account.username + '_test' }@#{ remote_account.domain }"}
|
||||
let(:acct) { "acct:#{remote_account.username + '_test'}@#{remote_account.domain}" }
|
||||
|
||||
it do
|
||||
is_expected.to render_template :error
|
||||
|
||||
@@ -21,7 +21,6 @@ describe Settings::ApplicationsController do
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
describe 'GET #show' do
|
||||
it 'returns http success' do
|
||||
get :show, params: { id: app.id }
|
||||
@@ -48,13 +47,13 @@ describe Settings::ApplicationsController do
|
||||
context 'success (passed scopes as a String)' do
|
||||
def call_create
|
||||
post :create, params: {
|
||||
doorkeeper_application: {
|
||||
name: 'My New App',
|
||||
redirect_uri: 'urn:ietf:wg:oauth:2.0:oob',
|
||||
website: 'http://google.com',
|
||||
scopes: 'read write follow'
|
||||
}
|
||||
}
|
||||
doorkeeper_application: {
|
||||
name: 'My New App',
|
||||
redirect_uri: 'urn:ietf:wg:oauth:2.0:oob',
|
||||
website: 'http://google.com',
|
||||
scopes: 'read write follow'
|
||||
}
|
||||
}
|
||||
response
|
||||
end
|
||||
|
||||
@@ -70,13 +69,13 @@ describe Settings::ApplicationsController do
|
||||
context 'success (passed scopes as an Array)' do
|
||||
def call_create
|
||||
post :create, params: {
|
||||
doorkeeper_application: {
|
||||
name: 'My New App',
|
||||
redirect_uri: 'urn:ietf:wg:oauth:2.0:oob',
|
||||
website: 'http://google.com',
|
||||
scopes: [ 'read', 'write', 'follow' ]
|
||||
}
|
||||
}
|
||||
doorkeeper_application: {
|
||||
name: 'My New App',
|
||||
redirect_uri: 'urn:ietf:wg:oauth:2.0:oob',
|
||||
website: 'http://google.com',
|
||||
scopes: [ 'read', 'write', 'follow' ]
|
||||
}
|
||||
}
|
||||
response
|
||||
end
|
||||
|
||||
@@ -92,13 +91,13 @@ describe Settings::ApplicationsController do
|
||||
context 'failure' do
|
||||
before do
|
||||
post :create, params: {
|
||||
doorkeeper_application: {
|
||||
name: '',
|
||||
redirect_uri: '',
|
||||
website: '',
|
||||
scopes: []
|
||||
}
|
||||
}
|
||||
doorkeeper_application: {
|
||||
name: '',
|
||||
redirect_uri: '',
|
||||
website: '',
|
||||
scopes: []
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
it 'returns http success' do
|
||||
@@ -121,9 +120,9 @@ describe Settings::ApplicationsController do
|
||||
|
||||
def call_update
|
||||
patch :update, params: {
|
||||
id: app.id,
|
||||
doorkeeper_application: opts
|
||||
}
|
||||
id: app.id,
|
||||
doorkeeper_application: opts
|
||||
}
|
||||
response
|
||||
end
|
||||
|
||||
@@ -140,14 +139,14 @@ describe Settings::ApplicationsController do
|
||||
context 'failure' do
|
||||
before do
|
||||
patch :update, params: {
|
||||
id: app.id,
|
||||
doorkeeper_application: {
|
||||
name: '',
|
||||
redirect_uri: '',
|
||||
website: '',
|
||||
scopes: []
|
||||
}
|
||||
}
|
||||
id: app.id,
|
||||
doorkeeper_application: {
|
||||
name: '',
|
||||
redirect_uri: '',
|
||||
website: '',
|
||||
scopes: []
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
it 'returns http success' do
|
||||
|
||||
@@ -10,7 +10,6 @@ describe Settings::MigrationsController do
|
||||
end
|
||||
|
||||
describe 'GET #show' do
|
||||
|
||||
context 'when user is not sign in' do
|
||||
subject { get :show }
|
||||
|
||||
@@ -45,7 +44,6 @@ describe Settings::MigrationsController do
|
||||
end
|
||||
|
||||
describe 'PUT #update' do
|
||||
|
||||
context 'when user is not sign in' do
|
||||
subject { put :update }
|
||||
|
||||
|
||||
+1
-1
@@ -50,7 +50,7 @@ describe Settings::TwoFactorAuthentication::ConfirmationsController do
|
||||
|
||||
describe 'when form_two_factor_confirmation parameter is not provided' do
|
||||
it 'raises ActionController::ParameterMissing' do
|
||||
expect { post :create, params: { } }.to raise_error(ActionController::ParameterMissing)
|
||||
expect { post :create, params: {} }.to raise_error(ActionController::ParameterMissing)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -6,5 +6,5 @@ Fabricator(:account) do
|
||||
username { sequence(:username) { |i| "#{Faker::Internet.user_name(nil, %w(_))}#{i}" } }
|
||||
last_webfingered_at { Time.now.utc }
|
||||
public_key { public_key }
|
||||
private_key { private_key}
|
||||
private_key { private_key }
|
||||
end
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
Fabricator(:list) do
|
||||
account
|
||||
title "MyString"
|
||||
title "MyString"
|
||||
end
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
Fabricator(:relay) do
|
||||
inbox_url "https://example.com/inbox"
|
||||
state :idle
|
||||
state :idle
|
||||
end
|
||||
|
||||
@@ -1,3 +1,2 @@
|
||||
Fabricator(:site_upload) do
|
||||
|
||||
end
|
||||
|
||||
@@ -400,7 +400,7 @@ RSpec.describe FeedManager do
|
||||
end
|
||||
|
||||
it 'sends push updates' do
|
||||
status = Fabricate(:status)
|
||||
status = Fabricate(:status)
|
||||
|
||||
FeedManager.instance.push_to_home(receiver, status)
|
||||
|
||||
|
||||
@@ -170,12 +170,11 @@ RSpec.describe Formatter do
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
describe '#format_spoiler' do
|
||||
subject { Formatter.instance.format_spoiler(status) }
|
||||
|
||||
context 'given a post containing plain text' do
|
||||
let(:status) { Fabricate(:status, text: 'text', spoiler_text: 'Secret!', uri: nil) }
|
||||
let(:status) { Fabricate(:status, text: 'text', spoiler_text: 'Secret!', uri: nil) }
|
||||
|
||||
it 'Returns the spoiler text' do
|
||||
is_expected.to eq 'Secret!'
|
||||
@@ -184,7 +183,7 @@ RSpec.describe Formatter do
|
||||
|
||||
context 'given a post with an emoji shortcode at the start' do
|
||||
let!(:emoji) { Fabricate(:custom_emoji) }
|
||||
let(:status) { Fabricate(:status, text: 'text', spoiler_text: ':coolcat: Secret!', uri: nil) }
|
||||
let(:status) { Fabricate(:status, text: 'text', spoiler_text: ':coolcat: Secret!', uri: nil) }
|
||||
let(:text) { ':coolcat: Beep boop' }
|
||||
|
||||
it 'converts the shortcode to an image tag' do
|
||||
@@ -207,7 +206,7 @@ RSpec.describe Formatter do
|
||||
end
|
||||
|
||||
context 'given a post containing plain text' do
|
||||
let(:status) { Fabricate(:status, text: 'text', uri: nil) }
|
||||
let(:status) { Fabricate(:status, text: 'text', uri: nil) }
|
||||
|
||||
it 'paragraphizes the text' do
|
||||
is_expected.to eq '<p>text</p>'
|
||||
@@ -215,7 +214,7 @@ RSpec.describe Formatter do
|
||||
end
|
||||
|
||||
context 'given a post containing line feeds' do
|
||||
let(:status) { Fabricate(:status, text: "line\nfeed", uri: nil) }
|
||||
let(:status) { Fabricate(:status, text: "line\nfeed", uri: nil) }
|
||||
|
||||
it 'removes line feeds' do
|
||||
is_expected.not_to include "\n"
|
||||
@@ -367,7 +366,7 @@ RSpec.describe Formatter do
|
||||
subject { Formatter.instance.plaintext(status) }
|
||||
|
||||
context 'given a post with local status' do
|
||||
let(:status) { Fabricate(:status, text: '<p>a text by a nerd who uses an HTML tag in text</p>', uri: nil) }
|
||||
let(:status) { Fabricate(:status, text: '<p>a text by a nerd who uses an HTML tag in text</p>', uri: nil) }
|
||||
|
||||
it 'returns the raw text' do
|
||||
is_expected.to eq '<p>a text by a nerd who uses an HTML tag in text</p>'
|
||||
@@ -375,7 +374,7 @@ RSpec.describe Formatter do
|
||||
end
|
||||
|
||||
context 'given a post with remote status' do
|
||||
let(:status) { Fabricate(:status, account: remote_account, text: '<script>alert("Hello")</script>') }
|
||||
let(:status) { Fabricate(:status, account: remote_account, text: '<script>alert("Hello")</script>') }
|
||||
|
||||
it 'returns tag-stripped text' do
|
||||
is_expected.to eq ''
|
||||
|
||||
@@ -90,7 +90,7 @@ describe LanguageDetector do
|
||||
end
|
||||
|
||||
it 'uses nil when account is present but has no locale' do
|
||||
result = described_class.instance.detect('', account_without_user_locale)
|
||||
result = described_class.instance.detect('', account_without_user_locale)
|
||||
|
||||
expect(result).to eq nil
|
||||
end
|
||||
|
||||
@@ -880,7 +880,7 @@ RSpec.describe OStatus::AtomSerializer do
|
||||
|
||||
ProcessInteractionService.new.call(envelope, block.target_account)
|
||||
|
||||
expect{ block.reload }.to raise_error ActiveRecord::RecordNotFound
|
||||
expect { block.reload }.to raise_error ActiveRecord::RecordNotFound
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -84,7 +84,7 @@ describe Request do
|
||||
allow(Addrinfo).to receive(:foreach).with('example.com', nil, nil, :SOCK_STREAM)
|
||||
.and_yield(Addrinfo.new(["AF_INET", 0, "example.com", "0.0.0.0"], :PF_INET, :SOCK_STREAM))
|
||||
.and_yield(Addrinfo.new(["AF_INET6", 0, "example.com", "2001:db8::face"], :PF_INET6, :SOCK_STREAM))
|
||||
expect{ subject.perform }.to raise_error Mastodon::ValidationError
|
||||
expect { subject.perform }.to raise_error Mastodon::ValidationError
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -2,10 +2,10 @@ require 'rails_helper'
|
||||
|
||||
describe AccountFilter do
|
||||
describe 'with empty params' do
|
||||
it 'defaults to alphabetic account list' do
|
||||
it 'defaults to recent account list' do
|
||||
filter = described_class.new({})
|
||||
|
||||
expect(filter.results).to eq Account.alphabetic
|
||||
expect(filter.results).to eq Account.recent
|
||||
end
|
||||
end
|
||||
|
||||
@@ -60,7 +60,7 @@ describe AccountFilter do
|
||||
end
|
||||
|
||||
describe 'that call account methods' do
|
||||
%i(local remote silenced recent suspended).each do |option|
|
||||
%i(local remote silenced alphabetic suspended).each do |option|
|
||||
it "delegates the #{option} option" do
|
||||
allow(Account).to receive(option).and_return(Account.none)
|
||||
filter = described_class.new({ option => true })
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe AccountModerationNote, type: :model do
|
||||
|
||||
end
|
||||
|
||||
@@ -275,7 +275,7 @@ RSpec.describe Account, type: :model do
|
||||
|
||||
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
|
||||
author = Fabricate(:account, username: 'original_reblogger')
|
||||
Fabricate(:status, reblog: original_status, account: author)
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe Admin::ActionLog, type: :model do
|
||||
|
||||
end
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe Backup, type: :model do
|
||||
|
||||
end
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe ConversationMute, type: :model do
|
||||
|
||||
end
|
||||
|
||||
@@ -4,7 +4,7 @@ RSpec.describe CustomEmoji, type: :model do
|
||||
describe '#search' do
|
||||
let(:custom_emoji) { Fabricate(:custom_emoji, shortcode: shortcode) }
|
||||
|
||||
subject { described_class.search(search_term) }
|
||||
subject { described_class.search(search_term) }
|
||||
|
||||
context 'shortcode is exact' do
|
||||
let(:shortcode) { 'blobpats' }
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe CustomFilter, type: :model do
|
||||
|
||||
end
|
||||
|
||||
@@ -23,6 +23,20 @@ RSpec.describe Follow, type: :model do
|
||||
follow.valid?
|
||||
expect(follow).to model_have_error_on_field(:target_account)
|
||||
end
|
||||
|
||||
it 'is invalid if account already follows too many people' do
|
||||
alice.update(following_count: FollowLimitValidator::LIMIT)
|
||||
|
||||
expect(subject).to_not be_valid
|
||||
expect(subject).to model_have_error_on_field(:base)
|
||||
end
|
||||
|
||||
it 'is valid if account is only on the brink of following too many people' do
|
||||
alice.update(following_count: FollowLimitValidator::LIMIT - 1)
|
||||
|
||||
expect(subject).to be_valid
|
||||
expect(subject).to_not model_have_error_on_field(:base)
|
||||
end
|
||||
end
|
||||
|
||||
describe 'recent' do
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe ListAccount, type: :model do
|
||||
|
||||
end
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe List, type: :model do
|
||||
|
||||
end
|
||||
|
||||
@@ -131,7 +131,7 @@ RSpec.describe MediaAttachment, type: :model do
|
||||
expect(media.file.meta["original"]["aspect"]).to eq 1.5
|
||||
expect(media.file.meta["small"]["width"]).to eq 490
|
||||
expect(media.file.meta["small"]["height"]).to eq 327
|
||||
expect(media.file.meta["small"]["aspect"]).to eq 490.0/327
|
||||
expect(media.file.meta["small"]["aspect"]).to eq 490.0 / 327
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe Mute, type: :model do
|
||||
|
||||
end
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe PreviewCard, type: :model do
|
||||
|
||||
end
|
||||
|
||||
@@ -34,7 +34,7 @@ RSpec.describe RemoteFollow do
|
||||
subject { remote_follow.valid? }
|
||||
|
||||
context 'attrs with acct' do
|
||||
let(:attrs) { { acct: 'gargron@quitter.no' }}
|
||||
let(:attrs) { { acct: 'gargron@quitter.no' } }
|
||||
|
||||
it do
|
||||
is_expected.to be true
|
||||
@@ -42,7 +42,7 @@ RSpec.describe RemoteFollow do
|
||||
end
|
||||
|
||||
context 'attrs without acct' do
|
||||
let(:attrs) { { } }
|
||||
let(:attrs) { {} }
|
||||
|
||||
it do
|
||||
is_expected.to be false
|
||||
|
||||
@@ -254,7 +254,7 @@ RSpec.describe User, type: :model do
|
||||
|
||||
it_behaves_like 'Settings-extended' do
|
||||
def create!
|
||||
User.create!(account: Fabricate(:account), email: 'foo@mastodon.space', password: 'abcd1234' )
|
||||
User.create!(account: Fabricate(:account), email: 'foo@mastodon.space', password: 'abcd1234')
|
||||
end
|
||||
|
||||
def fabricate
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe Web::Setting, type: :model do
|
||||
|
||||
end
|
||||
|
||||
@@ -34,7 +34,7 @@ RSpec.describe ActivityPub::ProcessCollectionService, type: :service do
|
||||
end
|
||||
|
||||
it 'processes payload with actor if valid signature exists' do
|
||||
payload['signature'] = {'type' => 'RsaSignature2017'}
|
||||
payload['signature'] = { 'type' => 'RsaSignature2017' }
|
||||
|
||||
expect_any_instance_of(ActivityPub::LinkedDataSignature).to receive(:verify_account!).and_return(actor)
|
||||
expect(ActivityPub::Activity).to receive(:factory).with(instance_of(Hash), actor, instance_of(Hash))
|
||||
@@ -43,7 +43,7 @@ RSpec.describe ActivityPub::ProcessCollectionService, type: :service do
|
||||
end
|
||||
|
||||
it 'does not process payload if invalid signature exists' do
|
||||
payload['signature'] = {'type' => 'RsaSignature2017'}
|
||||
payload['signature'] = { 'type' => 'RsaSignature2017' }
|
||||
|
||||
expect_any_instance_of(ActivityPub::LinkedDataSignature).to receive(:verify_account!).and_return(nil)
|
||||
expect(ActivityPub::Activity).not_to receive(:factory)
|
||||
|
||||
@@ -57,7 +57,7 @@ RSpec.describe FetchAtomService, type: :service do
|
||||
context 'content type is application/atom+xml' do
|
||||
let(:content_type) { 'application/atom+xml' }
|
||||
|
||||
it { is_expected.to eq [url, {:prefetched_body=>""}, :ostatus] }
|
||||
it { is_expected.to eq [url, { :prefetched_body => "" }, :ostatus] }
|
||||
end
|
||||
|
||||
context 'content_type is json' do
|
||||
|
||||
@@ -3,80 +3,107 @@ require 'rails_helper'
|
||||
RSpec.describe VerifyLinkService, type: :service do
|
||||
subject { described_class.new }
|
||||
|
||||
let(:account) { Fabricate(:account, username: 'alice') }
|
||||
let(:field) { Account::Field.new(account, 'name' => 'Website', 'value' => 'http://example.com') }
|
||||
context 'given a local account' do
|
||||
let(:account) { Fabricate(:account, username: 'alice') }
|
||||
let(:field) { Account::Field.new(account, 'name' => 'Website', 'value' => 'http://example.com') }
|
||||
|
||||
before do
|
||||
stub_request(:head, 'https://redirect.me/abc').to_return(status: 301, headers: { 'Location' => ActivityPub::TagManager.instance.url_for(account) })
|
||||
stub_request(:get, 'http://example.com').to_return(status: 200, body: html)
|
||||
subject.call(field)
|
||||
end
|
||||
|
||||
context 'when a link contains an <a> back' do
|
||||
let(:html) do
|
||||
<<-HTML
|
||||
<!doctype html>
|
||||
<body>
|
||||
<a href="#{ActivityPub::TagManager.instance.url_for(account)}" rel="me">Follow me on Mastodon</a>
|
||||
</body>
|
||||
HTML
|
||||
before do
|
||||
stub_request(:head, 'https://redirect.me/abc').to_return(status: 301, headers: { 'Location' => ActivityPub::TagManager.instance.url_for(account) })
|
||||
stub_request(:get, 'http://example.com').to_return(status: 200, body: html)
|
||||
subject.call(field)
|
||||
end
|
||||
|
||||
it 'marks the field as verified' do
|
||||
expect(field.verified?).to be true
|
||||
context 'when a link contains an <a> back' do
|
||||
let(:html) do
|
||||
<<-HTML
|
||||
<!doctype html>
|
||||
<body>
|
||||
<a href="#{ActivityPub::TagManager.instance.url_for(account)}" rel="me">Follow me on Mastodon</a>
|
||||
</body>
|
||||
HTML
|
||||
end
|
||||
|
||||
it 'marks the field as verified' do
|
||||
expect(field.verified?).to be true
|
||||
end
|
||||
end
|
||||
|
||||
context 'when a link contains an <a rel="noopener"> back' do
|
||||
let(:html) do
|
||||
<<-HTML
|
||||
<!doctype html>
|
||||
<body>
|
||||
<a href="#{ActivityPub::TagManager.instance.url_for(account)}" rel="noopener me" target="_blank">Follow me on Mastodon</a>
|
||||
</body>
|
||||
HTML
|
||||
end
|
||||
|
||||
it 'marks the field as verified' do
|
||||
expect(field.verified?).to be true
|
||||
end
|
||||
end
|
||||
|
||||
context 'when a link contains a <link> back' do
|
||||
let(:html) do
|
||||
<<-HTML
|
||||
<!doctype html>
|
||||
<head>
|
||||
<link type="text/html" href="#{ActivityPub::TagManager.instance.url_for(account)}" rel="me" />
|
||||
</head>
|
||||
HTML
|
||||
end
|
||||
|
||||
it 'marks the field as verified' do
|
||||
expect(field.verified?).to be true
|
||||
end
|
||||
end
|
||||
|
||||
context 'when a link goes through a redirect back' do
|
||||
let(:html) do
|
||||
<<-HTML
|
||||
<!doctype html>
|
||||
<head>
|
||||
<link type="text/html" href="https://redirect.me/abc" rel="me" />
|
||||
</head>
|
||||
HTML
|
||||
end
|
||||
|
||||
it 'marks the field as verified' do
|
||||
expect(field.verified?).to be true
|
||||
end
|
||||
end
|
||||
|
||||
context 'when a link does not contain a link back' do
|
||||
let(:html) { '' }
|
||||
|
||||
it 'marks the field as verified' do
|
||||
expect(field.verified?).to be false
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'when a link contains an <a rel="noopener"> back' do
|
||||
let(:html) do
|
||||
<<-HTML
|
||||
<!doctype html>
|
||||
<body>
|
||||
<a href="#{ActivityPub::TagManager.instance.url_for(account)}" rel="noopener me" target="_blank">Follow me on Mastodon</a>
|
||||
</body>
|
||||
HTML
|
||||
context 'given a remote account' do
|
||||
let(:account) { Fabricate(:account, username: 'alice', domain: 'example.com', url: 'https://profile.example.com/alice') }
|
||||
let(:field) { Account::Field.new(account, 'name' => 'Website', 'value' => '<a href="http://example.com" rel="me"><span class="invisible">http://</span><span class="">example.com</span><span class="invisible"></span></a>') }
|
||||
|
||||
before do
|
||||
stub_request(:get, 'http://example.com').to_return(status: 200, body: html)
|
||||
subject.call(field)
|
||||
end
|
||||
|
||||
it 'marks the field as verified' do
|
||||
expect(field.verified?).to be true
|
||||
end
|
||||
end
|
||||
context 'when a link contains an <a> back' do
|
||||
let(:html) do
|
||||
<<-HTML
|
||||
<!doctype html>
|
||||
<body>
|
||||
<a href="https://profile.example.com/alice" rel="me">Follow me on Mastodon</a>
|
||||
</body>
|
||||
HTML
|
||||
end
|
||||
|
||||
context 'when a link contains a <link> back' do
|
||||
let(:html) do
|
||||
<<-HTML
|
||||
<!doctype html>
|
||||
<head>
|
||||
<link type="text/html" href="#{ActivityPub::TagManager.instance.url_for(account)}" rel="me" />
|
||||
</head>
|
||||
HTML
|
||||
end
|
||||
|
||||
it 'marks the field as verified' do
|
||||
expect(field.verified?).to be true
|
||||
end
|
||||
end
|
||||
|
||||
context 'when a link goes through a redirect back' do
|
||||
let(:html) do
|
||||
<<-HTML
|
||||
<!doctype html>
|
||||
<head>
|
||||
<link type="text/html" href="https://redirect.me/abc" rel="me" />
|
||||
</head>
|
||||
HTML
|
||||
end
|
||||
|
||||
it 'marks the field as verified' do
|
||||
expect(field.verified?).to be true
|
||||
end
|
||||
end
|
||||
|
||||
context 'when a link does not contain a link back' do
|
||||
let(:html) { '' }
|
||||
|
||||
it 'marks the field as verified' do
|
||||
expect(field.verified?).to be false
|
||||
it 'marks the field as verified' do
|
||||
expect(field.verified?).to be true
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -49,8 +49,8 @@ describe 'stream_entries/show.html.haml', without_verify_partial_doubles: true d
|
||||
assign(:stream_entry, reply.stream_entry)
|
||||
assign(:account, alice)
|
||||
assign(:type, reply.stream_entry.activity_type.downcase)
|
||||
assign(:ancestors, reply.stream_entry.activity.ancestors(1, bob) )
|
||||
assign(:descendant_threads, [{ statuses: reply.stream_entry.activity.descendants(1)}])
|
||||
assign(:ancestors, reply.stream_entry.activity.ancestors(1, bob))
|
||||
assign(:descendant_threads, [{ statuses: reply.stream_entry.activity.descendants(1) }])
|
||||
|
||||
render
|
||||
|
||||
|
||||
Reference in New Issue
Block a user