spree_auth_devise 4.4.2 → 4.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +14 -73
  3. data/Gemfile +8 -1
  4. data/README.md +5 -11
  5. data/config/initializers/devise.rb +1 -1
  6. data/config/routes.rb +47 -45
  7. data/lib/controllers/backend/spree/admin/user_passwords_controller.rb +1 -1
  8. data/lib/controllers/backend/spree/{admin → auth/admin}/base_controller_decorator.rb +2 -2
  9. data/lib/controllers/backend/spree/{admin → auth/admin}/orders/customer_details_controller_decorator.rb +2 -2
  10. data/lib/controllers/backend/spree/{admin → auth/admin}/orders_controller_decorator.rb +2 -2
  11. data/lib/controllers/backend/spree/auth/admin/resource_controller_decorator.rb +6 -0
  12. data/lib/controllers/frontend/spree/{checkout_controller_decorator.rb → auth/checkout_controller_decorator.rb} +4 -4
  13. data/lib/controllers/frontend/spree/user_passwords_controller.rb +2 -2
  14. data/lib/controllers/frontend/spree/user_registrations_controller.rb +5 -3
  15. data/lib/controllers/frontend/spree/user_sessions_controller.rb +2 -2
  16. data/lib/controllers/frontend/spree/users_controller.rb +2 -2
  17. data/lib/mailers/spree/user_mailer.rb +38 -0
  18. data/lib/spree/auth/configuration.rb +33 -0
  19. data/lib/spree/auth/engine.rb +14 -3
  20. data/lib/spree/auth/version.rb +1 -1
  21. data/lib/spree/authentication_helpers.rb +6 -6
  22. data/lib/spree/testing_support/auth_helpers.rb +8 -0
  23. data/lib/views/backend/spree/admin/user_passwords/edit.html.erb +17 -15
  24. data/lib/views/backend/spree/admin/user_passwords/new.html.erb +13 -13
  25. data/lib/views/backend/spree/admin/user_sessions/authorization_failure.html.erb +1 -1
  26. data/lib/views/backend/spree/admin/user_sessions/new.html.erb +8 -9
  27. data/lib/views/backend/spree/layouts/login.html.erb +1 -1
  28. data/lib/views/frontend/spree/user_registrations/new.html.erb +1 -1
  29. data/spec/controllers/spree/api/v2/storefront/passwords_controller_spec.rb +2 -2
  30. data/spec/controllers/spree/checkout_controller_spec.rb +34 -2
  31. data/spec/controllers/spree/products_controller_spec.rb +1 -0
  32. data/spec/controllers/spree/user_registrations_controller_spec.rb +44 -0
  33. data/spec/controllers/spree/user_sessions_controller_spec.rb +18 -0
  34. data/spec/controllers/spree/users_controller_spec.rb +39 -5
  35. data/spec/features/account_spec.rb +1 -0
  36. data/spec/features/admin/sign_in_spec.rb +20 -1
  37. data/spec/features/checkout_spec.rb +5 -4
  38. data/spec/features/confirmation_spec.rb +1 -1
  39. data/spec/features/sign_in_spec.rb +2 -2
  40. data/spec/mailers/user_mailer_spec.rb +3 -3
  41. data/spec/models/user_spec.rb +3 -3
  42. data/spec/support/configuration_helpers.rb +1 -1
  43. data/spec/support/confirm_helpers.rb +3 -1
  44. data/spree_auth_devise.gemspec +1 -1
  45. metadata +18 -18
  46. data/app/mailers/spree/user_mailer.rb +0 -23
  47. data/app/models/spree/auth_configuration.rb +0 -8
  48. data/lib/controllers/backend/spree/admin/resource_controller_decorator.rb +0 -6
  49. /data/{app/views → lib/views/emails}/spree/user_mailer/confirmation_instructions.html.erb +0 -0
  50. /data/{app/views → lib/views/emails}/spree/user_mailer/confirmation_instructions.text.erb +0 -0
  51. /data/{app/views → lib/views/emails}/spree/user_mailer/reset_password_instructions.html.erb +0 -0
  52. /data/{app/views → lib/views/emails}/spree/user_mailer/reset_password_instructions.text.erb +0 -0
@@ -1,16 +1,18 @@
1
- <%= render partial: 'spree/admin/shared/error_messages', locals: { target: @spree_user } %>
2
-
3
- <h2><%= Spree.t(:change_my_password) %></h2>
4
-
5
- <%= form_for @spree_user, as: :spree_user, url: spree.admin_update_password_path, method: :put do |f| %>
6
- <div class="form-group">
7
- <%= f.label :password, Spree.t(:password) %>
8
- <%= f.password_field :password, class: 'form-control', required: true %>
1
+ <div id="forgot-password" class="card mt-5 shadow-sm">
2
+ <div class="card-body">
3
+ <%= render partial: 'spree/admin/shared/error_messages', locals: { target: @spree_user } %>
4
+ <h5 class="card-title"><%= Spree.t(:change_my_password) %></h5>
5
+ <%= form_for @spree_user, as: :spree_user, url: spree.admin_update_password_path, method: :put do |f| %>
6
+ <div class="form-group">
7
+ <%= f.label :password, Spree.t(:password) %>
8
+ <%= f.password_field :password, class: 'form-control', required: true %>
9
+ </div>
10
+ <div class="form-group">
11
+ <%= f.label :password_confirmation, Spree.t(:confirm_password) %>
12
+ <%= f.password_field :password_confirmation, class: 'form-control', required: true %>
13
+ </div>
14
+ <%= f.hidden_field :reset_password_token %>
15
+ <%= f.submit Spree.t(:update), class: 'btn btn-primary btn-block' %>
16
+ <% end %>
9
17
  </div>
10
- <div class="form-group">
11
- <%= f.label :password_confirmation, Spree.t(:confirm_password) %>
12
- <%= f.password_field :password_confirmation, class: 'form-control', required: true %>
13
- </div>
14
- <%= f.hidden_field :reset_password_token %>
15
- <%= f.submit Spree.t(:update), class: 'btn btn-primary btn-block' %>
16
- <% end %>
18
+ </div>
@@ -1,15 +1,15 @@
1
- <%= render partial: 'spree/admin/shared/error_messages', locals: { target: @spree_user } %>
1
+ <div id="forgot-password" class="card mt-5 shadow-sm">
2
+ <div class="card-body">
3
+ <%= render partial: 'spree/admin/shared/error_messages', locals: { target: @spree_user } %>
2
4
 
3
- <div id="forgot-password" class="col-lg-6">
4
- <h1><%= Spree.t(:forgot_password) %></h1>
5
-
6
- <p><%= Spree.t(:instructions_to_reset_password) %></p>
7
-
8
- <%= form_for Spree.user_class.new, :as => :spree_user, :url => spree.admin_reset_password_path, data: { turbo: false } do |f| %>
9
- <div class="form-group">
10
- <%= f.label :email, Spree.t(:email) %>
11
- <%= f.email_field :email, class: 'form-control', required: true %>
12
- </div>
13
- <%= f.submit Spree.t(:reset_password), class: 'btn btn-primary' %>
14
- <% end %>
5
+ <h5 class="card-title"><%= Spree.t(:forgot_password) %></h5>
6
+ <p><%= Spree.t(:instructions_to_reset_password) %></p>
7
+ <%= form_for Spree.user_class.new, :as => :spree_user, :url => spree.admin_reset_password_path, data: { turbo: false } do |f| %>
8
+ <div class="form-group">
9
+ <%= f.label :email, Spree.t(:email) %>
10
+ <%= f.email_field :email, class: 'form-control', required: true %>
11
+ </div>
12
+ <%= f.submit Spree.t(:reset_password), class: 'btn btn-primary' %>
13
+ <% end %>
14
+ </div>
15
15
  </div>
@@ -1,4 +1,4 @@
1
- <div class="alert alert-danger">
1
+ <div class="alert alert-danger m-5">
2
2
  <%= Spree.t(:authorization_failure) %>
3
3
  </div>
4
4
  <!-- Add your own custom access denied message here if you like -->
@@ -1,17 +1,16 @@
1
- <% if flash[:alert] %>
2
- <div class="alert alert-danger"><%= flash[:alert] %></div>
3
- <% end %>
4
-
5
- <div data-hook="login" class="card border-0">
1
+ <div data-hook="login" class="card mt-5 shadow-sm">
6
2
  <div class="card-body">
3
+ <% if flash[:error] %>
4
+ <div class="alert alert-danger"><%= flash[:error] %></div>
5
+ <% end %>
6
+ <h5 class="card-title"><%= Spree.t(:login) %></h5>
7
+
7
8
  <%= form_for Spree.user_class.new, :as => :spree_user, :url => spree.admin_create_new_session_path do |f| %>
8
9
  <div id="password-credentials">
9
- <div class="form-group text-center">
10
- <%= f.label :email, Spree.t(:email) %>
10
+ <div class="form-group">
11
11
  <%= f.email_field :email, class: 'form-control', tabindex: 1, placeholder: Spree.t(:email) %>
12
12
  </div>
13
- <div class="form-group text-center">
14
- <%= f.label :password, Spree.t(:password) %>
13
+ <div class="form-group">
15
14
  <%= f.password_field :password, :class => 'form-control', :tabindex => 2, placeholder: Spree.t(:password) %>
16
15
  </div>
17
16
  </div>
@@ -8,7 +8,7 @@
8
8
  <%= render partial: 'spree/admin/shared/head' %>
9
9
  </head>
10
10
 
11
- <body class="pt-5">
11
+ <body class="admin bg-light pt-5">
12
12
  <div class="container">
13
13
 
14
14
  <div class="row">
@@ -3,7 +3,7 @@
3
3
  <div class="col-lg-6 offset-lg-3">
4
4
  <h3 class="spree-header spree-mb-large spree-mt-large"><%= Spree.t(:new_customer) %></h3>
5
5
  <div id="new-customer" data-hook="login">
6
- <%= form_for resource, as: :spree_user, url: spree.registration_path do |f| %>
6
+ <%= form_for resource, as: :spree_user, url: spree.registration_path, data: { turbo: false } do |f| %>
7
7
  <div data-hook="signup_inside_form">
8
8
  <%= render partial: 'spree/shared/user_form', locals: { f: f, remember_me_field: true } %>
9
9
  <div><%= f.submit Spree.t(:sign_up), class: 'btn btn-primary btn-block spree-btn mb-5' %></div>
@@ -32,7 +32,7 @@ RSpec.describe Spree::Api::V2::Storefront::PasswordsController, type: :controlle
32
32
  context 'when updating password with blank password' do
33
33
  let(:params) {
34
34
  {
35
- id: user.send_reset_password_instructions(Spree::Store.current),
35
+ id: user.send_reset_password_instructions(Spree::Store.default),
36
36
  user: {
37
37
  password: '',
38
38
  password_confirmation: ''
@@ -49,7 +49,7 @@ RSpec.describe Spree::Api::V2::Storefront::PasswordsController, type: :controlle
49
49
  context 'when updating password with specified password' do
50
50
  let(:params) {
51
51
  {
52
- id: user.send_reset_password_instructions(Spree::Store.current),
52
+ id: user.send_reset_password_instructions(Spree::Store.default),
53
53
  user: {
54
54
  password: password,
55
55
  password_confirmation: password
@@ -6,13 +6,14 @@ RSpec.describe Spree::CheckoutController, type: :controller do
6
6
  before do
7
7
  allow(controller).to receive(:current_order) { order }
8
8
  allow(order).to receive(:confirmation_required?) { true }
9
+ Spree::Store.default.update(default_locale: 'en', supported_locales: 'en,fr') if Spree.version.to_f >= 4.2
9
10
  end
10
11
 
11
12
  context '#edit' do
12
13
  context 'when registration step enabled' do
13
14
  before do
14
15
  allow(controller).to receive(:check_authorization)
15
- Spree::Auth::Config.set(registration_step: true)
16
+ Spree::Auth::Config.set(:registration_step, true)
16
17
  end
17
18
 
18
19
  context 'when authenticated as registered user' do
@@ -29,12 +30,19 @@ RSpec.describe Spree::CheckoutController, type: :controller do
29
30
  get :edit, params: { state: 'address' }
30
31
  expect(response).to redirect_to spree.checkout_registration_path
31
32
  end
33
+
34
+ context 'non default locale' do
35
+ it 'redirects to registration step with non default locale' do
36
+ get :edit, params: { state: 'address', locale: 'fr' }
37
+ expect(response).to redirect_to spree.checkout_registration_path(locale: 'fr')
38
+ end
39
+ end
32
40
  end
33
41
  end
34
42
 
35
43
  context 'when registration step disabled' do
36
44
  before do
37
- Spree::Auth::Config.set(registration_step: false)
45
+ Spree::Auth::Config.set(:registration_step, false)
38
46
  allow(controller).to receive(:check_authorization)
39
47
  end
40
48
 
@@ -84,6 +92,15 @@ RSpec.describe Spree::CheckoutController, type: :controller do
84
92
  post :update, params: { state: 'confirm' }
85
93
  expect(response).to redirect_to spree.order_path(order)
86
94
  end
95
+
96
+ context 'non default locale' do
97
+ it 'redirects to the tokenized order view with a non default locale' do
98
+ # spree version higher than 3.6 required for test to work correctly
99
+ request.cookie_jar.signed[:token] = 'ABC'
100
+ post :update, params: { state: 'confirm', locale: 'fr' }
101
+ expect(response).to redirect_to spree.order_path(order, locale: 'fr')
102
+ end
103
+ end
87
104
  end
88
105
 
89
106
  context 'with a registered user' do
@@ -101,6 +118,13 @@ RSpec.describe Spree::CheckoutController, type: :controller do
101
118
  post :update, params: { state: 'confirm' }
102
119
  expect(response).to redirect_to spree.order_path(order)
103
120
  end
121
+
122
+ context 'non default locale' do
123
+ it 'redirects to the standard order view with a non default locale' do
124
+ post :update, params: { state: 'confirm', locale: 'fr' }
125
+ expect(response).to redirect_to spree.order_path(order, locale: 'fr')
126
+ end
127
+ end
104
128
  end
105
129
  end
106
130
  end
@@ -147,6 +171,14 @@ RSpec.describe Spree::CheckoutController, type: :controller do
147
171
  expect(response).to redirect_to spree.checkout_state_path(:address)
148
172
  end
149
173
 
174
+ context 'non default locale' do
175
+ it 'redirects to the checkout_path after saving with non default locale' do
176
+ allow(controller).to receive(:check_authorization)
177
+ put :update_registration, params: { order: { email: 'jobs@spreecommerce.com' }, locale: 'fr' }
178
+ expect(response).to redirect_to spree.checkout_state_path(:address, locale: 'fr')
179
+ end
180
+ end
181
+
150
182
  it 'checks if the user is authorized for :edit' do
151
183
  if Spree.version.to_f > 3.6
152
184
  request.cookie_jar.signed[:token] = token
@@ -17,6 +17,7 @@ RSpec.describe Spree::ProductsController, type: :controller do
17
17
  end
18
18
 
19
19
  it 'cannot view non-active products' do
20
+ skip if Spree.version.to_f > 4.0
20
21
  allow(user).to receive(:has_spree_role?) { false }
21
22
 
22
23
  # this behaviour was introduced in rails 5.1 & Spree 3.5
@@ -9,6 +9,25 @@ RSpec.describe Spree::UserRegistrationsController, type: :controller do
9
9
  expect(response).to redirect_to spree.account_path
10
10
  end
11
11
 
12
+ context 'with non default locale' do
13
+ before do
14
+ Spree::Store.default.update(default_locale: 'en', supported_locales: 'en,fr')
15
+ end
16
+
17
+ after { I18n.locale = :en }
18
+
19
+ it 'redirects to account_path with locale' do
20
+ post :create, params: { spree_user: { email: 'foobar@example.com', password: 'foobar123', password_confirmation: 'foobar123' }, locale: 'fr'}
21
+ expect(response).to redirect_to spree.account_path(locale: 'fr')
22
+ end
23
+
24
+ it 'saves locale in user' do
25
+ post :create, params: { spree_user: { email: 'foobar@example.com', password: 'foobar123', password_confirmation: 'foobar123' }, locale: 'fr'}
26
+ user = Spree.user_class.find_by_email('foobar@example.com')
27
+ expect(user.selected_locale).to eq('fr')
28
+ end
29
+ end
30
+
12
31
  context 'with a guest token present' do
13
32
  before do
14
33
  if Spree.version.to_f > 3.6
@@ -55,4 +74,29 @@ RSpec.describe Spree::UserRegistrationsController, type: :controller do
55
74
  end
56
75
  end
57
76
  end
77
+
78
+ context 'when user session times out' do
79
+ let(:user) { build_stubbed(:user) }
80
+
81
+ before do
82
+ Spree::Store.default.update(default_locale: 'en', supported_locales: 'en,fr')
83
+ allow(Devise::Mapping).to receive(:find_scope!).and_return(:spree_user)
84
+ end
85
+
86
+ after { I18n.locale = :en }
87
+
88
+ it 'redirects to sign in after timeout' do
89
+ expect(controller.send(:after_inactive_sign_up_path_for, :user)).to eq(spree.login_path)
90
+ end
91
+
92
+ context 'with locale changed to fr' do
93
+ before do
94
+ allow(controller).to receive(:locale_param).and_return('fr')
95
+ end
96
+
97
+ it 'redirect to sign in after timeout with changed locale' do
98
+ expect(controller.send(:after_inactive_sign_up_path_for, :user)).to eq(spree.login_path('fr'))
99
+ end
100
+ end
101
+ end
58
102
  end
@@ -200,4 +200,22 @@ RSpec.describe Spree::UserSessionsController, type: :controller do
200
200
  end
201
201
  end
202
202
  end
203
+
204
+ context "#destroy" do
205
+ before do
206
+ Spree::Store.default.update(default_locale: 'en', supported_locales: 'en,fr')
207
+ end
208
+
209
+ it "redirects to login page after signing out with default locale" do
210
+ post :create, params: { spree_user: { email: user.email, password: 'secret' }}
211
+ delete :destroy
212
+ expect(response).to redirect_to(spree.login_path)
213
+ end
214
+
215
+ it "persists fr locale when redirecting to login page after signing out" do
216
+ post :create, params: { spree_user: { email: user.email, password: 'secret' }, locale: 'fr' }
217
+ delete :destroy, params: { locale: 'fr' }
218
+ expect(response).to redirect_to spree.login_path(locale: 'fr')
219
+ end
220
+ end
203
221
  end
@@ -3,7 +3,10 @@ RSpec.describe Spree::UsersController, type: :controller do
3
3
  let(:user) { create(:user) }
4
4
  let(:role) { create(:role) }
5
5
 
6
- before { allow(controller).to receive(:spree_current_user) { user } }
6
+ before do
7
+ allow(controller).to receive(:spree_current_user) { user }
8
+ Spree::Store.default.update(default_locale: 'en', supported_locales: 'en,fr')
9
+ end
7
10
 
8
11
  context '#load_object' do
9
12
  it 'redirects to signup path if user is not found' do
@@ -11,6 +14,14 @@ RSpec.describe Spree::UsersController, type: :controller do
11
14
  put :update, params: { user: { email: 'foobar@example.com' } }
12
15
  expect(response).to redirect_to spree.login_path
13
16
  end
17
+
18
+ context "non default locale" do
19
+ it 'redirects to signup path with non default locale if user is not found' do
20
+ allow(controller).to receive(:spree_current_user) { nil }
21
+ put :update, params: { user: { email: 'foobar@example.com' }, locale: 'fr' }
22
+ expect(response).to redirect_to spree.login_path(locale: 'fr')
23
+ end
24
+ end
14
25
  end
15
26
 
16
27
  context '#create' do
@@ -22,10 +33,33 @@ RSpec.describe Spree::UsersController, type: :controller do
22
33
 
23
34
  context '#update' do
24
35
  context 'when updating own account' do
25
- it 'performs update' do
26
- put :update, params: { user: { email: 'mynew@email-address.com' } }
27
- expect(assigns[:user].email).to eq 'mynew@email-address.com'
28
- expect(response).to redirect_to spree.account_path
36
+ context 'deafult locale' do
37
+ before { put :update, params: { user: { email: 'mynew@email-address.com' } } }
38
+
39
+ it 'performs update of email' do
40
+ expect(assigns[:user].email).to eq 'mynew@email-address.com'
41
+ end
42
+
43
+ it 'redirects to correct path' do
44
+ expect(response).to redirect_to spree.account_path
45
+ end
46
+ end
47
+
48
+ context 'non default locale' do
49
+ before { put :update, params: { user: { email: 'mynew@email-address.com' }, locale: 'fr' } }
50
+
51
+ it 'performs update of email' do
52
+ expect(assigns[:user].email).to eq 'mynew@email-address.com'
53
+ end
54
+
55
+ it 'persists locale when redirecting to account' do
56
+ expect(response).to redirect_to spree.account_path(locale: 'fr')
57
+ end
58
+ end
59
+
60
+ it 'performs update of selected_locale' do
61
+ put :update, params: { user: { selected_locale: 'pl' } }
62
+ expect(assigns[:user].selected_locale).to eq 'pl'
29
63
  end
30
64
  end
31
65
 
@@ -28,6 +28,7 @@ RSpec.feature 'Accounts', type: :feature do
28
28
  expect(page).to have_text 'email@person.com'
29
29
 
30
30
  find('a.account-page-user-info-item-title-edit').click
31
+ wait_for_turbo
31
32
 
32
33
  fill_in 'Password', with: 'foobar'
33
34
  fill_in 'Password Confirmation', with: 'foobar'
@@ -18,6 +18,25 @@ RSpec.feature 'Admin - Sign In', type: :feature do
18
18
  expect(current_path).to eq '/account'
19
19
  end
20
20
 
21
+ context 'with non default locale' do
22
+ before do
23
+ add_french_locales
24
+ Spree::Store.default.update(default_locale: 'en', supported_locales: 'en,fr')
25
+ I18n.locale = :fr
26
+ end
27
+
28
+ after { I18n.locale = :en }
29
+
30
+ scenario 'lets a user sign in successfully', js: true do
31
+ log_in(email: @user.email, password: 'secret', locale: 'fr')
32
+ show_user_menu
33
+
34
+ expect(page).not_to have_text login_button.upcase
35
+ expect(page).to have_text logout_button.upcase
36
+ expect(current_path).to eq '/fr/account'
37
+ end
38
+ end
39
+
21
40
  scenario 'shows validation errors' do
22
41
  fill_in 'Email', with: @user.email
23
42
  fill_in 'Password', with: 'wrong_password'
@@ -44,6 +63,6 @@ RSpec.feature 'Admin - Sign In', type: :feature do
44
63
  expect(page).to have_text 'admin@person.com'
45
64
  end
46
65
  end
47
- expect(current_path).to eq '/admin/orders'
66
+ expect(current_path).to match('/admin')
48
67
  end
49
68
  end
@@ -30,7 +30,7 @@ RSpec.feature 'Checkout', :js, type: :feature do
30
30
  end
31
31
 
32
32
  scenario 'allow a visitor to checkout as guest, without registration' do
33
- Spree::Auth::Config.set(registration_step: true)
33
+ Spree::Auth::Config.set(:registration_step, true)
34
34
  add_to_cart(mug)
35
35
  click_link 'checkout'
36
36
 
@@ -73,7 +73,7 @@ RSpec.feature 'Checkout', :js, type: :feature do
73
73
  end
74
74
 
75
75
  # Regression test for #890
76
- scenario 'associate an incomplete guest order with user after successful password reset' do
76
+ xscenario 'associate an incomplete guest order with user after successful password reset' do
77
77
  add_to_cart(mug)
78
78
 
79
79
  visit spree.login_path
@@ -81,12 +81,12 @@ RSpec.feature 'Checkout', :js, type: :feature do
81
81
  fill_in('Email', with: 'email@person.com')
82
82
  find('#spree_user_email').set('email@person.com')
83
83
 
84
- click_button 'Reset my password'
84
+ expect { click_button 'Reset my password' }.to change { ActionMailer::Base.deliveries.size }.by(1)
85
85
 
86
86
  # Need to do this now because the token stored in the DB is the encrypted version
87
87
  # The 'plain-text' version is sent in the email and there's one way to get that!
88
88
  reset_password_email = ActionMailer::Base.deliveries.first
89
- token_url_regex = /^http:\/\/www.example.com\/user\/spree_user\/password\/edit\?reset_password_token=(.*)$/
89
+ token_url_regex = /^http:\/\/www.example.com\/password\/change\?reset_password_token=(.*)$/
90
90
  token = token_url_regex.match(reset_password_email.body.encoded)[1]
91
91
 
92
92
  visit spree.edit_spree_user_password_path(reset_password_token: token.strip).tr("%0D","")
@@ -103,6 +103,7 @@ RSpec.feature 'Checkout', :js, type: :feature do
103
103
  click_button 'Save and Continue'
104
104
 
105
105
  expect(page).not_to have_text 'Email is invalid'
106
+ ActiveJob::Base.queue_adapter = :test
106
107
  end
107
108
 
108
109
  scenario 'allow a user to register during checkout' do
@@ -2,7 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  RSpec.feature 'Confirmation', type: :feature, confirmable: true do
4
4
  before do
5
- expect(Spree::UserMailer).to receive(:confirmation_instructions).with(anything, anything, { current_store_id: Spree::Store.current.id }).and_return(double(deliver: true))
5
+ expect(Spree::UserMailer).to receive(:confirmation_instructions).with(anything, anything, { current_store_id: Spree::Store.default.id }).and_return(double(deliver: true))
6
6
  end
7
7
 
8
8
  background do
@@ -45,7 +45,7 @@ RSpec.feature 'Sign In', type: :feature do
45
45
  expect(page).to have_text 'admin@person.com'
46
46
  end
47
47
  end
48
- expect(current_path).to eq '/admin/orders'
48
+ expect(current_path).to match('/admin')
49
49
  end
50
50
 
51
51
  it 'should store the user previous location' do
@@ -74,7 +74,7 @@ RSpec.feature 'Sign In', type: :feature do
74
74
 
75
75
  expect(page).not_to have_text Spree.t(:login).upcase
76
76
  expect(page).to have_text Spree.t(:logout).upcase
77
- expect(current_url).to match(/\/account\?locale\=fr$/)
77
+ expect(current_url).to match(/\/fr\/account/)
78
78
  end
79
79
  end
80
80
  end
@@ -5,7 +5,7 @@ RSpec.describe Spree::UserMailer, type: :mailer do
5
5
  describe '#reset_password_instructions' do
6
6
  describe 'message contents' do
7
7
  before do
8
- @message = described_class.reset_password_instructions(user, 'token goes here', { current_store_id: Spree::Store.current.id })
8
+ @message = described_class.reset_password_instructions(user, 'token goes here', { current_store_id: Spree::Store.default.id })
9
9
  end
10
10
 
11
11
  context 'subject includes' do
@@ -22,7 +22,7 @@ RSpec.describe Spree::UserMailer, type: :mailer do
22
22
 
23
23
  context 'body includes' do
24
24
  it 'password reset url' do
25
- expect(@message.body.encoded).to include "http://#{store.url}/user/spree_user/password/edit"
25
+ expect(@message.body.encoded).to include "http://#{store.url}/password/change"
26
26
  end
27
27
  end
28
28
  end
@@ -30,7 +30,7 @@ RSpec.describe Spree::UserMailer, type: :mailer do
30
30
  describe 'legacy support for User object' do
31
31
  it 'sends an email' do
32
32
  expect {
33
- described_class.reset_password_instructions(user, 'token goes here', { current_store_id: Spree::Store.current.id }).deliver_now
33
+ described_class.reset_password_instructions(user, 'token goes here', { current_store_id: Spree::Store.default.id }).deliver_now
34
34
  }.to change(ActionMailer::Base.deliveries, :size).by(1)
35
35
  end
36
36
  end
@@ -9,7 +9,7 @@ RSpec.describe Spree::User, type: :model do
9
9
 
10
10
  it 'generates the reset password token' do
11
11
  user = build(:user)
12
- current_store = Spree::Store.current
12
+ current_store = Spree::Store.default
13
13
  expect(Spree::UserMailer).to receive(:reset_password_instructions).with(user, anything, { current_store_id: current_store.id }).and_return(double(deliver: true))
14
14
  user.send_reset_password_instructions(current_store)
15
15
  expect(user.reset_password_token).not_to be_nil
@@ -94,7 +94,7 @@ RSpec.describe Spree::User, type: :model do
94
94
 
95
95
  describe "confirmable" do
96
96
  it "is confirmable if the confirmable option is enabled", confirmable: true do
97
- Spree::UserMailer.stub(:confirmation_instructions).with(anything, anything, { current_store_id: Spree::Store.current.id }).and_return(double(deliver: true))
97
+ Spree::UserMailer.stub(:confirmation_instructions).with(anything, anything, { current_store_id: Spree::Store.default.id }).and_return(double(deliver: true))
98
98
  expect(Spree.user_class.devise_modules).to include(:confirmable)
99
99
  end
100
100
 
@@ -112,7 +112,7 @@ RSpec.describe Spree::User, type: :model do
112
112
  user.email = FFaker::Internet.email
113
113
  user.password = user.password_confirmation = 'pass1234'
114
114
  user.save
115
-
115
+
116
116
  expect(Spree::UserMailer).to receive(:confirmation_instructions).with(
117
117
  user, anything, { current_store_id: default_store.id }).and_return(double(deliver: true)
118
118
  )
@@ -1,6 +1,6 @@
1
1
  module ConfigurationHelpers
2
2
  def allow_bypass_sign_in
3
- Spree::Auth::Config.set(signout_after_password_change: false)
3
+ Spree::Auth::Config.set(:signout_after_password_change, false)
4
4
  end
5
5
  end
6
6
 
@@ -1,12 +1,14 @@
1
1
  RSpec.configure do |config|
2
2
  config.around do |example|
3
3
  if example.metadata.key?(:confirmable)
4
+ old_setting = Spree::Auth::Config.confirmable
4
5
  old_user = Spree::User
5
6
 
6
7
  begin
7
8
  example.run
8
9
  ensure
9
10
  Spree.const_set('User', old_user)
11
+ Spree::Auth::Config.confirmable = old_setting
10
12
  end
11
13
  else
12
14
  example.run
@@ -16,7 +18,7 @@ RSpec.configure do |config|
16
18
  config.before do |example|
17
19
  if example.metadata.key?(:confirmable)
18
20
  Rails.cache.clear
19
- Spree::Auth::Config[:confirmable] = example.metadata[:confirmable]
21
+ Spree::Auth::Config.confirmable = example.metadata[:confirmable]
20
22
 
21
23
  Spree.send(:remove_const, :User)
22
24
  load File.expand_path('../../../app/models/spree/user.rb', __FILE__)
@@ -33,7 +33,7 @@ Gem::Specification.new do |s|
33
33
  s.add_dependency 'devise', '~> 4.7'
34
34
  s.add_dependency 'devise-encryptable', '0.2.0'
35
35
 
36
- spree_version = '>= 4.3.0.rc1'
36
+ spree_version = '>= 4.5.0'
37
37
  s.add_dependency 'spree_core', spree_version
38
38
  s.add_dependency 'spree_extension'
39
39