mirror of
https://github.com/discourse/discourse.git
synced 2024-12-03 07:03:46 +08:00
49ed382c2a
This also handles a general case where exceptions leak out prior to being handled by the application controller
73 lines
1.6 KiB
Ruby
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
|