hydra-works 1.2.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f9644ed57243027ef42177906f69fdcb3df5b55bdd6be3cb6d5f0b57e437e751
4
- data.tar.gz: 7b595df2b895ce803159e9a271d942e28eaba862c946733790d844fa65322d8c
3
+ metadata.gz: 2e59b8a3c691e329daaa38e524c2042a10135c137165c89cbcffc27ac82f955a
4
+ data.tar.gz: 73b6203943cdd78963127d7c998645f4e8763eaa3f85e8a2d57fddce0e3aa043
5
5
  SHA512:
6
- metadata.gz: fe8abe34fe9e5d86c009fe0c395082d327397d62edeae40c7b6944e0949f5b7a37c19f0893d9c570ca2d973be033f4e42163c71f35a5a216d00f75d848d645fe
7
- data.tar.gz: 434a3bd6a93e403a58c4e9236a2dbced0b71eea63a562ae8641bcab9a9e43e00ae18359328d3ba822b47bea9e04e89045460eec1886218e5474ec8596827d2ca
6
+ metadata.gz: 730f2f0abdc3e7451924e4d95b03be499c7de24eeefcc4f282b9bde0cc0167a1a70d52ed39534c5de5d7d76c013aa41f1e8b6dfbd61000201b658f2b039463e7
7
+ data.tar.gz: 3720b79fe1ef451ef274638c2373b8c48b425c6010b57638dc396e28a21920252c7c895f44e4a114b100936cb3192754cbf5642a617250c62070692ac9927b6a
@@ -0,0 +1,59 @@
1
+ ---
2
+ version: 2.1
3
+ orbs:
4
+ samvera: samvera/circleci-orb@0
5
+ jobs:
6
+ test:
7
+ parameters:
8
+ ruby_version:
9
+ type: string
10
+ bundler_version:
11
+ type: string
12
+ default: 1.17.3
13
+ rails_version:
14
+ type: string
15
+ environment:
16
+ RAILS_VERSION: << parameters.rails_version >>
17
+ NOKOGIRI_USE_SYSTEM_LIBRARIES: true
18
+ executor:
19
+ name: 'samvera/ruby_fcrepo_solr'
20
+ ruby_version: << parameters.ruby_version >>
21
+ steps:
22
+ - run: 'sudo apt-get update && sudo apt-get install clamav'
23
+ - run: 'sudo freshclam'
24
+ - samvera/cached_checkout
25
+ - samvera/bundle_for_gem:
26
+ ruby_version: << parameters.ruby_version >>
27
+ bundler_version: << parameters.bundler_version >>
28
+ project: hydra-works
29
+ - samvera/install_solr_active_fedora_core
30
+ - samvera/parallel_rspec
31
+
32
+ workflows:
33
+ version: 2
34
+ ci:
35
+ jobs:
36
+ - test:
37
+ name: ruby2-7_rails6-0
38
+ ruby_version: 2.7.1
39
+ rails_version: 6.0.3.1
40
+ - test:
41
+ name: ruby2-6_rails6-0
42
+ ruby_version: 2.6.6
43
+ rails_version: 6.0.3.1
44
+ - test:
45
+ name: ruby2-5_rails6-0
46
+ ruby_version: 2.5.8
47
+ rails_version: 6.0.3.1
48
+ - test:
49
+ name: ruby2-7_rails5-2
50
+ ruby_version: 2.7.1
51
+ rails_version: 5.2.4.3
52
+ - test:
53
+ name: ruby2-6_rails5-2
54
+ ruby_version: 2.6.6
55
+ rails_version: 5.2.4.3
56
+ - test:
57
+ name: ruby2-5_rails5-2
58
+ ruby_version: 2.5.8
59
+ rails_version: 5.2.4.3
@@ -0,0 +1 @@
1
+ version: 7.7.2
data/Gemfile CHANGED
@@ -6,8 +6,16 @@ gemspec
6
6
  gem 'slop', '~> 3.6' # For byebug
7
7
 
8
8
  group :development, :test do
9
- gem 'rubocop', '~> 0.47.0', require: false
10
- gem 'rubocop-rspec', '~> 1.13.0', require: false
11
- gem 'pry' unless ENV['CI']
9
+ gem 'clamby'
12
10
  gem 'pry-byebug' unless ENV['CI']
11
+ gem 'rubocop', require: false
12
+ gem 'rubocop-rspec', require: false
13
+ end
14
+
15
+ if ENV['RAILS_VERSION']
16
+ if ENV['RAILS_VERSION'] == 'edge'
17
+ gem 'rails', github: 'rails/rails'
18
+ else
19
+ gem 'rails', ENV['RAILS_VERSION']
20
+ end
13
21
  end
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Hydra::Works
2
2
 
3
3
  [![Version](https://badge.fury.io/rb/hydra-works.png)](http://badge.fury.io/rb/hydra-works)
4
- [![Build Status](https://travis-ci.org/samvera/hydra-works.svg?branch=master)](https://travis-ci.org/samvera/hydra-works)
4
+ [![CircleCI](https://circleci.com/gh/samvera/hydra-works.svg?style=svg)](https://circleci.com/gh/samvera/hydra-works)
5
5
  [![Coverage Status](https://coveralls.io/repos/samvera/hydra-works/badge.svg?branch=master)](https://coveralls.io/r/samvera/hydra-works?branch=master)
6
6
  [![Code Climate](https://codeclimate.com/github/samvera/hydra-works/badges/gpa.svg)](https://codeclimate.com/github/samvera/hydra-works)
7
7
  [![Apache 2.0 License](http://img.shields.io/badge/APACHE2-license-blue.svg)](./LICENSE)
@@ -43,7 +43,19 @@ Behaviors included in the model include:
43
43
  * Virus checking of original files
44
44
  * Full-text extraction from original files
45
45
 
46
- Check out the [Hydra::Derivatives README](https://github.com/samvera/hydra-derivatives#dependencies) for additional dependencies.
46
+ ## Dependencies
47
+
48
+ Check out the [Hydra::Derivatives README](https://github.com/samvera/hydra-derivatives#dependencies) for dependencies.
49
+
50
+ ## Additional dependencies required for specs
51
+
52
+ #### ClamAV
53
+ * Mac installation
54
+ ```
55
+ $ brew install clamav
56
+ $ cp /usr/local/etc/clamav/freshclam.conf.sample /usr/local/etc/clamav/freshclam.conf
57
+ $ freshclam
58
+ ```
47
59
 
48
60
  ## Installation
49
61
 
@@ -93,9 +105,11 @@ page.save
93
105
 
94
106
  ## Virus Detection
95
107
 
96
- To turn on virus detection, install clamav on your system and add the `clamav` gem to your Gemfile
108
+ To turn on virus detection, install [ClamAV](https://www.clamav.net/documents/installing-clamav) on your system and add the `clamby` gem to your Gemfile
97
109
 
98
- gem 'clamav'
110
+ ```ruby
111
+ gem 'clamby'
112
+ ```
99
113
 
100
114
  Then include the `VirusCheck` module in your `FileSet` class:
101
115
 
@@ -19,17 +19,18 @@ Gem::Specification.new do |spec|
19
19
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
20
20
  spec.require_paths = ['lib']
21
21
 
22
- spec.add_dependency 'activesupport', '>= 4.2.10', '< 6.0'
23
- spec.add_dependency 'hydra-derivatives', '~> 3.0'
22
+ spec.add_dependency 'activesupport', '>= 5.2', '< 7.0'
23
+ spec.add_dependency 'hydra-derivatives', '~> 3.6'
24
24
  spec.add_dependency 'hydra-file_characterization', '~> 1.0'
25
25
  spec.add_dependency 'hydra-pcdm', '>= 0.9'
26
26
 
27
- spec.add_development_dependency 'bundler', '~> 1.7'
27
+ spec.add_development_dependency 'bundler', '>= 1.7'
28
28
  spec.add_development_dependency 'coveralls'
29
29
  spec.add_development_dependency 'fcrepo_wrapper', '~> 0.1'
30
30
  spec.add_development_dependency 'rake', '~> 12.3'
31
31
  spec.add_development_dependency 'rspec'
32
- spec.add_development_dependency 'rspec-rails', '~> 3.1'
32
+ spec.add_development_dependency 'rspec-rails'
33
33
  spec.add_development_dependency 'solr_wrapper', '~> 2.0'
34
34
  spec.add_development_dependency 'sqlite3'
35
+ spec.add_development_dependency 'rspec_junit_formatter'
35
36
  end
@@ -1,5 +1,5 @@
1
1
  module Hydra
2
2
  module Works
3
- VERSION = '1.2.0'.freeze
3
+ VERSION = '2.0.0'.freeze
4
4
  end
5
5
  end
@@ -30,16 +30,32 @@ module Hydra::Works
30
30
  # Override this method to use your own virus checking software
31
31
  # @return [Boolean]
32
32
  def infected?
33
- defined?(ClamAV) ? clam_av_scanner : null_scanner
33
+ if defined?(Clamby)
34
+ clamby_scanner
35
+ elsif defined?(ClamAV)
36
+ clam_av_scanner
37
+ else
38
+ null_scanner
39
+ end
34
40
  end
35
41
 
36
42
  def clam_av_scanner
43
+ Deprecation.warn(self, "The ClamAV has been replaced by Clamby " \
44
+ "as the supported virus scanner for hydra-works. " \
45
+ "ClamAV support will be removed in hydra-works 2.0 ")
37
46
  scan_result = ClamAV.instance.method(:scanfile).call(file)
38
47
  return false if scan_result == 0
39
48
  warning "A virus was found in #{file}: #{scan_result}"
40
49
  true
41
50
  end
42
51
 
52
+ # @return [Boolean]
53
+ def clamby_scanner
54
+ scan_result = Clamby.virus?(file)
55
+ warning("A virus was found in #{file}") if scan_result
56
+ scan_result
57
+ end
58
+
43
59
  # Always return zero if there's nothing available to check for viruses. This means that
44
60
  # we assume all files have no viruses because we can't conclusively say if they have or not.
45
61
  def null_scanner
@@ -19,7 +19,7 @@ describe Hydra::Works::CharacterizationService do
19
19
  # Persist our file with some content and reload
20
20
  file.content = "junk"
21
21
  expect(file.save).to be true
22
- expect(file.reload).to eq({})
22
+ expect(file.reload).to be_empty
23
23
  # Re-check property values
24
24
  expect(file.file_size).to eq(["7618"])
25
25
  expect(file.file_title).to eq(["sample-file"])
@@ -10,6 +10,8 @@ describe Hydra::Works::VirusScanner do
10
10
 
11
11
  context 'when ClamAV is defined' do
12
12
  before do
13
+ hide_const('Clamby')
14
+
13
15
  class ClamAV
14
16
  def self.instance
15
17
  @instance ||= ClamAV.new
@@ -20,9 +22,11 @@ describe Hydra::Works::VirusScanner do
20
22
  end
21
23
  end
22
24
  end
25
+
23
26
  after do
24
27
  Object.send(:remove_const, :ClamAV)
25
28
  end
29
+
26
30
  context 'with a clean file' do
27
31
  before { allow(ClamAV.instance).to receive(:scanfile).with('/tmp/path').and_return(0) }
28
32
  it 'returns false with no warning' do
@@ -30,6 +34,7 @@ describe Hydra::Works::VirusScanner do
30
34
  is_expected.not_to be_infected
31
35
  end
32
36
  end
37
+
33
38
  context 'with an infected file' do
34
39
  before { allow(ClamAV.instance).to receive(:scanfile).with('/tmp/path').and_return(1) }
35
40
  it 'returns true with a warning' do
@@ -40,9 +45,35 @@ describe Hydra::Works::VirusScanner do
40
45
  end
41
46
 
42
47
  context 'when ClamAV is not defined' do
48
+ before do
49
+ hide_const('Clamby')
50
+ end
51
+
43
52
  it 'returns false with a warning' do
44
53
  expect(ActiveFedora::Base.logger).to receive(:warn).with(kind_of(String))
45
54
  is_expected.not_to be_infected
46
55
  end
47
56
  end
57
+
58
+ context 'Clamby integration tests' do
59
+ before do
60
+ require 'clamby'
61
+ end
62
+
63
+ context "when it's infected" do
64
+ let(:file) { File.join(fixture_path, 'eicar.txt') }
65
+
66
+ it 'finds a virus' do
67
+ is_expected.to be_infected
68
+ end
69
+ end
70
+
71
+ context "when it's clean" do
72
+ let(:file) { File.join(fixture_path, 'piano_note.wav') }
73
+
74
+ it 'finds no virus' do
75
+ is_expected.not_to be_infected
76
+ end
77
+ end
78
+ end
48
79
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hydra-works
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Coyne
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-05-03 00:00:00.000000000 Z
11
+ date: 2020-11-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -16,34 +16,34 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 4.2.10
19
+ version: '5.2'
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '6.0'
22
+ version: '7.0'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: 4.2.10
29
+ version: '5.2'
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '6.0'
32
+ version: '7.0'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: hydra-derivatives
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '3.0'
39
+ version: '3.6'
40
40
  type: :runtime
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: '3.0'
46
+ version: '3.6'
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: hydra-file_characterization
49
49
  requirement: !ruby/object:Gem::Requirement
@@ -76,14 +76,14 @@ dependencies:
76
76
  name: bundler
77
77
  requirement: !ruby/object:Gem::Requirement
78
78
  requirements:
79
- - - "~>"
79
+ - - ">="
80
80
  - !ruby/object:Gem::Version
81
81
  version: '1.7'
82
82
  type: :development
83
83
  prerelease: false
84
84
  version_requirements: !ruby/object:Gem::Requirement
85
85
  requirements:
86
- - - "~>"
86
+ - - ">="
87
87
  - !ruby/object:Gem::Version
88
88
  version: '1.7'
89
89
  - !ruby/object:Gem::Dependency
@@ -146,16 +146,16 @@ dependencies:
146
146
  name: rspec-rails
147
147
  requirement: !ruby/object:Gem::Requirement
148
148
  requirements:
149
- - - "~>"
149
+ - - ">="
150
150
  - !ruby/object:Gem::Version
151
- version: '3.1'
151
+ version: '0'
152
152
  type: :development
153
153
  prerelease: false
154
154
  version_requirements: !ruby/object:Gem::Requirement
155
155
  requirements:
156
- - - "~>"
156
+ - - ">="
157
157
  - !ruby/object:Gem::Version
158
- version: '3.1'
158
+ version: '0'
159
159
  - !ruby/object:Gem::Dependency
160
160
  name: solr_wrapper
161
161
  requirement: !ruby/object:Gem::Requirement
@@ -184,6 +184,20 @@ dependencies:
184
184
  - - ">="
185
185
  - !ruby/object:Gem::Version
186
186
  version: '0'
187
+ - !ruby/object:Gem::Dependency
188
+ name: rspec_junit_formatter
189
+ requirement: !ruby/object:Gem::Requirement
190
+ requirements:
191
+ - - ">="
192
+ - !ruby/object:Gem::Version
193
+ version: '0'
194
+ type: :development
195
+ prerelease: false
196
+ version_requirements: !ruby/object:Gem::Requirement
197
+ requirements:
198
+ - - ">="
199
+ - !ruby/object:Gem::Version
200
+ version: '0'
187
201
  description: Using this data model should enable easy collaboration amongst Samvera
188
202
  projects.
189
203
  email:
@@ -192,12 +206,13 @@ executables: []
192
206
  extensions: []
193
207
  extra_rdoc_files: []
194
208
  files:
209
+ - ".circleci/config.yml"
195
210
  - ".coveralls.yml"
196
211
  - ".gitignore"
197
212
  - ".rspec"
198
213
  - ".rubocop.yml"
199
214
  - ".rubocop_todo.yml"
200
- - ".travis.yml"
215
+ - ".solr_wrapper"
201
216
  - CHANGELOG.md
202
217
  - CODE_OF_CONDUCT.md
203
218
  - CONTRIBUTING.md
@@ -210,7 +225,6 @@ files:
210
225
  - lib/hydra/works.rb
211
226
  - lib/hydra/works/characterization.rb
212
227
  - lib/hydra/works/characterization/fits_document.rb
213
- - lib/hydra/works/characterization/fits_mapper.rb
214
228
  - lib/hydra/works/characterization/schema/audio_schema.rb
215
229
  - lib/hydra/works/characterization/schema/base_schema.rb
216
230
  - lib/hydra/works/characterization/schema/document_schema.rb
@@ -301,7 +315,7 @@ homepage: https://github.com/samvera/hydra-works
301
315
  licenses:
302
316
  - APACHE2
303
317
  metadata: {}
304
- post_install_message:
318
+ post_install_message:
305
319
  rdoc_options: []
306
320
  require_paths:
307
321
  - lib
@@ -317,7 +331,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
317
331
  version: '0'
318
332
  requirements: []
319
333
  rubygems_version: 3.0.3
320
- signing_key:
334
+ signing_key:
321
335
  specification_version: 4
322
336
  summary: Fundamental repository data model for Samvera applications
323
337
  test_files:
@@ -1,15 +0,0 @@
1
- language: ruby
2
- cache: bundler
3
- sudo: false
4
- bundler_args: --without debug
5
- env:
6
- global:
7
- - NOKOGIRI_USE_SYSTEM_LIBRARIES=true
8
- rvm:
9
- - 2.5.1
10
- - 2.4.4
11
- before_script:
12
- - jdk_switcher use oraclejdk8
13
-
14
- before_install:
15
- - gem update --system