Sha256: b9caab4ec0ee33fbcfe1ab8c6f6707d9fe4ce49d03646b28732b3d85d16c6db3

Contents?: true

Size: 1.9 KB

Versions: 9

Compression:

Stored size: 1.9 KB

Contents

require 'spec_helper'

describe AuditJob do
  let(:user) { create(:user) }

  let(:file) do
    FileSet.create do |file|
      file.apply_depositor_metadata(user)
      Hydra::Works::AddFileToFileSet.call(file, File.open(fixture_file_path('world.png')), :original_file, versioning: true)
    end
  end
  let(:file_id) { file.original_file.id }

  let(:job) { described_class.perform_now(file.id, file_id, uri) }

  describe 'audit on content' do
    let(:uri) { file.original_file.uri }
    it 'passes' do
      expect(job).to eq(true)
    end
  end

  describe 'audit on a version of the content' do
    let(:uri) { CurationConcerns::VersioningService.latest_version_of(file.original_file).uri }
    it 'passes' do
      expect(job).to eq(true)
    end
  end

  describe 'audit on an invalid version of the content' do
    let(:uri) { CurationConcerns::VersioningService.latest_version_of(file.original_file).uri + 'bogus' }
    it 'fails' do
      expect(job).to eq(false)
    end
  end

  describe 'run_audit' do
    let(:uri) { CurationConcerns::VersioningService.latest_version_of(file.original_file).uri }
    let!(:old) { ChecksumAuditLog.create(file_set_id: file.id, file_id: file_id, version: uri, pass: 1, created_at: 2.minutes.ago) }
    let!(:new) { ChecksumAuditLog.create(file_set_id: file.id, file_id: file_id, version: uri, pass: 0) }
    let(:mock_service) { double('mock fixity check service') }

    before do
      allow(ActiveFedora::FixityService).to receive(:new).and_return(mock_service)
      allow(mock_service).to receive(:check).and_return(true, false, false, true, false)
    end

    let(:job) do
      described_class.new.tap do |j|
        j.id = file.id
        j.file_id = file_id
        j.uri = uri
      end
    end

    it 'does not prune failed audits' do
      5.times { job.send(:run_audit) }
      expect(ChecksumAuditLog.logs_for(file.id, file_id).map(&:pass)).to eq [0, 1, 0, 0, 1, 0, 1]
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
curation_concerns-0.10.0 spec/jobs/audit_job_spec.rb
curation_concerns-0.9.0 spec/jobs/audit_job_spec.rb
curation_concerns-0.8.0 spec/jobs/audit_job_spec.rb
curation_concerns-0.7.0 spec/jobs/audit_job_spec.rb
curation_concerns-0.6.0 spec/jobs/audit_job_spec.rb
curation_concerns-0.5.0 spec/jobs/audit_job_spec.rb
curation_concerns-0.4.0 spec/jobs/audit_job_spec.rb
curation_concerns-0.3.0 spec/jobs/audit_job_spec.rb
curation_concerns-0.2.0 spec/jobs/audit_job_spec.rb