browse-everything 0.16.1 → 1.0.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
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