forked from fedi/mastodon
Add test coverage for Mastodon::CLI::Accounts#rotate
(#25212)
This commit is contained in:
parent
3182ecc24c
commit
2a353200ad
|
@ -924,4 +924,78 @@ describe Mastodon::CLI::Accounts do
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#rotate' do
|
||||
context 'when neither username nor --all option are given' do
|
||||
it 'exits with an error message' do
|
||||
expect { cli.rotate }.to output(
|
||||
a_string_including('No account(s) given')
|
||||
).to_stdout
|
||||
.and raise_error(SystemExit)
|
||||
end
|
||||
end
|
||||
|
||||
context 'when a username is given' do
|
||||
let(:account) { Fabricate(:account) }
|
||||
|
||||
it 'correctly rotates keys for the specified account' do
|
||||
old_private_key = account.private_key
|
||||
old_public_key = account.public_key
|
||||
|
||||
cli.rotate(account.username)
|
||||
account.reload
|
||||
|
||||
expect(account.private_key).to_not eq(old_private_key)
|
||||
expect(account.public_key).to_not eq(old_public_key)
|
||||
end
|
||||
|
||||
it 'broadcasts the new keys for the specified account' do
|
||||
allow(ActivityPub::UpdateDistributionWorker).to receive(:perform_in)
|
||||
|
||||
cli.rotate(account.username)
|
||||
|
||||
expect(ActivityPub::UpdateDistributionWorker).to have_received(:perform_in).with(anything, account.id, anything).once
|
||||
end
|
||||
|
||||
context 'when the given username is not found' do
|
||||
it 'exits with an error message when the specified username is not found' do
|
||||
expect { cli.rotate('non_existent_username') }.to output(
|
||||
a_string_including('No such account')
|
||||
).to_stdout
|
||||
.and raise_error(SystemExit)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context 'when --all option is provided' do
|
||||
let(:accounts) { Fabricate.times(3, :account) }
|
||||
let(:options) { { all: true } }
|
||||
|
||||
before do
|
||||
allow(Account).to receive(:local).and_return(Account.where(id: accounts.map(&:id)))
|
||||
cli.options = { all: true }
|
||||
end
|
||||
|
||||
it 'correctly rotates keys for all local accounts' do
|
||||
old_private_keys = accounts.map(&:private_key)
|
||||
old_public_keys = accounts.map(&:public_key)
|
||||
|
||||
cli.rotate
|
||||
accounts.each(&:reload)
|
||||
|
||||
expect(accounts.map(&:private_key)).to_not eq(old_private_keys)
|
||||
expect(accounts.map(&:public_key)).to_not eq(old_public_keys)
|
||||
end
|
||||
|
||||
it 'broadcasts the new keys for each account' do
|
||||
allow(ActivityPub::UpdateDistributionWorker).to receive(:perform_in)
|
||||
|
||||
cli.rotate
|
||||
|
||||
accounts.each do |account|
|
||||
expect(ActivityPub::UpdateDistributionWorker).to have_received(:perform_in).with(anything, account.id, anything).once
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue