discourse/spec/jobs/sync_acls_for_uploads_spec.rb

44 lines
989 B
Ruby

# frozen_string_literal: true
require "rails_helper"
RSpec.describe Jobs::SyncAclsForUploads do
let(:upload1) { Fabricate(:upload) }
let(:upload2) { Fabricate(:upload) }
let(:upload3) { Fabricate(:secure_upload) }
let(:upload_ids) { [upload1.id, upload2.id, upload3.id] }
def run_job
described_class.new.execute(upload_ids: upload_ids)
end
it "does nothing if not using external storage" do
Upload.expects(:where).never
run_job
end
context "with external storage enabled" do
before do
setup_s3
stub_s3_store
end
it "runs update_upload_ACL for each upload" do
Discourse.store.expects(:update_upload_ACL).times(3)
run_job
end
it "handles updates throwing an exception" do
Discourse
.store
.expects(:update_upload_ACL)
.raises(StandardError)
.then
.returns(true, true)
.times(3)
Discourse.expects(:warn_exception).once
run_job
end
end
end