Package com.github.ebnew.ki4so.web.action

Source Code of com.github.ebnew.ki4so.web.action.LogoutActionTest

package com.github.ebnew.ki4so.web.action;

import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import javax.servlet.http.Cookie;

import junit.framework.Assert;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpServletResponse;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.github.ebnew.ki4so.core.app.App;
import com.github.ebnew.ki4so.core.authentication.Credential;
import com.github.ebnew.ki4so.core.service.Ki4soService;
import com.github.ebnew.ki4so.web.utils.WebConstants;

/**
* 登出测试类。
* @author burgess yang
*
*/
public class LogoutActionTest {
 
  @Autowired
  private LogoutAction logoutAction;

  @Before
  public void setUp() throws Exception {
    logoutAction = new LogoutAction();
  }

  @After
  public void tearDown() throws Exception {
  }
 
  @Test
  public void testGetAppList() throws UnsupportedEncodingException {
    //测试准备。
    MockHttpServletRequest request = new MockHttpServletRequest();
    MockHttpServletResponse response = new MockHttpServletResponse();
    CredentialResolver credentialResolver = Mockito.mock(CredentialResolver.class);
    logoutAction.setCredentialResolver(credentialResolver);
   
    Ki4soService ki4soService = Mockito.mock(Ki4soService.class);
    logoutAction.setKi4soService(ki4soService);
   
    Credential credential = Mockito.mock(Credential.class);
   
    //设置预期结果。
    Mockito.when(credentialResolver.resolveCredential(request)).thenReturn(credential);
    List<App> list = new ArrayList<App>();
    App app = new App();
    app.setAppId("1000");
    app.setAppName("测试应用程序1");
    app.setHost("app.com");
    app.setLogoutUrl("http://app.com/logout.do");
    list.add(app);
    Mockito.when(ki4soService.getAppList(credential)).thenReturn(list);
   
    //执行查询。
    logoutAction.getAppList(request, response);
   
    //检查结果。
    Assert.assertEquals("application/x-javascript", response.getContentType());
    Assert.assertEquals("UTF-8", response.getCharacterEncoding());
    //检查输出的jsonp串是否正确。
    String content = response.getContentAsString();
    content = content.trim();
    Assert.assertTrue(content.startsWith("fetchAppList("));
    Assert.assertTrue(content.endsWith(");"));
    String json = content.replaceFirst("fetchAppList\\(", "");
    json = json.replaceFirst("\\);", "");
    JSONArray data = (JSONArray)JSON.parse(json);
    Assert.assertEquals(1, data.size());
    @SuppressWarnings("unchecked")
    Map<String, Object> map = (Map<String, Object>)data.get(0);
    Assert.assertEquals("1000", map.get("appId"));
   
  }
 

  @Test
  public void testLogout() {
    MockHttpServletRequest request = new MockHttpServletRequest();
    MockHttpServletResponse response = new MockHttpServletResponse();
   
    CredentialResolver credentialResolver = Mockito.mock(CredentialResolver.class);
    logoutAction.setCredentialResolver(credentialResolver);
   
    Ki4soService ki4soService = Mockito.mock(Ki4soService.class);
    logoutAction.setKi4soService(ki4soService);
   
    //测试没有cookie的情况。
    logoutAction.logout(request, response);
    Assert.assertEquals(0, response.getCookies().length);
   
    //测试存在cookie,登出后要清除cookie值。
    request = new MockHttpServletRequest();
    response = new MockHttpServletResponse();
    request.setCookies(new Cookie(WebConstants.KI4SO_SERVER_ENCRYPTED_CREDENTIAL_COOKIE_KEY, "dddsd"));
    logoutAction.logout(request, response);
    Assert.assertEquals(1, response.getCookies().length);
    Assert.assertEquals(0, response.getCookies()[0].getMaxAge());
  }

}
TOP

Related Classes of com.github.ebnew.ki4so.web.action.LogoutActionTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.