spree_auth_devise 1.3.1 → 3.0.5
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 +7 -0
- data/.gitignore +10 -0
- data/.rspec +3 -0
- data/.travis.yml +11 -0
- data/Gemfile +5 -0
- data/{LICENSE → LICENSE.md} +1 -1
- data/README.md +86 -10
- data/Rakefile +15 -0
- data/Versionfile +5 -0
- data/app/controllers/metal_decorator.rb +6 -0
- data/app/mailers/spree/user_mailer.rb +12 -5
- data/app/models/spree/auth_configuration.rb +1 -0
- data/app/models/spree/user.rb +17 -50
- data/app/overrides/spree/admin/shared/_header/auth_admin_login_navigation_bar.html.erb.deface +4 -0
- data/bin/rails +7 -0
- data/circle.yml +11 -0
- data/config.ru +4 -0
- data/config/initializers/devise.rb +3 -8
- data/config/initializers/warden.rb +14 -0
- data/config/locales/de.yml +40 -37
- data/config/locales/en.yml +48 -39
- data/config/locales/es.yml +49 -0
- data/config/locales/fr.yml +49 -0
- data/config/locales/it.yml +76 -0
- data/config/locales/nl.yml +41 -46
- data/config/locales/pt-BR.yml +51 -0
- data/config/locales/tr.yml +49 -0
- data/config/routes.rb +32 -15
- data/db/default/users.rb +13 -6
- data/db/migrate/20140904000425_add_deleted_at_to_users.rb +6 -0
- data/db/migrate/20141002154641_add_confirmable_to_users.rb +7 -0
- data/lib/assets/javascripts/spree/backend/spree_auth.js.erb +1 -0
- data/lib/assets/javascripts/spree/frontend/spree_auth.js.erb +1 -0
- data/lib/assets/stylesheets/spree/backend/spree_auth.css.erb +3 -0
- data/lib/assets/stylesheets/spree/frontend/spree_auth.css.erb +3 -0
- data/lib/controllers/backend/spree/admin/admin_controller_decorator.rb +26 -0
- data/lib/controllers/backend/spree/admin/admin_orders_controller_decorator.rb +20 -0
- data/{app/controllers → lib/controllers/backend}/spree/admin/admin_resource_controller_decorator.rb +0 -0
- data/{app/controllers/spree/admin/admin_orders_controller_decorator.rb → lib/controllers/backend/spree/admin/orders/customer_details_controller_decorator.rb} +3 -2
- data/lib/controllers/backend/spree/admin/user_passwords_controller.rb +42 -0
- data/lib/controllers/backend/spree/admin/user_sessions_controller.rb +53 -0
- data/{app/controllers → lib/controllers/frontend}/spree/checkout_controller_decorator.rb +8 -15
- data/lib/controllers/frontend/spree/user_confirmations_controller.rb +14 -0
- data/{app/controllers → lib/controllers/frontend}/spree/user_passwords_controller.rb +10 -9
- data/{app/controllers → lib/controllers/frontend}/spree/user_registrations_controller.rb +18 -15
- data/lib/controllers/frontend/spree/user_sessions_controller.rb +46 -0
- data/{app/controllers → lib/controllers/frontend}/spree/users_controller.rb +13 -9
- data/lib/generators/spree/auth/install/install_generator.rb +26 -0
- data/lib/generators/spree/auth/install/templates/config/initializers/devise.rb +1 -0
- data/lib/spree/auth.rb +2 -1
- data/lib/spree/auth/devise.rb +7 -0
- data/lib/spree/auth/engine.rb +57 -2
- data/lib/spree/authentication_helpers.rb +1 -1
- data/lib/spree_auth_devise.rb +3 -0
- data/lib/views/backend/spree/admin/user_passwords/edit.html.erb +15 -0
- data/lib/views/backend/spree/admin/user_passwords/new.html.erb +17 -0
- data/lib/views/backend/spree/admin/user_sessions/authorization_failure.html.erb +4 -0
- data/lib/views/backend/spree/admin/user_sessions/new.html.erb +38 -0
- data/lib/views/backend/spree/layouts/admin/_login_nav.html.erb +33 -0
- data/lib/views/backend/spree/layouts/login.html.erb +25 -0
- data/lib/views/frontend/spree/checkout/_new_user.html.erb +20 -0
- data/lib/views/frontend/spree/checkout/registration.html.erb +27 -0
- data/{app/views → lib/views/frontend}/spree/shared/_flashes.html.erb +0 -0
- data/lib/views/frontend/spree/shared/_login.html.erb +18 -0
- data/lib/views/frontend/spree/shared/_login_bar.html.erb +6 -0
- data/lib/views/frontend/spree/shared/_user_form.html.erb +13 -0
- data/lib/views/frontend/spree/user_mailer/confirmation_instructions.text.erb +5 -0
- data/lib/views/frontend/spree/user_mailer/reset_password_instructions.text.erb +10 -0
- data/lib/views/frontend/spree/user_passwords/edit.html.erb +22 -0
- data/lib/views/frontend/spree/user_passwords/new.html.erb +21 -0
- data/lib/views/frontend/spree/user_registrations/new.html.erb +22 -0
- data/lib/views/frontend/spree/user_sessions/new.html.erb +20 -0
- data/lib/views/frontend/spree/users/edit.html.erb +17 -0
- data/lib/views/frontend/spree/users/show.html.erb +43 -0
- data/spec/controllers/spree/admin/orders_controller_spec.rb +14 -0
- data/spec/controllers/spree/checkout_controller_spec.rb +141 -0
- data/spec/controllers/spree/products_controller_spec.rb +21 -0
- data/spec/controllers/spree/user_passwords_controller_spec.rb +44 -0
- data/spec/controllers/spree/user_registrations_controller_spec.rb +13 -0
- data/spec/controllers/spree/user_sessions_controller_spec.rb +56 -0
- data/spec/controllers/spree/users_controller_spec.rb +38 -0
- data/spec/factories/confirmed_user.rb +7 -0
- data/spec/features/account_spec.rb +58 -0
- data/spec/features/admin/orders_spec.rb +28 -0
- data/spec/features/admin/password_reset_spec.rb +24 -0
- data/spec/features/admin/products_spec.rb +9 -0
- data/spec/features/admin/sign_in_spec.rb +45 -0
- data/spec/features/admin/sign_out_spec.rb +22 -0
- data/spec/features/admin_permissions_spec.rb +46 -0
- data/spec/features/change_email_spec.rb +24 -0
- data/spec/features/checkout_spec.rb +160 -0
- data/spec/features/confirmation_spec.rb +28 -0
- data/spec/features/order_spec.rb +62 -0
- data/spec/features/password_reset_spec.rb +24 -0
- data/spec/features/sign_in_spec.rb +54 -0
- data/spec/features/sign_out_spec.rb +25 -0
- data/spec/features/sign_up_spec.rb +30 -0
- data/spec/mailers/user_mailer_spec.rb +46 -0
- data/spec/models/order_spec.rb +26 -0
- data/spec/models/user_spec.rb +58 -0
- data/spec/spec_helper.rb +24 -0
- data/spec/support/ability.rb +15 -0
- data/spec/support/authentication_helpers.rb +14 -0
- data/spec/support/capybara.rb +7 -0
- data/spec/support/confirm_helpers.rb +11 -0
- data/spec/support/database_cleaner.rb +18 -0
- data/spec/support/email.rb +5 -0
- data/spec/support/factory_girl.rb +5 -0
- data/spec/support/spree.rb +26 -0
- data/spree_auth_devise.gemspec +48 -0
- metadata +441 -79
- data/app/assets/javascripts/admin/spree_auth.js +0 -1
- data/app/assets/javascripts/store/spree_auth.js +0 -1
- data/app/assets/stylesheets/admin/spree_auth.css +0 -3
- data/app/assets/stylesheets/store/spree_auth.css +0 -3
- data/app/controllers/spree/admin/admin_controller_decorator.rb +0 -7
- data/app/controllers/spree/admin/admin_users_controller_decorator.rb +0 -21
- data/app/controllers/spree/admin/users_controller.rb +0 -77
- data/app/controllers/spree/base_controller_decorator.rb +0 -18
- data/app/controllers/spree/orders_controller_decorator.rb +0 -15
- data/app/controllers/spree/user_sessions_controller.rb +0 -54
- data/app/helpers/spree/users_helper.rb +0 -15
- data/app/models/spree/current_order_decorator.rb +0 -12
- data/app/overrides/admin_tab.rb +0 -6
- data/app/overrides/auth_admin_login_navigation_bar.rb +0 -5
- data/app/overrides/auth_user_login_form.rb +0 -6
- data/app/views/spree/admin/users/_form.html.erb +0 -37
- data/app/views/spree/admin/users/edit.html.erb +0 -28
- data/app/views/spree/admin/users/index.html.erb +0 -53
- data/app/views/spree/admin/users/new.html.erb +0 -23
- data/app/views/spree/admin/users/show.html.erb +0 -21
- data/app/views/spree/layouts/admin/_login_nav.html.erb +0 -8
- data/app/views/spree/shared/_login.html.erb +0 -20
- data/app/views/spree/shared/_login_bar.html.erb +0 -6
- data/app/views/spree/shared/_user_form.html.erb +0 -17
- data/app/views/spree/user_mailer/reset_password_instructions.text.erb +0 -10
- data/app/views/spree/user_passwords/edit.html.erb +0 -15
- data/app/views/spree/user_passwords/new.html.erb +0 -15
- data/app/views/spree/user_registrations/new.html.erb +0 -22
- data/app/views/spree/user_sessions/authorization_failure.html.erb +0 -4
- data/app/views/spree/user_sessions/new.html.erb +0 -13
- data/app/views/spree/users/edit.html.erb +0 -11
- data/app/views/spree/users/show.html.erb +0 -43
- data/config/initializers/spree.rb +0 -1
|
File without changes
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<%= form_for Spree::User.new, :as => :spree_user, :url => spree.create_new_session_path do |f| %>
|
|
2
|
+
<div id="password-credentials">
|
|
3
|
+
<p>
|
|
4
|
+
<%= f.label :email, Spree.t(:email) %><br />
|
|
5
|
+
<%= f.email_field :email, :class => 'form-control', :tabindex => 1, autofocus: true %>
|
|
6
|
+
</p>
|
|
7
|
+
<p>
|
|
8
|
+
<%= f.label :password, Spree.t(:password) %><br />
|
|
9
|
+
<%= f.password_field :password, :class => 'form-control', :tabindex => 2 %>
|
|
10
|
+
</p>
|
|
11
|
+
</div>
|
|
12
|
+
<p>
|
|
13
|
+
<%= f.check_box :remember_me, :tabindex => 3 %>
|
|
14
|
+
<%= f.label :remember_me, Spree.t(:remember_me) %>
|
|
15
|
+
</p>
|
|
16
|
+
|
|
17
|
+
<p><%= f.submit Spree.t(:login), :class => 'btn btn-lg btn-success btn-block', :tabindex => 4 %></p>
|
|
18
|
+
<% end %>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<fieldset id="password-credentials">
|
|
2
|
+
<div class="form-group">
|
|
3
|
+
<%= f.email_field :email, :class => 'form-control', :placeholder => Spree.t(:email) %>
|
|
4
|
+
</div>
|
|
5
|
+
<hr />
|
|
6
|
+
<div class="form-group">
|
|
7
|
+
<%= f.password_field :password, :class => 'form-control', :placeholder => Spree.t(:password) %>
|
|
8
|
+
</div>
|
|
9
|
+
<div class="form-group">
|
|
10
|
+
<%= f.password_field :password_confirmation, :class => 'form-control', :placeholder => Spree.t(:confirm_password) %>
|
|
11
|
+
</div>
|
|
12
|
+
</fieldset>
|
|
13
|
+
<div data-hook="signup_below_password_fields"></div>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
A request to reset your password has been made.
|
|
2
|
+
If you did not make this request, simply ignore this email.
|
|
3
|
+
|
|
4
|
+
If you did make this request just click the link below:
|
|
5
|
+
|
|
6
|
+
<%= @edit_password_reset_url %>
|
|
7
|
+
|
|
8
|
+
If the above URL does not work try copying and pasting it into your browser.
|
|
9
|
+
If you continue to have problems please feel free to contact us.
|
|
10
|
+
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<%= render :partial => 'spree/shared/error_messages', :locals => { :target => @spree_user } %>
|
|
2
|
+
<div class="col-md-6 col-md-offset-3">
|
|
3
|
+
<div class="panel panel-default">
|
|
4
|
+
<div class="panel-heading">
|
|
5
|
+
<h3 class="panel-title"><%= Spree.t(:change_your_password) %></h3>
|
|
6
|
+
</div>
|
|
7
|
+
<div class="panel-body">
|
|
8
|
+
<%= form_for @spree_user, :as => :spree_user, :url => spree.update_password_path, :method => :put do |f| %>
|
|
9
|
+
<p>
|
|
10
|
+
<%= f.label :password, Spree.t(:password) %><br />
|
|
11
|
+
<%= f.password_field :password, :class => "form-control" %><br />
|
|
12
|
+
</p>
|
|
13
|
+
<p>
|
|
14
|
+
<%= f.label :password_confirmation, Spree.t(:confirm_password) %><br />
|
|
15
|
+
<%= f.password_field :password_confirmation, :class => "form-control" %><br />
|
|
16
|
+
</p>
|
|
17
|
+
<%= f.hidden_field :reset_password_token %>
|
|
18
|
+
<%= f.submit Spree.t(:update), :class => 'btn btn-lg btn-success btn-block' %>
|
|
19
|
+
<% end %>
|
|
20
|
+
</div>
|
|
21
|
+
</div>
|
|
22
|
+
</div>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<%= render :partial => 'spree/shared/error_messages', :locals => { :target => @spree_user } %>
|
|
2
|
+
<div class="col-md-6 col-md-offset-3" id="forgot-password">
|
|
3
|
+
<div class="panel panel-default">
|
|
4
|
+
<div class="panel-heading">
|
|
5
|
+
<h3 class="panel-title"><%= Spree.t(:forgot_password) %></h3>
|
|
6
|
+
</div>
|
|
7
|
+
<div class="panel-body">
|
|
8
|
+
<p><%= Spree.t(:instructions_to_reset_password) %></p>
|
|
9
|
+
|
|
10
|
+
<%= form_for Spree::User.new, :as => :spree_user, :url => spree.reset_password_path do |f| %>
|
|
11
|
+
<p>
|
|
12
|
+
<%= f.label :email, Spree.t(:email) %><br />
|
|
13
|
+
<%= f.email_field :email, :class => "form-control" %>
|
|
14
|
+
</p>
|
|
15
|
+
<p>
|
|
16
|
+
<%= f.submit Spree.t(:reset_password), :class => 'btn btn-lg btn-success btn-block' %>
|
|
17
|
+
</p>
|
|
18
|
+
<% end %>
|
|
19
|
+
</div>
|
|
20
|
+
</div>
|
|
21
|
+
</div>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<% @body_id = 'signup' %>
|
|
2
|
+
<%= render :partial => 'spree/shared/error_messages', :locals => { :target => @user } %>
|
|
3
|
+
<div class="col-md-6 col-md-offset-3">
|
|
4
|
+
<div class="panel panel-default">
|
|
5
|
+
<div class="panel-heading">
|
|
6
|
+
<h3 class="panel-title"><%= Spree.t(:new_customer) %></h3>
|
|
7
|
+
</div>
|
|
8
|
+
<div id="new-customer" class="panel-body" data-hook="login">
|
|
9
|
+
<%= form_for resource, :as => :spree_user, :url => spree.registration_path do |f| %>
|
|
10
|
+
<div data-hook="signup_inside_form">
|
|
11
|
+
<%= render :partial => 'spree/shared/user_form', :locals => { :f => f } %>
|
|
12
|
+
<p><%= f.submit Spree.t(:create), :class => 'btn btn-lg btn-success btn-block' %></p>
|
|
13
|
+
</div>
|
|
14
|
+
<% end %>
|
|
15
|
+
<div class="text-center">
|
|
16
|
+
<%= Spree.t(:or) %>
|
|
17
|
+
<%= link_to Spree.t(:login_as_existing), spree.login_path %>
|
|
18
|
+
</div>
|
|
19
|
+
<div data-hook="login_extras"></div>
|
|
20
|
+
</div>
|
|
21
|
+
</div>
|
|
22
|
+
</div>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<% @body_id = 'login' %>
|
|
2
|
+
<div class="col-md-6 <%= request.path == spree.login_path ? "col-md-offset-3" : "" %>">
|
|
3
|
+
<div class="panel panel-default">
|
|
4
|
+
<div class="panel-heading">
|
|
5
|
+
<h3 class="panel-title"><%= Spree.t(:login_as_existing) %></h3>
|
|
6
|
+
</div>
|
|
7
|
+
<div id="existing-customer" class="panel-body" data-hook="login">
|
|
8
|
+
<% if flash[:alert] %>
|
|
9
|
+
<div class="alert alert-danger"><%= flash[:alert] %></div>
|
|
10
|
+
<% end %>
|
|
11
|
+
<%= render :partial => 'spree/shared/login' %>
|
|
12
|
+
<div class="text-center">
|
|
13
|
+
<%= Spree.t(:or) %>
|
|
14
|
+
<%= link_to Spree.t(:create_a_new_account), spree.signup_path %> |
|
|
15
|
+
<%= link_to Spree.t(:forgot_password), spree.recover_password_path %>
|
|
16
|
+
</div>
|
|
17
|
+
<div data-hook="login_extras"></div>
|
|
18
|
+
</div>
|
|
19
|
+
</div>
|
|
20
|
+
</div>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<div class="col-md-6 col-md-offset-3">
|
|
2
|
+
<div class="panel panel-default">
|
|
3
|
+
<div class="panel-heading">
|
|
4
|
+
<h3 class="panel-title"><%= Spree.t(:editing_user) %></h3>
|
|
5
|
+
</div>
|
|
6
|
+
<div class="panel-body">
|
|
7
|
+
<%= render :partial => 'spree/shared/error_messages', :locals => { :target => @user } %>
|
|
8
|
+
|
|
9
|
+
<%= form_for Spree::User.new, :as => @user, :url => spree.user_path(@user), :method => :put do |f| %>
|
|
10
|
+
<%= render :partial => 'spree/shared/user_form', :locals => { :f => f } %>
|
|
11
|
+
<p>
|
|
12
|
+
<%= f.submit Spree.t(:update), :class => 'btn btn-primary' %>
|
|
13
|
+
</p>
|
|
14
|
+
<% end %>
|
|
15
|
+
</div>
|
|
16
|
+
</div>
|
|
17
|
+
</div>
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
<h1><%= accurate_title %></h1>
|
|
2
|
+
|
|
3
|
+
<div data-hook="account_summary" class="account-summary well">
|
|
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>
|
|
7
|
+
</dl>
|
|
8
|
+
</div>
|
|
9
|
+
|
|
10
|
+
<div data-hook="account_my_orders" class="account-my-orders">
|
|
11
|
+
|
|
12
|
+
<h3><%= Spree.t(:my_orders) %></h3>
|
|
13
|
+
<% if @orders.present? %>
|
|
14
|
+
<table class="table table-striped order-summary">
|
|
15
|
+
<thead class="active">
|
|
16
|
+
<tr>
|
|
17
|
+
<th class="order-number"><%= Spree::Order.human_attribute_name(:number) %></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>
|
|
23
|
+
</tr>
|
|
24
|
+
</thead>
|
|
25
|
+
<tbody>
|
|
26
|
+
<% @orders.each do |order| %>
|
|
27
|
+
<tr>
|
|
28
|
+
<td class="order-number"><%= link_to order.number, order_url(order) %></td>
|
|
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>
|
|
33
|
+
<td class="lead text-primary order-total"><%= order.display_total %></td>
|
|
34
|
+
</tr>
|
|
35
|
+
<% end %>
|
|
36
|
+
</tbody>
|
|
37
|
+
</table>
|
|
38
|
+
<% else %>
|
|
39
|
+
<div class="alert alert-info"><%= Spree.t(:you_have_no_orders_yet) %></div>
|
|
40
|
+
<% end %>
|
|
41
|
+
<br />
|
|
42
|
+
|
|
43
|
+
</div>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Admin
|
|
3
|
+
RSpec.describe OrdersController, type: :controller do
|
|
4
|
+
stub_authorization!
|
|
5
|
+
|
|
6
|
+
context '#authorize_admin' do
|
|
7
|
+
it 'grants access to users with an admin role' do
|
|
8
|
+
spree_get :new
|
|
9
|
+
expect(response).to redirect_to spree.cart_admin_order_path(Order.last)
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
RSpec.describe Spree::CheckoutController, type: :controller do
|
|
2
|
+
|
|
3
|
+
let(:order) { create(:order_with_totals, email: nil, user: nil) }
|
|
4
|
+
let(:user) { build(:user, spree_api_key: 'fake') }
|
|
5
|
+
let(:token) { 'some_token' }
|
|
6
|
+
|
|
7
|
+
before do
|
|
8
|
+
allow(controller).to receive(:current_order) { order }
|
|
9
|
+
allow(order).to receive(:confirmation_required?) { true }
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
context '#edit' do
|
|
13
|
+
context 'when registration step enabled' do
|
|
14
|
+
before do
|
|
15
|
+
allow(controller).to receive(:check_authorization)
|
|
16
|
+
Spree::Auth::Config.set(registration_step: true)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
context 'when authenticated as registered user' do
|
|
20
|
+
before { allow(controller).to receive(:spree_current_user) { user } }
|
|
21
|
+
|
|
22
|
+
it 'proceeds to the first checkout step' do
|
|
23
|
+
spree_get :edit, { state: 'address' }
|
|
24
|
+
expect(response).to render_template :edit
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
context 'when authenticated as guest' do
|
|
29
|
+
it 'redirects to registration step' do
|
|
30
|
+
spree_get :edit, { state: 'address' }
|
|
31
|
+
expect(response).to redirect_to spree.checkout_registration_path
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
context 'when registration step disabled' do
|
|
37
|
+
before do
|
|
38
|
+
Spree::Auth::Config.set(registration_step: false)
|
|
39
|
+
allow(controller).to receive(:check_authorization)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
context 'when authenticated as registered' do
|
|
43
|
+
before { allow(controller).to receive(:spree_current_user) { user } }
|
|
44
|
+
|
|
45
|
+
it 'proceeds to the first checkout step' do
|
|
46
|
+
spree_get :edit, { state: 'address' }
|
|
47
|
+
expect(response).to render_template :edit
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
context 'when authenticated as guest' do
|
|
52
|
+
it 'proceeds to the first checkout step' do
|
|
53
|
+
spree_get :edit, { state: 'address' }
|
|
54
|
+
expect(response).to render_template :edit
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
context '#update' do
|
|
61
|
+
context 'when in the confirm state' do
|
|
62
|
+
before do
|
|
63
|
+
order.update_column(:email, 'spree@example.com')
|
|
64
|
+
order.update_column(:state, 'confirm')
|
|
65
|
+
|
|
66
|
+
# So that the order can transition to complete successfully
|
|
67
|
+
allow(order).to receive(:payment_required?) { false }
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
context 'with a token' do
|
|
71
|
+
before { allow(order).to receive(:guest_token) { 'ABC' } }
|
|
72
|
+
|
|
73
|
+
it 'redirects to the tokenized order view' do
|
|
74
|
+
request.cookie_jar.signed[:guest_token] = 'ABC'
|
|
75
|
+
spree_post :update, { state: 'confirm' }
|
|
76
|
+
expect(response).to redirect_to spree.order_path(order)
|
|
77
|
+
expect(flash.notice).to eq Spree.t(:order_processed_successfully)
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
context 'with a registered user' do
|
|
82
|
+
before do
|
|
83
|
+
allow(controller).to receive(:spree_current_user) { user }
|
|
84
|
+
allow(order).to receive(:user) { user }
|
|
85
|
+
allow(order).to receive(:guest_token) { nil }
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
it 'redirects to the standard order view' do
|
|
89
|
+
spree_post :update, { state: 'confirm' }
|
|
90
|
+
expect(response).to redirect_to spree.order_path(order)
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
context '#registration' do
|
|
97
|
+
it 'does not check registration' do
|
|
98
|
+
allow(controller).to receive(:check_authorization)
|
|
99
|
+
expect(controller).not_to receive(:check_registration)
|
|
100
|
+
spree_get :registration
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
it 'checks if the user is authorized for :edit' do
|
|
104
|
+
expect(controller).to receive(:authorize!).with(:edit, order, token)
|
|
105
|
+
request.cookie_jar.signed[:guest_token] = token
|
|
106
|
+
spree_get :registration, {}
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
context '#update_registration' do
|
|
111
|
+
let(:user) { build(:user) }
|
|
112
|
+
|
|
113
|
+
it 'does not check registration' do
|
|
114
|
+
controller.stub :check_authorization
|
|
115
|
+
order.stub update_attributes: true
|
|
116
|
+
controller.should_not_receive :check_registration
|
|
117
|
+
spree_put :update_registration, { order: { } }
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
it 'renders the registration view if unable to save' do
|
|
121
|
+
allow(controller).to receive(:check_authorization)
|
|
122
|
+
spree_put :update_registration, { order: { email: 'invalid' } }
|
|
123
|
+
expect(flash[:registration_error]).to eq I18n.t(:email_is_invalid, scope: [:errors, :messages])
|
|
124
|
+
expect(response).to render_template :registration
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
it 'redirects to the checkout_path after saving' do
|
|
128
|
+
allow(order).to receive(:update_attributes) { true }
|
|
129
|
+
allow(controller).to receive(:check_authorization)
|
|
130
|
+
spree_put :update_registration, { order: { email: 'jobs@spreecommerce.com' } }
|
|
131
|
+
expect(response).to redirect_to spree.checkout_path
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
it 'checks if the user is authorized for :edit' do
|
|
135
|
+
request.cookie_jar.signed[:guest_token] = token
|
|
136
|
+
allow(order).to receive(:update_attributes) { true }
|
|
137
|
+
expect(controller).to receive(:authorize!).with(:edit, order, token)
|
|
138
|
+
spree_put :update_registration, { order: { email: 'jobs@spreecommerce.com' } }
|
|
139
|
+
end
|
|
140
|
+
end
|
|
141
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
RSpec.describe Spree::ProductsController, type: :controller do
|
|
2
|
+
|
|
3
|
+
let!(:product) { create(:product, available_on: 1.year.from_now) }
|
|
4
|
+
let!(:user) { build(:user, spree_api_key: 'fake') }
|
|
5
|
+
|
|
6
|
+
it 'allows admins to view non-active products' do
|
|
7
|
+
allow(controller).to receive(:before_save_new_order)
|
|
8
|
+
allow(controller).to receive(:spree_current_user) { user }
|
|
9
|
+
allow(user).to receive(:has_spree_role?) { true }
|
|
10
|
+
spree_get :show, id: product.to_param
|
|
11
|
+
expect(response.status).to eq(200)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it 'cannot view non-active products' do
|
|
15
|
+
allow(controller).to receive(:before_save_new_order)
|
|
16
|
+
allow(controller).to receive(:spree_current_user) { user }
|
|
17
|
+
allow(user).to receive(:has_spree_role?) { false }
|
|
18
|
+
spree_get :show, id: product.to_param
|
|
19
|
+
expect(response.status).to eq(404)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
RSpec.describe Spree::UserPasswordsController, type: :controller do
|
|
2
|
+
|
|
3
|
+
let(:token) { 'some_token' }
|
|
4
|
+
|
|
5
|
+
before { @request.env['devise.mapping'] = Devise.mappings[:spree_user] }
|
|
6
|
+
|
|
7
|
+
describe 'GET edit' do
|
|
8
|
+
context 'when the user token has not been specified' do
|
|
9
|
+
it 'redirects to the new session path' do
|
|
10
|
+
spree_get :edit
|
|
11
|
+
expect(response).to redirect_to(
|
|
12
|
+
'http://test.host/user/spree_user/sign_in'
|
|
13
|
+
)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it 'flashes an error' do
|
|
17
|
+
spree_get :edit
|
|
18
|
+
expect(flash[:alert]).to include(
|
|
19
|
+
"You can't access this page without coming from a password reset " +
|
|
20
|
+
'email'
|
|
21
|
+
)
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
context 'when the user token has been specified' do
|
|
26
|
+
it 'does something' do
|
|
27
|
+
spree_get :edit, reset_password_token: token
|
|
28
|
+
expect(response.code).to eq('200')
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
context '#update' do
|
|
34
|
+
context 'when updating password with blank password' do
|
|
35
|
+
it 'shows error flash message, sets spree_user with token and re-displays password edit form' do
|
|
36
|
+
spree_put :update, { spree_user: { password: '', password_confirmation: '', reset_password_token: token } }
|
|
37
|
+
expect(assigns(:spree_user).kind_of?(Spree::User)).to eq true
|
|
38
|
+
expect(assigns(:spree_user).reset_password_token).to eq token
|
|
39
|
+
expect(flash[:error]).to eq I18n.t(:cannot_be_blank, scope: [:devise, :user_passwords, :spree_user])
|
|
40
|
+
expect(response).to render_template :edit
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|