/* ==================================================================
* Created [2009-4-27 下午11:32:55] by Jon.King
* ==================================================================
* TSS
* ==================================================================
* mailTo:jinpujun@hotmail.com
* Copyright (c) Jon.King, 2009-2012
* ==================================================================
*/
package com.jinhe.tss.core.sso.identity.identifier;
import javax.servlet.http.Cookie;
import junit.framework.TestCase;
import org.springframework.mock.web.MockHttpServletRequest;
import org.springframework.mock.web.MockHttpSession;
import com.jinhe.tss.core.exception.UserIdentificationException;
import com.jinhe.tss.core.sso.IUserIdentifier;
import com.jinhe.tss.core.sso.IdentityCard;
import com.jinhe.tss.core.sso.TokenUtil;
import com.jinhe.tss.core.sso.appserver.AppServer;
import com.jinhe.tss.core.sso.context.Context;
import com.jinhe.tss.core.sso.context.RequestContext;
import com.jinhe.tss.core.sso.identifier.DemoOperator;
import com.jinhe.tss.core.sso.identifier.OnlineUserIdentifier;
import com.jinhe.tss.core.sso.identity.MockAppServerStorer;
import com.jinhe.tss.core.sso.identity.MockApplicationContext;
import com.jinhe.tss.core.sso.identity.MockIdentityTranslatorFactory;
import com.jinhe.tss.core.sso.identity.MockOnlineUserManagerFactory;
import com.jinhe.tss.core.sso.online.OnlineUserManagerFactory;
public class OnlineUserIdentifierTest extends TestCase {
private IUserIdentifier identifier;
private String token;
protected void setUp() throws Exception {
super.setUp();
MockOnlineUserManagerFactory.init();
MockIdentityTranslatorFactory.init();
MockAppServerStorer storer = new MockAppServerStorer();
AppServer server = new AppServer();
server.setCode("Core");
server.setName("Core");
server.setUserDepositoryCode("tss");
storer.putAppServer("Core", server);
Context.initApplicationContext(new MockApplicationContext(storer, "Core"));
Long userId = 1L;
MockHttpSession session = new MockHttpSession();
token = TokenUtil.createToken(session.getId(), userId);
MockHttpServletRequest request = new MockHttpServletRequest();
request.setCookies(new Cookie[] { new Cookie(RequestContext.USER_TOKEN, token) });
request.setSession(session);
Context.initRequestContext(request);
IdentityCard card = new IdentityCard(token, new DemoOperator(userId));
Context.initIdentityInfo(card);
identifier = new OnlineUserIdentifier();
}
protected void tearDown() throws Exception {
super.tearDown();
identifier = null;
token = null;
}
/** Test method for {@link com.jinhe.tss.core.sso.identifier.OnlineUserIdentifier#identify()}. */
public final void testIdentify4NotLogin() {
IdentityCard card = null;
try {
card = identifier.identify();
} catch (UserIdentificationException e) {
fail("UserIdentificationException");
}
assertNull(card);
}
/** Test method for {@link com.jinhe.tss.core.sso.identifier.OnlineUserIdentifier#identify()}. */
public final void testIdentify4Login() {
MockOnlineUserManagerFactory.getManager().register(token, "Test", "SessionId", new Long(30), null);
IdentityCard card = null;
try {
card = identifier.identify();
} catch (UserIdentificationException e) {
fail("UserIdentificationException");
}
assertNotNull(card);
assertEquals("JinPujun", card.getUserName());
assertTrue(OnlineUserManagerFactory.getManager().isOnline(card.getToken()));
}
}