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.
- checksums.yaml +4 -4
- data/.circleci/config.yml +35 -0
- data/.gem_release.yml +5 -0
- data/.github/stale.yml +17 -0
- data/.gitignore +12 -8
- data/.rubocop.yml +2 -0
- data/CHANGELOG.md +315 -138
- data/Gemfile +21 -15
- data/{LICENSE.md → LICENSE} +2 -2
- data/README.md +47 -3
- data/Rakefile +2 -0
- data/app/mailers/spree/user_mailer.rb +4 -2
- data/app/models/spree/user.rb +25 -19
- data/app/overrides/spree/admin/users/edit/_add_reset_password_form.html.erb.deface +20 -0
- data/bin/console +17 -0
- data/bin/rails +12 -4
- data/bin/setup +8 -0
- data/config/initializers/devise.rb +11 -6
- data/config/initializers/warden.rb +4 -2
- data/config/locales/en.yml +4 -1
- data/config/locales/fr.yml +1 -1
- data/config/locales/it.yml +4 -4
- data/config/routes.rb +8 -12
- data/db/default/users.rb +10 -8
- data/db/migrate/20101026184949_create_users.rb +9 -7
- data/db/migrate/20101026184950_rename_columns_for_devise.rb +3 -1
- data/db/migrate/20101214150824_convert_user_remember_field.rb +2 -0
- data/db/migrate/20120203010234_add_reset_password_sent_at_to_spree_users.rb +2 -0
- data/db/migrate/20120605211305_make_users_email_index_unique.rb +4 -2
- data/db/migrate/20140904000425_add_deleted_at_to_users.rb +2 -0
- data/db/migrate/20141002154641_add_confirmable_to_users.rb +2 -0
- data/db/migrate/20190125170630_add_reset_password_token_index_to_spree_users.rb +34 -0
- data/db/migrate/20200417153503_add_unconfirmed_email_to_spree_users.rb +7 -0
- data/db/seeds.rb +2 -0
- data/lib/controllers/backend/spree/admin/user_passwords_controller.rb +7 -3
- data/lib/controllers/backend/spree/admin/user_sessions_controller.rb +12 -9
- data/lib/controllers/frontend/spree/user_confirmations_controller.rb +2 -0
- data/lib/controllers/frontend/spree/user_passwords_controller.rb +4 -1
- data/lib/controllers/frontend/spree/user_registrations_controller.rb +4 -0
- data/lib/controllers/frontend/spree/user_sessions_controller.rb +4 -2
- data/lib/controllers/frontend/spree/users_controller.rb +20 -15
- data/lib/decorators/backend/controllers/spree/admin/base_controller_decorator.rb +20 -0
- data/lib/decorators/backend/controllers/spree/admin/orders/customer_details_controller_decorator.rb +22 -0
- data/lib/{controllers/frontend → decorators/frontend/controllers}/spree/checkout_controller_decorator.rb +29 -19
- data/lib/generators/solidus/auth/install/install_generator.rb +16 -4
- data/lib/generators/solidus/auth/install/templates/config/initializers/devise.rb +3 -1
- data/lib/solidus/auth.rb +2 -0
- data/lib/solidus_auth_devise.rb +12 -12
- data/lib/spree/auth/devise.rb +2 -7
- data/lib/spree/auth/engine.rb +53 -38
- data/lib/spree/auth/version.rb +7 -0
- data/{app/models → lib}/spree/auth_configuration.rb +2 -0
- data/lib/spree/authentication_helpers.rb +5 -11
- data/lib/tasks/auth.rake +3 -1
- data/lib/views/backend/spree/admin/shared/_navigation_footer.html.erb +13 -6
- data/lib/views/backend/spree/admin/user_passwords/edit.html.erb +4 -4
- data/lib/views/backend/spree/admin/user_passwords/new.html.erb +5 -7
- data/lib/views/backend/spree/admin/user_sessions/authorization_failure.html.erb +1 -1
- data/lib/views/backend/spree/admin/user_sessions/new.html.erb +9 -9
- data/lib/views/backend/spree/layouts/admin/_login_nav.html.erb +4 -4
- data/lib/views/frontend/spree/checkout/registration.html.erb +4 -4
- data/lib/views/frontend/spree/shared/_login.html.erb +4 -4
- data/lib/views/frontend/spree/shared/_login_bar_items.html.erb +3 -3
- data/lib/views/frontend/spree/shared/_user_form.html.erb +3 -3
- data/lib/views/frontend/spree/user_passwords/edit.html.erb +4 -4
- data/lib/views/frontend/spree/user_passwords/new.html.erb +5 -7
- data/lib/views/frontend/spree/user_registrations/new.html.erb +3 -3
- data/lib/views/frontend/spree/user_sessions/authorization_failure.html.erb +1 -1
- data/lib/views/frontend/spree/user_sessions/new.html.erb +2 -2
- data/lib/views/frontend/spree/users/edit.html.erb +2 -2
- data/lib/views/frontend/spree/users/show.html.erb +12 -12
- data/solidus_auth_devise.gemspec +37 -29
- data/spec/controllers/spree/admin/base_controller_spec.rb +53 -0
- data/spec/controllers/spree/admin/user_passwords_controller_spec.rb +14 -0
- data/spec/controllers/spree/base_controller_spec.rb +53 -0
- data/spec/controllers/spree/checkout_controller_spec.rb +6 -10
- data/spec/controllers/spree/products_controller_spec.rb +5 -8
- data/spec/controllers/spree/user_passwords_controller_spec.rb +4 -3
- data/spec/controllers/spree/user_registrations_controller_spec.rb +3 -2
- data/spec/controllers/spree/user_sessions_controller_spec.rb +14 -0
- data/spec/controllers/spree/users_controller_spec.rb +26 -8
- data/spec/factories/confirmed_user.rb +6 -4
- data/spec/features/account_spec.rb +4 -3
- data/spec/features/admin/password_reset_spec.rb +66 -10
- data/spec/features/admin/products_spec.rb +2 -1
- data/spec/features/admin/sign_in_spec.rb +2 -1
- data/spec/features/admin/sign_out_spec.rb +2 -1
- data/spec/features/admin_permissions_spec.rb +2 -1
- data/spec/features/change_email_spec.rb +3 -2
- data/spec/features/checkout_spec.rb +14 -37
- data/spec/features/confirmation_spec.rb +6 -10
- data/spec/features/order_spec.rb +2 -1
- data/spec/features/password_reset_spec.rb +23 -10
- data/spec/features/sign_in_spec.rb +2 -1
- data/spec/features/sign_out_spec.rb +4 -3
- data/spec/features/sign_up_spec.rb +2 -1
- data/spec/mailers/user_mailer_spec.rb +2 -1
- data/spec/models/order_spec.rb +2 -1
- data/spec/models/user_spec.rb +15 -11
- data/spec/spec_helper.rb +13 -9
- data/spec/support/ability.rb +3 -1
- data/spec/support/authentication_helpers.rb +2 -0
- data/spec/support/confirm_helpers.rb +23 -10
- data/spec/support/email.rb +2 -0
- data/spec/support/features/fill_addresses_fields.rb +29 -0
- data/spec/support/preferences.rb +10 -2
- data/spec/support/spree.rb +2 -0
- metadata +309 -212
- data/.travis.yml +0 -24
- data/app/overrides/auth_admin_login_navigation_bar.rb +0 -10
- data/app/overrides/auth_shared_login_bar.rb +0 -10
- data/circle.yml +0 -6
- data/lib/assets/javascripts/spree/backend/solidus_auth.js +0 -1
- data/lib/assets/javascripts/spree/frontend/solidus_auth.js +0 -1
- data/lib/assets/stylesheets/spree/backend/solidus_auth.css +0 -3
- data/lib/assets/stylesheets/spree/frontend/solidus_auth.css +0 -3
- data/lib/controllers/backend/spree/admin/admin_controller_decorator.rb +0 -11
- data/lib/controllers/backend/spree/admin/admin_orders_controller_decorator.rb +0 -20
- data/lib/controllers/backend/spree/admin/orders/customer_details_controller_decorator.rb +0 -15
- 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,
|
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,
|
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,
|
14
|
+
<%= f.label :remember_me, I18n.t('spree.remember_me') %>
|
15
15
|
</p>
|
16
16
|
|
17
|
-
<p><%= f.submit
|
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
|
3
|
-
<li><%= link_to
|
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
|
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,
|
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,
|
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,
|
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><%=
|
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,
|
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,
|
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
|
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><%=
|
2
|
+
<h6><%= I18n.t('spree.forgot_password') %></h6>
|
5
3
|
|
6
|
-
<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,
|
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
|
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><%=
|
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
|
12
|
+
<p><%= f.submit I18n.t('spree.create'), class: 'button primary' %></p>
|
13
13
|
</div>
|
14
14
|
<% end %>
|
15
|
-
<%=
|
15
|
+
<%= I18n.t('spree.or') %> <%= link_to I18n.t('spree.login_as_existing'), spree.login_path %>
|
16
16
|
|
17
17
|
</div>
|
18
18
|
|
@@ -4,10 +4,10 @@
|
|
4
4
|
|
5
5
|
<% @body_id = 'login' %>
|
6
6
|
<div id="existing-customer">
|
7
|
-
<h6><%=
|
7
|
+
<h6><%= I18n.t('spree.login_as_existing') %></h6>
|
8
8
|
<div data-hook="login">
|
9
9
|
<%= render partial: 'spree/shared/login' %>
|
10
|
-
<%=
|
10
|
+
<%= I18n.t('spree.or') %> <%= 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><%=
|
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
|
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><%=
|
6
|
-
<dd><%= @user.email %> (<%= link_to
|
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><%=
|
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"><%=
|
19
|
-
<th class="order-status"><%=
|
20
|
-
<th class="order-payment-state"><%=
|
21
|
-
<th class="order-shipment-state"><%=
|
22
|
-
<th class="order-total"><%=
|
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"><%=
|
31
|
-
<td class="order-payment-state"><%=
|
32
|
-
<td class="order-shipment-state"><%=
|
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><%=
|
39
|
+
<p><%= I18n.t('spree.you_have_no_orders_yet') %></p>
|
40
40
|
<% end %>
|
41
41
|
<br />
|
42
42
|
|
data/solidus_auth_devise.gemspec
CHANGED
@@ -1,42 +1,50 @@
|
|
1
|
-
#
|
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
|
5
|
-
s.name
|
6
|
-
s.version
|
7
|
-
s.summary
|
8
|
-
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.license = 'BSD-3-Clause'
|
9
12
|
|
10
|
-
s.author
|
11
|
-
s.email
|
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.
|
14
|
-
|
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.
|
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
|
-
|
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
|
-
|
24
|
-
|
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
|
-
|
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
|
-
|
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
|
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.
|
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
|
93
|
+
expect(flash.notice).to eq I18n.t('spree.order_processed_successfully')
|
98
94
|
end
|
99
95
|
end
|
100
96
|
|