com.formkiq.core.service.UserServiceImplTest.java Source code

Java tutorial

Introduction

Here is the source code for com.formkiq.core.service.UserServiceImplTest.java

Source

/*
 * Copyright (C) 2016 FormKiQ Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.formkiq.core.service;

import static org.easymock.EasyMock.capture;
import static org.easymock.EasyMock.expect;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;

import java.util.Date;
import java.util.UUID;

import org.apache.commons.lang3.time.DateUtils;
import org.easymock.Capture;
import org.easymock.EasyMock;
import org.easymock.EasyMockRunner;
import org.easymock.EasyMockSupport;
import org.easymock.Mock;
import org.easymock.TestSubject;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.test.util.ReflectionTestUtils;
import org.springframework.util.StringUtils;

import com.formkiq.core.dao.UserDao;
import com.formkiq.core.domain.User;
import com.formkiq.core.domain.type.UserDTO;
import com.formkiq.core.domain.type.UserListDTO;
import com.formkiq.core.domain.type.UserRole;
import com.formkiq.core.domain.type.UserStatus;
import com.formkiq.core.util.DateService;

/**
 * UserServiceImplTest.
 *
 */
@RunWith(EasyMockRunner.class)
public class UserServiceImplTest extends EasyMockSupport {

    /** TestSubject. */
    @TestSubject
    private UserServiceImpl service = new UserServiceImpl();

    /** Mock. */
    @Mock
    private DateService dateService;

    /** Mock. */
    @Mock
    private FolderService folderService;

    /** SpringSecurityService. */
    @Mock
    private SpringSecurityService securityService;

    /** SystemPropertyService. */
    @Mock
    private SystemPropertyService systemPropertyService;

    /** Mock. */
    @Mock
    private User user;

    /** Mock. */
    @Mock
    private UserDao userDao;

    /** Capture<User>. */
    private Capture<User> capture = EasyMock.<User>newCapture();

    /**
     * Before.
     */
    @Before
    public void before() {
        ReflectionTestUtils.setField(this.service, "passwordEncoder", new BCryptPasswordEncoder());
    }

    /**
     * testCreateUser01().
     */
    @SuppressWarnings("boxing")
    @Test
    public void testCreateUser01() {
        // given
        String clientid = "acme";
        String email = "email@formkiq.com";
        String password = "pass";
        UserStatus status = UserStatus.ACTIVE;
        UserRole role = UserRole.ROLE_USER;
        String loginToken = null;
        User u = new User();

        // when
        expect(this.securityService.isAdmin()).andReturn(Boolean.FALSE);
        expect(this.systemPropertyService.isInviteOnly()).andReturn(false);
        expect(this.userDao.findUser(email)).andReturn(null);
        expect(this.userDao.saveUser(capture(this.capture))).andReturn(u);

        replayAll();
        User result = this.service.createUser(clientid, email, password, status, role, loginToken);

        // then
        verifyAll();
        assertNotNull(result);
        assertNotEquals(password, u.getPassword());
    }

    /**
      * testCreateUser02().
      * invalid email
      */
    @SuppressWarnings("boxing")
    @Test
    public void testCreateUser02() {
        // given
        String clientid = "acme";
        String email = "email";
        String password = "pass";
        UserStatus status = UserStatus.ACTIVE;
        UserRole role = UserRole.ROLE_USER;
        String loginToken = null;

        // when
        expect(this.securityService.isAdmin()).andReturn(Boolean.FALSE);
        expect(this.systemPropertyService.isInviteOnly()).andReturn(false);

        replayAll();

        try {
            this.service.createUser(clientid, email, password, status, role, loginToken);
        } catch (PreconditionFailedException e) {

            // then
            verifyAll();

            assertEquals("Invalid Email email", e.getMessage());
        }
    }

    /**
     * testCreateUser03().
     * missing password
     */
    @SuppressWarnings("boxing")
    @Test
    public void testCreateUser03() {
        // given
        String clientid = "acme";
        String email = "email@formkiq.com";
        String password = null;
        UserStatus status = UserStatus.ACTIVE;
        UserRole role = UserRole.ROLE_USER;
        String loginToken = null;

        // when
        expect(this.securityService.isAdmin()).andReturn(Boolean.FALSE);
        expect(this.systemPropertyService.isInviteOnly()).andReturn(false);
        replayAll();

        try {
            this.service.createUser(clientid, email, password, status, role, loginToken);
        } catch (PreconditionFailedException e) {

            // then
            verifyAll();

            assertEquals("Password required", e.getMessage());
        }
    }

    /**
     * testCreateUser04().
     * missing status
     */
    @SuppressWarnings("boxing")
    @Test
    public void testCreateUser04() {
        // given
        String clientid = "acme";
        String email = "email@formkiq.com";
        String password = "ASD";
        UserStatus status = null;
        UserRole role = UserRole.ROLE_USER;
        String loginToken = null;

        // when
        expect(this.securityService.isAdmin()).andReturn(Boolean.FALSE);
        expect(this.systemPropertyService.isInviteOnly()).andReturn(false);
        replayAll();

        try {
            this.service.createUser(clientid, email, password, status, role, loginToken);
        } catch (PreconditionFailedException e) {

            // then
            verifyAll();

            assertEquals("UserStatus required", e.getMessage());
        }
    }

    /**
     * testCreateUser05().
     * missing role
     */
    @SuppressWarnings("boxing")
    @Test
    public void testCreateUser05() {
        // given
        String clientid = "acme";
        String email = "email@formkiq.com";
        String password = "ASD";
        UserStatus status = UserStatus.ACTIVE;
        UserRole role = null;
        String loginToken = null;

        // when
        expect(this.securityService.isAdmin()).andReturn(Boolean.FALSE);
        expect(this.systemPropertyService.isInviteOnly()).andReturn(false);
        replayAll();

        try {
            this.service.createUser(clientid, email, password, status, role, loginToken);
        } catch (PreconditionFailedException e) {

            // then
            verifyAll();

            assertEquals("UserRole required", e.getMessage());
        }
    }

    /**
     * testCreateUser06().
     * missing permissions
     */
    @SuppressWarnings("boxing")
    @Test
    public void testCreateUser06() {
        // given
        User u = null;
        String clientid = "acme";
        String email = "email@formkiq.com";
        String password = "ASD";
        UserStatus status = UserStatus.ACTIVE;
        UserRole role = UserRole.ROLE_ADMIN;
        String loginToken = null;

        // when
        expect(this.securityService.isAdmin()).andReturn(Boolean.FALSE);
        expect(this.userDao.findUser(email)).andReturn(u);
        expect(this.systemPropertyService.isInviteOnly()).andReturn(false);
        expect(this.userDao.saveUser(capture(this.capture))).andReturn(u);
        expect(this.folderService.saveFolder(u, null, email)).andReturn(null);
        replayAll();

        try {
            this.service.createUser(clientid, email, password, status, role, loginToken);
        } catch (PreconditionFailedException e) {

            // then
            verifyAll();

            assertEquals("UserPermission required", e.getMessage());
        }
    }

    /**
     * testCreateUser07().
     * email already registered
     */
    @SuppressWarnings("boxing")
    @Test
    public void testCreateUser07() {
        // given
        User u = new User();
        String clientid = "acme";
        String email = "email@formkiq.com";
        String password = "ASD";
        UserStatus status = UserStatus.ACTIVE;
        UserRole role = UserRole.ROLE_ADMIN;
        String loginToken = null;

        // when
        expect(this.securityService.isAdmin()).andReturn(Boolean.FALSE);
        expect(this.systemPropertyService.isInviteOnly()).andReturn(false);
        expect(this.userDao.findUser(email)).andReturn(u);

        replayAll();

        try {
            this.service.createUser(clientid, email, password, status, role, loginToken);
        } catch (PreconditionFailedException e) {

            // then
            verifyAll();

            assertEquals("Email already registered", e.getMessage());
        }
    }

    /**
      * testDeleteUser01().
      * null
      */
    @Test
    public void testDeleteUser01() {
        // given
        String email = null;

        // when
        replayAll();

        try {
            this.service.deleteUser(email);
            fail();

        } catch (Exception e) {
            // then
            verifyAll();

            assertEquals("Invalid Email", e.getMessage());
        }
    }

    /**
      * testDeleteUser02().
      * user not found
      */
    @Test
    public void testDeleteUser02() {
        // given
        User u = null;
        String email = "test";

        // when
        expect(this.userDao.findUser(email)).andReturn(u);

        replayAll();

        try {
            this.service.deleteUser(email);
            fail();

        } catch (Exception e) {
            // then
            verifyAll();

            assertEquals("Email test not found", e.getMessage());
        }
    }

    /**
      * testDeleteUser03().
      * only 1 user
      */
    @SuppressWarnings("boxing")
    @Test
    public void testDeleteUser03() {
        // given
        final int usercount = 1;
        User u = new User();
        u.setRole(UserRole.ROLE_ADMIN);
        String email = "test";

        // when
        expect(this.userDao.findUser(email)).andReturn(u);
        expect(this.userDao.getAdminUserCount()).andReturn(usercount);

        replayAll();

        try {
            this.service.deleteUser(email);
            fail();

        } catch (Exception e) {
            // then
            verifyAll();

            assertEquals("Cannot delete, only admin", e.getMessage());
        }
    }

    /**
      * testDeleteUser04().
      * more than 1 admin
      */
    @SuppressWarnings("boxing")
    @Test
    public void testDeleteUser04() {
        // given
        final int usercount = 5;
        User u = new User();
        u.setRole(UserRole.ROLE_ADMIN);
        String email = "test";

        // when
        expect(this.userDao.findUser(email)).andReturn(u);
        expect(this.userDao.getAdminUserCount()).andReturn(usercount);
        this.userDao.deleteUser(u);

        replayAll();
        this.service.deleteUser(email);

        // then
        verifyAll();
    }

    /**
      * testDeleteUser05().
      * delete normal user 1 admin
      */
    @Test
    public void testDeleteUser05() {
        // given
        User u = new User();
        u.setRole(UserRole.ROLE_USER);
        String email = "test";

        // when
        expect(this.userDao.findUser(email)).andReturn(u);
        this.userDao.deleteUser(u);

        replayAll();
        this.service.deleteUser(email);

        // then
        verifyAll();
    }

    /**
     * testFindActiveUser01().
     */
    @Test
    public void testFindActiveUser01() {
        // given
        String email = "test@";
        String pass = "pass";
        UUID userid = UUID.randomUUID();
        User u = new User();
        u.setUserid(userid);
        u.setStatus(UserStatus.ACTIVE);

        String generatedSecuredPasswordHash = this.service.generatedSecuredPasswordHash(pass);
        u.setPassword(generatedSecuredPasswordHash);

        // when
        expect(this.userDao.findUser(email)).andReturn(u);

        replayAll();

        UserDetails result = this.service.findActiveUser(email, pass);

        // then
        verifyAll();
        assertEquals(result, u);
    }

    /**
     * testFindActiveUser02().
     *
     * wrong password
     */
    @Test(expected = AuthenticationFailureException.class)
    public void testFindActiveUser02() {
        // given
        String email = "test@";
        String pass = "pass";
        User u = new User();
        u.setStatus(UserStatus.ACTIVE);

        String pwHash = this.service.generatedSecuredPasswordHash(pass + "1");
        u.setPassword(pwHash);

        // when
        expect(this.userDao.findUser(email)).andReturn(u);

        replayAll();

        try {
            this.service.findActiveUser(email, pass);
        } finally {
            // then
            verifyAll();
        }
    }

    /**
     * testFindActiveUser03().
     *
     * inactive user
     */
    @Test(expected = AuthenticationFailureException.class)
    public void testFindActiveUser03() {
        // given
        String email = "test@";
        String pass = "pass";
        User u = new User();
        u.setStatus(UserStatus.INVITE);

        // when
        expect(this.userDao.findUser(email)).andReturn(u);

        replayAll();

        try {
            this.service.findActiveUser(email, pass);
        } finally {
            // then
            verifyAll();
        }
    }

    /**
     * testFindActiveUser04().
     * null user
     */
    @Test(expected = AuthenticationFailureException.class)
    public void testFindActiveUser04() {
        // given
        String email = "test@";
        String pass = "pass";
        User u = null;

        // when
        expect(this.userDao.findUser(email)).andReturn(u);

        replayAll();

        try {
            this.service.findActiveUser(email, pass);
        } finally {
            // then
            verifyAll();
        }
    }

    /**
     * testFindActiveUser05().
     * null email
     */
    @Test(expected = AuthenticationFailureException.class)
    public void testFindActiveUser05() {
        // given
        String email = null;
        String pass = "pass";

        // when
        replayAll();
        try {
            this.service.findActiveUser(email, pass);
        } finally {
            // then
            verifyAll();
        }
    }

    /**
     * testFindActiveUser06().
     * null password
     */
    @Test(expected = AuthenticationFailureException.class)
    public void testFindActiveUser06() {
        // given
        String email = "email";
        String pass = null;

        // when
        replayAll();
        UserDetails result = this.service.findActiveUser(email, pass);

        // then
        verifyAll();
        assertNull(result);
    }

    /**
     * testFindUser01().
     */
    @Test
    public void testFindUser01() {
        // given
        String email = "test";
        UserDTO u = new UserDTO();
        u.setPassword("asdasd");

        // when
        expect(this.userDao.findUserDTO(email)).andReturn(u);

        replayAll();
        UserDTO result = this.service.findUser(email, false);

        // then
        verifyAll();
        assertNotNull(result);
        assertNull(u.getPassword());
    }

    /**
     * testFindUser02().
     * null email
     */
    @Test(expected = AuthenticationFailureException.class)
    public void testFindUser02() {
        // given
        String email = null;

        // when
        replayAll();

        try {
            this.service.findUser(email, false);
        } finally {
            // then
            verifyAll();
        }
    }

    /**
    * testFindUsers01().
    */
    @Test
    public void testFindUsers01() {
        // given
        String token = null;
        String text = null;
        UserListDTO dto = new UserListDTO();

        // when
        expect(this.userDao.findUsers(null, null)).andReturn(dto);

        replayAll();
        UserListDTO result = this.service.findUsers(token, text);

        // then
        verifyAll();

        assertEquals(dto, result);
    }

    /**
    * testGenerateResetToken01().
    */
    @Test
    public void testGenerateResetToken01() {
        // given
        String email = "ASD";
        Date date = new Date();
        User u = new User();
        u.setStatus(UserStatus.ACTIVE);

        // when
        expect(this.dateService.now()).andReturn(date);
        expect(this.userDao.findUser(email)).andReturn(u);
        expect(this.userDao.saveUser(u)).andReturn(u);

        replayAll();
        this.service.generateResetToken(email);

        // then
        verifyAll();
        assertFalse(StringUtils.isEmpty(u.getResetToken()));
        assertEquals(date, u.getResetInsertedDate());
    }

    /**
    * testGenerateSecurityToken01().
    */
    @Test
    public void testGenerateSecurityToken01() {
        // given

        // when
        replayAll();
        String result = this.service.generateSecurityToken();

        // then
        verifyAll();
        assertNotNull(result);
        assertFalse(result.contains("-"));
    }

    /**
     * testSaveUser01().
     * Save new user
     */
    @SuppressWarnings("boxing")
    @Test
    public void testSaveUser01() {
        // given
        String clientid = "acme";
        String email = "test@formkiq.com";
        String password = "sample";
        UserRole role = UserRole.ROLE_ADMIN;
        UserStatus status = UserStatus.ACTIVE;
        String loginToken = null;

        // when
        expect(this.securityService.isAdmin()).andReturn(Boolean.FALSE);
        expect(this.systemPropertyService.isInviteOnly()).andReturn(false);
        expect(this.userDao.findUser(email)).andReturn(null).times(2);
        expect(this.userDao.saveUser(capture(this.capture))).andReturn(this.user);
        replayAll();

        User result = this.service.saveUser(clientid, email, password, role, status, loginToken);

        // then
        verifyAll();

        assertEquals(this.user, result);
        assertNull(this.capture.getValue().getUserid());
        assertEquals(email, this.capture.getValue().getEmail());
        assertEquals(status, this.capture.getValue().getStatus());
        assertEquals(role, this.capture.getValue().getRole());
        assertNotEquals(password, this.capture.getValue().getPassword());
    }

    /**
     * testSaveUser02().
     * update existing user
     */
    @Test
    public void testSaveUser02() {
        // given
        String clientid = "acme";
        String email = "test@formkiq.com";
        String password = "sample";
        UserRole role = UserRole.ROLE_ADMIN;
        UserStatus status = UserStatus.ACTIVE;
        UUID userid = UUID.randomUUID();
        String loginToken = null;

        User u = new User();
        u.setUserid(userid);
        u.setEmail(email);
        u.setStatus(UserStatus.DISABLE);
        u.setRole(UserRole.ROLE_USER);

        // when
        expect(this.userDao.findUser(email)).andReturn(u);
        expect(this.userDao.saveUser(capture(this.capture))).andReturn(u);

        replayAll();

        User result = this.service.saveUser(clientid, email, password, role, status, loginToken);

        // then
        verifyAll();

        assertEquals(result, this.capture.getValue());
        assertEquals(userid, this.capture.getValue().getUserid());
        assertEquals(email, this.capture.getValue().getEmail());
        assertEquals(status, this.capture.getValue().getStatus());
        assertEquals(role, this.capture.getValue().getRole());
        assertNotEquals(password, this.capture.getValue().getPassword());
    }

    /**
     * testSaveUser03().
     * Add client to existing user
     */
    @Test
    public void testSaveUser03() {
        // given
        String clientid = "acme";
        String email = "test@formkiq.com";
        String password = "sample";
        UserRole role = UserRole.ROLE_ADMIN;
        UserStatus status = UserStatus.ACTIVE;
        String loginToken = null;
        User u = new User();

        // when
        expect(this.userDao.findUser(email)).andReturn(u);
        expect(this.userDao.saveUser(capture(this.capture))).andReturn(u);

        replayAll();

        User result = this.service.saveUser(clientid, email, password, role, status, loginToken);

        // then
        verifyAll();

        assertEquals(result, this.capture.getValue());
        assertNull(this.capture.getValue().getUserid());
    }

    /**
     * testSaveUser01().
     * Update User with Null Client && Null Password
     */
    @Test
    public void testSaveUser04() {
        // given
        String clientid = "acme";
        String email = "test@formkiq.com";
        String password = null;
        UserRole role = UserRole.ROLE_ADMIN;
        UserStatus status = UserStatus.ACTIVE;
        String loginToken = null;
        User u = new User();

        // when
        expect(this.userDao.findUser(email)).andReturn(u);
        expect(this.userDao.saveUser(capture(this.capture))).andReturn(u);

        replayAll();

        User result = this.service.saveUser(clientid, email, password, role, status, loginToken);

        // then
        verifyAll();

        assertEquals(result, this.capture.getValue());
        assertNull(this.capture.getValue().getUserid());
        assertEquals(role, this.capture.getValue().getRole());
        assertEquals(status, this.capture.getValue().getStatus());
    }

    /**
     * testUpdateLastLogin01().
     */
    @Test
    public void testUpdateLastLogin01() {
        // given
        String email = "test";
        Date date = new Date();

        // when
        this.userDao.updateLastLogin(email, date);
        replayAll();

        this.service.updateLastLogin(email, date);

        // then
        verifyAll();
    }

    /**
     * testUpdateLastUserAgent01().
     * update user agent
     */
    @Test
    public void testUpdateLastUserAgent01() {
        // given
        String email = "test";
        String useragent = "agent";

        // when
        expect(this.securityService.getUserDetails()).andReturn(this.user);
        expect(this.user.getLastUserAgent()).andReturn(null);
        this.userDao.updateLastUserAgent(email, useragent);

        replayAll();
        this.service.updateLastUserAgent(email, useragent);

        // then
        verifyAll();
    }

    /**
     * testUpdateLastUserAgent02().
     * NULL user agent
     */
    @Test
    public void testUpdateLastUserAgent02() {
        // given
        String email = "test";
        String useragent = null;

        // when
        replayAll();
        this.service.updateLastUserAgent(email, useragent);

        // then
        verifyAll();
    }

    /**
     * testUpdateLastUserAgent03().
     * duplicate user agent
     */
    @Test
    public void testUpdateLastUserAgent03() {
        // given
        String email = "test";
        String useragent = "agent";

        // when
        expect(this.securityService.getUserDetails()).andReturn(this.user);
        expect(this.user.getLastUserAgent()).andReturn(useragent);

        replayAll();
        this.service.updateLastUserAgent(email, useragent);

        // then
        verifyAll();
    }

    /**
    * testUpdatePassword01().
    */
    @Test
    public void testUpdatePassword01() {
        // given
        String email = "me@formkiq.com";
        Date now = new Date();
        String newPassword = "new";
        String resettoken = "old";
        String resetTokenHash = this.service.generatedSecuredPasswordHash(resettoken);

        User u = new User();
        u.setResetInsertedDate(now);
        u.setResetToken(resetTokenHash);
        u.setStatus(UserStatus.ACTIVE);

        // when
        expect(this.userDao.findUser(email)).andReturn(u);
        expect(this.dateService.now()).andReturn(now);
        expect(this.userDao.saveUser(u)).andReturn(u);

        replayAll();

        this.service.updatePassword(email, resettoken, newPassword);

        // then
        verifyAll();
        assertNotNull(u.getPassword());
        assertNotEquals(newPassword, u.getPassword());
        assertNotEquals(resettoken, u.getPassword());

        assertNull(u.getResetInsertedDate());
        assertTrue(StringUtils.isEmpty(u.getResetToken()));
    }

    /**
    * testUpdatePassword02().
    * user no reset tokens
    */
    @Test
    public void testUpdatePassword02() {
        // given
        String email = "me@formkiq.com";
        User u = new User();
        String newPassword = "new";
        String resettoken = "old";

        // when
        expect(this.userDao.findUser(email)).andReturn(u);

        replayAll();

        try {
            this.service.updatePassword(email, resettoken, newPassword);
            fail();
        } catch (Exception e) {
            // then
            verifyAll();
            assertEquals("Invalid Old Password or Reset Token", e.getMessage());
        }
    }

    /**
     * testUpdatePassword03().
     * null reset token
     */
    @Test
    public void testUpdatePassword03() {

        // given
        String email = "me@formkiq.com";
        String newPassword = "new";
        String resettoken = null;

        // when
        replayAll();

        try {
            this.service.updatePassword(email, resettoken, newPassword);
            fail();
        } catch (Exception e) {
            // then
            verifyAll();
        }
    }

    /**
     * testUpdatePassword04().
     * ResetToken is expired
     */
    @Test
    public void testUpdatePassword04() {
        // given
        String email = "me@formkiq.com";
        final int resetInsertDate = 25;
        Date now = new Date();
        String newPassword = "new";
        String resettoken = "old";

        String resetToken = this.service.generatedSecuredPasswordHash(resettoken);

        // when
        expect(this.user.getResetToken()).andReturn(resetToken);
        expect(this.user.getResetInsertedDate()).andReturn(DateUtils.addHours(now, -resetInsertDate));
        expect(this.userDao.findUser(email)).andReturn(this.user);
        expect(this.dateService.now()).andReturn(now);

        replayAll();

        try {
            this.service.updatePassword(email, resettoken, newPassword);
            fail();
        } catch (Exception e) {
            // then
            verifyAll();

            assertEquals("Invalid Old Password or Reset Token", e.getMessage());
        }
    }

    /**
     * testUpdatePassword05().
     * user not found
     */
    @Test
    public void testUpdatePassword05() {
        // given
        String email = "me@formkiq.com";
        String newPassword = "new";
        String resettoken = "old";

        // when
        expect(this.userDao.findUser(email)).andReturn(null);

        replayAll();

        try {
            this.service.updatePassword(email, resettoken, newPassword);
            fail();
        } catch (Exception e) {
            // then
            verifyAll();
            assertEquals("Invalid Old Password or Reset Token", e.getMessage());
        }
    }
}