about summary refs log tree commit diff
path: root/spec/controllers
diff options
context:
space:
mode:
authornullkal <nullkal@users.noreply.github.com>2017-08-04 00:45:45 +0900
committerEugen Rochko <eugen@zeonfederated.com>2017-08-03 17:45:45 +0200
commitdfcd2834f9589bda573eb133057588f351f570b5 (patch)
treebb6515cc278cab6e00ca9a607eebedee1a47e57e /spec/controllers
parent09e86ef90b1e220bca54b5b3cb270d7672237c13 (diff)
Redirect to PasswordController#new when reset_password_token is invalid (#4506)
Diffstat (limited to 'spec/controllers')
-rw-r--r--spec/controllers/auth/passwords_controller_spec.rb25
1 files changed, 25 insertions, 0 deletions
diff --git a/spec/controllers/auth/passwords_controller_spec.rb b/spec/controllers/auth/passwords_controller_spec.rb
index 60b225efa..992d2e29d 100644
--- a/spec/controllers/auth/passwords_controller_spec.rb
+++ b/spec/controllers/auth/passwords_controller_spec.rb
@@ -3,6 +3,8 @@
 require 'rails_helper'
 
 describe Auth::PasswordsController, type: :controller do
+  include Devise::Test::ControllerHelpers
+
   describe 'GET #new' do
     it 'returns http success' do
       @request.env['devise.mapping'] = Devise.mappings[:user]
@@ -10,4 +12,27 @@ describe Auth::PasswordsController, type: :controller do
       expect(response).to have_http_status(:success)
     end
   end
+
+  describe 'GET #edit' do
+    let(:user) { Fabricate(:user) }
+
+    before do
+      request.env['devise.mapping'] = Devise.mappings[:user]
+      @token = user.send_reset_password_instructions
+    end
+
+    context 'with valid reset_password_token' do
+      it 'returns http success' do
+        get :edit, params: { reset_password_token: @token }
+        expect(response).to have_http_status(:success)
+      end
+    end
+
+    context 'with invalid reset_password_token' do
+      it 'redirects to #new' do
+        get :edit, params: { reset_password_token: 'some_invalid_value' }
+        expect(response).to redirect_to subject.new_password_path(subject.send(:resource_name))
+      end
+    end
+  end
 end