Merge remote-tracking branch 'parent/main' into upstream-20240906
This commit is contained in:
commit
f18eabfe75
689 changed files with 4369 additions and 2434 deletions
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe Admin::Metrics::Dimension::InstanceAccountsDimension do
|
||||
RSpec.describe Admin::Metrics::Dimension::InstanceAccountsDimension do
|
||||
subject { described_class.new(start_at, end_at, limit, params) }
|
||||
|
||||
let(:start_at) { 2.days.ago }
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe Admin::Metrics::Dimension::InstanceLanguagesDimension do
|
||||
RSpec.describe Admin::Metrics::Dimension::InstanceLanguagesDimension do
|
||||
subject { described_class.new(start_at, end_at, limit, params) }
|
||||
|
||||
let(:start_at) { 2.days.ago }
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe Admin::Metrics::Dimension::LanguagesDimension do
|
||||
RSpec.describe Admin::Metrics::Dimension::LanguagesDimension do
|
||||
subject { described_class.new(start_at, end_at, limit, params) }
|
||||
|
||||
let(:start_at) { 2.days.ago }
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe Admin::Metrics::Dimension::ServersDimension do
|
||||
RSpec.describe Admin::Metrics::Dimension::ServersDimension do
|
||||
subject { described_class.new(start_at, end_at, limit, params) }
|
||||
|
||||
let(:start_at) { 2.days.ago }
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe Admin::Metrics::Dimension::SoftwareVersionsDimension do
|
||||
RSpec.describe Admin::Metrics::Dimension::SoftwareVersionsDimension do
|
||||
subject { described_class.new(start_at, end_at, limit, params) }
|
||||
|
||||
let(:start_at) { 2.days.ago }
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe Admin::Metrics::Dimension::SourcesDimension do
|
||||
RSpec.describe Admin::Metrics::Dimension::SourcesDimension do
|
||||
subject { described_class.new(start_at, end_at, limit, params) }
|
||||
|
||||
let(:start_at) { 2.days.ago }
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe Admin::Metrics::Dimension::SpaceUsageDimension do
|
||||
RSpec.describe Admin::Metrics::Dimension::SpaceUsageDimension do
|
||||
subject { described_class.new(start_at, end_at, limit, params) }
|
||||
|
||||
let(:start_at) { 2.days.ago }
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe Admin::Metrics::Dimension::TagLanguagesDimension do
|
||||
RSpec.describe Admin::Metrics::Dimension::TagLanguagesDimension do
|
||||
subject { described_class.new(start_at, end_at, limit, params) }
|
||||
|
||||
let(:start_at) { 2.days.ago }
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe Admin::Metrics::Dimension::TagServersDimension do
|
||||
RSpec.describe Admin::Metrics::Dimension::TagServersDimension do
|
||||
subject { described_class.new(start_at, end_at, limit, params) }
|
||||
|
||||
let(:start_at) { 2.days.ago }
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe Admin::Metrics::Dimension do
|
||||
RSpec.describe Admin::Metrics::Dimension do
|
||||
describe '.retrieve' do
|
||||
subject { described_class.retrieve(reports, start_at, end_at, 5, params) }
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe Admin::Metrics::Measure::ActiveUsersMeasure do
|
||||
RSpec.describe Admin::Metrics::Measure::ActiveUsersMeasure do
|
||||
subject { described_class.new(start_at, end_at, params) }
|
||||
|
||||
let(:start_at) { 2.days.ago }
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe Admin::Metrics::Measure::InstanceAccountsMeasure do
|
||||
RSpec.describe Admin::Metrics::Measure::InstanceAccountsMeasure do
|
||||
subject { described_class.new(start_at, end_at, params) }
|
||||
|
||||
let(:domain) { 'example.com' }
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe Admin::Metrics::Measure::InstanceFollowersMeasure do
|
||||
RSpec.describe Admin::Metrics::Measure::InstanceFollowersMeasure do
|
||||
subject { described_class.new(start_at, end_at, params) }
|
||||
|
||||
let(:domain) { 'example.com' }
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe Admin::Metrics::Measure::InstanceFollowsMeasure do
|
||||
RSpec.describe Admin::Metrics::Measure::InstanceFollowsMeasure do
|
||||
subject { described_class.new(start_at, end_at, params) }
|
||||
|
||||
let(:domain) { 'example.com' }
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe Admin::Metrics::Measure::InstanceMediaAttachmentsMeasure do
|
||||
RSpec.describe Admin::Metrics::Measure::InstanceMediaAttachmentsMeasure do
|
||||
subject { described_class.new(start_at, end_at, params) }
|
||||
|
||||
let(:domain) { 'example.com' }
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe Admin::Metrics::Measure::InstanceReportsMeasure do
|
||||
RSpec.describe Admin::Metrics::Measure::InstanceReportsMeasure do
|
||||
subject { described_class.new(start_at, end_at, params) }
|
||||
|
||||
let(:domain) { 'example.com' }
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe Admin::Metrics::Measure::InstanceStatusesMeasure do
|
||||
RSpec.describe Admin::Metrics::Measure::InstanceStatusesMeasure do
|
||||
subject { described_class.new(start_at, end_at, params) }
|
||||
|
||||
let(:domain) { 'example.com' }
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe Admin::Metrics::Measure::InteractionsMeasure do
|
||||
RSpec.describe Admin::Metrics::Measure::InteractionsMeasure do
|
||||
subject { described_class.new(start_at, end_at, params) }
|
||||
|
||||
let(:start_at) { 2.days.ago }
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe Admin::Metrics::Measure::NewUsersMeasure do
|
||||
RSpec.describe Admin::Metrics::Measure::NewUsersMeasure do
|
||||
subject { described_class.new(start_at, end_at, params) }
|
||||
|
||||
let(:start_at) { 2.days.ago }
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe Admin::Metrics::Measure::OpenedReportsMeasure do
|
||||
RSpec.describe Admin::Metrics::Measure::OpenedReportsMeasure do
|
||||
subject { described_class.new(start_at, end_at, params) }
|
||||
|
||||
let(:start_at) { 2.days.ago }
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe Admin::Metrics::Measure::ResolvedReportsMeasure do
|
||||
RSpec.describe Admin::Metrics::Measure::ResolvedReportsMeasure do
|
||||
subject { described_class.new(start_at, end_at, params) }
|
||||
|
||||
let(:start_at) { 2.days.ago }
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe Admin::Metrics::Measure::TagAccountsMeasure do
|
||||
RSpec.describe Admin::Metrics::Measure::TagAccountsMeasure do
|
||||
subject { described_class.new(start_at, end_at, params) }
|
||||
|
||||
let!(:tag) { Fabricate(:tag) }
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe Admin::Metrics::Measure::TagServersMeasure do
|
||||
RSpec.describe Admin::Metrics::Measure::TagServersMeasure do
|
||||
subject { described_class.new(start_at, end_at, params) }
|
||||
|
||||
let!(:tag) { Fabricate(:tag) }
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe Admin::Metrics::Measure::TagUsesMeasure do
|
||||
RSpec.describe Admin::Metrics::Measure::TagUsesMeasure do
|
||||
subject { described_class.new(start_at, end_at, params) }
|
||||
|
||||
let!(:tag) { Fabricate(:tag) }
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe Admin::Metrics::Measure do
|
||||
RSpec.describe Admin::Metrics::Measure do
|
||||
describe '.retrieve' do
|
||||
subject { described_class.retrieve(reports, start_at, end_at, params) }
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe Admin::SystemCheck::BaseCheck do
|
||||
RSpec.describe Admin::SystemCheck::BaseCheck do
|
||||
subject(:check) { described_class.new(user) }
|
||||
|
||||
let(:user) { Fabricate(:user) }
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe Admin::SystemCheck::DatabaseSchemaCheck do
|
||||
RSpec.describe Admin::SystemCheck::DatabaseSchemaCheck do
|
||||
subject(:check) { described_class.new(user) }
|
||||
|
||||
let(:user) { Fabricate(:user) }
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe Admin::SystemCheck::ElasticsearchCheck do
|
||||
RSpec.describe Admin::SystemCheck::ElasticsearchCheck do
|
||||
subject(:check) { described_class.new(user) }
|
||||
|
||||
let(:user) { Fabricate(:user) }
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe Admin::SystemCheck::MediaPrivacyCheck do
|
||||
RSpec.describe Admin::SystemCheck::MediaPrivacyCheck do
|
||||
subject(:check) { described_class.new(user) }
|
||||
|
||||
let(:user) { Fabricate(:user) }
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe Admin::SystemCheck::Message do
|
||||
RSpec.describe Admin::SystemCheck::Message do
|
||||
subject(:check) { described_class.new(:key_value, :value_value, :action_value, :critical_value) }
|
||||
|
||||
it 'providers readers when initialized' do
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe Admin::SystemCheck::RulesCheck do
|
||||
RSpec.describe Admin::SystemCheck::RulesCheck do
|
||||
subject(:check) { described_class.new(user) }
|
||||
|
||||
let(:user) { Fabricate(:user) }
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe Admin::SystemCheck::SidekiqProcessCheck do
|
||||
RSpec.describe Admin::SystemCheck::SidekiqProcessCheck do
|
||||
subject(:check) { described_class.new(user) }
|
||||
|
||||
let(:user) { Fabricate(:user) }
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe Admin::SystemCheck::SoftwareVersionCheck do
|
||||
RSpec.describe Admin::SystemCheck::SoftwareVersionCheck do
|
||||
include RoutingHelper
|
||||
|
||||
subject(:check) { described_class.new(user) }
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe Admin::SystemCheck do
|
||||
RSpec.describe Admin::SystemCheck do
|
||||
let(:user) { Fabricate(:user) }
|
||||
|
||||
describe 'perform' do
|
||||
|
|
16
spec/lib/annual_report_spec.rb
Normal file
16
spec/lib/annual_report_spec.rb
Normal file
|
@ -0,0 +1,16 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe AnnualReport do
|
||||
describe '#generate' do
|
||||
subject { described_class.new(account, Time.zone.now.year) }
|
||||
|
||||
let(:account) { Fabricate :account }
|
||||
|
||||
it 'builds a report for an account' do
|
||||
expect { subject.generate }
|
||||
.to change(GeneratedAnnualReport, :count).by(1)
|
||||
end
|
||||
end
|
||||
end
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe CacheBuster do
|
||||
RSpec.describe CacheBuster do
|
||||
subject { described_class.new(secret_header: secret_header, secret: secret, http_method: http_method) }
|
||||
|
||||
let(:secret_header) { nil }
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe ConnectionPool::SharedConnectionPool do
|
||||
RSpec.describe ConnectionPool::SharedConnectionPool do
|
||||
subject { described_class.new(size: 5, timeout: 5) { |site| mini_connection_class.new(site) } }
|
||||
|
||||
let(:mini_connection_class) do
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe ConnectionPool::SharedTimedStack do
|
||||
RSpec.describe ConnectionPool::SharedTimedStack do
|
||||
subject { described_class.new(5) { |site| mini_connection_class.new(site) } }
|
||||
|
||||
let(:mini_connection_class) do
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe ContentSecurityPolicy do
|
||||
RSpec.describe ContentSecurityPolicy do
|
||||
subject { described_class.new }
|
||||
|
||||
around do |example|
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe DeliveryFailureTracker do
|
||||
RSpec.describe DeliveryFailureTracker do
|
||||
subject { described_class.new('http://example.com/inbox') }
|
||||
|
||||
describe '#track_success!' do
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe Extractor do
|
||||
RSpec.describe Extractor do
|
||||
describe 'extract_mentions_or_lists_with_indices' do
|
||||
it 'returns an empty array if the given string does not have at signs' do
|
||||
text = 'a string without at signs'
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe FastIpMap do
|
||||
RSpec.describe FastIpMap do
|
||||
describe '#include?' do
|
||||
subject { described_class.new([IPAddr.new('20.4.0.0/16'), IPAddr.new('145.22.30.0/24'), IPAddr.new('189.45.86.3')]) }
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe HashtagNormalizer do
|
||||
RSpec.describe HashtagNormalizer do
|
||||
subject { described_class.new }
|
||||
|
||||
describe '#normalize' do
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe Importer::AccountsIndexImporter do
|
||||
RSpec.describe Importer::AccountsIndexImporter do
|
||||
describe 'import!' do
|
||||
let(:pool) { Concurrent::FixedThreadPool.new(5) }
|
||||
let(:importer) { described_class.new(batch_size: 123, executor: pool) }
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe Importer::BaseImporter do
|
||||
RSpec.describe Importer::BaseImporter do
|
||||
describe 'import!' do
|
||||
let(:pool) { Concurrent::FixedThreadPool.new(5) }
|
||||
let(:importer) { described_class.new(batch_size: 123, executor: pool) }
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe Importer::PublicStatusesIndexImporter do
|
||||
RSpec.describe Importer::PublicStatusesIndexImporter do
|
||||
describe 'import!' do
|
||||
let(:pool) { Concurrent::FixedThreadPool.new(5) }
|
||||
let(:importer) { described_class.new(batch_size: 123, executor: pool) }
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe Importer::StatusesIndexImporter do
|
||||
RSpec.describe Importer::StatusesIndexImporter do
|
||||
describe 'import!' do
|
||||
let(:pool) { Concurrent::FixedThreadPool.new(5) }
|
||||
let(:importer) { described_class.new(batch_size: 123, executor: pool) }
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe Importer::TagsIndexImporter do
|
||||
RSpec.describe Importer::TagsIndexImporter do
|
||||
describe 'import!' do
|
||||
let(:pool) { Concurrent::FixedThreadPool.new(5) }
|
||||
let(:importer) { described_class.new(batch_size: 123, executor: pool) }
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
require 'rails_helper'
|
||||
require 'mastodon/cli/accounts'
|
||||
|
||||
describe Mastodon::CLI::Accounts do
|
||||
RSpec.describe Mastodon::CLI::Accounts do
|
||||
subject { cli.invoke(action, arguments, options) }
|
||||
|
||||
let(:cli) { described_class.new }
|
||||
|
@ -613,6 +613,25 @@ describe Mastodon::CLI::Accounts do
|
|||
end
|
||||
end
|
||||
|
||||
describe '#fix_duplicates' do
|
||||
let(:action) { :fix_duplicates }
|
||||
let(:service_double) { instance_double(ActivityPub::FetchRemoteAccountService, call: nil) }
|
||||
let(:uri) { 'https://host.example/same/value' }
|
||||
|
||||
context 'when there are duplicate URI accounts' do
|
||||
before do
|
||||
Fabricate.times(2, :account, domain: 'host.example', uri: uri)
|
||||
allow(ActivityPub::FetchRemoteAccountService).to receive(:new).and_return(service_double)
|
||||
end
|
||||
|
||||
it 'finds the duplicates and calls fetch remote account service' do
|
||||
expect { subject }
|
||||
.to output_results('Duplicates found')
|
||||
expect(service_double).to have_received(:call).with(uri)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#backup' do
|
||||
let(:action) { :backup }
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
require 'rails_helper'
|
||||
require 'mastodon/cli/cache'
|
||||
|
||||
describe Mastodon::CLI::Cache do
|
||||
RSpec.describe Mastodon::CLI::Cache do
|
||||
subject { cli.invoke(action, arguments, options) }
|
||||
|
||||
let(:cli) { described_class.new }
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
require 'rails_helper'
|
||||
require 'mastodon/cli/canonical_email_blocks'
|
||||
|
||||
describe Mastodon::CLI::CanonicalEmailBlocks do
|
||||
RSpec.describe Mastodon::CLI::CanonicalEmailBlocks do
|
||||
subject { cli.invoke(action, arguments, options) }
|
||||
|
||||
let(:cli) { described_class.new }
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
require 'rails_helper'
|
||||
require 'mastodon/cli/domains'
|
||||
|
||||
describe Mastodon::CLI::Domains do
|
||||
RSpec.describe Mastodon::CLI::Domains do
|
||||
subject { cli.invoke(action, arguments, options) }
|
||||
|
||||
let(:cli) { described_class.new }
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
require 'rails_helper'
|
||||
require 'mastodon/cli/email_domain_blocks'
|
||||
|
||||
describe Mastodon::CLI::EmailDomainBlocks do
|
||||
RSpec.describe Mastodon::CLI::EmailDomainBlocks do
|
||||
subject { cli.invoke(action, arguments, options) }
|
||||
|
||||
let(:cli) { described_class.new }
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
require 'rails_helper'
|
||||
require 'mastodon/cli/emoji'
|
||||
|
||||
describe Mastodon::CLI::Emoji do
|
||||
RSpec.describe Mastodon::CLI::Emoji do
|
||||
subject { cli.invoke(action, arguments, options) }
|
||||
|
||||
let(:cli) { described_class.new }
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
require 'rails_helper'
|
||||
require 'mastodon/cli/feeds'
|
||||
|
||||
describe Mastodon::CLI::Feeds do
|
||||
RSpec.describe Mastodon::CLI::Feeds do
|
||||
subject { cli.invoke(action, arguments, options) }
|
||||
|
||||
let(:cli) { described_class.new }
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
require 'rails_helper'
|
||||
require 'mastodon/cli/ip_blocks'
|
||||
|
||||
describe Mastodon::CLI::IpBlocks do
|
||||
RSpec.describe Mastodon::CLI::IpBlocks do
|
||||
subject { cli.invoke(action, arguments, options) }
|
||||
|
||||
let(:cli) { described_class.new }
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
require 'rails_helper'
|
||||
require 'mastodon/cli/main'
|
||||
|
||||
describe Mastodon::CLI::Main do
|
||||
RSpec.describe Mastodon::CLI::Main do
|
||||
subject { cli.invoke(action, arguments, options) }
|
||||
|
||||
let(:cli) { described_class.new }
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
require 'rails_helper'
|
||||
require 'mastodon/cli/maintenance'
|
||||
|
||||
describe Mastodon::CLI::Maintenance do
|
||||
RSpec.describe Mastodon::CLI::Maintenance do
|
||||
subject { cli.invoke(action, arguments, options) }
|
||||
|
||||
let(:cli) { described_class.new }
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
require 'rails_helper'
|
||||
require 'mastodon/cli/media'
|
||||
|
||||
describe Mastodon::CLI::Media do
|
||||
RSpec.describe Mastodon::CLI::Media do
|
||||
subject { cli.invoke(action, arguments, options) }
|
||||
|
||||
let(:cli) { described_class.new }
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
require 'rails_helper'
|
||||
require 'mastodon/cli/preview_cards'
|
||||
|
||||
describe Mastodon::CLI::PreviewCards do
|
||||
RSpec.describe Mastodon::CLI::PreviewCards do
|
||||
subject { cli.invoke(action, arguments, options) }
|
||||
|
||||
let(:cli) { described_class.new }
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
require 'rails_helper'
|
||||
require 'mastodon/cli/search'
|
||||
|
||||
describe Mastodon::CLI::Search do
|
||||
RSpec.describe Mastodon::CLI::Search do
|
||||
subject { cli.invoke(action, arguments, options) }
|
||||
|
||||
let(:cli) { described_class.new }
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
require 'rails_helper'
|
||||
require 'mastodon/cli/settings'
|
||||
|
||||
describe Mastodon::CLI::Settings do
|
||||
RSpec.describe Mastodon::CLI::Settings do
|
||||
it_behaves_like 'CLI Command'
|
||||
|
||||
describe 'subcommand "registrations"' do
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
require 'rails_helper'
|
||||
require 'mastodon/cli/statuses'
|
||||
|
||||
describe Mastodon::CLI::Statuses do
|
||||
RSpec.describe Mastodon::CLI::Statuses do
|
||||
subject { cli.invoke(action, arguments, options) }
|
||||
|
||||
let(:cli) { described_class.new }
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
require 'rails_helper'
|
||||
require 'mastodon/cli/upgrade'
|
||||
|
||||
describe Mastodon::CLI::Upgrade do
|
||||
RSpec.describe Mastodon::CLI::Upgrade do
|
||||
subject { cli.invoke(action, arguments, options) }
|
||||
|
||||
let(:cli) { described_class.new }
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
require 'rails_helper'
|
||||
require 'mastodon/migration_warning'
|
||||
|
||||
describe Mastodon::MigrationWarning do
|
||||
RSpec.describe Mastodon::MigrationWarning do
|
||||
describe 'migration_duration_warning' do
|
||||
before do
|
||||
allow(migration).to receive(:valid_environment?).and_return(true)
|
||||
|
|
263
spec/lib/mastodon/redis_configuration_spec.rb
Normal file
263
spec/lib/mastodon/redis_configuration_spec.rb
Normal file
|
@ -0,0 +1,263 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'rails_helper'
|
||||
|
||||
RSpec.describe Mastodon::RedisConfiguration do
|
||||
let(:redis_environment) { described_class.new }
|
||||
|
||||
before do
|
||||
# We use one numbered namespace per parallel test runner
|
||||
# in the test env. This here should test the non-test
|
||||
# behavior, so we disable it temporarily.
|
||||
allow(Rails.env).to receive(:test?).and_return(false)
|
||||
end
|
||||
|
||||
shared_examples 'setting a different driver' do
|
||||
context 'when setting the `REDIS_DRIVER` variable to `ruby`' do
|
||||
around do |example|
|
||||
ClimateControl.modify REDIS_DRIVER: 'ruby' do
|
||||
example.run
|
||||
end
|
||||
end
|
||||
|
||||
it 'sets the driver accordingly' do
|
||||
expect(subject[:driver]).to eq :ruby
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
shared_examples 'setting a namespace' do
|
||||
context 'when setting the `REDIS_NAMESPACE` variable' do
|
||||
around do |example|
|
||||
ClimateControl.modify REDIS_NAMESPACE: 'testns' do
|
||||
example.run
|
||||
end
|
||||
end
|
||||
|
||||
it 'uses the value for the namespace' do
|
||||
expect(subject[:namespace]).to eq 'testns'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
shared_examples 'secondary configuration' do |prefix|
|
||||
context "when no `#{prefix}_REDIS_` environment variables are present" do
|
||||
it 'uses the url from the base config' do
|
||||
expect(subject[:url]).to eq 'redis://localhost:6379/0'
|
||||
end
|
||||
|
||||
context 'when the base config uses sentinel' do
|
||||
around do |example|
|
||||
ClimateControl.modify REDIS_SENTINELS: '192.168.0.1:3000,192.168.0.2:4000', REDIS_SENTINEL_MASTER: 'mainsentinel' do
|
||||
example.run
|
||||
end
|
||||
end
|
||||
|
||||
it 'uses the sentinel configuration from base config' do
|
||||
expect(subject[:url]).to eq 'redis://mainsentinel/0'
|
||||
expect(subject[:name]).to eq 'mainsentinel'
|
||||
expect(subject[:sentinels]).to contain_exactly({ host: '192.168.0.1', port: 3000 }, { host: '192.168.0.2', port: 4000 })
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context "when the `#{prefix}_REDIS_URL` environment variable is present" do
|
||||
around do |example|
|
||||
ClimateControl.modify "#{prefix}_REDIS_URL": 'redis::/user@other.example.com/4' do
|
||||
example.run
|
||||
end
|
||||
end
|
||||
|
||||
it 'uses the provided URL' do
|
||||
expect(subject[:url]).to eq 'redis::/user@other.example.com/4'
|
||||
end
|
||||
end
|
||||
|
||||
context 'when giving separate environment variables' do
|
||||
around do |example|
|
||||
ClimateControl.modify "#{prefix}_REDIS_PASSWORD": 'testpass1', "#{prefix}_REDIS_HOST": 'redis2.example.com', "#{prefix}_REDIS_PORT": '3322', "#{prefix}_REDIS_DB": '8' do
|
||||
example.run
|
||||
end
|
||||
end
|
||||
|
||||
it 'constructs the url from them' do
|
||||
expect(subject[:url]).to eq 'redis://:testpass1@redis2.example.com:3322/8'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
shared_examples 'sentinel support' do |prefix = nil|
|
||||
prefix = prefix ? "#{prefix}_" : ''
|
||||
|
||||
context 'when configuring sentinel support' do
|
||||
around do |example|
|
||||
ClimateControl.modify "#{prefix}REDIS_PASSWORD": 'testpass1', "#{prefix}REDIS_HOST": 'redis2.example.com', "#{prefix}REDIS_SENTINELS": '192.168.0.1:3000,192.168.0.2:4000', "#{prefix}REDIS_SENTINEL_MASTER": 'mainsentinel' do
|
||||
example.run
|
||||
end
|
||||
end
|
||||
|
||||
it 'constructs the url using the sentinel master name' do
|
||||
expect(subject[:url]).to eq 'redis://:testpass1@mainsentinel/0'
|
||||
end
|
||||
|
||||
it 'uses the redis password to authenticate with sentinels' do
|
||||
expect(subject[:sentinel_password]).to eq 'testpass1'
|
||||
end
|
||||
|
||||
it 'includes the sentinel master name and list of sentinels' do
|
||||
expect(subject[:name]).to eq 'mainsentinel'
|
||||
expect(subject[:sentinels]).to contain_exactly({ host: '192.168.0.1', port: 3000 }, { host: '192.168.0.2', port: 4000 })
|
||||
end
|
||||
|
||||
context "when giving dedicated credentials in `#{prefix}REDIS_SENTINEL_USERNAME` and `#{prefix}REDIS_SENTINEL_PASSWORD`" do
|
||||
around do |example|
|
||||
ClimateControl.modify "#{prefix}REDIS_SENTINEL_USERNAME": 'sentinel_user', "#{prefix}REDIS_SENTINEL_PASSWORD": 'sentinel_pass1' do
|
||||
example.run
|
||||
end
|
||||
end
|
||||
|
||||
it 'uses the credential to authenticate with sentinels' do
|
||||
expect(subject[:sentinel_username]).to eq 'sentinel_user'
|
||||
expect(subject[:sentinel_password]).to eq 'sentinel_pass1'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'when giving sentinels without port numbers' do
|
||||
context "when no default port is given via `#{prefix}REDIS_SENTINEL_PORT`" do
|
||||
around do |example|
|
||||
ClimateControl.modify "#{prefix}REDIS_SENTINELS": '192.168.0.1,192.168.0.2', "#{prefix}REDIS_SENTINEL_MASTER": 'mainsentinel' do
|
||||
example.run
|
||||
end
|
||||
end
|
||||
|
||||
it 'uses the default sentinel port' do
|
||||
expect(subject[:sentinels]).to contain_exactly({ host: '192.168.0.1', port: 26_379 }, { host: '192.168.0.2', port: 26_379 })
|
||||
end
|
||||
end
|
||||
|
||||
context 'when adding port numbers to some, but not all sentinels' do
|
||||
around do |example|
|
||||
ClimateControl.modify "#{prefix}REDIS_SENTINELS": '192.168.0.1:5678,192.168.0.2', "#{prefix}REDIS_SENTINEL_MASTER": 'mainsentinel' do
|
||||
example.run
|
||||
end
|
||||
end
|
||||
|
||||
it 'uses the given port number when available and the default otherwise' do
|
||||
expect(subject[:sentinels]).to contain_exactly({ host: '192.168.0.1', port: 5678 }, { host: '192.168.0.2', port: 26_379 })
|
||||
end
|
||||
end
|
||||
|
||||
context "when a default port is given via `#{prefix}REDIS_SENTINEL_PORT`" do
|
||||
around do |example|
|
||||
ClimateControl.modify "#{prefix}REDIS_SENTINEL_PORT": '1234', "#{prefix}REDIS_SENTINELS": '192.168.0.1,192.168.0.2', "#{prefix}REDIS_SENTINEL_MASTER": 'mainsentinel' do
|
||||
example.run
|
||||
end
|
||||
end
|
||||
|
||||
it 'uses the given port number' do
|
||||
expect(subject[:sentinels]).to contain_exactly({ host: '192.168.0.1', port: 1234 }, { host: '192.168.0.2', port: 1234 })
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#base' do
|
||||
subject { redis_environment.base }
|
||||
|
||||
context 'when no `REDIS_` environment variables are present' do
|
||||
it 'uses defaults' do
|
||||
expect(subject).to eq({
|
||||
url: 'redis://localhost:6379/0',
|
||||
driver: :hiredis,
|
||||
namespace: nil,
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
context 'when the `REDIS_URL` environment variable is present' do
|
||||
around do |example|
|
||||
ClimateControl.modify REDIS_URL: 'redis::/user@example.com/2' do
|
||||
example.run
|
||||
end
|
||||
end
|
||||
|
||||
it 'uses the provided URL' do
|
||||
expect(subject).to eq({
|
||||
url: 'redis::/user@example.com/2',
|
||||
driver: :hiredis,
|
||||
namespace: nil,
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
context 'when giving separate environment variables' do
|
||||
around do |example|
|
||||
ClimateControl.modify REDIS_PASSWORD: 'testpass', REDIS_HOST: 'redis.example.com', REDIS_PORT: '3333', REDIS_DB: '3' do
|
||||
example.run
|
||||
end
|
||||
end
|
||||
|
||||
it 'constructs the url from them' do
|
||||
expect(subject).to eq({
|
||||
url: 'redis://:testpass@redis.example.com:3333/3',
|
||||
driver: :hiredis,
|
||||
namespace: nil,
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
include_examples 'setting a different driver'
|
||||
include_examples 'setting a namespace'
|
||||
include_examples 'sentinel support'
|
||||
end
|
||||
|
||||
describe '#sidekiq' do
|
||||
subject { redis_environment.sidekiq }
|
||||
|
||||
include_examples 'secondary configuration', 'SIDEKIQ'
|
||||
include_examples 'setting a different driver'
|
||||
include_examples 'setting a namespace'
|
||||
include_examples 'sentinel support', 'SIDEKIQ'
|
||||
end
|
||||
|
||||
describe '#cache' do
|
||||
subject { redis_environment.cache }
|
||||
|
||||
it 'includes extra configuration' do
|
||||
expect(subject).to eq({
|
||||
url: 'redis://localhost:6379/0',
|
||||
driver: :hiredis,
|
||||
namespace: 'cache',
|
||||
expires_in: 10.minutes,
|
||||
connect_timeout: 5,
|
||||
pool: {
|
||||
size: 5,
|
||||
timeout: 5,
|
||||
},
|
||||
})
|
||||
end
|
||||
|
||||
context 'when `REDIS_NAMESPACE` is not set' do
|
||||
it 'uses the `cache` namespace' do
|
||||
expect(subject[:namespace]).to eq 'cache'
|
||||
end
|
||||
end
|
||||
|
||||
context 'when setting the `REDIS_NAMESPACE` variable' do
|
||||
around do |example|
|
||||
ClimateControl.modify REDIS_NAMESPACE: 'testns' do
|
||||
example.run
|
||||
end
|
||||
end
|
||||
|
||||
it 'attaches the `_cache` postfix to the namespace' do
|
||||
expect(subject[:namespace]).to eq 'testns_cache'
|
||||
end
|
||||
end
|
||||
|
||||
include_examples 'secondary configuration', 'CACHE'
|
||||
include_examples 'setting a different driver'
|
||||
include_examples 'sentinel support', 'CACHE'
|
||||
end
|
||||
end
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe OStatus::TagManager do
|
||||
RSpec.describe OStatus::TagManager do
|
||||
describe '#unique_tag' do
|
||||
it 'returns a unique tag' do
|
||||
expect(described_class.instance.unique_tag(Time.utc(2000), 12, 'Status')).to eq 'tag:cb6e6126.ngrok.io,2000-01-01:objectId=12:objectType=Status'
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe Paperclip::ResponseWithLimitAdapter do
|
||||
RSpec.describe Paperclip::ResponseWithLimitAdapter do
|
||||
subject { described_class.new(response_with_limit) }
|
||||
|
||||
before { stub_request(:get, url).to_return(headers: headers, body: body) }
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe PermalinkRedirector do
|
||||
RSpec.describe PermalinkRedirector do
|
||||
let(:remote_account) { Fabricate(:account, username: 'alice', domain: 'example.com', url: 'https://example.com/@alice', id: 2) }
|
||||
|
||||
describe '#redirect_url' do
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe RequestPool do
|
||||
RSpec.describe RequestPool do
|
||||
subject { described_class.new }
|
||||
|
||||
describe '#with' do
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
require 'rails_helper'
|
||||
require 'securerandom'
|
||||
|
||||
describe Request do
|
||||
RSpec.describe Request do
|
||||
subject { described_class.new(:get, 'http://example.com') }
|
||||
|
||||
describe '#headers' do
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe Sanitize::Config do
|
||||
RSpec.describe Sanitize::Config do
|
||||
describe '::MASTODON_STRICT' do
|
||||
subject { described_class::MASTODON_STRICT }
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe ScopeTransformer do
|
||||
RSpec.describe ScopeTransformer do
|
||||
describe '#apply' do
|
||||
subject { described_class.new.apply(ScopeParser.new.parse(input)) }
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
require 'rails_helper'
|
||||
require 'parslet/rig/rspec'
|
||||
|
||||
describe SearchQueryParser do
|
||||
RSpec.describe SearchQueryParser do
|
||||
let(:parser) { described_class.new }
|
||||
|
||||
context 'with term' do
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe SearchQueryTransformer do
|
||||
RSpec.describe SearchQueryTransformer do
|
||||
subject { described_class.new.apply(parser, current_account: account, searchability: :public) }
|
||||
|
||||
let(:account) { Fabricate(:account) }
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe StatusCacheHydrator do
|
||||
RSpec.describe StatusCacheHydrator do
|
||||
let(:status) { Fabricate(:status) }
|
||||
let(:account) { Fabricate(:account) }
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe StatusFilter do
|
||||
RSpec.describe StatusFilter do
|
||||
describe '#filtered?' do
|
||||
let(:status) { Fabricate(:status) }
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe StatusFinder do
|
||||
RSpec.describe StatusFinder do
|
||||
include RoutingHelper
|
||||
|
||||
describe '#status' do
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe StatusReachFinder do
|
||||
RSpec.describe StatusReachFinder do
|
||||
describe '#inboxes' do
|
||||
context 'with a local status' do
|
||||
subject { described_class.new(status) }
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe WebfingerResource do
|
||||
RSpec.describe WebfingerResource do
|
||||
around do |example|
|
||||
before_local = Rails.configuration.x.local_domain
|
||||
before_web = Rails.configuration.x.web_domain
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require 'rails_helper'
|
||||
|
||||
describe Webhooks::PayloadRenderer do
|
||||
RSpec.describe Webhooks::PayloadRenderer do
|
||||
subject(:renderer) { described_class.new(json) }
|
||||
|
||||
let(:event) { Webhooks::EventPresenter.new(type, object) }
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue