2022-04-12 00:26:42 -04:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
require "rails_helper"
|
|
|
|
|
2022-07-27 22:27:38 -04:00
|
|
|
RSpec.describe Jobs::SyncAclsForUploads do
|
2022-04-12 00:26:42 -04:00
|
|
|
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
|
|
|
|
|
2022-07-27 12:14:14 -04:00
|
|
|
context "with external storage enabled" do
|
2022-04-12 00:26:42 -04:00
|
|
|
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
|
2022-05-22 23:14:11 -04:00
|
|
|
|
|
|
|
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
|
2022-04-12 00:26:42 -04:00
|
|
|
end
|
|
|
|
end
|