mirror of
https://github.com/glitch-soc/mastodon.git
synced 2025-12-26 20:36:25 +00:00
Merge commit '887e64efd4abbf3980e008c7a5441b44fbd6c766' into glitch-soc/merge-upstream
This commit is contained in:
@@ -129,6 +129,24 @@ RSpec.describe LinkDetailsExtractor do
|
||||
include_examples 'structured data'
|
||||
end
|
||||
|
||||
context 'with the first tag is null' do
|
||||
let(:html) { <<~HTML }
|
||||
<!doctype html>
|
||||
<html>
|
||||
<body>
|
||||
<script type="application/ld+json">
|
||||
null
|
||||
</script>
|
||||
<script type="application/ld+json">
|
||||
#{ld_json}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
HTML
|
||||
|
||||
include_examples 'structured data'
|
||||
end
|
||||
|
||||
context 'with preceding block of unsupported LD+JSON' do
|
||||
let(:html) { <<~HTML }
|
||||
<!doctype html>
|
||||
|
||||
@@ -224,6 +224,14 @@ RSpec.describe TextFormatter do
|
||||
end
|
||||
end
|
||||
|
||||
context 'when given a URL with trailing @ symbol' do
|
||||
let(:text) { 'https://gta.fandom.com/wiki/TW@ Content' }
|
||||
|
||||
it 'matches the full URL' do
|
||||
expect(subject).to include 'href="https://gta.fandom.com/wiki/TW@"'
|
||||
end
|
||||
end
|
||||
|
||||
context 'when given a URL containing unsafe code (XSS attack, visible part)' do
|
||||
let(:text) { 'http://example.com/b<del>b</del>' }
|
||||
|
||||
|
||||
@@ -711,6 +711,14 @@ RSpec.describe Account do
|
||||
it 'does not match URL query string' do
|
||||
expect(subject.match('https://example.com/?x=@alice')).to be_nil
|
||||
end
|
||||
|
||||
it 'matches usernames immediately following the letter ß' do
|
||||
expect(subject.match('Hello toß @alice from me')[1]).to eq 'alice'
|
||||
end
|
||||
|
||||
it 'matches usernames containing uppercase characters' do
|
||||
expect(subject.match('Hello to @aLice@Example.com from me')[1]).to eq 'aLice@Example.com'
|
||||
end
|
||||
end
|
||||
|
||||
describe 'validations' do
|
||||
|
||||
@@ -95,6 +95,14 @@ RSpec.describe Tag do
|
||||
it 'does not match purely-numeric hashtags' do
|
||||
expect(subject.match('hello #0123456')).to be_nil
|
||||
end
|
||||
|
||||
it 'matches hashtags immediately following the letter ß' do
|
||||
expect(subject.match('Hello toß #ruby').to_s).to eq '#ruby'
|
||||
end
|
||||
|
||||
it 'matches hashtags containing uppercase characters' do
|
||||
expect(subject.match('Hello #rubyOnRails').to_s).to eq '#rubyOnRails'
|
||||
end
|
||||
end
|
||||
|
||||
describe '#to_param' do
|
||||
|
||||
@@ -7,7 +7,7 @@ RSpec::Matchers.define :include_pagination_headers do |links|
|
||||
end.all?
|
||||
end
|
||||
|
||||
failure_message do |header|
|
||||
"expected that #{header} would have the same values as #{links}."
|
||||
failure_message do |response|
|
||||
"expected that #{response.headers['Link']} would have the same values as #{links}."
|
||||
end
|
||||
end
|
||||
|
||||
@@ -12,29 +12,31 @@ describe Scheduler::UserCleanupScheduler do
|
||||
|
||||
describe '#perform' do
|
||||
before do
|
||||
# Need to update the already-existing users because their initialization overrides confirmation_sent_at
|
||||
# Update already-existing users because initialization overrides `confirmation_sent_at`
|
||||
new_unconfirmed_user.update!(confirmed_at: nil, confirmation_sent_at: Time.now.utc)
|
||||
old_unconfirmed_user.update!(confirmed_at: nil, confirmation_sent_at: 10.days.ago)
|
||||
confirmed_user.update!(confirmed_at: 1.day.ago)
|
||||
end
|
||||
|
||||
it 'deletes the old unconfirmed user, their account, and the moderation note' do
|
||||
it 'deletes the old unconfirmed user and metadata while preserving confirmed user and newer unconfirmed user' do
|
||||
expect { subject.perform }
|
||||
.to change { User.exists?(old_unconfirmed_user.id) }.from(true).to(false)
|
||||
.and change { Account.exists?(old_unconfirmed_user.account_id) }.from(true).to(false)
|
||||
expect { moderation_note.reload }.to raise_error(ActiveRecord::RecordNotFound)
|
||||
.to change { User.exists?(old_unconfirmed_user.id) }
|
||||
.from(true).to(false)
|
||||
.and change { Account.exists?(old_unconfirmed_user.account_id) }
|
||||
.from(true).to(false)
|
||||
expect { moderation_note.reload }
|
||||
.to raise_error(ActiveRecord::RecordNotFound)
|
||||
expect_preservation_of(new_unconfirmed_user)
|
||||
expect_preservation_of(confirmed_user)
|
||||
end
|
||||
|
||||
it 'does not delete the new unconfirmed user or their account' do
|
||||
subject.perform
|
||||
expect(User.exists?(new_unconfirmed_user.id)).to be true
|
||||
expect(Account.exists?(new_unconfirmed_user.account_id)).to be true
|
||||
end
|
||||
private
|
||||
|
||||
it 'does not delete the confirmed user or their account' do
|
||||
subject.perform
|
||||
expect(User.exists?(confirmed_user.id)).to be true
|
||||
expect(Account.exists?(confirmed_user.account_id)).to be true
|
||||
def expect_preservation_of(user)
|
||||
expect(User.exists?(user.id))
|
||||
.to be true
|
||||
expect(Account.exists?(user.account_id))
|
||||
.to be true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user