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

Conflicts:
- `app/views/admin/announcements/edit.html.haml`:
  Upstream change too close to theming-related glitch-soc change.
  Ported upstream changes.
- `app/views/admin/announcements/new.html.haml`
  Upstream change too close to theming-related glitch-soc change.
  Ported upstream changes.
This commit is contained in:
Claire
2022-11-14 08:35:55 +01:00
171 changed files with 1816 additions and 1092 deletions

View File

@@ -94,25 +94,37 @@ RSpec.describe Api::V1::Admin::DomainAllowsController, type: :controller do
describe 'POST #create' do
let!(:domain_allow) { Fabricate(:domain_allow, domain: 'example.com') }
before do
post :create, params: { domain: 'foo.bar.com' }
context do
before do
post :create, params: { domain: 'foo.bar.com' }
end
it_behaves_like 'forbidden for wrong scope', 'write:statuses'
it_behaves_like 'forbidden for wrong role', ''
it_behaves_like 'forbidden for wrong role', 'Moderator'
it 'returns http success' do
expect(response).to have_http_status(200)
end
it 'returns expected domain name' do
json = body_as_json
expect(json[:domain]).to eq 'foo.bar.com'
end
it 'creates a domain block' do
expect(DomainAllow.find_by(domain: 'foo.bar.com')).to_not be_nil
end
end
it_behaves_like 'forbidden for wrong scope', 'write:statuses'
it_behaves_like 'forbidden for wrong role', ''
it_behaves_like 'forbidden for wrong role', 'Moderator'
context 'with invalid domain name' do
before do
post :create, params: { domain: 'foo bar' }
end
it 'returns http success' do
expect(response).to have_http_status(200)
end
it 'returns expected domain name' do
json = body_as_json
expect(json[:domain]).to eq 'foo.bar.com'
end
it 'creates a domain block' do
expect(DomainAllow.find_by(domain: 'foo.bar.com')).to_not be_nil
it 'returns http unprocessable entity' do
expect(response).to have_http_status(422)
end
end
end
end

View File

@@ -1,6 +1,6 @@
require 'rails_helper'
RSpec.describe Api::V1::Filters::KeywordsController, type: :controller do
RSpec.describe Api::V2::Filters::KeywordsController, type: :controller do
render_views
let(:user) { Fabricate(:user) }

View File

@@ -1,6 +1,6 @@
require 'rails_helper'
RSpec.describe Api::V1::Filters::StatusesController, type: :controller do
RSpec.describe Api::V2::Filters::StatusesController, type: :controller do
render_views
let(:user) { Fabricate(:user) }

View File

@@ -0,0 +1 @@
@nare@թութ.հայ

View File

@@ -89,6 +89,14 @@ RSpec.describe Account::Field, type: :model do
expect(subject.verifiable?).to be false
end
end
context 'for text which is blank' do
let(:value) { '' }
it 'returns false' do
expect(subject.verifiable?).to be false
end
end
end
context 'for remote accounts' do
@@ -133,6 +141,14 @@ RSpec.describe Account::Field, type: :model do
expect(subject.verifiable?).to be false
end
end
context 'for text which is blank' do
let(:value) { '' }
it 'returns false' do
expect(subject.verifiable?).to be false
end
end
end
end
end

View File

@@ -50,10 +50,10 @@ RSpec.describe CustomEmojiFilter do
context 'else' do
let(:params) { { else: 'else' } }
it 'raises RuntimeError' do
it 'raises Mastodon::InvalidParameterError' do
expect do
subject
end.to raise_error(RuntimeError, /Unknown filter: else/)
end.to raise_error(Mastodon::InvalidParameterError, /Unknown filter: else/)
end
end
end

View File

@@ -172,6 +172,29 @@ RSpec.describe ImportService, type: :service do
end
end
# Based on the bug report 20571 where UTF-8 encoded domains were rejecting import of their users
#
# https://github.com/mastodon/mastodon/issues/20571
context 'utf-8 encoded domains' do
subject { ImportService.new }
let!(:nare) { Fabricate(:account, username: 'nare', domain: 'թութ.հայ', locked: false, protocol: :activitypub, inbox_url: 'https://թութ.հայ/inbox') }
# Make sure to not actually go to the remote server
before do
stub_request(:post, "https://թութ.հայ/inbox").to_return(status: 200)
end
let(:csv) { attachment_fixture('utf8-followers.txt') }
let(:import) { Import.create(account: account, type: 'following', data: csv) }
it 'follows the listed account' do
expect(account.follow_requests.count).to eq 0
subject.call(import)
expect(account.follow_requests.count).to eq 1
end
end
context 'import bookmarks' do
subject { ImportService.new }