solidus_auth_devise 2.1.0 → 2.5.1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


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

Files changed (120) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +35 -0
  3. data/.gem_release.yml +5 -0
  4. data/.github/stale.yml +17 -0
  5. data/.gitignore +12 -8
  6. data/.rubocop.yml +2 -0
  7. data/CHANGELOG.md +315 -138
  8. data/Gemfile +21 -15
  9. data/{LICENSE.md → LICENSE} +2 -2
  10. data/README.md +47 -3
  11. data/Rakefile +2 -0
  12. data/app/mailers/spree/user_mailer.rb +4 -2
  13. data/app/models/spree/user.rb +25 -19
  14. data/app/overrides/spree/admin/users/edit/_add_reset_password_form.html.erb.deface +20 -0
  15. data/bin/console +17 -0
  16. data/bin/rails +12 -4
  17. data/bin/setup +8 -0
  18. data/config/initializers/devise.rb +11 -6
  19. data/config/initializers/warden.rb +4 -2
  20. data/config/locales/en.yml +4 -1
  21. data/config/locales/fr.yml +1 -1
  22. data/config/locales/it.yml +4 -4
  23. data/config/routes.rb +8 -12
  24. data/db/default/users.rb +10 -8
  25. data/db/migrate/20101026184949_create_users.rb +9 -7
  26. data/db/migrate/20101026184950_rename_columns_for_devise.rb +3 -1
  27. data/db/migrate/20101214150824_convert_user_remember_field.rb +2 -0
  28. data/db/migrate/20120203010234_add_reset_password_sent_at_to_spree_users.rb +2 -0
  29. data/db/migrate/20120605211305_make_users_email_index_unique.rb +4 -2
  30. data/db/migrate/20140904000425_add_deleted_at_to_users.rb +2 -0
  31. data/db/migrate/20141002154641_add_confirmable_to_users.rb +2 -0
  32. data/db/migrate/20190125170630_add_reset_password_token_index_to_spree_users.rb +34 -0
  33. data/db/migrate/20200417153503_add_unconfirmed_email_to_spree_users.rb +7 -0
  34. data/db/seeds.rb +2 -0
  35. data/lib/controllers/backend/spree/admin/user_passwords_controller.rb +7 -3
  36. data/lib/controllers/backend/spree/admin/user_sessions_controller.rb +12 -9
  37. data/lib/controllers/frontend/spree/user_confirmations_controller.rb +2 -0
  38. data/lib/controllers/frontend/spree/user_passwords_controller.rb +4 -1
  39. data/lib/controllers/frontend/spree/user_registrations_controller.rb +4 -0
  40. data/lib/controllers/frontend/spree/user_sessions_controller.rb +4 -2
  41. data/lib/controllers/frontend/spree/users_controller.rb +20 -15
  42. data/lib/decorators/backend/controllers/spree/admin/base_controller_decorator.rb +20 -0
  43. data/lib/decorators/backend/controllers/spree/admin/orders/customer_details_controller_decorator.rb +22 -0
  44. data/lib/{controllers/frontend → decorators/frontend/controllers}/spree/checkout_controller_decorator.rb +29 -19
  45. data/lib/generators/solidus/auth/install/install_generator.rb +16 -4
  46. data/lib/generators/solidus/auth/install/templates/config/initializers/devise.rb +3 -1
  47. data/lib/solidus/auth.rb +2 -0
  48. data/lib/solidus_auth_devise.rb +12 -12
  49. data/lib/spree/auth/devise.rb +2 -7
  50. data/lib/spree/auth/engine.rb +53 -38
  51. data/lib/spree/auth/version.rb +7 -0
  52. data/{app/models → lib}/spree/auth_configuration.rb +2 -0
  53. data/lib/spree/authentication_helpers.rb +5 -11
  54. data/lib/tasks/auth.rake +3 -1
  55. data/lib/views/backend/spree/admin/shared/_navigation_footer.html.erb +13 -6
  56. data/lib/views/backend/spree/admin/user_passwords/edit.html.erb +4 -4
  57. data/lib/views/backend/spree/admin/user_passwords/new.html.erb +5 -7
  58. data/lib/views/backend/spree/admin/user_sessions/authorization_failure.html.erb +1 -1
  59. data/lib/views/backend/spree/admin/user_sessions/new.html.erb +9 -9
  60. data/lib/views/backend/spree/layouts/admin/_login_nav.html.erb +4 -4
  61. data/lib/views/frontend/spree/checkout/registration.html.erb +4 -4
  62. data/lib/views/frontend/spree/shared/_login.html.erb +4 -4
  63. data/lib/views/frontend/spree/shared/_login_bar_items.html.erb +3 -3
  64. data/lib/views/frontend/spree/shared/_user_form.html.erb +3 -3
  65. data/lib/views/frontend/spree/user_passwords/edit.html.erb +4 -4
  66. data/lib/views/frontend/spree/user_passwords/new.html.erb +5 -7
  67. data/lib/views/frontend/spree/user_registrations/new.html.erb +3 -3
  68. data/lib/views/frontend/spree/user_sessions/authorization_failure.html.erb +1 -1
  69. data/lib/views/frontend/spree/user_sessions/new.html.erb +2 -2
  70. data/lib/views/frontend/spree/users/edit.html.erb +2 -2
  71. data/lib/views/frontend/spree/users/show.html.erb +12 -12
  72. data/solidus_auth_devise.gemspec +37 -29
  73. data/spec/controllers/spree/admin/base_controller_spec.rb +53 -0
  74. data/spec/controllers/spree/admin/user_passwords_controller_spec.rb +14 -0
  75. data/spec/controllers/spree/base_controller_spec.rb +53 -0
  76. data/spec/controllers/spree/checkout_controller_spec.rb +6 -10
  77. data/spec/controllers/spree/products_controller_spec.rb +5 -8
  78. data/spec/controllers/spree/user_passwords_controller_spec.rb +4 -3
  79. data/spec/controllers/spree/user_registrations_controller_spec.rb +3 -2
  80. data/spec/controllers/spree/user_sessions_controller_spec.rb +14 -0
  81. data/spec/controllers/spree/users_controller_spec.rb +26 -8
  82. data/spec/factories/confirmed_user.rb +6 -4
  83. data/spec/features/account_spec.rb +4 -3
  84. data/spec/features/admin/password_reset_spec.rb +66 -10
  85. data/spec/features/admin/products_spec.rb +2 -1
  86. data/spec/features/admin/sign_in_spec.rb +2 -1
  87. data/spec/features/admin/sign_out_spec.rb +2 -1
  88. data/spec/features/admin_permissions_spec.rb +2 -1
  89. data/spec/features/change_email_spec.rb +3 -2
  90. data/spec/features/checkout_spec.rb +14 -37
  91. data/spec/features/confirmation_spec.rb +6 -10
  92. data/spec/features/order_spec.rb +2 -1
  93. data/spec/features/password_reset_spec.rb +23 -10
  94. data/spec/features/sign_in_spec.rb +2 -1
  95. data/spec/features/sign_out_spec.rb +4 -3
  96. data/spec/features/sign_up_spec.rb +2 -1
  97. data/spec/mailers/user_mailer_spec.rb +2 -1
  98. data/spec/models/order_spec.rb +2 -1
  99. data/spec/models/user_spec.rb +15 -11
  100. data/spec/spec_helper.rb +13 -9
  101. data/spec/support/ability.rb +3 -1
  102. data/spec/support/authentication_helpers.rb +2 -0
  103. data/spec/support/confirm_helpers.rb +23 -10
  104. data/spec/support/email.rb +2 -0
  105. data/spec/support/features/fill_addresses_fields.rb +29 -0
  106. data/spec/support/preferences.rb +10 -2
  107. data/spec/support/spree.rb +2 -0
  108. metadata +309 -212
  109. data/.travis.yml +0 -24
  110. data/app/overrides/auth_admin_login_navigation_bar.rb +0 -10
  111. data/app/overrides/auth_shared_login_bar.rb +0 -10
  112. data/circle.yml +0 -6
  113. data/lib/assets/javascripts/spree/backend/solidus_auth.js +0 -1
  114. data/lib/assets/javascripts/spree/frontend/solidus_auth.js +0 -1
  115. data/lib/assets/stylesheets/spree/backend/solidus_auth.css +0 -3
  116. data/lib/assets/stylesheets/spree/frontend/solidus_auth.css +0 -3
  117. data/lib/controllers/backend/spree/admin/admin_controller_decorator.rb +0 -11
  118. data/lib/controllers/backend/spree/admin/admin_orders_controller_decorator.rb +0 -20
  119. data/lib/controllers/backend/spree/admin/orders/customer_details_controller_decorator.rb +0 -15
  120. data/spec/features/admin/orders_spec.rb +0 -30
@@ -1,18 +1,18 @@
1
1
  <%= form_for Spree::User.new, as: :spree_user, url: spree.create_new_session_path do |f| %>
2
2
  <div id="password-credentials">
3
3
  <p>
4
- <%= f.label :email, Spree.t(:email) %><br />
4
+ <%= f.label :email, I18n.t('spree.email') %><br />
5
5
  <%= f.email_field :email, class: 'title', tabindex: 1, autofocus: true %>
6
6
  </p>
7
7
  <p>
8
- <%= f.label :password, Spree.t(:password) %><br />
8
+ <%= f.label :password, I18n.t('spree.password') %><br />
9
9
  <%= f.password_field :password, class: 'title', tabindex: 2 %>
10
10
  </p>
11
11
  </div>
12
12
  <p>
13
13
  <%= f.check_box :remember_me, tabindex: 3 %>
14
- <%= f.label :remember_me, Spree.t(:remember_me) %>
14
+ <%= f.label :remember_me, I18n.t('spree.remember_me') %>
15
15
  </p>
16
16
 
17
- <p><%= f.submit Spree.t(:login), class: 'button primary', tabindex: 4 %></p>
17
+ <p><%= f.submit I18n.t('spree.login'), class: 'button primary', tabindex: 4 %></p>
18
18
  <% end %>
@@ -1,6 +1,6 @@
1
1
  <% if spree_current_user %>
2
- <li><%= link_to Spree.t(:my_account), spree.account_path %></li>
3
- <li><%= link_to Spree.t(:logout), spree.logout_path %></li>
2
+ <li><%= link_to I18n.t('spree.my_account'), spree.account_path %></li>
3
+ <li><%= link_to I18n.t('spree.logout'), spree.logout_path, method: Devise.sign_out_via %></li>
4
4
  <% else %>
5
- <li id="link-to-login"><%= link_to Spree.t(:login), spree.login_path %></li>
5
+ <li id="link-to-login"><%= link_to I18n.t('spree.login'), spree.login_path %></li>
6
6
  <% end %>
@@ -1,15 +1,15 @@
1
1
  <p>
2
- <%= f.label :email, Spree.t(:email) %><br />
2
+ <%= f.label :email, I18n.t('spree.email') %><br />
3
3
  <%= f.email_field :email, class: 'title' %>
4
4
  </p>
5
5
  <div id="password-credentials">
6
6
  <p>
7
- <%= f.label :password, Spree.t(:password) %><br />
7
+ <%= f.label :password, I18n.t('spree.password') %><br />
8
8
  <%= f.password_field :password, class: 'title' %>
9
9
  </p>
10
10
 
11
11
  <p>
12
- <%= f.label :password_confirmation, Spree.t(:confirm_password) %><br />
12
+ <%= f.label :password_confirmation, I18n.t('spree.confirm_password') %><br />
13
13
  <%= f.password_field :password_confirmation, class: 'title' %>
14
14
  </p>
15
15
  </div>
@@ -1,17 +1,17 @@
1
1
  <%= render partial: 'spree/shared/error_messages', locals: { target: @spree_user } %>
2
2
  <div id="change-password">
3
- <h6><%= Spree.t(:change_my_password) %></h6>
3
+ <h6><%= I18n.t('spree.change_my_password') %></h6>
4
4
 
5
5
  <%= form_for @spree_user, as: :spree_user, url: spree.update_password_path, method: :put do |f| %>
6
6
  <p>
7
- <%= f.label :password, Spree.t(:password) %><br />
7
+ <%= f.label :password, I18n.t('spree.password') %><br />
8
8
  <%= f.password_field :password %><br />
9
9
  </p>
10
10
  <p>
11
- <%= f.label :password_confirmation, Spree.t(:confirm_password) %><br />
11
+ <%= f.label :password_confirmation, I18n.t('spree.confirm_password') %><br />
12
12
  <%= f.password_field :password_confirmation %><br />
13
13
  </p>
14
14
  <%= f.hidden_field :reset_password_token %>
15
- <%= f.submit Spree.t(:update), class: 'button primary' %>
15
+ <%= f.submit I18n.t('spree.update'), class: 'button primary' %>
16
16
  <% end %>
17
17
  </div>
@@ -1,17 +1,15 @@
1
- <%= render partial: 'spree/shared/error_messages', locals: { target: @spree_user } %>
2
-
3
1
  <div id="forgot-password">
4
- <h6><%= Spree.t(:forgot_password) %></h6>
2
+ <h6><%= I18n.t('spree.forgot_password') %></h6>
5
3
 
6
- <p><%= Spree.t(:instructions_to_reset_password) %></p>
4
+ <p><%= I18n.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, Spree.t(:email) %><br />
11
- <%= f.email_field :email %>
8
+ <%= f.label :email, I18n.t('spree.email') %><br />
9
+ <%= f.email_field :email, required: true %>
12
10
  </p>
13
11
  <p>
14
- <%= f.submit Spree.t(:reset_password), class: 'button primary' %>
12
+ <%= f.submit I18n.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><%= Spree.t(:new_customer) %></h6>
6
+ <h6><%= I18n.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 Spree.t(:create), class: 'button primary' %></p>
12
+ <p><%= f.submit I18n.t('spree.create'), class: 'button primary' %></p>
13
13
  </div>
14
14
  <% end %>
15
- <%= Spree.t(:or) %>&nbsp;<%= link_to Spree.t(:login_as_existing), spree.login_path %>
15
+ <%= I18n.t('spree.or') %>&nbsp;<%= link_to I18n.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><%= Spree.t(:authorization_failure) %></strong>
2
+ <strong><%= I18n.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><%= Spree.t(:login_as_existing) %></h6>
7
+ <h6><%= I18n.t('spree.login_as_existing') %></h6>
8
8
  <div data-hook="login">
9
9
  <%= render partial: 'spree/shared/login' %>
10
- <%= Spree.t(:or) %>&nbsp;<%= link_to Spree.t(:create_a_new_account), spree.signup_path %> | <%= link_to Spree.t(:forgot_password), spree.recover_password_path %>
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 %>
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><%= Spree.t(:editing_user) %></h1>
4
+ <h1><%= I18n.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 Spree.t(:update), class: 'button primary' %>
10
+ <%= f.submit I18n.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><%= Spree.t(:email) %></dt>
6
- <dd><%= @user.email %> (<%= link_to Spree.t(:edit), spree.edit_account_path %>)</dd>
5
+ <dt><%= I18n.t('spree.email') %></dt>
6
+ <dd><%= @user.email %> (<%= link_to I18n.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><%= Spree.t(:my_orders) %></h3>
12
+ <h3><%= I18n.t('spree.my_orders') %></h3>
13
13
  <% if @orders.present? %>
14
14
  <table class="order-summary">
15
15
  <thead>
16
16
  <tr>
17
17
  <th class="order-number"><%= I18n.t(:number, scope: 'activerecord.attributes.spree/order') %></th>
18
- <th class="order-date"><%= Spree.t(:date) %></th>
19
- <th class="order-status"><%= Spree.t(:status) %></th>
20
- <th class="order-payment-state"><%= Spree.t(:payment_state) %></th>
21
- <th class="order-shipment-state"><%= Spree.t(:shipment_state) %></th>
22
- <th class="order-total"><%= Spree.t(:total) %></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>
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"><%= Spree.t("order_state.#{order.state}").titleize %></td>
31
- <td class="order-payment-state"><%= Spree.t("payment_states.#{order.payment_state}").titleize if order.payment_state %></td>
32
- <td class="order-shipment-state"><%= Spree.t("shipment_states.#{order.shipment_state}").titleize if order.shipment_state %></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>
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><%= Spree.t(:you_have_no_orders_yet) %></p>
39
+ <p><%= I18n.t('spree.you_have_no_orders_yet') %></p>
40
40
  <% end %>
41
41
  <br />
42
42
 
@@ -1,42 +1,50 @@
1
- # encoding: UTF-8
1
+ # frozen_string_literal: true
2
+
3
+ $:.push File.expand_path('lib', __dir__)
4
+ require 'spree/auth/version'
2
5
 
3
6
  Gem::Specification.new do |s|
4
- s.platform = Gem::Platform::RUBY
5
- s.name = "solidus_auth_devise"
6
- s.version = "2.1.0"
7
- s.summary = "Provides authentication and authorization services for use with Solidus by using Devise and CanCan."
8
- s.description = s.summary
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'
9
12
 
10
- s.author = 'Solidus Team'
11
- s.email = 'contact@solidus.io'
13
+ s.author = 'Solidus Team'
14
+ s.email = 'contact@solidus.io'
15
+ s.homepage = 'https://github.com/solidusio/solidus_auth_devise'
12
16
 
13
- s.required_ruby_version = ">= 2.1"
14
- s.license = %q{BSD-3}
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
15
21
 
16
- s.files = `git ls-files`.split("\n")
17
- s.test_files = `git ls-files -- spec/*`.split("\n")
18
- s.require_path = "lib"
19
- s.requirements << "none"
22
+ s.required_ruby_version = '~> 2.4'
20
23
 
21
- solidus_version = [">= 1.2.0", "< 3"]
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"]
22
31
 
23
- s.add_dependency "solidus_core", solidus_version
24
- s.add_dependency "solidus_support", ">= 0.1.3"
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"
25
41
  s.add_dependency "devise", '~> 4.1'
26
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"
27
46
 
28
- s.add_development_dependency "capybara", "~> 2.14"
29
- s.add_development_dependency "capybara-screenshot"
30
- s.add_development_dependency "coffee-rails"
31
- s.add_development_dependency "database_cleaner", "~> 1.6"
32
- s.add_development_dependency "factory_bot", "~> 4.4"
33
- s.add_development_dependency "ffaker"
34
- s.add_development_dependency "poltergeist", "~> 1.5"
35
- s.add_development_dependency "rspec-rails", "~> 3.3"
36
- s.add_development_dependency "sass-rails"
37
- s.add_development_dependency "shoulda-matchers", "~> 3.1"
38
- s.add_development_dependency "simplecov", "~> 0.14"
39
47
  s.add_development_dependency "solidus_backend", solidus_version
48
+ s.add_development_dependency "solidus_dev_support", ">= 0.3.0"
40
49
  s.add_development_dependency "solidus_frontend", solidus_version
41
- s.add_development_dependency "sqlite3"
42
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
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe Spree::Admin::UserPasswordsController, type: :controller do
4
+ before { @request.env['devise.mapping'] = Devise.mappings[:spree_user] }
5
+
6
+ describe '#create' do
7
+ it 'responds with success' do
8
+ post :create, params: { spree_user: { email: 'admin@example.com' } }
9
+
10
+ expect(assigns[:spree_user].email).to eq('admin@example.com')
11
+ expect(response.code).to eq('200')
12
+ end
13
+ end
14
+ end
@@ -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 }
@@ -94,7 +90,7 @@ RSpec.describe Spree::CheckoutController, type: :controller do
94
90
  request.cookie_jar.signed[:guest_token] = 'ABC'
95
91
  post :update, params: { state: 'confirm' }
96
92
  expect(response).to redirect_to spree.token_order_path(order, 'ABC')
97
- expect(flash.notice).to eq Spree.t(:order_processed_successfully)
93
+ expect(flash.notice).to eq I18n.t('spree.order_processed_successfully')
98
94
  end
99
95
  end
100
96