browse-everything 1.0.0.rc1 → 1.1.0

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