solidus_auth_devise 2.2.0 → 2.5.2

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 (116) hide show
  1. checksums.yaml +4 -4
  2. data/.gem_release.yml +3 -8
  3. data/.github/stale.yml +17 -0
  4. data/.gitignore +12 -8
  5. data/.rubocop.yml +2 -0
  6. data/CHANGELOG.md +350 -163
  7. data/Gemfile +20 -22
  8. data/{LICENSE.md → LICENSE} +2 -2
  9. data/README.md +4 -28
  10. data/Rakefile +2 -0
  11. data/app/mailers/spree/user_mailer.rb +4 -2
  12. data/app/models/spree/user.rb +21 -19
  13. data/app/overrides/spree/admin/users/edit/_add_reset_password_form.html.erb.deface +20 -0
  14. data/bin/console +17 -0
  15. data/bin/rails +12 -4
  16. data/bin/setup +8 -0
  17. data/config/initializers/devise.rb +11 -3
  18. data/config/initializers/warden.rb +4 -2
  19. data/config/locales/en.yml +3 -1
  20. data/config/locales/it.yml +4 -4
  21. data/config/routes.rb +5 -11
  22. data/db/default/users.rb +10 -8
  23. data/db/migrate/20101026184949_create_users.rb +9 -7
  24. data/db/migrate/20101026184950_rename_columns_for_devise.rb +3 -0
  25. data/db/migrate/20101214150824_convert_user_remember_field.rb +2 -0
  26. data/db/migrate/20120203010234_add_reset_password_sent_at_to_spree_users.rb +2 -0
  27. data/db/migrate/20120605211305_make_users_email_index_unique.rb +4 -2
  28. data/db/migrate/20140904000425_add_deleted_at_to_users.rb +2 -0
  29. data/db/migrate/20141002154641_add_confirmable_to_users.rb +2 -0
  30. data/db/migrate/20190125170630_add_reset_password_token_index_to_spree_users.rb +4 -2
  31. data/db/migrate/20200417153503_add_unconfirmed_email_to_spree_users.rb +7 -0
  32. data/db/seeds.rb +2 -0
  33. data/lib/controllers/backend/spree/admin/user_passwords_controller.rb +5 -3
  34. data/lib/controllers/backend/spree/admin/user_sessions_controller.rb +11 -8
  35. data/lib/controllers/frontend/spree/user_confirmations_controller.rb +2 -0
  36. data/lib/controllers/frontend/spree/user_passwords_controller.rb +4 -1
  37. data/lib/controllers/frontend/spree/user_registrations_controller.rb +4 -0
  38. data/lib/controllers/frontend/spree/user_sessions_controller.rb +2 -0
  39. data/lib/controllers/frontend/spree/users_controller.rb +17 -14
  40. data/lib/decorators/backend/controllers/spree/admin/base_controller_decorator.rb +20 -0
  41. data/lib/decorators/backend/controllers/spree/admin/orders/customer_details_controller_decorator.rb +22 -0
  42. data/lib/{controllers/frontend → decorators/frontend/controllers}/spree/checkout_controller_decorator.rb +29 -19
  43. data/lib/generators/solidus/auth/install/install_generator.rb +16 -4
  44. data/lib/generators/solidus/auth/install/templates/config/initializers/devise.rb +2 -0
  45. data/lib/solidus/auth.rb +2 -0
  46. data/lib/solidus_auth_devise.rb +12 -12
  47. data/lib/spree/auth/devise.rb +2 -7
  48. data/lib/spree/auth/engine.rb +51 -36
  49. data/lib/spree/auth/version.rb +1 -1
  50. data/{app/models → lib}/spree/auth_configuration.rb +2 -0
  51. data/lib/spree/authentication_helpers.rb +5 -11
  52. data/lib/tasks/auth.rake +3 -1
  53. data/lib/views/backend/spree/admin/shared/_navigation_footer.html.erb +3 -3
  54. data/lib/views/backend/spree/admin/user_passwords/edit.html.erb +4 -4
  55. data/lib/views/backend/spree/admin/user_passwords/new.html.erb +5 -7
  56. data/lib/views/backend/spree/admin/user_sessions/authorization_failure.html.erb +1 -1
  57. data/lib/views/backend/spree/admin/user_sessions/new.html.erb +9 -9
  58. data/lib/views/backend/spree/layouts/admin/_login_nav.html.erb +4 -4
  59. data/lib/views/frontend/spree/checkout/registration.html.erb +4 -4
  60. data/lib/views/frontend/spree/shared/_login.html.erb +4 -4
  61. data/lib/views/frontend/spree/shared/_login_bar_items.html.erb +3 -3
  62. data/lib/views/frontend/spree/shared/_user_form.html.erb +3 -3
  63. data/lib/views/frontend/spree/user_passwords/edit.html.erb +4 -4
  64. data/lib/views/frontend/spree/user_passwords/new.html.erb +5 -7
  65. data/lib/views/frontend/spree/user_registrations/new.html.erb +3 -3
  66. data/lib/views/frontend/spree/user_sessions/authorization_failure.html.erb +1 -1
  67. data/lib/views/frontend/spree/user_sessions/new.html.erb +2 -2
  68. data/lib/views/frontend/spree/users/edit.html.erb +2 -2
  69. data/lib/views/frontend/spree/users/show.html.erb +13 -13
  70. data/solidus_auth_devise.gemspec +40 -35
  71. data/spec/controllers/spree/admin/base_controller_spec.rb +53 -0
  72. data/spec/controllers/spree/admin/user_passwords_controller_spec.rb +2 -0
  73. data/spec/controllers/spree/base_controller_spec.rb +53 -0
  74. data/spec/controllers/spree/checkout_controller_spec.rb +5 -9
  75. data/spec/controllers/spree/products_controller_spec.rb +5 -8
  76. data/spec/controllers/spree/user_passwords_controller_spec.rb +4 -3
  77. data/spec/controllers/spree/user_registrations_controller_spec.rb +3 -2
  78. data/spec/controllers/spree/user_sessions_controller_spec.rb +14 -0
  79. data/spec/controllers/spree/users_controller_spec.rb +2 -2
  80. data/spec/factories/confirmed_user.rb +5 -3
  81. data/spec/features/account_spec.rb +4 -3
  82. data/spec/features/admin/password_reset_spec.rb +66 -10
  83. data/spec/features/admin/products_spec.rb +2 -1
  84. data/spec/features/admin/sign_in_spec.rb +2 -1
  85. data/spec/features/admin/sign_out_spec.rb +2 -1
  86. data/spec/features/admin_permissions_spec.rb +2 -1
  87. data/spec/features/change_email_spec.rb +3 -2
  88. data/spec/features/checkout_spec.rb +14 -37
  89. data/spec/features/confirmation_spec.rb +4 -3
  90. data/spec/features/order_spec.rb +2 -1
  91. data/spec/features/password_reset_spec.rb +23 -10
  92. data/spec/features/sign_in_spec.rb +2 -1
  93. data/spec/features/sign_out_spec.rb +4 -3
  94. data/spec/features/sign_up_spec.rb +2 -1
  95. data/spec/mailers/user_mailer_spec.rb +2 -1
  96. data/spec/models/order_spec.rb +2 -1
  97. data/spec/models/user_spec.rb +15 -9
  98. data/spec/spec_helper.rb +13 -9
  99. data/spec/support/ability.rb +3 -1
  100. data/spec/support/authentication_helpers.rb +2 -0
  101. data/spec/support/confirm_helpers.rb +21 -10
  102. data/spec/support/email.rb +2 -0
  103. data/spec/support/features/fill_addresses_fields.rb +29 -0
  104. data/spec/support/preferences.rb +10 -2
  105. data/spec/support/spree.rb +2 -0
  106. metadata +305 -212
  107. data/.travis.yml +0 -18
  108. data/app/overrides/auth_admin_login_navigation_bar.rb +0 -10
  109. data/app/overrides/auth_shared_login_bar.rb +0 -10
  110. data/lib/assets/javascripts/spree/backend/solidus_auth.js +0 -1
  111. data/lib/assets/javascripts/spree/frontend/solidus_auth.js +0 -1
  112. data/lib/assets/stylesheets/spree/backend/solidus_auth.css +0 -3
  113. data/lib/assets/stylesheets/spree/frontend/solidus_auth.css +0 -3
  114. data/lib/controllers/backend/spree/admin/admin_controller_decorator.rb +0 -11
  115. data/lib/controllers/backend/spree/admin/orders/customer_details_controller_decorator.rb +0 -15
  116. data/spec/features/admin/orders_spec.rb +0 -30
@@ -1,17 +1,15 @@
1
- <%= render partial: 'spree/shared/error_messages', locals: { target: @spree_user } %>
2
-
3
1
  <div id="forgot-password">
4
- <h6><%= I18n.t('spree.forgot_password') %></h6>
2
+ <h6><%= t('spree.forgot_password') %></h6>
5
3
 
6
- <p><%= I18n.t('spree.instructions_to_reset_password') %></p>
4
+ <p><%= t('spree.instructions_to_reset_password') %></p>
7
5
 
8
6
  <%= form_for Spree::User.new, as: :spree_user, url: spree.reset_password_path do |f| %>
9
7
  <p>
10
- <%= f.label :email, I18n.t('spree.email') %><br />
11
- <%= f.email_field :email %>
8
+ <%= f.label :email, t('spree.email') %><br />
9
+ <%= f.email_field :email, required: true %>
12
10
  </p>
13
11
  <p>
14
- <%= f.submit I18n.t('spree.reset_password'), class: 'button primary' %>
12
+ <%= f.submit t('spree.reset_password'), class: 'button primary' %>
15
13
  </p>
16
14
  <% end %>
17
15
  </div>
@@ -3,16 +3,16 @@
3
3
  <%= render 'spree/shared/error_messages', target: resource %>
4
4
 
5
5
  <div id="new-customer">
6
- <h6><%= I18n.t('spree.new_customer') %></h6>
6
+ <h6><%= t('spree.new_customer') %></h6>
7
7
 
8
8
  <div data-hook="signup">
9
9
  <%= form_for resource, as: :spree_user, url: spree.registration_path(resource) do |f| %>
10
10
  <div data-hook="signup_inside_form">
11
11
  <%= render partial: 'spree/shared/user_form', locals: { f: f } %>
12
- <p><%= f.submit I18n.t('spree.create'), class: 'button primary' %></p>
12
+ <p><%= f.submit t('spree.create'), class: 'button primary' %></p>
13
13
  </div>
14
14
  <% end %>
15
- <%= I18n.t('spree.or') %>&nbsp;<%= link_to I18n.t('spree.login_as_existing'), spree.login_path %>
15
+ <%= t('spree.or') %>&nbsp;<%= link_to t('spree.login_as_existing'), spree.login_path %>
16
16
 
17
17
  </div>
18
18
 
@@ -1,4 +1,4 @@
1
1
  <div style="height:50px; padding-top:20px;">
2
- <strong><%= I18n.t('spree.authorization_failure') %></strong>
2
+ <strong><%= t('spree.authorization_failure') %></strong>
3
3
  </div>
4
4
  <!-- Add your own custom access denied message here if you like -->
@@ -4,10 +4,10 @@
4
4
 
5
5
  <% @body_id = 'login' %>
6
6
  <div id="existing-customer">
7
- <h6><%= I18n.t('spree.login_as_existing') %></h6>
7
+ <h6><%= t('spree.login_as_existing') %></h6>
8
8
  <div data-hook="login">
9
9
  <%= render partial: 'spree/shared/login' %>
10
- <%= I18n.t('spree.or') %>&nbsp;<%= link_to I18n.t('spree.create_a_new_account'), spree.signup_path %> | <%= link_to I18n.t('spree.forgot_password'), spree.recover_password_path %>
10
+ <%= t('spree.or') %>&nbsp;<%= link_to t('spree.create_a_new_account'), spree.signup_path %> | <%= link_to t('spree.forgot_password'), spree.recover_password_path %>
11
11
  </div>
12
12
  </div>
13
13
  <div data-hook="login_extras"></div>
@@ -1,13 +1,13 @@
1
1
  <%= render partial: 'spree/shared/error_messages', locals: { target: @user } %>
2
2
 
3
3
  <div id="edit-account">
4
- <h1><%= I18n.t('spree.editing_user') %></h1>
4
+ <h1><%= t('spree.editing_user') %></h1>
5
5
 
6
6
  <div data-hook="account_edit">
7
7
  <%= form_for Spree::User.new, as: @user, url: spree.user_path(@user), method: :put do |f| %>
8
8
  <%= render partial: 'spree/shared/user_form', locals: { f: f } %>
9
9
  <p>
10
- <%= f.submit I18n.t('spree.update'), class: 'button primary' %>
10
+ <%= f.submit t('spree.update'), class: 'button primary' %>
11
11
  </p>
12
12
  <% end %>
13
13
  </div>
@@ -2,24 +2,24 @@
2
2
 
3
3
  <div data-hook="account_summary" class="account-summary">
4
4
  <dl id="user-info">
5
- <dt><%= I18n.t('spree.email') %></dt>
6
- <dd><%= @user.email %> (<%= link_to I18n.t('spree.edit'), spree.edit_account_path %>)</dd>
5
+ <dt><%= t('spree.email') %></dt>
6
+ <dd><%= @user.email %> (<%= link_to t('spree.edit'), spree.edit_account_path %>)</dd>
7
7
  </dl>
8
8
  </div>
9
9
 
10
10
  <div data-hook="account_my_orders" class="account-my-orders">
11
11
 
12
- <h3><%= I18n.t('spree.my_orders') %></h3>
12
+ <h3><%= t('spree.my_orders') %></h3>
13
13
  <% if @orders.present? %>
14
14
  <table class="order-summary">
15
15
  <thead>
16
16
  <tr>
17
- <th class="order-number"><%= I18n.t(:number, scope: 'activerecord.attributes.spree/order') %></th>
18
- <th class="order-date"><%= I18n.t('spree.date') %></th>
19
- <th class="order-status"><%= I18n.t('spree.status') %></th>
20
- <th class="order-payment-state"><%= I18n.t('spree.payment_state') %></th>
21
- <th class="order-shipment-state"><%= I18n.t('spree.shipment_state') %></th>
22
- <th class="order-total"><%= I18n.t('spree.total') %></th>
17
+ <th class="order-number"><%= t(:number, scope: 'activerecord.attributes.spree/order') %></th>
18
+ <th class="order-date"><%= t('spree.date') %></th>
19
+ <th class="order-status"><%= t('spree.status') %></th>
20
+ <th class="order-payment-state"><%= t('spree.payment_state') %></th>
21
+ <th class="order-shipment-state"><%= t('spree.shipment_state') %></th>
22
+ <th class="order-total"><%= t('spree.total') %></th>
23
23
  </tr>
24
24
  </thead>
25
25
  <tbody>
@@ -27,16 +27,16 @@
27
27
  <tr class="<%= cycle('even', 'odd') %>">
28
28
  <td class="order-number"><%= link_to order.number, order_url(order) %></td>
29
29
  <td class="order-date"><%= l order.completed_at.to_date %></td>
30
- <td class="order-status"><%= I18n.t("spree.order_state.#{order.state}").titleize %></td>
31
- <td class="order-payment-state"><%= I18n.t("spree.payment_states.#{order.payment_state}").titleize if order.payment_state %></td>
32
- <td class="order-shipment-state"><%= I18n.t("spree.shipment_states.#{order.shipment_state}").titleize if order.shipment_state %></td>
30
+ <td class="order-status"><%= t("spree.order_state.#{order.state}").titleize %></td>
31
+ <td class="order-payment-state"><%= t("spree.payment_states.#{order.payment_state}").titleize if order.payment_state %></td>
32
+ <td class="order-shipment-state"><%= t("spree.shipment_states.#{order.shipment_state}").titleize if order.shipment_state %></td>
33
33
  <td class="order-total"><%= order.display_total %></td>
34
34
  </tr>
35
35
  <% end %>
36
36
  </tbody>
37
37
  </table>
38
38
  <% else %>
39
- <p><%= I18n.t('spree.you_have_no_orders_yet') %></p>
39
+ <p><%= t('spree.you_have_no_orders_yet') %></p>
40
40
  <% end %>
41
41
  <br />
42
42
 
@@ -1,45 +1,50 @@
1
- # encoding: UTF-8
1
+ # frozen_string_literal: true
2
2
 
3
- $:.unshift File.expand_path('lib', __dir__)
3
+ $:.push File.expand_path('lib', __dir__)
4
4
  require 'spree/auth/version'
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.platform = Gem::Platform::RUBY
8
- s.name = "solidus_auth_devise"
9
- s.version = Spree::Auth::VERSION
10
- s.summary = "Provides authentication and authorization services for use with Solidus by using Devise and CanCan."
11
- s.description = s.summary
12
-
13
- s.author = 'Solidus Team'
14
- s.email = 'contact@solidus.io'
15
-
16
- s.required_ruby_version = ">= 2.1"
17
- s.license = %q{BSD-3}
18
-
19
- s.files = `git ls-files`.split("\n")
20
- s.test_files = `git ls-files -- spec/*`.split("\n")
21
- s.require_path = "lib"
22
- s.requirements << "none"
23
-
24
- solidus_version = [">= 1.2.0", "< 3"]
25
-
26
- s.add_dependency "solidus_core", solidus_version
27
- s.add_dependency "solidus_support", ">= 0.1.3"
7
+ s.platform = Gem::Platform::RUBY
8
+ s.name = "solidus_auth_devise"
9
+ s.version = Spree::Auth::VERSION
10
+ s.summary = "Provides authentication and authorization services for use with Solidus by using Devise and CanCan."
11
+ s.license = 'BSD-3-Clause'
12
+
13
+ s.author = 'Solidus Team'
14
+ s.email = 'contact@solidus.io'
15
+ s.homepage = 'https://github.com/solidusio/solidus_auth_devise'
16
+
17
+ if s.respond_to?(:metadata)
18
+ s.metadata["homepage_uri"] = s.homepage if s.homepage
19
+ s.metadata["source_code_uri"] = s.homepage if s.homepage
20
+ end
21
+
22
+ s.required_ruby_version = '~> 2.4'
23
+
24
+ s.files = Dir.chdir(File.expand_path(__dir__)) do
25
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
26
+ end
27
+ s.test_files = Dir['spec/**/*']
28
+ s.bindir = "exe"
29
+ s.executables = s.files.grep(%r{^exe/}) { |f| File.basename(f) }
30
+ s.require_paths = ["lib"]
31
+
32
+ solidus_version = [">= 2.6", "< 3"]
33
+
34
+ s.post_install_message = "
35
+ NOTE: Rails 6 has removed secret_token in favor of secret_key_base, which was deprecated in
36
+ Rails 5.2. solidus_auth_devise will keep using secret_token, when present, as the pepper. If
37
+ secret_token is undefined or not available, secret_key_base will be used instead.
38
+ ".strip.gsub(/ +/, ' ')
39
+
40
+ s.add_dependency "deface", "~> 1.0"
28
41
  s.add_dependency "devise", '~> 4.1'
29
42
  s.add_dependency "devise-encryptable", "0.2.0"
43
+ s.add_dependency "paranoia", "~> 2.4"
44
+ s.add_dependency "solidus_core", solidus_version
45
+ s.add_dependency "solidus_support", "~> 0.5"
30
46
 
31
- s.add_development_dependency "capybara", "~> 2.14"
32
- s.add_development_dependency "capybara-screenshot"
33
- s.add_development_dependency "coffee-rails"
34
- s.add_development_dependency "database_cleaner", "~> 1.6"
35
- s.add_development_dependency "ffaker"
36
- s.add_development_dependency "gem-release", "~> 2.0"
37
- s.add_development_dependency "poltergeist", "~> 1.5"
38
- s.add_development_dependency "rspec-rails", "~> 3.3"
39
- s.add_development_dependency "sass-rails"
40
- s.add_development_dependency "shoulda-matchers", "~> 3.1"
41
- s.add_development_dependency "simplecov", "~> 0.14"
42
47
  s.add_development_dependency "solidus_backend", solidus_version
48
+ s.add_development_dependency "solidus_dev_support", ">= 0.3.0"
43
49
  s.add_development_dependency "solidus_frontend", solidus_version
44
- s.add_development_dependency "sqlite3", "~> 1.3.6"
45
50
  end
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ RSpec.describe Spree::Admin::BaseController, type: :controller do
6
+ describe '#unauthorized_redirect' do
7
+ controller(described_class) do
8
+ def index; authorize!(:read, :something); end
9
+ end
10
+
11
+ before do
12
+ stub_spree_preferences(Spree::Config, redirect_back_on_unauthorized: true)
13
+ end
14
+
15
+ context "when user is logged in" do
16
+ before { sign_in(create(:user)) }
17
+
18
+ context "when http_referrer is not present" do
19
+ it "redirects to unauthorized path" do
20
+ get :index
21
+ expect(response).to redirect_to(spree.admin_unauthorized_path)
22
+ end
23
+ end
24
+
25
+ context "when http_referrer is present" do
26
+ before { request.env['HTTP_REFERER'] = '/redirect' }
27
+
28
+ it "redirects back" do
29
+ get :index
30
+ expect(response).to redirect_to('/redirect')
31
+ end
32
+ end
33
+ end
34
+
35
+ context "when user is not logged in" do
36
+ context "when http_referrer is not present" do
37
+ it "redirects to login path" do
38
+ get :index
39
+ expect(response).to redirect_to(spree.admin_login_path)
40
+ end
41
+ end
42
+
43
+ context "when http_referrer is present" do
44
+ before { request.env['HTTP_REFERER'] = '/redirect' }
45
+
46
+ it "redirects back" do
47
+ get :index
48
+ expect(response).to redirect_to('/redirect')
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  RSpec.describe Spree::Admin::UserPasswordsController, type: :controller do
2
4
  before { @request.env['devise.mapping'] = Devise.mappings[:spree_user] }
3
5
 
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ RSpec.describe Spree::BaseController, type: :controller do
6
+ describe '#unauthorized_redirect' do
7
+ controller(described_class) do
8
+ def index; authorize!(:read, :something); end
9
+ end
10
+
11
+ before do
12
+ stub_spree_preferences(Spree::Config, redirect_back_on_unauthorized: true)
13
+ end
14
+
15
+ context "when user is logged in" do
16
+ before { sign_in(create(:user)) }
17
+
18
+ context "when http_referrer is not present" do
19
+ it "redirects to unauthorized path" do
20
+ get :index
21
+ expect(response).to redirect_to(spree.unauthorized_path)
22
+ end
23
+ end
24
+
25
+ context "when http_referrer is present" do
26
+ before { request.env['HTTP_REFERER'] = '/redirect' }
27
+
28
+ it "redirects back" do
29
+ get :index
30
+ expect(response).to redirect_to('/redirect')
31
+ end
32
+ end
33
+ end
34
+
35
+ context "when user is not logged in" do
36
+ context "when http_referrer is not present" do
37
+ it "redirects to login path" do
38
+ get :index
39
+ expect(response).to redirect_to(spree.login_path)
40
+ end
41
+ end
42
+
43
+ context "when http_referrer is present" do
44
+ before { request.env['HTTP_REFERER'] = '/redirect' }
45
+
46
+ it "redirects back" do
47
+ get :index
48
+ expect(response).to redirect_to('/redirect')
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -1,5 +1,6 @@
1
- RSpec.describe Spree::CheckoutController, type: :controller do
1
+ # frozen_string_literal: true
2
2
 
3
+ RSpec.describe Spree::CheckoutController, type: :controller do
3
4
  let(:order) { create(:order_with_line_items, email: nil, user: nil, guest_token: token) }
4
5
  let(:user) { build(:user, spree_api_key: 'fake') }
5
6
  let(:token) { 'some_token' }
@@ -39,11 +40,7 @@ RSpec.describe Spree::CheckoutController, type: :controller do
39
40
 
40
41
  context 'when guest checkout not allowed' do
41
42
  before do
42
- Spree::Config.set(allow_guest_checkout: false)
43
- end
44
-
45
- after do
46
- Spree::Config.set(allow_guest_checkout: true)
43
+ stub_spree_preferences(allow_guest_checkout: false)
47
44
  end
48
45
 
49
46
  it 'redirects to registration step' do
@@ -56,7 +53,7 @@ RSpec.describe Spree::CheckoutController, type: :controller do
56
53
 
57
54
  context 'when registration step disabled' do
58
55
  before do
59
- Spree::Auth::Config.set(registration_step: false)
56
+ stub_spree_preferences(Spree::Auth::Config, registration_step: false)
60
57
  end
61
58
 
62
59
  context 'when authenticated as registered' do
@@ -80,8 +77,7 @@ RSpec.describe Spree::CheckoutController, type: :controller do
80
77
  context '#update' do
81
78
  context 'when in the confirm state' do
82
79
  before do
83
- order.update_column(:email, 'spree@example.com')
84
- order.update_column(:state, 'confirm')
80
+ order.update(email: 'spree@example.com', state: 'confirm')
85
81
 
86
82
  # So that the order can transition to complete successfully
87
83
  allow(order).to receive(:payment_required?) { false }
@@ -1,5 +1,6 @@
1
- RSpec.describe Spree::ProductsController, type: :controller do
1
+ # frozen_string_literal: true
2
2
 
3
+ RSpec.describe Spree::ProductsController, type: :controller do
3
4
  let!(:product) { create(:product, available_on: 1.year.from_now) }
4
5
  let!(:user) { build(:user, spree_api_key: 'fake') }
5
6
 
@@ -15,13 +16,9 @@ RSpec.describe Spree::ProductsController, type: :controller do
15
16
  allow(controller).to receive(:before_save_new_order)
16
17
  allow(controller).to receive(:spree_current_user) { user }
17
18
  allow(user).to receive(:has_spree_role?) { false }
18
- if SolidusSupport.solidus_gem_version < Gem::Version.new('2.5.x')
19
+
20
+ expect {
19
21
  get :show, params: { id: product.to_param }
20
- expect(response.status).to eq(404)
21
- else
22
- expect {
23
- get :show, params: { id: product.to_param }
24
- }.to raise_error(ActiveRecord::RecordNotFound)
25
- end
22
+ }.to raise_error(ActiveRecord::RecordNotFound)
26
23
  end
27
24
  end
@@ -1,5 +1,6 @@
1
- RSpec.describe Spree::UserPasswordsController, type: :controller do
1
+ # frozen_string_literal: true
2
2
 
3
+ RSpec.describe Spree::UserPasswordsController, type: :controller do
3
4
  let(:token) { 'some_token' }
4
5
 
5
6
  before { @request.env['devise.mapping'] = Devise.mappings[:spree_user] }
@@ -16,7 +17,7 @@ RSpec.describe Spree::UserPasswordsController, type: :controller do
16
17
  it 'flashes an error' do
17
18
  get :edit
18
19
  expect(flash[:alert]).to include(
19
- "You can't access this page without coming from a password reset " +
20
+ "You can't access this page without coming from a password reset " \
20
21
  'email'
21
22
  )
22
23
  end
@@ -34,7 +35,7 @@ RSpec.describe Spree::UserPasswordsController, type: :controller do
34
35
  context 'when updating password with blank password' do
35
36
  it 'shows error flash message, sets spree_user with token and re-displays password edit form' do
36
37
  put :update, params: { spree_user: { password: '', password_confirmation: '', reset_password_token: token } }
37
- expect(assigns(:spree_user).kind_of?(Spree::User)).to eq true
38
+ expect(assigns(:spree_user).is_a?(Spree::User)).to eq true
38
39
  expect(assigns(:spree_user).reset_password_token).to eq token
39
40
  expect(flash[:error]).to eq I18n.t(:cannot_be_blank, scope: [:devise, :user_passwords, :spree_user])
40
41
  expect(response).to render_template :edit
@@ -1,5 +1,6 @@
1
- RSpec.describe Spree::UserRegistrationsController, type: :controller do
1
+ # frozen_string_literal: true
2
2
 
3
+ RSpec.describe Spree::UserRegistrationsController, type: :controller do
3
4
  before { @request.env['devise.mapping'] = Devise.mappings[:spree_user] }
4
5
 
5
6
  context '#create' do
@@ -56,7 +57,7 @@ RSpec.describe Spree::UserRegistrationsController, type: :controller do
56
57
  it 'assigns orders with the correct token and no user present' do
57
58
  order = create(:order, guest_token: 'ABC', user_id: nil, created_by_id: nil)
58
59
  subject
59
- user = Spree::User.find_by_email('foobar@example.com')
60
+ user = Spree::User.find_by(email: 'foobar@example.com')
60
61
 
61
62
  order.reload
62
63
  expect(order.user_id).to eq user.id
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  RSpec.describe Spree::UserSessionsController, type: :controller do
2
4
  let(:user) { create(:user) }
3
5
 
@@ -110,4 +112,16 @@ RSpec.describe Spree::UserSessionsController, type: :controller do
110
112
  end
111
113
  end
112
114
  end
115
+
116
+ context "#destroy" do
117
+ subject do
118
+ delete(:destroy)
119
+ end
120
+
121
+ it "redirects to default after signing out" do
122
+ subject
123
+ expect(controller.spree_current_user).to be_nil
124
+ expect(response).to redirect_to spree.root_path
125
+ end
126
+ end
113
127
  end