com.github.mike10004.stormpathacctmgr.PasswordResetTest.java Source code

Java tutorial

Introduction

Here is the source code for com.github.mike10004.stormpathacctmgr.PasswordResetTest.java

Source

/*
 * (c) 2015 Mike Chaberski <mike10004@users.noreply.github.com>
 *
 * Distributed under MIT License.
 */
package com.github.mike10004.stormpathacctmgr;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.stormpath.sdk.account.Account;
import com.stormpath.sdk.application.Application;
import java.io.IOException;
import java.util.Map;
import java.util.TreeMap;
import javax.servlet.ServletContext;
import static org.easymock.EasyMock.createNiceMock;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.replay;
import org.junit.Test;
import static org.junit.Assert.*;
import org.springframework.mock.web.MockServletContext;

/**
 *
 * @author mchaberski
 */
public class PasswordResetTest {

    private transient final Gson gson = new GsonBuilder().setPrettyPrinting().create();

    @Test
    public void testSendResetRequest() throws IOException {
        System.out.println("testSendResetRequest");
        ServletContext servletContext = createServletContext();
        String email = "somebody@example.com";
        Application application = createNiceMock(Application.class);
        Account account = createNiceMock(Account.class);
        expect(account.getEmail()).andReturn(email).anyTimes();
        expect(application.sendPasswordResetEmail(email)).andReturn(account).times(1);
        replay(application, account);

        final Stormpaths stormpaths = createStormpaths(servletContext, application);
        PasswordReset instance = new PasswordReset() {

            @Override
            protected Stormpaths createStormpaths() {
                return stormpaths;
            }

        };
        instance.servletContext = servletContext;
        String response = instance.sendResetRequest(email);

        Map<String, Object> responseData = gson.fromJson(response, TreeMap.class);
        System.out.println("response: " + responseData);
        String actualEmail = (String) responseData.get("email");
        assertEquals(email, actualEmail);
    }

    @Test
    public void testPerformReset() throws IOException {
        System.out.println("testPerformReset");
        ServletContext servletContext = createServletContext();
        String emailAddress = "somebody@example.com";
        String token = "981ng9014ng4nh9014h901nh4jhqg8rejg089rjg09zahg49hqg08";
        Application application = createNiceMock(Application.class);
        Account account = createNiceMock(Account.class);
        expect(account.getEmail()).andReturn(emailAddress).anyTimes();
        String newPassword = "shibboleth";
        expect(application.resetPassword(token, newPassword)).andReturn(account).times(1);
        replay(application, account);

        final Stormpaths stormpaths = createStormpaths(servletContext, application);
        PasswordReset instance = new PasswordReset() {

            @Override
            protected Stormpaths createStormpaths() {
                return stormpaths;
            }

        };
        instance.servletContext = servletContext;

        String responseJson = instance.performReset(emailAddress, token, newPassword);
        Map<String, Object> responseData = gson.fromJson(responseJson, TreeMap.class);
        System.out.println("response: " + responseData);
        String actualEmail = (String) responseData.get("email");
        assertEquals(emailAddress, actualEmail);

    }

    protected MockServletContext createServletContext() {
        MockServletContext context = new MockServletContext();
        return context;
    }

    protected Stormpaths createStormpaths(ServletContext servletContext, final Application application) {
        return new Stormpaths() {

            @Override
            public Application buildApplication() {
                return application;
            }

        };
    }
}