solidus_auth_devise 2.1.0 → 2.5.1

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 (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