From f27c0483ca9dca697830208a2fb5e109a0a6133f Mon Sep 17 00:00:00 2001
From: Saritha <saritha.ts@experionglobal.com>
Date: Tue, 27 Oct 2015 18:09:25 +0530
Subject: [PATCH] Feature spec for change password on mobile website  Fix #6372

---
 features/mobile/change_password.feature    | 55 ++++++++++++++++++++++
 features/step_definitions/session_steps.rb | 11 +++++
 features/support/user_cuke_helpers.rb      |  5 ++
 3 files changed, 71 insertions(+)
 create mode 100644 features/mobile/change_password.feature

diff --git a/features/mobile/change_password.feature b/features/mobile/change_password.feature
new file mode 100644
index 0000000000..925e3587c1
--- /dev/null
+++ b/features/mobile/change_password.feature
@@ -0,0 +1,55 @@
+@javascript @mobile
+Feature: Change password
+  As a mobile user
+  I want to Change my password
+
+
+  Scenario: Change my password
+    Given I am signed in
+    When I go to the users edit page
+    And I fill out change password section with my password and "newsecret" and "newsecret"
+    And I press "Change password"
+    Then I should see "Password changed"
+    And I should be on the new user session page
+    When I sign in with password "newsecret"
+    Then I should be on the stream page
+
+  Scenario: Attempt to change my password with invalid input
+    Given I am signed in
+    When I go to the edit user page
+    And I fill out change password section with my password and "too" and "short"
+    And I press "Change password"
+    Then I should see "Password is too short"
+    And I should see "Password confirmation doesn't match"
+
+  Scenario: Reset my password
+    Given a user named "Georges Abitbol" with email "forgetful@users.net"
+    And I am on forgot password page
+    When I fill out forgot password form with "forgetful@users.net"
+    And I submit forgot password form
+    Then I should see "You will receive an email with instructions"
+    When I follow the "Change my password" link from the last sent email
+    And I fill out reset password form with "supersecret" and "supersecret"
+    And I submit reset password form
+    Then I should be on the stream page
+    When I sign out manually on the mobile website
+    And I sign in manually as "georges_abitbol" with password "supersecret" on the mobile website
+    Then I should be on the stream page
+
+  Scenario: Attempt to reset password with invalid password
+    Given a user named "Georges Abitbol" with email "forgetful@users.net"
+    And I am on forgot password page
+    When I fill out forgot password form with "forgetful@users.net"
+    And I submit forgot password form
+    And I follow the "Change my password" link from the last sent email
+    And I fill out reset password form with "too" and "short"
+    And I press "Change my password"
+    Then I should be on the user password page
+    And I should see "Password is too short"
+    And I should see "Password confirmation doesn't match"
+
+  Scenario: Attempt to reset password with invalid email
+    Given I am on forgot password page
+    When I fill out forgot password form with "notanemail"
+    And I submit forgot password form
+    Then I should see "No account with this email exists"
diff --git a/features/step_definitions/session_steps.rb b/features/step_definitions/session_steps.rb
index 4179799fd8..69ee9d6fd1 100644
--- a/features/step_definitions/session_steps.rb
+++ b/features/step_definitions/session_steps.rb
@@ -28,6 +28,13 @@ When /^I (?:sign|log) in as "([^"]*)" on the mobile website$/ do |email|
   confirm_login_mobile
 end
 
+When /^I (?:sign|log) in manually as "([^"]*)" with password "([^"]*)" on the mobile website$/ do |username, password|
+  @me = User.find_by_username(username)
+  @me.password ||= password
+  manual_login
+  confirm_login_mobile
+end
+
 When /^I (?:sign|log) in with password "([^"]*)"$/ do |password|
   @me.password = password
   automatic_login
@@ -66,6 +73,10 @@ When /^I (?:log|sign) out manually$/ do
   manual_logout
 end
 
+When /^I (?:log|sign) out manually on the mobile website$/ do
+  manual_logout_mobile
+end
+
 Then(/^I should not be able to sign up$/) do
   confirm_not_signed_up
 end
diff --git a/features/support/user_cuke_helpers.rb b/features/support/user_cuke_helpers.rb
index 54a986ae11..cd2cc1ca11 100644
--- a/features/support/user_cuke_helpers.rb
+++ b/features/support/user_cuke_helpers.rb
@@ -64,6 +64,11 @@ module UserCukeHelpers
     find("#user_menu li:last-child a").click
   end
 
+  def manual_logout_mobile
+    find("#menu-badge").click
+    find("#drawer ul li:last-child a").click
+  end
+
   def fill_in_new_user_form
     @username = "ohai"
     fill_in('user_username', with: @username)
-- 
GitLab