/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.services.session;
import static org.junit.Assert.*;
import java.util.List;
import org.dspace.services.CachingService;
import org.dspace.services.model.Cache;
import org.dspace.services.model.CacheConfig;
import org.dspace.services.model.Session;
import org.dspace.services.model.CacheConfig.CacheScope;
import org.dspace.services.sessions.SessionRequestServiceImpl;
import org.dspace.test.DSpaceAbstractKernelTest;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
/**
* Testing the request and session services
*
* @author Aaron Zeckoski (azeckoski @ gmail.com)
*/
public class SessionRequestServiceImplTest extends DSpaceAbstractKernelTest {
private SessionRequestServiceImpl sessionRequestService;
private CachingService cachingService;
@Before
public void before() {
sessionRequestService = getService(SessionRequestServiceImpl.class);
cachingService = getService(CachingService.class);
}
@After
public void after() {
sessionRequestService.clear();
cachingService.resetCaches();
sessionRequestService = null;
cachingService = null;
}
/**
* Test method for {@link org.dspace.services.sessions.SessionRequestServiceImpl#startRequest()}.
*/
@Test
public void testStartRequest() {
String requestId = sessionRequestService.startRequest();
assertNotNull(requestId);
sessionRequestService.endRequest(null);
}
/**
* Test method for {@link org.dspace.services.sessions.SessionRequestServiceImpl#endRequest(java.lang.Exception)}.
*/
@Test
public void testEndRequest() {
String requestId = sessionRequestService.startRequest();
assertNotNull(requestId);
sessionRequestService.endRequest(null);
assertNull( getRequestCache() );
}
/**
* Test method for {@link org.dspace.services.sessions.SessionRequestServiceImpl#registerRequestInterceptor(org.dspace.services.model.RequestInterceptor)}.
*/
@Test
public void testRegisterRequestListener() {
MockRequestInterceptor mri = new MockRequestInterceptor();
sessionRequestService.registerRequestInterceptor(mri);
assertEquals("", mri.state);
assertEquals(0, mri.hits);
String requestId = sessionRequestService.startRequest();
assertEquals(1, mri.hits);
assertTrue( mri.state.startsWith("start") );
assertTrue( mri.state.contains(requestId));
sessionRequestService.endRequest(null);
assertEquals(2, mri.hits);
assertTrue( mri.state.startsWith("end") );
assertTrue( mri.state.contains("success"));
assertTrue( mri.state.contains(requestId));
requestId = sessionRequestService.startRequest();
assertEquals(3, mri.hits);
assertTrue( mri.state.startsWith("start") );
assertTrue( mri.state.contains(requestId));
sessionRequestService.endRequest( new RuntimeException("Oh Noes!") );
assertEquals(4, mri.hits);
assertTrue( mri.state.startsWith("end") );
assertTrue( mri.state.contains("fail"));
assertTrue( mri.state.contains(requestId));
try {
sessionRequestService.registerRequestInterceptor(null);
fail("should have thrown exception");
} catch (IllegalArgumentException e) {
assertNotNull(e.getMessage());
}
}
/**
* Test method for {@link org.dspace.services.sessions.SessionRequestServiceImpl#getCurrentSession()}.
*/
@Test
public void testGetCurrentSession() {
Session current = sessionRequestService.getCurrentSession();
assertNull(current);
}
/**
* Test method for {@link org.dspace.services.sessions.SessionRequestServiceImpl#getCurrentSessionId()}.
*/
@Test
public void testGetCurrentSessionId() {
String current = sessionRequestService.getCurrentSessionId();
assertNull(current);
}
/**
* Test method for {@link org.dspace.services.sessions.SessionRequestServiceImpl#getCurrentUserId()}.
*/
@Test
public void testGetCurrentUserId() {
String current = sessionRequestService.getCurrentUserId();
assertNull(current);
}
/**
* Test method for {@link org.dspace.services.sessions.SessionRequestServiceImpl#getCurrentRequestId()}.
*/
@Test
public void testGetCurrentRequestId() {
String requestId = sessionRequestService.getCurrentRequestId();
assertNull(requestId); // no request yet
String rid = sessionRequestService.startRequest();
requestId = sessionRequestService.getCurrentRequestId();
assertNotNull(requestId);
assertEquals(rid, requestId);
sessionRequestService.endRequest(null);
requestId = sessionRequestService.getCurrentRequestId();
assertNull(requestId); // no request yet
}
/**
* @return the request storage cache
*/
private Cache getRequestCache() {
return cachingService.getCache(CachingService.REQUEST_CACHE, new CacheConfig(CacheScope.REQUEST));
}
}