browse-everything 0.16.0 → 0.16.1

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 (31) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +0 -1
  3. data/.rubocop.yml +14 -44
  4. data/app/helpers/font_awesome_version_helper.rb +0 -1
  5. data/app/services/browse_everything_session.rb +0 -1
  6. data/app/services/browser_factory.rb +0 -1
  7. data/browse-everything.gemspec +4 -3
  8. data/lib/browse_everything.rb +2 -2
  9. data/lib/browse_everything/driver/dropbox.rb +3 -1
  10. data/lib/browse_everything/file_entry.rb +1 -1
  11. data/lib/browse_everything/retriever.rb +1 -1
  12. data/lib/browse_everything/version.rb +1 -1
  13. data/lib/generators/browse_everything/config_generator.rb +2 -2
  14. data/spec/controllers/browse_everything_controller_spec.rb +1 -0
  15. data/spec/features/select_files_spec.rb +2 -0
  16. data/spec/fixtures/config/browse_everything_providers.yml +10 -0
  17. data/spec/lib/browse_everything/auth/google/credentials_spec.rb +3 -2
  18. data/spec/lib/browse_everything/browse_everything_helper_spec.rb +1 -1
  19. data/spec/lib/browse_everything/browser_spec.rb +1 -0
  20. data/spec/lib/browse_everything/driver/base_spec.rb +3 -0
  21. data/spec/lib/browse_everything/driver/box_spec.rb +8 -0
  22. data/spec/lib/browse_everything/driver/file_system_spec.rb +3 -0
  23. data/spec/lib/browse_everything/driver/s3_spec.rb +6 -3
  24. data/spec/lib/browse_everything/driver_spec.rb +4 -5
  25. data/spec/lib/browse_everything/retriever_spec.rb +15 -14
  26. data/spec/lib/browse_everything_spec.rb +57 -40
  27. data/spec/services/browse_everything_session/provider_session_spec.rb +3 -0
  28. data/spec/spec_helper.rb +4 -3
  29. data/spec/test_app_templates/lib/generators/test_app_generator.rb +1 -1
  30. data/spec/views/browse_everything/_files.html.erb_spec.rb +1 -0
  31. metadata +41 -25
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f010bc868532bf8d950f23deb2057dbf1ef250d3e3ea6a8350cdd4d5652406e5
4
- data.tar.gz: 61b2d58f7cec21225de6e85392fb0603d768ac2859aa842763dfdd65d535a0a5
3
+ metadata.gz: 36223786bc3a801a4cde821810d4e8976f0a1034fcc228acaea6a7eba411770e
4
+ data.tar.gz: 1611bfb8566183526c1489bb3de4dd8beac2147c7cf0b637d18a445267984daf
5
5
  SHA512:
6
- metadata.gz: c0580e42f8762c2f29e64860c5e7444f82f4c569e724edd9cac32e894506a62f9a192591e7dbf294f6747906170223f6cd4ff59c09e7a56c9c65ece3065cd275
7
- data.tar.gz: 311ab92c994db67da4a8f4206edc00a6d50006dbd3a9492a06ea87002067b20121cce4e8afb3110a2f46aef84fbb43682b520d7a47f63709e0d82370ef755236
6
+ metadata.gz: 47f835658832bc8837d99c18f4e3dae6a5e8d1edebb183950022a3d44c9b309e04437853d727449b1c0705eaf959fa43ab62c7b5c50ccc78298d6b3d6d2d0e0c
7
+ data.tar.gz: a725066448c474d91fd38590dbc470ce5bdcf5cf7e60df0721a7ddfbc122fd004a23c99688565ca368610da3adf77f8b95d0bd383f940cf0285d4c189638756e
data/.gitignore CHANGED
@@ -17,4 +17,3 @@ test/tmp
17
17
  test/version_tmp
18
18
  tmp
19
19
  .internal_test_app
20
- browse_everything_providers.yml
@@ -1,10 +1,10 @@
1
1
  inherit_from: .rubocop_todo.yml
2
+ inherit_gem:
3
+ bixby: bixby_default.yml
2
4
 
3
5
  AllCops:
4
- TargetRubyVersion: 2.4
6
+ TargetRubyVersion: 2.3
5
7
  DisplayCopNames: true
6
- Include:
7
- - '**/Rakefile'
8
8
  Exclude:
9
9
  - 'vendor/**/*'
10
10
 
@@ -22,21 +22,8 @@ Metrics/LineLength:
22
22
  Max: 400
23
23
  Metrics/BlockLength:
24
24
  Exclude:
25
- - 'spec/views/browse_everything/_files.html.erb_spec.rb'
26
- - 'spec/unit/browse_everything_helper_spec.rb'
27
- - 'spec/unit/browse_everything/retriever_spec.rb'
28
- - 'spec/unit/browse_everything/file_entry_spec.rb'
29
- - 'spec/unit/browse_everything/driver/s3_spec.rb'
30
- - 'spec/unit/browse_everything/driver/google_drive_spec.rb'
31
- - 'spec/unit/browse_everything/driver/file_system_spec.rb'
32
- - 'spec/unit/browse_everything/driver/dropbox_spec.rb'
33
- - 'spec/unit/browse_everything/driver/box_spec.rb'
34
- - 'spec/unit/browse_everything/browser_spec.rb'
35
- - 'spec/services/browser_factory_spec.rb'
36
- - 'spec/services/browse_everything_session/provider_session_spec.rb'
37
- - 'spec/helper/browse_everything_controller_helper_spec.rb'
38
- - 'spec/controllers/browse_everything_controller_spec.rb'
39
- - 'browse-everything.gemspec'
25
+ - '*.gemspec'
26
+ - 'spec/**/*'
40
27
 
41
28
  RSpec/NestedGroups:
42
29
  Enabled: false
@@ -45,27 +32,10 @@ RSpec/LeadingSubject:
45
32
  Enabled: false
46
33
 
47
34
  RSpec/ExampleLength:
48
- Exclude:
49
- - 'spec/unit/browse_everything/driver/base_spec.rb'
50
- - 'spec/unit/browse_everything/driver/box_spec.rb'
51
- - 'spec/unit/browse_everything/driver/dropbox_spec.rb'
52
- - 'spec/unit/browse_everything/driver/file_system_spec.rb'
53
- - 'spec/unit/browse_everything/driver/google_drive_spec.rb'
54
- - 'spec/unit/browse_everything/driver/s3_spec.rb'
55
- - 'spec/features/select_files_spec.rb'
56
- - 'spec/javascripts/jasmine_spec.rb'
35
+ Enabled: false
57
36
 
58
37
  RSpec/MultipleExpectations:
59
- Exclude:
60
- - 'spec/unit/browse_everything/driver/base_spec.rb'
61
- - 'spec/unit/browse_everything/driver/box_spec.rb'
62
- - 'spec/unit/browse_everything/driver/dropbox_spec.rb'
63
- - 'spec/unit/browse_everything/driver/file_system_spec.rb'
64
- - 'spec/unit/browse_everything/driver/google_drive_spec.rb'
65
- - 'spec/unit/browse_everything/driver/s3_spec.rb'
66
- - 'spec/features/**/*'
67
- - 'spec/controllers/browse_everything_controller_spec.rb'
68
- - 'spec/unit/browse_everything/browser_spec.rb'
38
+ Enabled: false
69
39
 
70
40
  Style/NumericLiterals:
71
41
  MinDigits: 7
@@ -81,13 +51,13 @@ Naming/FileName:
81
51
 
82
52
  Style/MixinUsage:
83
53
  Exclude:
84
- - 'spec/unit/browse_everything/driver/s3_spec.rb'
85
- - 'spec/unit/browse_everything/driver/google_drive_spec.rb'
86
- - 'spec/unit/browse_everything/driver/file_system_spec.rb'
87
- - 'spec/unit/browse_everything/driver/dropbox_spec.rb'
88
- - 'spec/unit/browse_everything/driver/box_spec.rb'
89
- - 'spec/unit/browse_everything/driver/base_spec.rb'
90
- - 'spec/unit/browse_everything/browser_spec.rb'
54
+ - 'spec/lib/browse_everything/driver/s3_spec.rb'
55
+ - 'spec/lib/browse_everything/driver/google_drive_spec.rb'
56
+ - 'spec/lib/browse_everything/driver/file_system_spec.rb'
57
+ - 'spec/lib/browse_everything/driver/dropbox_spec.rb'
58
+ - 'spec/lib/browse_everything/driver/box_spec.rb'
59
+ - 'spec/lib/browse_everything/driver/base_spec.rb'
60
+ - 'spec/lib/browse_everything/browser_spec.rb'
91
61
  - 'spec/services/browser_factory_spec.rb'
92
62
  - 'spec/helper/browse_everything_controller_helper_spec.rb'
93
63
 
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module FontAwesomeVersionHelper
4
-
5
4
  # Determines if the App uses Font Awesome releases 3.x or 4.x
6
5
  # @return [TrueClass, FalseClass]
7
6
  def font_awesome_four?
@@ -1,4 +1,3 @@
1
-
2
1
  # frozen_string_literal: true
3
2
 
4
3
  class BrowseEverythingSession
@@ -1,4 +1,3 @@
1
-
2
1
  # frozen_string_literal: true
3
2
 
4
3
  class BrowserFactory
@@ -26,13 +26,15 @@ Gem::Specification.new do |spec|
26
26
  spec.add_dependency 'font-awesome-rails'
27
27
  spec.add_dependency 'google-api-client', '~> 0.21'
28
28
  spec.add_dependency 'google_drive', '~> 2.1'
29
- spec.add_dependency 'typhoeus'
29
+ spec.add_dependency 'googleauth', '0.6.2'
30
30
  spec.add_dependency 'rails', '>= 4.2'
31
31
  spec.add_dependency 'ruby-box'
32
32
  spec.add_dependency 'sass-rails'
33
33
  spec.add_dependency 'signet', '~> 0.8'
34
34
  spec.add_dependency 'thor', '~> 0.20'
35
+ spec.add_dependency 'typhoeus'
35
36
 
37
+ spec.add_development_dependency 'bixby', '>= 1.0'
36
38
  spec.add_development_dependency 'bundler', '~> 1.3'
37
39
  spec.add_development_dependency 'capybara'
38
40
  spec.add_development_dependency 'chromedriver-helper'
@@ -45,8 +47,7 @@ Gem::Specification.new do |spec|
45
47
  spec.add_development_dependency 'rspec', '~> 3.0'
46
48
  spec.add_development_dependency 'rspec-its'
47
49
  spec.add_development_dependency 'rspec-rails'
48
- spec.add_development_dependency 'rubocop', '~> 0.53'
49
- spec.add_development_dependency 'rubocop-rspec', '~> 1.23'
50
+ spec.add_development_dependency 'rubocop-rspec'
50
51
  spec.add_development_dependency 'selenium-webdriver'
51
52
  spec.add_development_dependency 'simplecov'
52
53
  spec.add_development_dependency 'sqlite3'
@@ -53,14 +53,14 @@ module BrowseEverything
53
53
  elsif value.is_a?(String)
54
54
  config_file_content = File.read(value)
55
55
  config_file_template = ERB.new(config_file_content)
56
- config_values = YAML.safe_load(config_file_template.result)
56
+ config_values = YAML.safe_load(config_file_template.result, [Symbol])
57
57
  @config = ActiveSupport::HashWithIndifferentAccess.new config_values
58
58
  @config.deep_symbolize_keys
59
59
  else
60
60
  raise InitializationError, "Unrecognized configuration: #{value.inspect}"
61
61
  end
62
62
 
63
- if @config.include? 'drop_box'
63
+ if @config.include? 'drop_box' # rubocop:disable Style/GuardClause
64
64
  warn '[DEPRECATION] `drop_box` is deprecated. Please use `dropbox` instead.'
65
65
  @config['dropbox'] = @config.delete('drop_box')
66
66
  end
@@ -13,7 +13,9 @@ module BrowseEverything
13
13
  end
14
14
 
15
15
  class << self
16
- private def klass_for(metadata)
16
+ private
17
+
18
+ def klass_for(metadata)
17
19
  case metadata
18
20
  when DropboxApi::Metadata::File
19
21
  FileFactory
@@ -15,7 +15,7 @@ module BrowseEverything
15
15
  end
16
16
 
17
17
  def relative_parent_path?
18
- /^\.\.?$/.match(name) ? true : false
18
+ name =~ /^\.\.?$/ ? true : false
19
19
  end
20
20
 
21
21
  def container?
@@ -131,7 +131,7 @@ module BrowseEverything
131
131
  url = options.fetch(:url)
132
132
  retrieved = 0
133
133
 
134
- request = Typhoeus::Request.new(url.to_s)
134
+ request = Typhoeus::Request.new(url.to_s, headers: headers)
135
135
  request.on_headers do |response|
136
136
  raise DownloadError.new("#{self.class}: Failed to download #{url}", response) unless response.code == 200
137
137
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module BrowseEverything
4
- VERSION = '0.16.0'
4
+ VERSION = '0.16.1'
5
5
  end
@@ -7,7 +7,7 @@ class BrowseEverything::ConfigGenerator < Rails::Generators::Base
7
7
  This generator makes the following changes to your application:
8
8
  1. Creates config/browse_everything_providers.yml with a placeholder value
9
9
  2. Modifies your app's routes.rb to mount BrowseEverything at /browse
10
- DESC
10
+ DESC
11
11
  source_root File.expand_path('templates', __dir__)
12
12
 
13
13
  def inject_routes
@@ -18,7 +18,7 @@ class BrowseEverything::ConfigGenerator < Rails::Generators::Base
18
18
  end
19
19
 
20
20
  def copy_example_config
21
- FileUtils.rm 'config/browse_everything_providers.yml', force: true if File.exists? 'config/browse_everything_providers.yml'
21
+ FileUtils.rm 'config/browse_everything_providers.yml', force: true if File.exist? 'config/browse_everything_providers.yml'
22
22
  copy_file 'browse_everything_providers.yml.example', 'config/browse_everything_providers.yml', force: true
23
23
  end
24
24
 
@@ -22,6 +22,7 @@ RSpec.describe BrowseEverythingController, type: :controller do
22
22
  allow(provider).to receive(:connect)
23
23
  controller.auth
24
24
  end
25
+
25
26
  it 'retrieves the authorization code from the parameters' do
26
27
  expect(provider).to have_received(:connect).with({ 'code' => 'test-code' }, nil)
27
28
  end
@@ -26,11 +26,13 @@ describe 'Choosing files', type: :feature, js: true do
26
26
 
27
27
  context 'when Turbolinks are enabled', fail: true do
28
28
  before { click_link('Enter Test App (Turbolinks)') }
29
+
29
30
  it_behaves_like 'browseable files'
30
31
  end
31
32
 
32
33
  context 'when Turbolinks are disabled' do
33
34
  before { click_link('Enter Test App (No Turbolinks)') }
35
+
34
36
  it_behaves_like 'browseable files'
35
37
  end
36
38
  end
@@ -0,0 +1,10 @@
1
+ ---
2
+ :dropbox:
3
+ :app_key: test-key
4
+ :app_secret: test-secret
5
+ :box:
6
+ :client_id: test-id
7
+ :client_secret: test-secret
8
+ :google_drive:
9
+ :client_id: test-id
10
+ :client_secret: test-secret
@@ -5,24 +5,25 @@ describe BrowseEverything::Auth::Google::Credentials do
5
5
 
6
6
  describe '#fetch_access_token' do
7
7
  let(:response) { double }
8
+
8
9
  before do
9
10
  WebMock.disable!
10
11
 
11
12
  allow(response).to receive(:status_code).and_return('200')
12
13
  allow(response).to receive(:body).and_return('{}')
13
- allow(response).to receive(:header).and_return({ content_type: 'application/json' })
14
+ allow(response).to receive(:header).and_return(content_type: 'application/json')
14
15
 
15
16
  connection = instance_double(Faraday::Connection)
16
17
  allow(connection).to receive(:post).and_return(response)
17
18
  faraday = class_double('Faraday').as_stubbed_const(transfer_nested_constants: true)
18
19
  allow(faraday).to receive(:default_connection).and_return(connection)
19
-
20
20
  end
21
21
 
22
22
  context 'when an access has already been retrieved' do
23
23
  before do
24
24
  credentials.access_token = 'test-token'
25
25
  end
26
+
26
27
  it 'generates a Hash if an access token has already been set' do
27
28
  expect(credentials.fetch_access_token).to be_a Hash
28
29
  expect(credentials.fetch_access_token).to include('access_token' => 'test-token')
@@ -11,7 +11,7 @@ describe BrowseEverythingHelper do
11
11
  end
12
12
  end
13
13
 
14
- let(:test_file) { BrowseEverything::FileEntry.new 0, '/path/to/file.mp4', 'file.mp4', 12345, Time.now, false }
14
+ let(:test_file) { BrowseEverything::FileEntry.new 0, '/path/to/file.mp4', 'file.mp4', 12345, Time.current, false }
15
15
 
16
16
  it 'matches a full type' do
17
17
  expect(test_class.new(accept: 'video/mp4').is_acceptable?(test_file)).to eq(true)
@@ -102,6 +102,7 @@ describe BrowseEverything::Browser do
102
102
 
103
103
  describe '#first_provider' do
104
104
  subject(:browser) { described_class.new(url_options) }
105
+
105
106
  it 'retrieves the first configured provider' do
106
107
  expect(browser.first_provider).to be_a BrowseEverything::Driver::FileSystem
107
108
  end
@@ -14,16 +14,19 @@ describe BrowseEverything::Driver::Base do
14
14
  its(:auth_link) { is_expected.to be_empty }
15
15
  specify { is_expected.not_to be_authorized }
16
16
  end
17
+
17
18
  describe '#connect' do
18
19
  subject { driver.connect({}, {}) }
19
20
 
20
21
  it { is_expected.to be_blank }
21
22
  end
23
+
22
24
  describe '#contents' do
23
25
  subject { driver.contents('') }
24
26
 
25
27
  it { is_expected.to be_empty }
26
28
  end
29
+
27
30
  describe '#link_for' do
28
31
  subject { driver.link_for('/path/to/foo.txt') }
29
32
 
@@ -66,16 +66,22 @@ describe BrowseEverything::Driver::Box, vcr: { cassette_name: 'box', record: :no
66
66
  context 'when the access token is not registered' do
67
67
  it { is_expected.to be(false) }
68
68
  end
69
+
69
70
  context 'when the access tokens are registered and not expired' do
70
71
  before { provider.token = token.merge('expires_at' => Time.now.to_i + 360) }
72
+
71
73
  it { is_expected.to be(true) }
72
74
  end
75
+
73
76
  context 'when the access tokens are registered but no expiration time' do
74
77
  before { provider.token = token }
78
+
75
79
  it { is_expected.to be(false) }
76
80
  end
81
+
77
82
  context 'when the access tokens are registered but expired' do
78
83
  before { provider.token = token.merge('expires_at' => Time.now.to_i - 360) }
84
+
79
85
  it { is_expected.to be(false) }
80
86
  end
81
87
  end
@@ -143,6 +149,7 @@ describe BrowseEverything::Driver::Box, vcr: { cassette_name: 'box', record: :no
143
149
  its(:id) { is_expected.to be_kind_of(Pathname) }
144
150
  it { is_expected.to be_container }
145
151
  end
152
+
146
153
  describe 'the second item' do
147
154
  subject { apps_dir }
148
155
 
@@ -150,6 +157,7 @@ describe BrowseEverything::Driver::Box, vcr: { cassette_name: 'box', record: :no
150
157
  its(:id) { is_expected.to eq('2459974427') }
151
158
  it { is_expected.to be_container }
152
159
  end
160
+
153
161
  describe 'a file' do
154
162
  subject { equipment }
155
163
 
@@ -38,12 +38,14 @@ describe BrowseEverything::Driver::FileSystem do
38
38
  its(:name) { is_expected.to eq('dir_1') }
39
39
  specify { is_expected.to be_container }
40
40
  end
41
+
41
42
  context 'when there are multiple directories' do
42
43
  subject { contents[1] }
43
44
 
44
45
  its(:name) { is_expected.to eq('dir_2') }
45
46
  specify { is_expected.to be_container }
46
47
  end
48
+
47
49
  context 'when there is a PDF' do
48
50
  subject { contents[2] }
49
51
 
@@ -64,6 +66,7 @@ describe BrowseEverything::Driver::FileSystem do
64
66
  its(:name) { is_expected.to eq('dir_3') }
65
67
  specify { is_expected.to be_container }
66
68
  end
69
+
67
70
  context 'when there is a text file' do
68
71
  subject { contents.last }
69
72
 
@@ -67,6 +67,7 @@ describe BrowseEverything::Driver::S3 do
67
67
  its(:name) { is_expected.to eq('bar') }
68
68
  specify { is_expected.to be_container }
69
69
  end
70
+
70
71
  context 'with two assets' do
71
72
  subject { contents[1] }
72
73
 
@@ -100,6 +101,7 @@ describe BrowseEverything::Driver::S3 do
100
101
  its(:name) { is_expected.to eq('..') }
101
102
  specify { is_expected.to be_container }
102
103
  end
104
+
103
105
  context 'with a JPEG asset' do
104
106
  subject { contents[1] }
105
107
 
@@ -109,6 +111,7 @@ describe BrowseEverything::Driver::S3 do
109
111
  its(:size) { is_expected.to eq(52645) }
110
112
  specify { is_expected.not_to be_container }
111
113
  end
114
+
112
115
  context 'with a PNG asset' do
113
116
  subject { contents[2] }
114
117
 
@@ -133,17 +136,17 @@ describe BrowseEverything::Driver::S3 do
133
136
 
134
137
  it ':signed_url' do
135
138
  provider.config[:response_type] = :signed_url
136
- expect(provider.link_for('foo/quux.png')).to eq ["https://s3.amazonaws.com/presigned_url", {:file_name=>"quux.png", :expires=>14400}]
139
+ expect(provider.link_for('foo/quux.png')).to eq ['https://s3.amazonaws.com/presigned_url', { file_name: 'quux.png', expires: 14400 }]
137
140
  end
138
141
 
139
142
  it ':public_url' do
140
143
  provider.config[:response_type] = :public_url
141
- expect(provider.link_for('foo/quux.png')).to eq ["https://s3.amazonaws.com/public_url", {:file_name=>"quux.png"}]
144
+ expect(provider.link_for('foo/quux.png')).to eq ['https://s3.amazonaws.com/public_url', { file_name: 'quux.png' }]
142
145
  end
143
146
 
144
147
  it ':s3_uri' do
145
148
  provider.config[:response_type] = :s3_uri
146
- expect(provider.link_for('foo/quux.png')).to eq ['s3://s3.bucket/foo/quux.png', {:file_name=>"quux.png"}]
149
+ expect(provider.link_for('foo/quux.png')).to eq ['s3://s3.bucket/foo/quux.png', { file_name: 'quux.png' }]
147
150
  end
148
151
  end
149
152
  end
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  describe BrowseEverything::Driver do
4
-
5
4
  let(:my_driver) do
6
5
  MyDriver.new
7
6
  end
@@ -10,7 +9,7 @@ describe BrowseEverything::Driver do
10
9
  class MyDriver
11
10
  include BrowseEverything::Driver
12
11
 
13
- def get_sorter
12
+ def get_sorter # rubocop:disable Naming/AccessorMethodName
14
13
  sorter
15
14
  end
16
15
  end
@@ -18,17 +17,17 @@ describe BrowseEverything::Driver do
18
17
 
19
18
  describe '#sorter' do
20
19
  it 'defaults to nil' do
21
- expect(BrowseEverything::Driver.sorter).to be nil
20
+ expect(described_class.sorter).to be nil
22
21
  end
23
22
  end
24
23
 
25
24
  describe '#sorter=' do
26
25
  let(:new_sorter) do
27
- lambda { |files| }
26
+ ->(files) {}
28
27
  end
29
28
 
30
29
  before do
31
- BrowseEverything::Driver.sorter = new_sorter
30
+ described_class.sorter = new_sorter
32
31
  end
33
32
 
34
33
  it 'mutates the sorter from the initializer' do
@@ -9,7 +9,8 @@ describe BrowseEverything::Retriever, vcr: { cassette_name: 'retriever', record:
9
9
  let(:size) { File.size(datafile) }
10
10
 
11
11
  describe '#get_file_size' do
12
- subject(:file_size) { retriever.file_size(options) }
12
+ subject(:computed_file_size) { retriever.file_size(options) }
13
+
13
14
  let(:url) { URI.parse("file://#{datafile}") }
14
15
  let(:headers) { [] }
15
16
  let(:file_size) { 0 }
@@ -22,26 +23,26 @@ describe BrowseEverything::Retriever, vcr: { cassette_name: 'retriever', record:
22
23
  end
23
24
 
24
25
  it 'calculates or retrieves the size of a file' do
25
- retriever.retrieve(options) do |chunk, retrieved, total|
26
+ retriever.retrieve(options) do |_chunk, _retrieved, total|
26
27
  expect(total).to eq 2256
27
28
  end
28
29
  end
29
30
 
30
- context "when retrieving a resource from a cloud storage provider" do
31
- let(:url) { URI.parse("https://drive.google.com/uc?id=id&export=download") }
31
+ context 'when retrieving a resource from a cloud storage provider' do
32
+ let(:url) { URI.parse('https://drive.google.com/uc?id=id&export=download') }
32
33
 
33
34
  it 'calculates or retrieves the size of a file' do
34
- retriever.retrieve(options) do |chunk, retrieved, total|
35
+ retriever.retrieve(options) do |_chunk, _retrieved, total|
35
36
  expect(total).to eq 1234
36
37
  end
37
38
  end
38
39
  end
39
40
 
40
- context "when retrieving a resource with an unsupported protocol" do
41
- let(:url) { URI.parse("ftp://invalid") }
41
+ context 'when retrieving a resource with an unsupported protocol' do
42
+ let(:url) { URI.parse('ftp://invalid') }
42
43
 
43
- it "raises an error" do
44
- expect { retriever.retrieve(options) {|c, r, t|} }.to raise_error(URI::BadURIError, "Unknown URI scheme: ftp")
44
+ it 'raises an error' do
45
+ expect { retriever.retrieve(options) { |c, r, t| } }.to raise_error(URI::BadURIError, 'Unknown URI scheme: ftp')
45
46
  end
46
47
  end
47
48
  end
@@ -167,7 +168,7 @@ describe BrowseEverything::Retriever, vcr: { cassette_name: 'retriever', record:
167
168
  end
168
169
  end
169
170
 
170
- context '.can_retrieve?' do
171
+ describe '.can_retrieve?' do
171
172
  let(:expiry_time) { (Time.current + 3600).xmlschema }
172
173
  let(:spec) do
173
174
  {
@@ -181,19 +182,19 @@ describe BrowseEverything::Retriever, vcr: { cassette_name: 'retriever', record:
181
182
  }
182
183
  end
183
184
 
184
- context 'can retrieve' do
185
+ context 'when can retrieve' do
185
186
  let(:url) { 'https://retrieve.cloud.example.com/some/dir/can_retrieve.pdf' }
186
187
 
187
188
  it 'says it can' do
188
- expect(described_class.can_retrieve?(url)).to be_truthy
189
+ expect(described_class).to be_can_retrieve(url)
189
190
  end
190
191
  end
191
192
 
192
- context 'cannot retrieve' do
193
+ context 'when cannot retrieve' do
193
194
  let(:url) { 'https://retrieve.cloud.example.com/some/dir/cannot_retrieve.pdf' }
194
195
 
195
196
  it 'says it cannot' do
196
- expect(described_class.can_retrieve?(url)).to be_falsey
197
+ expect(described_class).not_to be_can_retrieve(url)
197
198
  end
198
199
  end
199
200
  end
@@ -1,59 +1,76 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  describe BrowseEverything do
4
- describe '.configure' do
5
-
6
- let(:config) do
7
- {
8
- dropbox: {
9
- app_key: 'test-key',
10
- app_secret: 'test-secret'
11
- },
12
- box: {
13
- client_id: 'test-id',
14
- client_secret: 'test-secret'
15
- },
16
- google_drive: {
17
- client_id: 'test-id',
18
- client_secret: 'test-secret'
19
- }
20
- }
21
- end
22
- before do
23
- BrowseEverything.configure(config)
24
- end
25
- it 'registers the configuration for the drivers' do
26
- expect(BrowseEverything.config).to be_a ActiveSupport::HashWithIndifferentAccess
4
+ shared_examples "a configured BrowseEverything module" do
5
+ describe 'registered configuration' do
6
+ it 'registers the configuration for the drivers' do
7
+ expect(described_class.config).to be_a ActiveSupport::HashWithIndifferentAccess
27
8
 
28
- expect(BrowseEverything.config).to include 'dropbox'
29
- expect(BrowseEverything.config['dropbox']).to include({ 'app_key' => 'test-key' })
30
- expect(BrowseEverything.config['dropbox']).to include({ 'app_secret' => 'test-secret' })
9
+ expect(described_class.config).to include 'dropbox'
10
+ expect(described_class.config['dropbox']).to include('app_key' => 'test-key')
11
+ expect(described_class.config['dropbox']).to include('app_secret' => 'test-secret')
31
12
 
32
- expect(BrowseEverything.config).to include 'box'
33
- expect(BrowseEverything.config['box']).to include({ 'client_id' => 'test-id' })
34
- expect(BrowseEverything.config['box']).to include({ 'client_secret' => 'test-secret' })
13
+ expect(described_class.config).to include 'box'
14
+ expect(described_class.config['box']).to include('client_id' => 'test-id')
15
+ expect(described_class.config['box']).to include('client_secret' => 'test-secret')
35
16
 
36
- expect(BrowseEverything.config).to include 'google_drive'
37
- expect(BrowseEverything.config['google_drive']).to include({ 'client_id' => 'test-id' })
38
- expect(BrowseEverything.config['google_drive']).to include({ 'client_secret' => 'test-secret' })
17
+ expect(described_class.config).to include 'google_drive'
18
+ expect(described_class.config['google_drive']).to include('client_id' => 'test-id')
19
+ expect(described_class.config['google_drive']).to include('client_secret' => 'test-secret')
20
+ end
39
21
  end
22
+ end
40
23
 
41
- context 'with an entry for the drop_box provider' do
24
+ describe '.configure' do
25
+ context 'with a hash' do
42
26
  let(:config) do
43
27
  {
44
- drop_box: {
28
+ dropbox: {
45
29
  app_key: 'test-key',
46
30
  app_secret: 'test-secret'
31
+ },
32
+ box: {
33
+ client_id: 'test-id',
34
+ client_secret: 'test-secret'
35
+ },
36
+ google_drive: {
37
+ client_id: 'test-id',
38
+ client_secret: 'test-secret'
47
39
  }
48
40
  }
49
41
  end
50
42
 
51
- it 'logs a deprecation warning and sets it to the dropbox key' do
52
- expect(BrowseEverything.config).not_to include 'drop_box'
53
- expect(BrowseEverything.config).to include 'dropbox'
54
- expect(BrowseEverything.config['dropbox']).to include({ 'app_key' => 'test-key' })
55
- expect(BrowseEverything.config['dropbox']).to include({ 'app_secret' => 'test-secret' })
43
+ before do
44
+ described_class.configure(config)
56
45
  end
46
+
47
+ it_behaves_like 'a configured BrowseEverything module'
48
+
49
+ context 'with an entry for the drop_box provider' do
50
+ let(:config) do
51
+ {
52
+ drop_box: {
53
+ app_key: 'test-key',
54
+ app_secret: 'test-secret'
55
+ }
56
+ }
57
+ end
58
+
59
+ it 'logs a deprecation warning and sets it to the dropbox key' do
60
+ expect(described_class.config).not_to include 'drop_box'
61
+ expect(described_class.config).to include 'dropbox'
62
+ expect(described_class.config['dropbox']).to include('app_key' => 'test-key')
63
+ expect(described_class.config['dropbox']).to include('app_secret' => 'test-secret')
64
+ end
65
+ end
66
+ end
67
+
68
+ context 'with a YAML file' do
69
+ before do
70
+ described_class.configure(File.expand_path('../../fixtures/config/browse_everything_providers.yml', __FILE__))
71
+ end
72
+
73
+ it_behaves_like 'a configured BrowseEverything module'
57
74
  end
58
75
  end
59
76
 
@@ -61,7 +78,7 @@ describe BrowseEverything do
61
78
  let(:config) { 1234 }
62
79
 
63
80
  it 'raises an initialization error' do
64
- expect { BrowseEverything.configure(config) }.to raise_error(BrowseEverything::InitializationError, 'Unrecognized configuration: 1234')
81
+ expect { described_class.configure(config) }.to raise_error(BrowseEverything::InitializationError, 'Unrecognized configuration: 1234')
65
82
  end
66
83
  end
67
84
  end
@@ -18,6 +18,7 @@ describe BrowseEverythingSession::ProviderSession do
18
18
  allow(session).to receive(:[]).and_return('test-token')
19
19
  provider_session.token = 'test-token'
20
20
  end
21
+
21
22
  it 'sets and accesses the access token' do
22
23
  expect(provider_session.token).to eq 'test-token'
23
24
  expect(session).to have_received(:[]).with('test_session_token')
@@ -30,6 +31,7 @@ describe BrowseEverythingSession::ProviderSession do
30
31
  allow(session).to receive(:[]).and_return('test-code')
31
32
  provider_session.code = 'test-code'
32
33
  end
34
+
33
35
  it 'sets and accesses the access code' do
34
36
  expect(provider_session.code).to eq 'test-code'
35
37
  expect(session).to have_received(:[]).with('test_session_code')
@@ -42,6 +44,7 @@ describe BrowseEverythingSession::ProviderSession do
42
44
  allow(session).to receive(:[]).and_return('test' => 'data')
43
45
  provider_session.data = { 'test' => 'data' }
44
46
  end
47
+
45
48
  it 'sets and accesses the access data' do
46
49
  expect(provider_session.data).to eq('test' => 'data')
47
50
  expect(session).to have_received(:[]).with('test_session_data')
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
- ENV["RAILS_ENV"] ||= 'test'
3
- require "bundler/setup"
2
+
3
+ ENV['RAILS_ENV'] ||= 'test'
4
+ require 'bundler/setup'
4
5
 
5
6
  def coverage_needed?
6
7
  ENV['COVERAGE'] || ENV['TRAVIS']
@@ -9,7 +10,7 @@ end
9
10
  if coverage_needed?
10
11
  require 'simplecov'
11
12
  require 'coveralls'
12
- SimpleCov.root(File.expand_path('../..', __FILE__))
13
+ SimpleCov.root(File.expand_path('..', __dir__))
13
14
  SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new(
14
15
  [
15
16
  SimpleCov::Formatter::HTMLFormatter,
@@ -3,7 +3,7 @@
3
3
  require 'rails/generators'
4
4
 
5
5
  class TestAppGenerator < Rails::Generators::Base
6
- source_root File.expand_path('../../../../spec/test_app_templates/', __FILE__)
6
+ source_root File.expand_path('../../../spec/test_app_templates', __dir__)
7
7
 
8
8
  def install_engine
9
9
  generate 'browse_everything:install -f'
@@ -36,6 +36,7 @@ describe 'browse_everything/_files.html.erb', type: :view do
36
36
  allow(view).to receive(:file).and_return(file)
37
37
  render
38
38
  end
39
+
39
40
  context 'when a file is not too big' do
40
41
  let(:config) { { max_upload_file_size: (5 * 1024 * 1024 * 1024) } }
41
42
 
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.0
4
+ version: 0.16.1
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-07-24 00:00:00.000000000 Z
16
+ date: 2018-08-02 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: addressable
@@ -114,19 +114,19 @@ dependencies:
114
114
  - !ruby/object:Gem::Version
115
115
  version: '2.1'
116
116
  - !ruby/object:Gem::Dependency
117
- name: typhoeus
117
+ name: googleauth
118
118
  requirement: !ruby/object:Gem::Requirement
119
119
  requirements:
120
- - - ">="
120
+ - - '='
121
121
  - !ruby/object:Gem::Version
122
- version: '0'
122
+ version: 0.6.2
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'
129
+ version: 0.6.2
130
130
  - !ruby/object:Gem::Dependency
131
131
  name: rails
132
132
  requirement: !ruby/object:Gem::Requirement
@@ -197,6 +197,34 @@ dependencies:
197
197
  - - "~>"
198
198
  - !ruby/object:Gem::Version
199
199
  version: '0.20'
200
+ - !ruby/object:Gem::Dependency
201
+ name: typhoeus
202
+ requirement: !ruby/object:Gem::Requirement
203
+ requirements:
204
+ - - ">="
205
+ - !ruby/object:Gem::Version
206
+ version: '0'
207
+ type: :runtime
208
+ prerelease: false
209
+ version_requirements: !ruby/object:Gem::Requirement
210
+ requirements:
211
+ - - ">="
212
+ - !ruby/object:Gem::Version
213
+ version: '0'
214
+ - !ruby/object:Gem::Dependency
215
+ name: bixby
216
+ requirement: !ruby/object:Gem::Requirement
217
+ requirements:
218
+ - - ">="
219
+ - !ruby/object:Gem::Version
220
+ version: '1.0'
221
+ type: :development
222
+ prerelease: false
223
+ version_requirements: !ruby/object:Gem::Requirement
224
+ requirements:
225
+ - - ">="
226
+ - !ruby/object:Gem::Version
227
+ version: '1.0'
200
228
  - !ruby/object:Gem::Dependency
201
229
  name: bundler
202
230
  requirement: !ruby/object:Gem::Requirement
@@ -365,34 +393,20 @@ dependencies:
365
393
  - - ">="
366
394
  - !ruby/object:Gem::Version
367
395
  version: '0'
368
- - !ruby/object:Gem::Dependency
369
- name: rubocop
370
- requirement: !ruby/object:Gem::Requirement
371
- requirements:
372
- - - "~>"
373
- - !ruby/object:Gem::Version
374
- version: '0.53'
375
- type: :development
376
- prerelease: false
377
- version_requirements: !ruby/object:Gem::Requirement
378
- requirements:
379
- - - "~>"
380
- - !ruby/object:Gem::Version
381
- version: '0.53'
382
396
  - !ruby/object:Gem::Dependency
383
397
  name: rubocop-rspec
384
398
  requirement: !ruby/object:Gem::Requirement
385
399
  requirements:
386
- - - "~>"
400
+ - - ">="
387
401
  - !ruby/object:Gem::Version
388
- version: '1.23'
402
+ version: '0'
389
403
  type: :development
390
404
  prerelease: false
391
405
  version_requirements: !ruby/object:Gem::Requirement
392
406
  requirements:
393
- - - "~>"
407
+ - - ">="
394
408
  - !ruby/object:Gem::Version
395
- version: '1.23'
409
+ version: '0'
396
410
  - !ruby/object:Gem::Dependency
397
411
  name: selenium-webdriver
398
412
  requirement: !ruby/object:Gem::Requirement
@@ -532,6 +546,7 @@ files:
532
546
  - spec/controllers/browse_everything_controller_spec.rb
533
547
  - spec/features/select_files_spec.rb
534
548
  - spec/features/test_compiling_stylesheets_spec.rb
549
+ - spec/fixtures/config/browse_everything_providers.yml
535
550
  - spec/fixtures/file_system/dir_1/dir_3/file_3.m4v
536
551
  - spec/fixtures/file_system/dir_1/file_2.txt
537
552
  - spec/fixtures/file_system/dir_2/file_4.docx
@@ -604,6 +619,7 @@ test_files:
604
619
  - spec/controllers/browse_everything_controller_spec.rb
605
620
  - spec/features/select_files_spec.rb
606
621
  - spec/features/test_compiling_stylesheets_spec.rb
622
+ - spec/fixtures/config/browse_everything_providers.yml
607
623
  - spec/fixtures/file_system/dir_1/dir_3/file_3.m4v
608
624
  - spec/fixtures/file_system/dir_1/file_2.txt
609
625
  - spec/fixtures/file_system/dir_2/file_4.docx