browse-everything 1.0.0.rc1 → 1.1.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.
Files changed (48) hide show
  1. checksums.yaml +5 -5
  2. data/.circleci/config.yml +71 -0
  3. data/.gitignore +1 -0
  4. data/.rubocop.yml +4 -0
  5. data/CONTRIBUTING.md +3 -3
  6. data/LICENSE.txt +205 -22
  7. data/README.md +31 -14
  8. data/Rakefile +0 -9
  9. data/app/assets/javascripts/browse_everything/behavior.js +448 -0
  10. data/app/assets/stylesheets/browse_everything.scss +0 -6
  11. data/app/assets/stylesheets/browse_everything/_browse_everything.scss +2 -116
  12. data/app/assets/stylesheets/browse_everything/_browse_everything_bootstrap3.scss +123 -0
  13. data/app/assets/stylesheets/browse_everything/_browse_everything_bootstrap4.scss +117 -0
  14. data/app/views/browse_everything/_files.html.erb +1 -0
  15. data/app/views/browse_everything/_providers.html.erb +2 -1
  16. data/app/views/browse_everything/index.html.erb +3 -2
  17. data/browse-everything.gemspec +7 -9
  18. data/karma.conf.js +71 -0
  19. data/lib/browse-everything.rb +0 -2
  20. data/lib/browse_everything.rb +11 -5
  21. data/lib/browse_everything/driver/box.rb +10 -3
  22. data/lib/browse_everything/driver/dropbox.rb +25 -9
  23. data/lib/browse_everything/driver/file_system.rb +17 -5
  24. data/lib/browse_everything/driver/google_drive.rb +2 -1
  25. data/lib/browse_everything/driver/s3.rb +18 -2
  26. data/lib/browse_everything/retriever.rb +7 -2
  27. data/lib/browse_everything/version.rb +1 -1
  28. data/lib/generators/browse_everything/install_generator.rb +1 -7
  29. data/lib/generators/browse_everything/templates/browse_everything_providers.yml.example +1 -0
  30. data/spec/javascripts/behavior_spec.js +1 -3
  31. data/spec/javascripts/helpers/jquery.js +11008 -0
  32. data/spec/javascripts/karma_spec.rb +16 -0
  33. data/spec/lib/browse_everything/browser_spec.rb +5 -3
  34. data/spec/lib/browse_everything/driver/dropbox_spec.rb +20 -1
  35. data/spec/lib/browse_everything_spec.rb +7 -0
  36. data/spec/spec_helper.rb +8 -1
  37. data/spec/support/capybara.rb +0 -5
  38. data/spec/test_app_templates/Gemfile.extra +7 -0
  39. data/spec/test_app_templates/lib/generators/test_app_generator.rb +7 -1
  40. metadata +69 -82
  41. data/.travis.yml +0 -27
  42. data/app/assets/javascripts/browse_everything/behavior.js.coffee +0 -342
  43. data/app/helpers/font_awesome_version_helper.rb +0 -17
  44. data/lib/generators/browse_everything/assets_generator.rb +0 -13
  45. data/lib/generators/browse_everything/templates/browse_everything.scss +0 -6
  46. data/spec/javascripts/jasmine_spec.rb +0 -21
  47. data/spec/javascripts/support/jasmine.yml +0 -124
  48. data/spec/javascripts/support/jasmine_helper.rb +0 -16
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'open3'
4
+
5
+ # Run karma and parse the output for failures.
6
+ # The spec will fail if any karma test fails.
7
+ describe 'Karma' do
8
+ let(:runner) { Open3.capture3('karma', 'start') }
9
+ let(:output) { runner[0] + runner[1] }
10
+ let(:status) { runner[2].exitstatus }
11
+
12
+ it 'expects all karma tests to pass' do
13
+ $stderr.puts output unless status == 0
14
+ expect(status).to eq(0)
15
+ end
16
+ end
@@ -4,7 +4,7 @@ include BrowserConfigHelper
4
4
 
5
5
  describe BrowseEverything::Browser do
6
6
  let(:file_config) do
7
- "file_system:\n home: '/file/config/home'\ndropbox:\n client_id: 'DropboxId'\n client_secret: 'DropboxClientSecret'"
7
+ "file_system:\n home: '/file/config/home'\ndropbox:\n client_id: 'DropboxId'\n client_secret: 'DropboxClientSecret'\n download_directory: 'tmp/'"
8
8
  end
9
9
 
10
10
  let(:global_config) do
@@ -14,7 +14,8 @@ describe BrowseEverything::Browser do
14
14
  },
15
15
  dropbox: {
16
16
  client_id: 'DropboxId',
17
- client_secret: 'DropboxClientSecret'
17
+ client_secret: 'DropboxClientSecret',
18
+ download_directory: 'tmp/'
18
19
  }
19
20
  }
20
21
  end
@@ -26,7 +27,8 @@ describe BrowseEverything::Browser do
26
27
  },
27
28
  dropbox: {
28
29
  client_id: 'DropboxId',
29
- client_secret: 'DropboxClientSecret'
30
+ client_secret: 'DropboxClientSecret',
31
+ download_directory: 'tmp/'
30
32
  },
31
33
  url_options: url_options
32
34
  }
@@ -8,7 +8,8 @@ describe BrowseEverything::Driver::Dropbox do
8
8
  let(:provider_yml) do
9
9
  {
10
10
  client_id: 'client-id',
11
- client_secret: 'client-secret'
11
+ client_secret: 'client-secret',
12
+ download_directory: 'spec/fixtures/'
12
13
  }
13
14
  end
14
15
  let(:oauth_response_body) do
@@ -63,6 +64,10 @@ describe BrowseEverything::Driver::Dropbox do
63
64
 
64
65
  before { driver.connect({ code: 'code' }, {}, connector_response_url_options) }
65
66
 
67
+ it 'accesses the download directory' do
68
+ expect(driver.config).to include('download_directory' => 'spec/fixtures/')
69
+ end
70
+
66
71
  describe '#auth_link' do
67
72
  subject { driver.auth_link(connector_response_url_options) }
68
73
 
@@ -133,6 +138,20 @@ describe BrowseEverything::Driver::Dropbox do
133
138
  expect(downloaded_file.read).not_to be_empty
134
139
  end
135
140
  end
141
+
142
+ context 'when the configuration does not specify a download directory' do
143
+ let(:provider_yml) do
144
+ {
145
+ client_id: 'client-id',
146
+ client_secret: 'client-secret'
147
+ }
148
+ end
149
+ let(:downloaded_file_path) { link_args.first }
150
+
151
+ it 'uses the "tmp" directory as the default path' do
152
+ expect(downloaded_file_path).to include '/tmp/Getting Started.pdf'
153
+ end
154
+ end
136
155
  end
137
156
  end
138
157
  end
@@ -72,6 +72,13 @@ describe BrowseEverything do
72
72
 
73
73
  it_behaves_like 'a configured BrowseEverything module'
74
74
  end
75
+
76
+ context 'without a YAML file' do
77
+ let(:config) { '' }
78
+ it 'raises a configuration error' do
79
+ expect { described_class.configure(:config).to raise_error(BrowseEverything::ConfigurationError, 'Missing browse_everything_providers.yml configuration file') }
80
+ end
81
+ end
75
82
  end
76
83
 
77
84
  context 'with an unsupported or invalid configuration' do
@@ -4,7 +4,7 @@ ENV['RAILS_ENV'] ||= 'test'
4
4
  require 'bundler/setup'
5
5
 
6
6
  def coverage_needed?
7
- ENV['COVERAGE'] || ENV['TRAVIS']
7
+ ENV['COVERAGE'] || ENV['CI']
8
8
  end
9
9
 
10
10
  if coverage_needed?
@@ -36,6 +36,7 @@ require 'capybara/rspec'
36
36
  require 'rspec'
37
37
  require 'rspec/rails'
38
38
  require 'rspec/its'
39
+ require 'webdrivers'
39
40
 
40
41
  # Requires supporting ruby files with custom matchers and macros, etc,
41
42
  # in spec/support/ and its subdirectories.
@@ -45,6 +46,12 @@ require 'webmock/rspec'
45
46
  WebMock.disable_net_connect!(allow_localhost: true)
46
47
 
47
48
  RSpec.configure do |config|
49
+ config.before(:each, type: :feature) { WebMock.disable! }
50
+ config.after(:each, type: :feature) do
51
+ WebMock.enable!
52
+ WebMock.disable_net_connect!(allow_localhost: true)
53
+ end
54
+
48
55
  config.expect_with :rspec do |c|
49
56
  c.syntax = %i[should expect]
50
57
  end
@@ -4,11 +4,6 @@ require 'selenium-webdriver'
4
4
 
5
5
  # Temporary pin until chromedriver-helper patched to deal with change in chromedriver versioning
6
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
7
  Capybara.register_driver :selenium_chrome_headless_sandboxless do |app|
13
8
  browser_options = ::Selenium::WebDriver::Chrome::Options.new
14
9
  browser_options.args << '--headless'
@@ -1,2 +1,9 @@
1
1
  gem 'jquery-rails'
2
2
  gem 'puma-rails'
3
+
4
+ if ENV['TEST_BOOTSTRAP'] == "3"
5
+ gem "bootstrap-sass"
6
+ else
7
+ # bootstrap 4
8
+ gem "bootstrap"
9
+ end
@@ -17,7 +17,13 @@ class TestAppGenerator < Rails::Generators::Base
17
17
  copy_file File.expand_path('app/assets/stylesheets/application.css', ENV['RAILS_ROOT']), 'app/assets/stylesheets/application.css.scss'
18
18
  remove_file 'app/assets/stylesheets/application.css'
19
19
  insert_into_file 'app/assets/stylesheets/application.css.scss', after: '*/' do
20
- %(\n\n@import "browse_everything")
20
+ if ENV['TEST_BOOTSTRAP'] == "3"
21
+ # bootstrap 3 from bootstrap-sass gem
22
+ %(\n\n@import "bootstrap-sprockets";\n@import "bootstrap";\n@import "browse_everything/browse_everything_bootstrap3";)
23
+ else
24
+ # bootstrap4 from bootstrap gem
25
+ %(\n\n@import "bootstrap";\n@import "browse_everything/browse_everything_bootstrap4";)
26
+ end
21
27
  end
22
28
  end
23
29
 
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: 1.0.0.rc1
4
+ version: 1.1.0
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-11-06 00:00:00.000000000 Z
16
+ date: 2020-10-23 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: addressable
@@ -43,20 +43,6 @@ dependencies:
43
43
  - - ">="
44
44
  - !ruby/object:Gem::Version
45
45
  version: '0'
46
- - !ruby/object:Gem::Dependency
47
- name: bootstrap-sass
48
- requirement: !ruby/object:Gem::Requirement
49
- requirements:
50
- - - "~>"
51
- - !ruby/object:Gem::Version
52
- version: '3.2'
53
- type: :runtime
54
- prerelease: false
55
- version_requirements: !ruby/object:Gem::Requirement
56
- requirements:
57
- - - "~>"
58
- - !ruby/object:Gem::Version
59
- version: '3.2'
60
46
  - !ruby/object:Gem::Dependency
61
47
  name: dropbox_api
62
48
  requirement: !ruby/object:Gem::Requirement
@@ -71,20 +57,6 @@ dependencies:
71
57
  - - ">="
72
58
  - !ruby/object:Gem::Version
73
59
  version: 0.1.10
74
- - !ruby/object:Gem::Dependency
75
- name: font-awesome-rails
76
- requirement: !ruby/object:Gem::Requirement
77
- requirements:
78
- - - ">="
79
- - !ruby/object:Gem::Version
80
- version: '0'
81
- type: :runtime
82
- prerelease: false
83
- version_requirements: !ruby/object:Gem::Requirement
84
- requirements:
85
- - - ">="
86
- - !ruby/object:Gem::Version
87
- version: '0'
88
60
  - !ruby/object:Gem::Dependency
89
61
  name: google-api-client
90
62
  requirement: !ruby/object:Gem::Requirement
@@ -103,30 +75,42 @@ dependencies:
103
75
  name: google_drive
104
76
  requirement: !ruby/object:Gem::Requirement
105
77
  requirements:
106
- - - "~>"
78
+ - - ">="
107
79
  - !ruby/object:Gem::Version
108
80
  version: '2.1'
81
+ - - "<"
82
+ - !ruby/object:Gem::Version
83
+ version: '4'
109
84
  type: :runtime
110
85
  prerelease: false
111
86
  version_requirements: !ruby/object:Gem::Requirement
112
87
  requirements:
113
- - - "~>"
88
+ - - ">="
114
89
  - !ruby/object:Gem::Version
115
90
  version: '2.1'
91
+ - - "<"
92
+ - !ruby/object:Gem::Version
93
+ version: '4'
116
94
  - !ruby/object:Gem::Dependency
117
95
  name: googleauth
118
96
  requirement: !ruby/object:Gem::Requirement
119
97
  requirements:
120
- - - '='
98
+ - - ">="
121
99
  - !ruby/object:Gem::Version
122
100
  version: 0.6.6
101
+ - - "<"
102
+ - !ruby/object:Gem::Version
103
+ version: '1.0'
123
104
  type: :runtime
124
105
  prerelease: false
125
106
  version_requirements: !ruby/object:Gem::Requirement
126
107
  requirements:
127
- - - '='
108
+ - - ">="
128
109
  - !ruby/object:Gem::Version
129
110
  version: 0.6.6
111
+ - - "<"
112
+ - !ruby/object:Gem::Version
113
+ version: '1.0'
130
114
  - !ruby/object:Gem::Dependency
131
115
  name: rails
132
116
  requirement: !ruby/object:Gem::Requirement
@@ -134,6 +118,9 @@ dependencies:
134
118
  - - ">="
135
119
  - !ruby/object:Gem::Version
136
120
  version: '4.2'
121
+ - - "<"
122
+ - !ruby/object:Gem::Version
123
+ version: '6.0'
137
124
  type: :runtime
138
125
  prerelease: false
139
126
  version_requirements: !ruby/object:Gem::Requirement
@@ -141,22 +128,11 @@ dependencies:
141
128
  - - ">="
142
129
  - !ruby/object:Gem::Version
143
130
  version: '4.2'
144
- - !ruby/object:Gem::Dependency
145
- name: ruby-box
146
- requirement: !ruby/object:Gem::Requirement
147
- requirements:
148
- - - ">="
149
- - !ruby/object:Gem::Version
150
- version: '0'
151
- type: :runtime
152
- prerelease: false
153
- version_requirements: !ruby/object:Gem::Requirement
154
- requirements:
155
- - - ">="
131
+ - - "<"
156
132
  - !ruby/object:Gem::Version
157
- version: '0'
133
+ version: '6.0'
158
134
  - !ruby/object:Gem::Dependency
159
- name: sass-rails
135
+ name: ruby-box
160
136
  requirement: !ruby/object:Gem::Requirement
161
137
  requirements:
162
138
  - - ">="
@@ -184,19 +160,19 @@ dependencies:
184
160
  - !ruby/object:Gem::Version
185
161
  version: '0.8'
186
162
  - !ruby/object:Gem::Dependency
187
- name: thor
163
+ name: sprockets
188
164
  requirement: !ruby/object:Gem::Requirement
189
165
  requirements:
190
166
  - - "~>"
191
167
  - !ruby/object:Gem::Version
192
- version: '0.19'
168
+ version: '3.7'
193
169
  type: :runtime
194
170
  prerelease: false
195
171
  version_requirements: !ruby/object:Gem::Requirement
196
172
  requirements:
197
173
  - - "~>"
198
174
  - !ruby/object:Gem::Version
199
- version: '0.19'
175
+ version: '3.7'
200
176
  - !ruby/object:Gem::Dependency
201
177
  name: typhoeus
202
178
  requirement: !ruby/object:Gem::Requirement
@@ -229,14 +205,14 @@ dependencies:
229
205
  name: bundler
230
206
  requirement: !ruby/object:Gem::Requirement
231
207
  requirements:
232
- - - "~>"
208
+ - - ">="
233
209
  - !ruby/object:Gem::Version
234
210
  version: '1.3'
235
211
  type: :development
236
212
  prerelease: false
237
213
  version_requirements: !ruby/object:Gem::Requirement
238
214
  requirements:
239
- - - "~>"
215
+ - - ">="
240
216
  - !ruby/object:Gem::Version
241
217
  version: '1.3'
242
218
  - !ruby/object:Gem::Dependency
@@ -253,20 +229,6 @@ dependencies:
253
229
  - - ">="
254
230
  - !ruby/object:Gem::Version
255
231
  version: '0'
256
- - !ruby/object:Gem::Dependency
257
- name: chromedriver-helper
258
- requirement: !ruby/object:Gem::Requirement
259
- requirements:
260
- - - '='
261
- - !ruby/object:Gem::Version
262
- version: 1.2.0
263
- type: :development
264
- prerelease: false
265
- version_requirements: !ruby/object:Gem::Requirement
266
- requirements:
267
- - - '='
268
- - !ruby/object:Gem::Version
269
- version: 1.2.0
270
232
  - !ruby/object:Gem::Dependency
271
233
  name: coveralls
272
234
  requirement: !ruby/object:Gem::Requirement
@@ -407,6 +369,20 @@ dependencies:
407
369
  - - ">="
408
370
  - !ruby/object:Gem::Version
409
371
  version: '0'
372
+ - !ruby/object:Gem::Dependency
373
+ name: rspec_junit_formatter
374
+ requirement: !ruby/object:Gem::Requirement
375
+ requirements:
376
+ - - ">="
377
+ - !ruby/object:Gem::Version
378
+ version: '0'
379
+ type: :development
380
+ prerelease: false
381
+ version_requirements: !ruby/object:Gem::Requirement
382
+ requirements:
383
+ - - ">="
384
+ - !ruby/object:Gem::Version
385
+ version: '0'
410
386
  - !ruby/object:Gem::Dependency
411
387
  name: rubocop-rspec
412
388
  requirement: !ruby/object:Gem::Requirement
@@ -463,6 +439,20 @@ dependencies:
463
439
  - - ">="
464
440
  - !ruby/object:Gem::Version
465
441
  version: '0'
442
+ - !ruby/object:Gem::Dependency
443
+ name: webdrivers
444
+ requirement: !ruby/object:Gem::Requirement
445
+ requirements:
446
+ - - ">="
447
+ - !ruby/object:Gem::Version
448
+ version: '0'
449
+ type: :development
450
+ prerelease: false
451
+ version_requirements: !ruby/object:Gem::Requirement
452
+ requirements:
453
+ - - ">="
454
+ - !ruby/object:Gem::Version
455
+ version: '0'
466
456
  - !ruby/object:Gem::Dependency
467
457
  name: webmock
468
458
  requirement: !ruby/object:Gem::Requirement
@@ -489,12 +479,12 @@ executables: []
489
479
  extensions: []
490
480
  extra_rdoc_files: []
491
481
  files:
482
+ - ".circleci/config.yml"
492
483
  - ".engine_cart.yml"
493
484
  - ".gitignore"
494
485
  - ".rspec"
495
486
  - ".rubocop.yml"
496
487
  - ".rubocop_todo.yml"
497
- - ".travis.yml"
498
488
  - CODE_OF_CONDUCT.md
499
489
  - CONTRIBUTING.md
500
490
  - Gemfile
@@ -504,13 +494,14 @@ files:
504
494
  - Rakefile
505
495
  - SUPPORT.md
506
496
  - app/assets/javascripts/browse_everything.js
507
- - app/assets/javascripts/browse_everything/behavior.js.coffee
497
+ - app/assets/javascripts/browse_everything/behavior.js
508
498
  - app/assets/stylesheets/browse_everything.scss
509
499
  - app/assets/stylesheets/browse_everything/_browse_everything.scss
500
+ - app/assets/stylesheets/browse_everything/_browse_everything_bootstrap3.scss
501
+ - app/assets/stylesheets/browse_everything/_browse_everything_bootstrap4.scss
510
502
  - app/assets/stylesheets/jquery.treetable.theme.browse.css
511
503
  - app/controllers/browse_everything_controller.rb
512
504
  - app/helpers/browse_everything_helper.rb
513
- - app/helpers/font_awesome_version_helper.rb
514
505
  - app/services/browse_everything_session.rb
515
506
  - app/services/browse_everything_session/provider_session.rb
516
507
  - app/services/browser_factory.rb
@@ -524,6 +515,7 @@ files:
524
515
  - browse-everything.gemspec
525
516
  - config/locales/en_browse_everything.yml
526
517
  - config/routes.rb
518
+ - karma.conf.js
527
519
  - lib/browse-everything.rb
528
520
  - lib/browse_everything.rb
529
521
  - lib/browse_everything/auth/google/credentials.rb
@@ -540,10 +532,8 @@ files:
540
532
  - lib/browse_everything/file_entry.rb
541
533
  - lib/browse_everything/retriever.rb
542
534
  - lib/browse_everything/version.rb
543
- - lib/generators/browse_everything/assets_generator.rb
544
535
  - lib/generators/browse_everything/config_generator.rb
545
536
  - lib/generators/browse_everything/install_generator.rb
546
- - lib/generators/browse_everything/templates/browse_everything.scss
547
537
  - lib/generators/browse_everything/templates/browse_everything_providers.yml.example
548
538
  - spec/controllers/browse_everything_controller_spec.rb
549
539
  - spec/features/select_files_spec.rb
@@ -557,9 +547,8 @@ files:
557
547
  - spec/helper/browse_everything_controller_helper_spec.rb
558
548
  - spec/javascripts/behavior_spec.js
559
549
  - spec/javascripts/helpers/jasmine-jquery.js
560
- - spec/javascripts/jasmine_spec.rb
561
- - spec/javascripts/support/jasmine.yml
562
- - spec/javascripts/support/jasmine_helper.rb
550
+ - spec/javascripts/helpers/jquery.js
551
+ - spec/javascripts/karma_spec.rb
563
552
  - spec/lib/browse_everything/auth/google/credentials_spec.rb
564
553
  - spec/lib/browse_everything/browse_everything_helper_spec.rb
565
554
  - spec/lib/browse_everything/browser_spec.rb
@@ -604,12 +593,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
604
593
  version: '0'
605
594
  required_rubygems_version: !ruby/object:Gem::Requirement
606
595
  requirements:
607
- - - ">"
596
+ - - ">="
608
597
  - !ruby/object:Gem::Version
609
- version: 1.3.1
598
+ version: '0'
610
599
  requirements: []
611
- rubyforge_project:
612
- rubygems_version: 2.6.14.1
600
+ rubygems_version: 3.1.2
613
601
  signing_key:
614
602
  specification_version: 4
615
603
  summary: AJAX/Rails engine file browser for cloud storage services
@@ -626,9 +614,8 @@ test_files:
626
614
  - spec/helper/browse_everything_controller_helper_spec.rb
627
615
  - spec/javascripts/behavior_spec.js
628
616
  - spec/javascripts/helpers/jasmine-jquery.js
629
- - spec/javascripts/jasmine_spec.rb
630
- - spec/javascripts/support/jasmine.yml
631
- - spec/javascripts/support/jasmine_helper.rb
617
+ - spec/javascripts/helpers/jquery.js
618
+ - spec/javascripts/karma_spec.rb
632
619
  - spec/lib/browse_everything/auth/google/credentials_spec.rb
633
620
  - spec/lib/browse_everything/browse_everything_helper_spec.rb
634
621
  - spec/lib/browse_everything/browser_spec.rb