browse-everything 0.16.1 → 1.0.0.rc1

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.
Files changed (32) hide show
  1. checksums.yaml +5 -5
  2. data/.rubocop.yml +3 -0
  3. data/CODE_OF_CONDUCT.md +36 -0
  4. data/CONTRIBUTING.md +21 -19
  5. data/Gemfile +1 -0
  6. data/README.md +29 -9
  7. data/SUPPORT.md +5 -0
  8. data/app/controllers/browse_everything_controller.rb +7 -3
  9. data/app/views/browse_everything/_files.html.erb +14 -6
  10. data/app/views/browse_everything/index.html.erb +7 -1
  11. data/browse-everything.gemspec +5 -5
  12. data/lib/browse_everything/driver/base.rb +1 -1
  13. data/lib/browse_everything/driver/box.rb +4 -14
  14. data/lib/browse_everything/driver/dropbox.rb +34 -11
  15. data/lib/browse_everything/driver/google_drive.rb +2 -2
  16. data/lib/browse_everything/driver/s3.rb +8 -14
  17. data/lib/browse_everything/retriever.rb +4 -5
  18. data/lib/browse_everything/version.rb +1 -1
  19. data/lib/generators/browse_everything/templates/browse_everything_providers.yml.example +2 -2
  20. data/spec/controllers/browse_everything_controller_spec.rb +8 -1
  21. data/spec/lib/browse_everything/driver/box_spec.rb +114 -34
  22. data/spec/lib/browse_everything/driver/dropbox_spec.rb +53 -5
  23. data/spec/lib/browse_everything/driver/google_drive_spec.rb +41 -4
  24. data/spec/lib/browse_everything/driver/s3_spec.rb +27 -18
  25. data/spec/lib/browse_everything/retriever_spec.rb +65 -2
  26. data/spec/spec_helper.rb +4 -9
  27. data/spec/support/capybara.rb +14 -10
  28. metadata +31 -37
  29. data/spec/fixtures/vcr_cassettes/box.yml +0 -498
  30. data/spec/fixtures/vcr_cassettes/dropbox.yml +0 -282
  31. data/spec/fixtures/vcr_cassettes/google_drive.yml +0 -331
  32. data/spec/fixtures/vcr_cassettes/retriever.yml +0 -170
@@ -2,7 +2,7 @@
2
2
 
3
3
  include BrowserConfigHelper
4
4
 
5
- describe BrowseEverything::Driver::GoogleDrive, vcr: { cassette_name: 'google_drive', record: :none } do
5
+ describe BrowseEverything::Driver::GoogleDrive do
6
6
  let(:browser) { BrowseEverything::Browser.new(url_options) }
7
7
  let(:provider) { browser.providers['google_drive'] }
8
8
  let(:provider_yml) do
@@ -11,9 +11,27 @@ describe BrowseEverything::Driver::GoogleDrive, vcr: { cassette_name: 'google_dr
11
11
  url_options: { port: '3000', protocol: 'http://', host: 'example.com' }
12
12
  }
13
13
  end
14
+ let(:oauth_response_body) do
15
+ '{
16
+ "access_token": "access-token",
17
+ "token_type": "Bearer",
18
+ "expires_in": 3600,
19
+ "refresh_token": "refresh-token"
20
+ }'
21
+ end
14
22
 
15
23
  before do
16
24
  stub_configuration
25
+
26
+ stub_request(
27
+ :post, 'https://oauth2.googleapis.com/token'
28
+ ).to_return(
29
+ body: oauth_response_body,
30
+ status: 200,
31
+ headers: {
32
+ 'Content-Type' => 'application/json; charset=UTF-8'
33
+ }
34
+ )
17
35
  end
18
36
 
19
37
  after do
@@ -30,11 +48,11 @@ describe BrowseEverything::Driver::GoogleDrive, vcr: { cassette_name: 'google_dr
30
48
 
31
49
  describe '#validate_config' do
32
50
  it 'raises and error with an incomplete configuration' do
33
- expect { BrowseEverything::Driver::GoogleDrive.new({}) }.to raise_error(BrowseEverything::InitializationError)
51
+ expect { described_class.new({}) }.to raise_error(BrowseEverything::InitializationError)
34
52
  end
35
53
 
36
54
  it 'raises and error with a configuration without a client secret' do
37
- expect { BrowseEverything::Driver::GoogleDrive.new(client_id: 'test-client-id') }.to raise_error(BrowseEverything::InitializationError)
55
+ expect { described_class.new(client_id: 'test-client-id') }.to raise_error(BrowseEverything::InitializationError)
38
56
  end
39
57
  end
40
58
 
@@ -69,7 +87,7 @@ describe BrowseEverything::Driver::GoogleDrive, vcr: { cassette_name: 'google_dr
69
87
  let(:driver) { described_class.new(provider_yml) }
70
88
 
71
89
  before do
72
- driver.connect({ code: 'code' }, {})
90
+ driver.connect({ code: 'code' }, {}, nil)
73
91
  end
74
92
 
75
93
  describe '#authorized?' do
@@ -139,6 +157,25 @@ describe BrowseEverything::Driver::GoogleDrive, vcr: { cassette_name: 'google_dr
139
157
 
140
158
  describe '#link_for' do
141
159
  subject(:link) { driver.link_for('asset-id2') }
160
+ let(:file_response_body) do
161
+ '{
162
+ "id": "asset-id2",
163
+ "name": "asset-name2.pdf",
164
+ "webContentLink": "https://drive.google.com/uc?id=id&export=download"
165
+ }'
166
+ end
167
+
168
+ before do
169
+ stub_request(
170
+ :get, "https://www.googleapis.com/drive/v3/files/asset-id2?fields=id,%20name,%20size"
171
+ ).to_return(
172
+ body: file_response_body,
173
+ status: 200,
174
+ headers: {
175
+ 'Content-Type' => 'application/json'
176
+ }
177
+ )
178
+ end
142
179
 
143
180
  it 'generates the link for a Google Drive asset' do
144
181
  expect(link).to be_an Array
@@ -22,30 +22,46 @@ describe BrowseEverything::Driver::S3 do
22
22
  end
23
23
 
24
24
  describe 'configuration' do
25
- it '#validate_config' do
25
+ it 'rejects an empty config.' do
26
26
  expect { described_class.new({}) }.to raise_error(BrowseEverything::InitializationError)
27
27
  end
28
28
 
29
- it 'rejects app_key if app_secret is missing' do
29
+ it 'rejects a missing region' do
30
30
  expect { described_class.new(bucket: 'bucket', app_key: 'APP_KEY') }.to raise_error(BrowseEverything::InitializationError)
31
31
  end
32
32
 
33
+ it 'rejects app_key if app_secret is missing' do
34
+ expect { described_class.new(bucket: 'bucket', region: 'us-east-1', app_key: 'APP_KEY') }.to raise_error(BrowseEverything::InitializationError)
35
+ end
36
+
33
37
  it 'rejects app_secret if app_key is missing' do
34
- expect { described_class.new(bucket: 'bucket', app_secret: 'APP_SECRET') }.to raise_error(BrowseEverything::InitializationError)
38
+ expect { described_class.new(bucket: 'bucket', region: 'us-east-1', app_secret: 'APP_SECRET') }.to raise_error(BrowseEverything::InitializationError)
35
39
  end
36
40
 
37
41
  it 'accepts app_key and app_secret together' do
38
- expect { described_class.new(bucket: 'bucket', app_key: 'APP_KEY', app_secret: 'APP_SECRET') }.not_to raise_error
42
+ expect { described_class.new(bucket: 'bucket', region: 'us-east-1', app_key: 'APP_KEY', app_secret: 'APP_SECRET') }.not_to raise_error
39
43
  end
40
44
 
41
45
  it 'rejects an invalid response type' do
42
- expect { described_class.new(bucket: 'bucket', response_type: :foo) }.to raise_error(BrowseEverything::InitializationError)
46
+ expect { described_class.new(bucket: 'bucket', region: 'us-east-1', response_type: :foo) }.to raise_error(BrowseEverything::InitializationError)
43
47
  end
44
48
 
45
- it 'deprecates :signed_url' do
46
- driver = described_class.new(bucket: 'bucket', signed_url: false)
47
- expect(driver.config).not_to have_key(:signed_url)
48
- expect(driver.config[:response_type]).to eq(:public_url)
49
+ context 'deprecating :signed_url' do
50
+ it 'sets the value of :signed_url to :response_type' do
51
+ driver = described_class.new(bucket: 'bucket', region: 'us-east-1', signed_url: false)
52
+ expect(driver.config).not_to have_key(:signed_url)
53
+ expect(driver.config[:response_type]).to eq(:public_url)
54
+
55
+ signed_driver = described_class.new(bucket: 'bucket', region: 'us-east-1', signed_url: true)
56
+ expect(signed_driver.config).not_to have_key(:signed_url)
57
+ expect(signed_driver.config[:response_type]).to eq(:signed_url)
58
+ end
59
+
60
+ it 'sets the default value of :response_type to :signed_url' do
61
+ driver = described_class.new(bucket: 'bucket', region: 'us-east-1')
62
+ expect(driver.config).not_to have_key(:signed_url)
63
+ expect(driver.config[:response_type]).to eq(:signed_url)
64
+ end
49
65
  end
50
66
  end
51
67
 
@@ -95,15 +111,8 @@ describe BrowseEverything::Driver::S3 do
95
111
 
96
112
  let(:contents) { provider.contents('foo/') }
97
113
 
98
- context 'with a single directory' do
99
- subject { contents[0] }
100
-
101
- its(:name) { is_expected.to eq('..') }
102
- specify { is_expected.to be_container }
103
- end
104
-
105
114
  context 'with a JPEG asset' do
106
- subject { contents[1] }
115
+ subject { contents[0] }
107
116
 
108
117
  its(:name) { is_expected.to eq('baz.jpg') }
109
118
  its(:location) { is_expected.to eq('s3:foo/baz.jpg') }
@@ -113,7 +122,7 @@ describe BrowseEverything::Driver::S3 do
113
122
  end
114
123
 
115
124
  context 'with a PNG asset' do
116
- subject { contents[2] }
125
+ subject { contents[1] }
117
126
 
118
127
  its(:name) { is_expected.to eq('quux.png') }
119
128
  its(:location) { is_expected.to eq('s3:foo/quux.png') }
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- describe BrowseEverything::Retriever, vcr: { cassette_name: 'retriever', record: :none } do
3
+ describe BrowseEverything::Retriever do
4
4
  let(:retriever) { described_class.new }
5
5
  let(:datafile) { File.expand_path('../../fixtures/file_system/file_1.pdf', __dir__) }
6
6
  let(:datafile_with_spaces) { File.expand_path('../../fixtures/file_system/file 1.pdf', __dir__) }
@@ -12,7 +12,7 @@ describe BrowseEverything::Retriever, vcr: { cassette_name: 'retriever', record:
12
12
  subject(:computed_file_size) { retriever.file_size(options) }
13
13
 
14
14
  let(:url) { URI.parse("file://#{datafile}") }
15
- let(:headers) { [] }
15
+ let(:headers) { {} }
16
16
  let(:file_size) { 0 }
17
17
  let(:options) do
18
18
  {
@@ -31,6 +31,25 @@ describe BrowseEverything::Retriever, vcr: { cassette_name: 'retriever', record:
31
31
  context 'when retrieving a resource from a cloud storage provider' do
32
32
  let(:url) { URI.parse('https://drive.google.com/uc?id=id&export=download') }
33
33
 
34
+ before do
35
+ stub_request(
36
+ :head, "https://drive.google.com/uc?export=download&id=id"
37
+ ).and_return(
38
+ headers: {
39
+ 'Content-Length' => '1234'
40
+ }
41
+ )
42
+
43
+ stub_request(
44
+ :get, "https://drive.google.com/uc?export=download&id=id"
45
+ ).and_return(
46
+ headers: {
47
+ 'Content-Length' => '1234'
48
+ },
49
+ body: 'content'
50
+ )
51
+ end
52
+
34
53
  it 'calculates or retrieves the size of a file' do
35
54
  retriever.retrieve(options) do |_chunk, _retrieved, total|
36
55
  expect(total).to eq 1234
@@ -80,6 +99,17 @@ describe BrowseEverything::Retriever, vcr: { cassette_name: 'retriever', record:
80
99
  end
81
100
 
82
101
  context 'when retrieving data using chunked-encoded streams' do
102
+ before do
103
+ stub_request(
104
+ :get, "https://retrieve.cloud.example.com/some/dir/file.pdf"
105
+ ).and_return(
106
+ headers: {
107
+ 'Content-Type' => 'text/plain'
108
+ },
109
+ body: data
110
+ )
111
+ end
112
+
83
113
  it 'content' do
84
114
  content = +''
85
115
  retriever.retrieve(spec['0']) { |chunk, _retrieved, _total| content << chunk }
@@ -92,6 +122,17 @@ describe BrowseEverything::Retriever, vcr: { cassette_name: 'retriever', record:
92
122
  end
93
123
 
94
124
  context 'when downloading content' do
125
+ before do
126
+ stub_request(
127
+ :get, "https://retrieve.cloud.example.com/some/dir/file.pdf"
128
+ ).and_return(
129
+ headers: {
130
+ 'Content-Type' => 'text/plain'
131
+ },
132
+ body: data
133
+ )
134
+ end
135
+
95
136
  it 'content' do
96
137
  file = retriever.download(spec['0'])
97
138
  expect(File.open(file, 'rb', &:read)).to eq(data)
@@ -115,6 +156,13 @@ describe BrowseEverything::Retriever, vcr: { cassette_name: 'retriever', record:
115
156
  }
116
157
  end
117
158
  let(:download_options) { spec['0'] }
159
+ before do
160
+ stub_request(
161
+ :get, "https://retrieve.cloud.example.com/some/dir/file_error.pdf"
162
+ ).and_return(
163
+ status: 403
164
+ )
165
+ end
118
166
 
119
167
  it 'raises an exception' do
120
168
  expect { retriever.download(download_options) }.to raise_error(BrowseEverything::DownloadError, /BrowseEverything::Retriever: Failed to download/)
@@ -184,6 +232,14 @@ describe BrowseEverything::Retriever, vcr: { cassette_name: 'retriever', record:
184
232
 
185
233
  context 'when can retrieve' do
186
234
  let(:url) { 'https://retrieve.cloud.example.com/some/dir/can_retrieve.pdf' }
235
+ before do
236
+ stub_request(
237
+ :get, "https://retrieve.cloud.example.com/some/dir/can_retrieve.pdf"
238
+ ).to_return(
239
+ status: 206,
240
+ body: '%'
241
+ )
242
+ end
187
243
 
188
244
  it 'says it can' do
189
245
  expect(described_class).to be_can_retrieve(url)
@@ -192,6 +248,13 @@ describe BrowseEverything::Retriever, vcr: { cassette_name: 'retriever', record:
192
248
 
193
249
  context 'when cannot retrieve' do
194
250
  let(:url) { 'https://retrieve.cloud.example.com/some/dir/cannot_retrieve.pdf' }
251
+ before do
252
+ stub_request(
253
+ :get, "https://retrieve.cloud.example.com/some/dir/cannot_retrieve.pdf"
254
+ ).to_return(
255
+ status: 403
256
+ )
257
+ end
195
258
 
196
259
  it 'says it cannot' do
197
260
  expect(described_class).not_to be_can_retrieve(url)
data/spec/spec_helper.rb CHANGED
@@ -36,19 +36,13 @@ require 'capybara/rspec'
36
36
  require 'rspec'
37
37
  require 'rspec/rails'
38
38
  require 'rspec/its'
39
- require 'vcr'
40
- require 'webmock/rspec'
41
39
 
42
40
  # Requires supporting ruby files with custom matchers and macros, etc,
43
41
  # in spec/support/ and its subdirectories.
44
42
  Dir[Pathname.new(File.expand_path('support/**/*.rb', __dir__))].each { |f| require f }
45
43
 
46
- VCR.configure do |c|
47
- c.cassette_library_dir = 'spec/fixtures/vcr_cassettes'
48
- c.hook_into :webmock
49
- c.configure_rspec_metadata!
50
- c.ignore_localhost = true
51
- end
44
+ require 'webmock/rspec'
45
+ WebMock.disable_net_connect!(allow_localhost: true)
52
46
 
53
47
  RSpec.configure do |config|
54
48
  config.expect_with :rspec do |c|
@@ -85,7 +79,8 @@ module BrowserConfigHelper
85
79
  's3' => {
86
80
  app_key: 'S3AppKey',
87
81
  app_secret: 'S3AppSecret',
88
- bucket: 's3.bucket'
82
+ bucket: 's3.bucket',
83
+ region: 's3.region'
89
84
  })
90
85
  end
91
86
 
@@ -2,16 +2,20 @@
2
2
 
3
3
  require 'selenium-webdriver'
4
4
 
5
- Capybara.javascript_driver = :headless_chrome
6
-
7
- Capybara.register_driver :headless_chrome do |app|
8
- capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
9
- chromeOptions: { args: %w[headless disable-gpu no-sandbox] }
10
- )
11
-
12
- Capybara::Selenium::Driver.new(app,
13
- browser: :chrome,
14
- desired_capabilities: capabilities)
5
+ # Temporary pin until chromedriver-helper patched to deal with change in chromedriver versioning
6
+ # See https://github.com/flavorjones/chromedriver-helper/pull/63
7
+ # @note In January 2018, TravisCI disabled Chrome sandboxing in its Linux
8
+ # container build environments to mitigate Meltdown/Spectre
9
+ # vulnerabilities, at which point Hyrax could no longer use the
10
+ # Capybara-provided :selenium_chrome_headless driver (which does not
11
+ # include the `--no-sandbox` argument).
12
+ Capybara.register_driver :selenium_chrome_headless_sandboxless do |app|
13
+ browser_options = ::Selenium::WebDriver::Chrome::Options.new
14
+ browser_options.args << '--headless'
15
+ browser_options.args << '--disable-gpu'
16
+ browser_options.args << '--no-sandbox'
17
+ Capybara::Selenium::Driver.new(app, browser: :chrome, options: browser_options)
15
18
  end
16
19
 
17
20
  Capybara.default_max_wait_time = 5
21
+ Capybara.javascript_driver = :selenium_chrome_headless_sandboxless
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: browse-everything
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.16.1
4
+ version: 1.0.0.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carolyn Cole
@@ -13,7 +13,7 @@ authors:
13
13
  autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
- date: 2018-08-02 00:00:00.000000000 Z
16
+ date: 2018-11-06 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: addressable
@@ -91,14 +91,14 @@ dependencies:
91
91
  requirements:
92
92
  - - "~>"
93
93
  - !ruby/object:Gem::Version
94
- version: '0.21'
94
+ version: '0.23'
95
95
  type: :runtime
96
96
  prerelease: false
97
97
  version_requirements: !ruby/object:Gem::Requirement
98
98
  requirements:
99
99
  - - "~>"
100
100
  - !ruby/object:Gem::Version
101
- version: '0.21'
101
+ version: '0.23'
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: google_drive
104
104
  requirement: !ruby/object:Gem::Requirement
@@ -119,14 +119,14 @@ dependencies:
119
119
  requirements:
120
120
  - - '='
121
121
  - !ruby/object:Gem::Version
122
- version: 0.6.2
122
+ version: 0.6.6
123
123
  type: :runtime
124
124
  prerelease: false
125
125
  version_requirements: !ruby/object:Gem::Requirement
126
126
  requirements:
127
127
  - - '='
128
128
  - !ruby/object:Gem::Version
129
- version: 0.6.2
129
+ version: 0.6.6
130
130
  - !ruby/object:Gem::Dependency
131
131
  name: rails
132
132
  requirement: !ruby/object:Gem::Requirement
@@ -189,14 +189,14 @@ dependencies:
189
189
  requirements:
190
190
  - - "~>"
191
191
  - !ruby/object:Gem::Version
192
- version: '0.20'
192
+ version: '0.19'
193
193
  type: :runtime
194
194
  prerelease: false
195
195
  version_requirements: !ruby/object:Gem::Requirement
196
196
  requirements:
197
197
  - - "~>"
198
198
  - !ruby/object:Gem::Version
199
- version: '0.20'
199
+ version: '0.19'
200
200
  - !ruby/object:Gem::Dependency
201
201
  name: typhoeus
202
202
  requirement: !ruby/object:Gem::Requirement
@@ -257,16 +257,16 @@ dependencies:
257
257
  name: chromedriver-helper
258
258
  requirement: !ruby/object:Gem::Requirement
259
259
  requirements:
260
- - - ">="
260
+ - - '='
261
261
  - !ruby/object:Gem::Version
262
- version: '0'
262
+ version: 1.2.0
263
263
  type: :development
264
264
  prerelease: false
265
265
  version_requirements: !ruby/object:Gem::Requirement
266
266
  requirements:
267
- - - ">="
267
+ - - '='
268
268
  - !ruby/object:Gem::Version
269
- version: '0'
269
+ version: 1.2.0
270
270
  - !ruby/object:Gem::Dependency
271
271
  name: coveralls
272
272
  requirement: !ruby/object:Gem::Requirement
@@ -323,6 +323,20 @@ dependencies:
323
323
  - - "~>"
324
324
  - !ruby/object:Gem::Version
325
325
  version: '2.3'
326
+ - !ruby/object:Gem::Dependency
327
+ name: pry-byebug
328
+ requirement: !ruby/object:Gem::Requirement
329
+ requirements:
330
+ - - ">="
331
+ - !ruby/object:Gem::Version
332
+ version: '0'
333
+ type: :development
334
+ prerelease: false
335
+ version_requirements: !ruby/object:Gem::Requirement
336
+ requirements:
337
+ - - ">="
338
+ - !ruby/object:Gem::Version
339
+ version: '0'
326
340
  - !ruby/object:Gem::Dependency
327
341
  name: rails-controller-testing
328
342
  requirement: !ruby/object:Gem::Requirement
@@ -449,20 +463,6 @@ dependencies:
449
463
  - - ">="
450
464
  - !ruby/object:Gem::Version
451
465
  version: '0'
452
- - !ruby/object:Gem::Dependency
453
- name: vcr
454
- requirement: !ruby/object:Gem::Requirement
455
- requirements:
456
- - - ">="
457
- - !ruby/object:Gem::Version
458
- version: '0'
459
- type: :development
460
- prerelease: false
461
- version_requirements: !ruby/object:Gem::Requirement
462
- requirements:
463
- - - ">="
464
- - !ruby/object:Gem::Version
465
- version: '0'
466
466
  - !ruby/object:Gem::Dependency
467
467
  name: webmock
468
468
  requirement: !ruby/object:Gem::Requirement
@@ -495,12 +495,14 @@ files:
495
495
  - ".rubocop.yml"
496
496
  - ".rubocop_todo.yml"
497
497
  - ".travis.yml"
498
+ - CODE_OF_CONDUCT.md
498
499
  - CONTRIBUTING.md
499
500
  - Gemfile
500
501
  - HISTORY.md
501
502
  - LICENSE.txt
502
503
  - README.md
503
504
  - Rakefile
505
+ - SUPPORT.md
504
506
  - app/assets/javascripts/browse_everything.js
505
507
  - app/assets/javascripts/browse_everything/behavior.js.coffee
506
508
  - app/assets/stylesheets/browse_everything.scss
@@ -552,10 +554,6 @@ files:
552
554
  - spec/fixtures/file_system/dir_2/file_4.docx
553
555
  - spec/fixtures/file_system/file 1.pdf
554
556
  - spec/fixtures/file_system/file_1.pdf
555
- - spec/fixtures/vcr_cassettes/box.yml
556
- - spec/fixtures/vcr_cassettes/dropbox.yml
557
- - spec/fixtures/vcr_cassettes/google_drive.yml
558
- - spec/fixtures/vcr_cassettes/retriever.yml
559
557
  - spec/helper/browse_everything_controller_helper_spec.rb
560
558
  - spec/javascripts/behavior_spec.js
561
559
  - spec/javascripts/helpers/jasmine-jquery.js
@@ -606,12 +604,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
606
604
  version: '0'
607
605
  required_rubygems_version: !ruby/object:Gem::Requirement
608
606
  requirements:
609
- - - ">="
607
+ - - ">"
610
608
  - !ruby/object:Gem::Version
611
- version: '0'
609
+ version: 1.3.1
612
610
  requirements: []
613
611
  rubyforge_project:
614
- rubygems_version: 2.7.3
612
+ rubygems_version: 2.6.14.1
615
613
  signing_key:
616
614
  specification_version: 4
617
615
  summary: AJAX/Rails engine file browser for cloud storage services
@@ -625,10 +623,6 @@ test_files:
625
623
  - spec/fixtures/file_system/dir_2/file_4.docx
626
624
  - spec/fixtures/file_system/file 1.pdf
627
625
  - spec/fixtures/file_system/file_1.pdf
628
- - spec/fixtures/vcr_cassettes/box.yml
629
- - spec/fixtures/vcr_cassettes/dropbox.yml
630
- - spec/fixtures/vcr_cassettes/google_drive.yml
631
- - spec/fixtures/vcr_cassettes/retriever.yml
632
626
  - spec/helper/browse_everything_controller_helper_spec.rb
633
627
  - spec/javascripts/behavior_spec.js
634
628
  - spec/javascripts/helpers/jasmine-jquery.js