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.
- checksums.yaml +4 -4
- data/.gem_release.yml +3 -8
- data/.github/stale.yml +17 -0
- data/.gitignore +12 -8
- data/.rubocop.yml +2 -0
- data/CHANGELOG.md +350 -163
- data/Gemfile +20 -22
- data/{LICENSE.md → LICENSE} +2 -2
- data/README.md +4 -28
- data/Rakefile +2 -0
- data/app/mailers/spree/user_mailer.rb +4 -2
- data/app/models/spree/user.rb +21 -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 -3
- data/config/initializers/warden.rb +4 -2
- data/config/locales/en.yml +3 -1
- data/config/locales/it.yml +4 -4
- data/config/routes.rb +5 -11
- 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 -0
- 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 +4 -2
- 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 +5 -3
- data/lib/controllers/backend/spree/admin/user_sessions_controller.rb +11 -8
- 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 +2 -0
- data/lib/controllers/frontend/spree/users_controller.rb +17 -14
- 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 +2 -0
- 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 +51 -36
- data/lib/spree/auth/version.rb +1 -1
- 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 +3 -3
- 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 +13 -13
- data/solidus_auth_devise.gemspec +40 -35
- data/spec/controllers/spree/admin/base_controller_spec.rb +53 -0
- data/spec/controllers/spree/admin/user_passwords_controller_spec.rb +2 -0
- data/spec/controllers/spree/base_controller_spec.rb +53 -0
- data/spec/controllers/spree/checkout_controller_spec.rb +5 -9
- 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 +2 -2
- data/spec/factories/confirmed_user.rb +5 -3
- 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 +4 -3
- 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 -9
- 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 +21 -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 +305 -212
- data/.travis.yml +0 -18
- data/app/overrides/auth_admin_login_navigation_bar.rb +0 -10
- data/app/overrides/auth_shared_login_bar.rb +0 -10
- 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/orders/customer_details_controller_decorator.rb +0 -15
- 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><%=
|
|
2
|
+
<h6><%= t('spree.forgot_password') %></h6>
|
|
5
3
|
|
|
6
|
-
<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,
|
|
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
|
|
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><%=
|
|
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
|
|
12
|
+
<p><%= f.submit t('spree.create'), class: 'button primary' %></p>
|
|
13
13
|
</div>
|
|
14
14
|
<% end %>
|
|
15
|
-
<%=
|
|
15
|
+
<%= t('spree.or') %> <%= link_to 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><%= t('spree.login_as_existing') %></h6>
|
|
8
8
|
<div data-hook="login">
|
|
9
9
|
<%= render partial: 'spree/shared/login' %>
|
|
10
|
-
<%=
|
|
10
|
+
<%= t('spree.or') %> <%= 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><%=
|
|
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
|
|
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><%=
|
|
6
|
-
<dd><%= @user.email %> (<%= link_to
|
|
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><%=
|
|
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"><%=
|
|
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"><%=
|
|
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"><%=
|
|
31
|
-
<td class="order-payment-state"><%=
|
|
32
|
-
<td class="order-shipment-state"><%=
|
|
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><%=
|
|
39
|
+
<p><%= t('spree.you_have_no_orders_yet') %></p>
|
|
40
40
|
<% end %>
|
|
41
41
|
<br />
|
|
42
42
|
|
data/solidus_auth_devise.gemspec
CHANGED
|
@@ -1,45 +1,50 @@
|
|
|
1
|
-
#
|
|
1
|
+
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
$:.
|
|
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
|
|
8
|
-
s.name
|
|
9
|
-
s.version
|
|
10
|
-
s.summary
|
|
11
|
-
s.
|
|
12
|
-
|
|
13
|
-
s.author
|
|
14
|
-
s.email
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
s.
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
s.
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
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'
|
|
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
|
|
@@ -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 }
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
|
|
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
|
-
|
|
19
|
+
|
|
20
|
+
expect {
|
|
19
21
|
get :show, params: { id: product.to_param }
|
|
20
|
-
|
|
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
|
-
|
|
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).
|
|
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
|
-
|
|
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.
|
|
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
|