/* * oxAuth is available under the MIT License (2008). See http://opensource.org/licenses/MIT for full text. * * Copyright (c) 2014, Gluu */ package org.xdi.oxauth.comp; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertNotNull; import static org.testng.Assert.assertTrue; import java.util.Date; import java.util.HashMap; import java.util.Map; import javax.inject.Inject; import org.testng.Assert; import org.testng.annotations.Parameters; import org.testng.annotations.Test; import org.xdi.oxauth.BaseComponentTest; import org.xdi.oxauth.model.common.SessionIdState; import org.xdi.oxauth.model.common.SessionState; import org.xdi.oxauth.service.SessionStateService; import org.xdi.oxauth.service.UserService; /** * @author Yuriy Zabrovarnyy * @author Javier Rojas Blum * @author Yuriy Movchan * @version December 15, 2015 */ public class SessionStateServiceTest extends BaseComponentTest { @Inject private SessionStateService m_service; @Inject private UserService userService; private SessionState generateSession(String userInum) { String userDn = userService.getDnForUser(userInum); return m_service.generateUnauthenticatedSessionState(userDn, new Date(), SessionIdState.UNAUTHENTICATED, new HashMap<String, String>(), true); } @Parameters({ "userInum" }) @Test public void statePersistence(String userInum) { String userDn = userService.getDnForUser(userInum); SessionState newId = m_service.generateAuthenticatedSessionState(userDn); Assert.assertEquals(newId.getState(), SessionIdState.AUTHENTICATED); Map<String, String> sessionAttributes = new HashMap<String, String>(); sessionAttributes.put("k1", "v1"); newId.setSessionAttributes(sessionAttributes); m_service.updateSessionState(newId); final SessionState fresh = m_service.getSessionById(newId.getId()); Assert.assertEquals(fresh.getState(), SessionIdState.AUTHENTICATED); Assert.assertTrue(fresh.getSessionAttributes().containsKey("k1")); Assert.assertTrue(fresh.getSessionAttributes().containsValue("v1")); } @Parameters({ "userInum" }) @Test public void testUpdateLastUsedDate(String userInum) { SessionState m_sessionState = generateSession(userInum); final SessionState fromLdap1 = m_service.getSessionById(m_sessionState.getId()); final Date createdDate = m_sessionState.getLastUsedAt(); System.out.println("Created date = " + createdDate); Assert.assertEquals(createdDate, fromLdap1.getLastUsedAt()); sleepSeconds(1); m_service.updateSessionState(m_sessionState); final SessionState fromLdap2 = m_service.getSessionById(m_sessionState.getId()); System.out.println("Updated date = " + fromLdap2.getLastUsedAt()); Assert.assertTrue(createdDate.before(fromLdap2.getLastUsedAt())); } @Parameters({ "userInum" }) @Test public void testUpdateAttributes(String userInum) { SessionState m_sessionState = generateSession(userInum); final String clientId = "testClientId"; final SessionState fromLdap1 = m_service.getSessionById(m_sessionState.getId()); final Date createdDate = m_sessionState.getLastUsedAt(); assertEquals(createdDate, fromLdap1.getLastUsedAt()); assertFalse(fromLdap1.isPermissionGrantedForClient(clientId)); sleepSeconds(1); m_sessionState.setAuthenticationTime(new Date()); m_sessionState.addPermission(clientId, true); m_service.updateSessionState(m_sessionState); final SessionState fromLdap2 = m_service.getSessionById(m_sessionState.getId()); assertTrue(createdDate.before(fromLdap2.getLastUsedAt())); assertNotNull(fromLdap2.getAuthenticationTime()); assertTrue(fromLdap2.isPermissionGrantedForClient(clientId)); } }