spree_auth_devise 4.0.1 → 4.1.0.rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of spree_auth_devise might be problematic. Click here for more details.

Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +41 -0
  3. data/.gitignore +1 -0
  4. data/.travis.yml +3 -16
  5. data/Appraisals +3 -14
  6. data/Gemfile +1 -1
  7. data/app/controllers/spree/user_confirmations_controller.rb +2 -0
  8. data/app/controllers/spree/user_passwords_controller.rb +2 -0
  9. data/app/controllers/spree/user_registrations_controller.rb +9 -0
  10. data/app/controllers/spree/user_sessions_controller.rb +23 -1
  11. data/app/views/spree/user_passwords/edit.html.erb +20 -17
  12. data/app/views/spree/user_passwords/new.html.erb +18 -15
  13. data/app/views/spree/user_registrations/new.html.erb +12 -17
  14. data/app/views/spree/user_sessions/new.html.erb +11 -12
  15. data/config/routes.rb +0 -1
  16. data/gemfiles/{spree_3_5.gemfile → spree_4_1.gemfile} +1 -1
  17. data/lib/controllers/frontend/spree/users_controller.rb +2 -7
  18. data/lib/generators/spree/auth/install/install_generator.rb +0 -4
  19. data/lib/spree/testing_support/auth_helpers.rb +36 -0
  20. data/lib/spree/testing_support/checkout_helpers.rb +24 -0
  21. data/spec/controllers/spree/admin/orders_controller_spec.rb +1 -1
  22. data/spec/controllers/spree/admin/user_sessions_controller_spec.rb +1 -1
  23. data/spec/controllers/spree/checkout_controller_spec.rb +12 -13
  24. data/spec/controllers/spree/products_controller_spec.rb +1 -1
  25. data/spec/controllers/spree/user_passwords_controller_spec.rb +4 -4
  26. data/spec/controllers/spree/user_registrations_controller_spec.rb +7 -7
  27. data/spec/controllers/spree/user_sessions_controller_spec.rb +17 -17
  28. data/spec/controllers/spree/users_controller_spec.rb +4 -4
  29. data/spec/features/account_spec.rb +10 -8
  30. data/spec/features/admin/password_reset_spec.rb +2 -4
  31. data/spec/features/admin/sign_in_spec.rb +5 -7
  32. data/spec/features/admin/sign_out_spec.rb +1 -1
  33. data/spec/features/admin_permissions_spec.rb +1 -1
  34. data/spec/features/change_email_spec.rb +1 -7
  35. data/spec/features/checkout_spec.rb +38 -63
  36. data/spec/features/confirmation_spec.rb +1 -3
  37. data/spec/features/order_spec.rb +9 -15
  38. data/spec/features/password_reset_spec.rb +2 -4
  39. data/spec/features/sign_in_spec.rb +7 -9
  40. data/spec/features/sign_out_spec.rb +16 -23
  41. data/spec/features/sign_up_spec.rb +4 -2
  42. data/spec/mailers/user_mailer_spec.rb +1 -1
  43. data/spec/spec_helper.rb +16 -0
  44. data/spec/support/add_to_cart.rb +11 -4
  45. data/spec/support/authentication_helpers.rb +1 -1
  46. data/spec/support/capybara.rb +15 -8
  47. data/spree_auth_devise.gemspec +13 -9
  48. metadata +100 -74
  49. data/app/overrides/auth_shared_login_bar.rb +0 -6
  50. data/app/views/spree/shared/_login.html.erb +0 -18
  51. data/app/views/spree/shared/_user_form.html.erb +0 -17
  52. data/gemfiles/spree_3_2.gemfile +0 -8
  53. data/gemfiles/spree_3_7.gemfile +0 -9
  54. data/gemfiles/spree_4_0.gemfile +0 -8
  55. data/lib/assets/javascripts/spree/backend/spree_auth.js.erb +0 -1
  56. data/lib/assets/javascripts/spree/frontend/account.js +0 -8
  57. data/lib/assets/javascripts/spree/frontend/spree_auth.js.erb +0 -2
  58. data/lib/assets/stylesheets/spree/backend/spree_auth.css.erb +0 -3
  59. data/lib/assets/stylesheets/spree/frontend/spree_auth.css.erb +0 -3
  60. data/lib/controllers/frontend/spree/store_controller_decorator.rb +0 -7
  61. data/lib/views/frontend/spree/checkout/_new_user.html.erb +0 -20
  62. data/lib/views/frontend/spree/checkout/registration.html.erb +0 -25
  63. data/lib/views/frontend/spree/shared/_link_to_account.html.erb +0 -6
  64. data/lib/views/frontend/spree/users/edit.html.erb +0 -17
  65. data/lib/views/frontend/spree/users/show.html.erb +0 -48
  66. data/spec/requests/spree/frontend/user_update_spec.rb +0 -42
@@ -1,6 +1,4 @@
1
1
  RSpec.feature 'Reset Password', type: :feature do
2
- let!(:store) { create(:store) }
3
-
4
2
  background do
5
3
  ActionMailer::Base.default_url_options[:host] = 'http://example.com'
6
4
  end
@@ -8,7 +6,7 @@ RSpec.feature 'Reset Password', type: :feature do
8
6
  scenario 'allow a user to supply an email for the password reset' do
9
7
  user = create(:user, email: 'foobar@example.com', password: 'secret', password_confirmation: 'secret')
10
8
  visit spree.login_path
11
- click_link 'Forgot Password?'
9
+ click_link 'Forgot password?'
12
10
  fill_in 'Email', with: 'foobar@example.com'
13
11
  click_button 'Reset my password'
14
12
  expect(page).to have_text 'You will receive an email with instructions'
@@ -16,7 +14,7 @@ RSpec.feature 'Reset Password', type: :feature do
16
14
 
17
15
  scenario 'shows errors if no email is supplied' do
18
16
  visit spree.login_path
19
- click_link 'Forgot Password?'
17
+ click_link 'Forgot password?'
20
18
  click_button 'Reset my password'
21
19
  expect(page).to have_text "Email can't be blank"
22
20
  end
@@ -10,23 +10,21 @@ RSpec.feature 'Sign In', type: :feature do
10
10
  end
11
11
 
12
12
  scenario 'let a user sign in successfully', js: true do
13
- fill_in 'Email', with: @user.email
14
- fill_in 'Password', with: @user.password
15
- click_button 'Login'
13
+ log_in(email: @user.email, password: @user.password)
14
+ show_user_menu
16
15
 
17
- expect(page).to have_text 'Logged in successfully'
18
16
  expect(page).not_to have_text 'Login'
19
- expect(page).to have_text 'Logout'
20
- expect(current_path).to eq '/'
17
+ expect(page).to have_text 'LOG OUT'
18
+ expect(current_path).to eq '/account'
21
19
  end
22
20
 
23
21
  scenario 'show validation erros' do
24
22
  fill_in 'Email', with: @user.email
25
23
  fill_in 'Password', with: 'wrong_password'
26
- click_button 'Login'
24
+ click_button 'Log in'
27
25
 
28
26
  expect(page).to have_text 'Invalid email or password'
29
- expect(page).to have_text 'Login'
27
+ expect(page).to have_text 'Log in'
30
28
  end
31
29
 
32
30
  scenario 'allow a user to access a restricted page after logging in' do
@@ -35,7 +33,7 @@ RSpec.feature 'Sign In', type: :feature do
35
33
 
36
34
  fill_in 'Email', with: user.email
37
35
  fill_in 'Password', with: user.password
38
- click_button 'Login'
36
+ click_button 'Log in'
39
37
 
40
38
  within '.user-menu' do
41
39
  expect(page).to have_text 'admin@person.com'
@@ -7,44 +7,37 @@ RSpec.feature 'Sign Out', type: :feature, js: true do
7
7
  end
8
8
 
9
9
  background do
10
- visit spree.login_path
11
- fill_in 'Email', with: user.email
12
- fill_in 'Password', with: user.password
13
- # Regression test for #1257
14
- check 'Remember me'
15
- click_button 'Login'
10
+ log_in(email: user.email, password: user.password)
16
11
  end
17
12
 
18
13
  scenario 'allow a signed in user to logout' do
19
- click_link 'Logout'
14
+ log_out
15
+
20
16
  visit spree.root_path
21
- expect(page).to have_text 'Login'
22
- expect(page).not_to have_text 'Logout'
17
+ show_user_menu
18
+
19
+ expect(page).to have_link 'LOG IN'
20
+ expect(page).not_to have_link 'LOG OUT'
23
21
  end
24
22
 
25
23
  describe 'before_logout' do
26
- before do
27
- create(:product, name: 'RoR Mug')
28
- create(:product, name: 'RoR Shirt')
29
- end
30
-
24
+ let!(:mug) { create(:product_in_stock, name: 'RoR Mug') }
25
+ let!(:shirt) { create(:product, name: 'RoR Shirt') }
31
26
  let!(:other_user) { create(:user) }
32
27
 
33
28
  it 'clears token cookies' do
34
- add_to_cart 'RoR Mug'
35
- expect(page).to have_text 'RoR Mug'
29
+ add_to_cart(mug) do
30
+ find('.close').click
31
+ end
36
32
 
37
- click_link 'Logout'
33
+ log_out
38
34
 
39
- click_link 'Cart'
35
+ find('#link-to-cart').click
40
36
  expect(page).to have_text Spree.t(:your_cart_is_empty)
41
37
 
42
- visit spree.login_path
43
- fill_in 'Email', with: other_user.email
44
- fill_in 'Password', with: other_user.password
45
- click_button 'Login'
38
+ log_in(email: other_user.email, password: user.password)
39
+ find('#link-to-cart').click
46
40
 
47
- click_link 'Cart'
48
41
  expect(page).to have_text Spree.t(:your_cart_is_empty)
49
42
  end
50
43
  end
@@ -6,7 +6,8 @@ RSpec.feature 'Sign Up', type: :feature do
6
6
  fill_in 'Email', with: 'email@person.com'
7
7
  fill_in 'Password', with: 'password'
8
8
  fill_in 'Password Confirmation', with: 'password'
9
- click_button 'Create'
9
+
10
+ click_button 'Sign Up'
10
11
 
11
12
  expect(page).to have_text 'You have signed up successfully.'
12
13
  expect(Spree::User.count).to eq(1)
@@ -20,7 +21,8 @@ RSpec.feature 'Sign Up', type: :feature do
20
21
  fill_in 'Email', with: 'email@person.com'
21
22
  fill_in 'Password', with: 'password'
22
23
  fill_in 'Password Confirmation', with: ''
23
- click_button 'Create'
24
+
25
+ click_button 'Sign Up'
24
26
 
25
27
  expect(page).to have_css '#errorExplanation'
26
28
  expect(Spree::User.count).to eq(0)
@@ -1,6 +1,6 @@
1
1
  RSpec.describe Spree::UserMailer, type: :mailer do
2
- let!(:store) { create(:store) }
3
2
  let(:user) { create(:user) }
3
+ let(:store) { Spree::Store.default }
4
4
 
5
5
  describe '#reset_password_instructions' do
6
6
  describe 'message contents' do
data/spec/spec_helper.rb CHANGED
@@ -8,6 +8,16 @@ require File.expand_path('../dummy/config/environment', __FILE__)
8
8
  require 'rspec/rails'
9
9
  require 'shoulda-matchers'
10
10
  require 'ffaker'
11
+ require 'pry'
12
+
13
+ require 'spree/testing_support/auth_helpers'
14
+ require 'spree/testing_support/checkout_helpers'
15
+
16
+ require 'spree/testing_support/authorization_helpers'
17
+ require 'spree/testing_support/capybara_ext'
18
+ require 'spree/testing_support/controller_requests'
19
+ require 'spree/testing_support/factories'
20
+ require 'spree/testing_support/url_helpers'
11
21
 
12
22
  RSpec.configure do |config|
13
23
  config.filter_run focus: true
@@ -27,7 +37,13 @@ RSpec.configure do |config|
27
37
  allow(RSpec::Rails::ViewRendering::EmptyTemplateHandler)
28
38
  .to receive(:call)
29
39
  .and_return(%("")) if Rails.gem_version >= Gem::Version.new('6.0.0.beta1')
40
+
41
+ create(:store)
30
42
  end
43
+
44
+ config.include Spree::TestingSupport::AuthHelpers, type: :feature
45
+ config.include Spree::TestingSupport::CheckoutHelpers, type: :feature
46
+ config.include Spree::TestingSupport::UrlHelpers
31
47
  end
32
48
 
33
49
  Dir[File.join(File.dirname(__FILE__), 'support/**/*.rb')].each { |f| require f }
@@ -1,6 +1,6 @@
1
- def add_to_cart(product_name)
2
- visit spree.root_path
3
- click_link product_name
1
+ def add_to_cart(product)
2
+ visit spree.product_path(product)
3
+
4
4
  if Spree.version.to_f > 3.6
5
5
  expect(page).to have_selector('form#add-to-cart-form')
6
6
  expect(page).to have_selector('button#add-to-cart-button')
@@ -10,6 +10,13 @@ def add_to_cart(product_name)
10
10
  end
11
11
  click_button 'Add To Cart'
12
12
  wait_for_condition do
13
- expect(page).to have_content(Spree.t(:shopping_cart))
13
+ expect(page).to have_content(Spree.t(:added_to_cart))
14
+ end
15
+
16
+ if block_given?
17
+ yield
18
+ else
19
+ click_link 'View cart'
20
+ expect(page).to have_content 'YOUR SHOPPING BAG'
14
21
  end
15
22
  end
@@ -3,7 +3,7 @@ module AuthenticationHelpers
3
3
  visit '/login'
4
4
  fill_in 'Email', with: user.email
5
5
  fill_in 'Password', with: 'secret'
6
- click_button 'Login'
6
+ click_button 'Log in'
7
7
  end
8
8
  end
9
9
 
@@ -1,16 +1,23 @@
1
1
  require 'capybara/rspec'
2
- require 'capybara/rails'
2
+ require 'capybara-screenshot'
3
3
  require 'capybara-screenshot/rspec'
4
- require 'selenium-webdriver'
5
-
6
- RSpec.configure do |_config|
7
- Capybara.save_and_open_page_path = ENV['CIRCLE_ARTIFACTS'] if ENV['CIRCLE_ARTIFACTS']
4
+ require 'capybara/rails'
5
+ require 'selenium/webdriver'
8
6
 
7
+ RSpec.configure do
9
8
  Capybara.register_driver :chrome do |app|
9
+ Selenium::WebDriver.logger.level = :error
10
+
10
11
  Capybara::Selenium::Driver.new app,
11
12
  browser: :chrome,
12
- options: Selenium::WebDriver::Chrome::Options.new(args: %w[disable-popup-blocking headless disable-gpu window-size=1920,1080])
13
+ options: Selenium::WebDriver::Chrome::Options.new(
14
+ args: %w[headless disable-gpu window-size=1920,1080 --enable-features=NetworkService,NetworkServiceInProcess --disable-features=VizDisplayCompositor],
15
+ log_level: :error
16
+ )
13
17
  end
14
-
15
18
  Capybara.javascript_driver = :chrome
16
- end
19
+
20
+ Capybara::Screenshot.register_driver(:chrome) do |driver, path|
21
+ driver.browser.save_screenshot(path)
22
+ end
23
+ end
@@ -3,11 +3,11 @@
3
3
  Gem::Specification.new do |s|
4
4
  s.platform = Gem::Platform::RUBY
5
5
  s.name = 'spree_auth_devise'
6
- s.version = '4.0.1'
6
+ s.version = '4.1.0.rc1'
7
7
  s.summary = 'Provides authentication and authorization services for use with Spree by using Devise and CanCan.'
8
8
  s.description = s.summary
9
9
 
10
- s.required_ruby_version = '>= 2.2.7'
10
+ s.required_ruby_version = '>= 2.5.0'
11
11
 
12
12
  s.author = 'Sean Schofield'
13
13
  s.email = 'sean@spreecommerce.com'
@@ -19,18 +19,19 @@ Gem::Specification.new do |s|
19
19
  s.require_path = 'lib'
20
20
  s.requirements << 'none'
21
21
 
22
+ s.add_dependency 'deface', '~> 1.0'
23
+
22
24
  s.add_dependency 'devise', '~> 4.7'
23
25
  s.add_dependency 'devise-encryptable', '0.2.0'
24
26
 
25
- spree_version = '>= 3.1.0', '< 4.1'
27
+ spree_version = '>= 4.1.0.alpha', '< 5.0'
26
28
  s.add_dependency 'spree_core', spree_version
27
29
  s.add_dependency 'spree_extension'
28
- s.add_dependency 'deface', '~> 1.0'
29
30
 
30
- s.add_development_dependency 'capybara', '~> 2.7'
31
+ s.add_development_dependency 'appraisal'
32
+ s.add_development_dependency 'capybara'
31
33
  s.add_development_dependency 'capybara-screenshot'
32
34
  s.add_development_dependency 'coffee-rails', '~> 4.2'
33
- s.add_development_dependency 'sass-rails'
34
35
  s.add_development_dependency 'database_cleaner', '~> 1.5'
35
36
  s.add_development_dependency 'email_spec', '~> 2.1'
36
37
  s.add_development_dependency 'factory_bot', '~> 4.7'
@@ -38,13 +39,16 @@ Gem::Specification.new do |s|
38
39
  s.add_development_dependency 'launchy'
39
40
  s.add_development_dependency 'mysql2'
40
41
  s.add_development_dependency 'pg'
41
- s.add_development_dependency 'selenium-webdriver'
42
42
  s.add_development_dependency 'pry'
43
- s.add_development_dependency 'rspec-rails', '~> 3.5'
43
+ s.add_development_dependency 'puma'
44
+ s.add_development_dependency 'rails-controller-testing'
45
+ s.add_development_dependency 'rspec-rails', '~> 4.0.0.beta2'
46
+ s.add_development_dependency 'sass-rails'
47
+ s.add_development_dependency 'selenium-webdriver'
44
48
  s.add_development_dependency 'shoulda-matchers', '~> 3.1'
45
49
  s.add_development_dependency 'simplecov', '~> 0.12'
46
50
  s.add_development_dependency 'spree_backend', spree_version
47
51
  s.add_development_dependency 'spree_frontend', spree_version
48
52
  s.add_development_dependency 'sqlite3'
49
- s.add_development_dependency 'appraisal'
53
+ s.add_development_dependency 'webdrivers', '~> 4.2.0'
50
54
  end