Sha256: 0f07df9502e6582d82c2bb5b847066029ed2c6410c6a0110c0d26d7b4e69a627

Contents?: true

Size: 1.8 KB

Versions: 10

Compression:

Stored size: 1.8 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_path + '/world.png'), :original_file, versioning: true)
    end
  end
  let(:file_id) { file.original_file.id }

  let(:job) { described_class.perform_now(file, 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) { Hyrax::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) { Hyrax::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) { Hyrax::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
    end

    it 'does not prune failed audits' do
      5.times { job.send(:run_audit, file, file_id, uri) }
      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

10 entries across 10 versions & 2 rubygems

Version Path
hyrax-1.1.1 spec/jobs/audit_job_spec.rb
hyrax-1.1.0 spec/jobs/audit_job_spec.rb
hyrax-1.0.5 spec/jobs/audit_job_spec.rb
hyrax-1.0.4 spec/jobs/audit_job_spec.rb
hyrax-1.0.3 spec/jobs/audit_job_spec.rb
hyrax-1.0.2 spec/jobs/audit_job_spec.rb
hyrax-1.0.1 spec/jobs/audit_job_spec.rb
hyrax-1.0.0.rc2 spec/jobs/audit_job_spec.rb
hyrax-1.0.0.rc1 spec/jobs/audit_job_spec.rb
test_hyrax-0.0.1.alpha spec/jobs/audit_job_spec.rb