demarches-normaliennes/spec/jobs/virus_scanner_job_spec.rb

49 lines
1.2 KiB
Ruby
Raw Normal View History

RSpec.describe VirusScannerJob, type: :job do
include ActiveJob::TestHelper
let(:champ) do
champ = create(:champ_piece_justificative)
champ.piece_justificative_file.attach(io: StringIO.new("toto"), filename: "toto.txt", content_type: "text/plain")
champ.save
champ
end
subject do
perform_enqueued_jobs do
VirusScannerJob.perform_later(champ.piece_justificative_file.blob)
end
end
context "when no virus is found" do
let(:virus_found?) { true }
before do
allow(ClamavService).to receive(:safe_file?).and_return(virus_found?)
subject
end
it { expect(champ.reload.piece_justificative_file.virus_scanner.safe?).to be_truthy }
end
context "when a virus is found" do
let(:virus_found?) { false }
before do
allow(ClamavService).to receive(:safe_file?).and_return(virus_found?)
subject
end
it { expect(champ.reload.piece_justificative_file.virus_scanner.infected?).to be_truthy }
end
context "when the blob has been deleted" do
before do
Champ.find(champ.id).piece_justificative_file.purge
end
it "ignores the error" do
expect { subject }.not_to raise_error
end
end
end