discourse/spec/requests/admin/backups_controller_spec.rb
Sam 49ed382c2a FIX: return 429 when admin api key is limited on admin route
This also handles a general case where exceptions leak out prior to being handled by the application controller
2018-01-12 14:15:26 +11:00

73 lines
1.6 KiB
Ruby

require 'rails_helper'
RSpec.describe Admin::BackupsController do
let(:admin) { Fabricate(:admin) }
before do
sign_in(admin)
end
describe "#index" do
it "raises an error when backups are disabled" do
SiteSetting.enable_backups = false
get "/admin/backups.json"
expect(response).not_to be_success
end
end
describe '#rollback' do
it 'should rollback the restore' do
BackupRestore.expects(:rollback!)
post "/admin/backups/rollback.json"
expect(response).to be_success
end
it 'should not allow rollback via a GET request' do
get "/admin/backups/rollback.json"
expect(response.status).to eq(404)
end
end
describe '#cancel' do
it "should cancel an backup" do
BackupRestore.expects(:cancel!)
delete "/admin/backups/cancel.json"
expect(response).to be_success
end
it 'should not allow cancel via a GET request' do
get "/admin/backups/cancel.json"
expect(response.status).to eq(404)
end
end
describe "#email" do
let(:backup_filename) { "test.tar.gz" }
let(:backup) { Backup.new(backup_filename) }
it "enqueues email job" do
Backup.expects(:[]).with(backup_filename).returns(backup)
Jobs.expects(:enqueue).with(:download_backup_email,
user_id: admin.id,
backup_file_path: 'http://www.example.com/admin/backups/test.tar.gz'
)
put "/admin/backups/#{backup_filename}.json"
expect(response).to be_success
end
it "returns 404 when the backup does not exist" do
put "/admin/backups/#{backup_filename}.json"
expect(response).to be_not_found
end
end
end