87d68743726585ee101ba2e7be2cf06cd34ebb80Neil Madden * The contents of this file are subject to the terms of the Common Development and
87d68743726585ee101ba2e7be2cf06cd34ebb80Neil Madden * Distribution License (the License). You may not use this file except in compliance with the
87d68743726585ee101ba2e7be2cf06cd34ebb80Neil Madden * You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the
87d68743726585ee101ba2e7be2cf06cd34ebb80Neil Madden * specific language governing permission and limitations under the License.
87d68743726585ee101ba2e7be2cf06cd34ebb80Neil Madden * When distributing Covered Software, include this CDDL Header Notice in each file and include
87d68743726585ee101ba2e7be2cf06cd34ebb80Neil Madden * the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL
87d68743726585ee101ba2e7be2cf06cd34ebb80Neil Madden * Header, with the fields enclosed by brackets [] replaced by your own identifying
87d68743726585ee101ba2e7be2cf06cd34ebb80Neil Madden * information: "Portions copyright [year] [name of copyright owner]".
05ca76d5ae014644d576f679ef6aa50e50f9636fMark de Reeper * Copyright 2015-2016 ForgeRock AS.
87d68743726585ee101ba2e7be2cf06cd34ebb80Neil Maddenpackage com.iplanet.dpro.session.operations.strategies;
87d68743726585ee101ba2e7be2cf06cd34ebb80Neil Maddenimport static org.assertj.core.api.Assertions.assertThat;
87d68743726585ee101ba2e7be2cf06cd34ebb80Neil Maddenimport static org.mockito.Mockito.verifyZeroInteractions;
87d68743726585ee101ba2e7be2cf06cd34ebb80Neil Maddenimport com.iplanet.dpro.session.SessionException;
75ab3608cc2f4f23d0245470999f943733f7fc93Dirk Hoganimport com.iplanet.dpro.session.SessionTimedOutException;
05ca76d5ae014644d576f679ef6aa50e50f9636fMark de Reeperimport com.iplanet.dpro.session.service.SessionLogging;
87d68743726585ee101ba2e7be2cf06cd34ebb80Neil Maddenimport com.iplanet.dpro.session.service.SessionService;
87d68743726585ee101ba2e7be2cf06cd34ebb80Neil Maddenimport com.iplanet.dpro.session.share.SessionInfo;
87d68743726585ee101ba2e7be2cf06cd34ebb80Neil Maddenimport org.forgerock.openam.session.blacklist.SessionBlacklist;
87d68743726585ee101ba2e7be2cf06cd34ebb80Neil Maddenimport org.forgerock.openam.sso.providers.stateless.StatelessSSOProvider;
05ca76d5ae014644d576f679ef6aa50e50f9636fMark de Reeperimport org.forgerock.openam.sso.providers.stateless.StatelessSession;
87d68743726585ee101ba2e7be2cf06cd34ebb80Neil Maddenimport org.forgerock.openam.sso.providers.stateless.StatelessSessionFactory;
87d68743726585ee101ba2e7be2cf06cd34ebb80Neil Madden private StatelessSessionFactory mockSessionFactory;
87d68743726585ee101ba2e7be2cf06cd34ebb80Neil Madden private StatelessOperations statelessOperations;
05ca76d5ae014644d576f679ef6aa50e50f9636fMark de Reeper statelessOperations = new StatelessOperations(
05ca76d5ae014644d576f679ef6aa50e50f9636fMark de Reeper null, mockSessionService, mockSessionFactory, mockSessionBlacklist, mockSessionLogging, null);
87d68743726585ee101ba2e7be2cf06cd34ebb80Neil Madden public void shouldRefreshFromStatelessSessionFactory() throws Exception {
75ab3608cc2f4f23d0245470999f943733f7fc93Dirk Hogan info.setExpiryTime(System.currentTimeMillis() + (1000 * 60 * 10));
87d68743726585ee101ba2e7be2cf06cd34ebb80Neil Madden given(mockSessionFactory.getSessionInfo(sid)).willReturn(info);
87d68743726585ee101ba2e7be2cf06cd34ebb80Neil Madden SessionInfo result = statelessOperations.refresh(mockSession, false);
75ab3608cc2f4f23d0245470999f943733f7fc93Dirk Hogan @Test(expectedExceptions = SessionTimedOutException.class)
75ab3608cc2f4f23d0245470999f943733f7fc93Dirk Hogan public void refreshShouldTimeoutFromStatelessSessionFactory() throws Exception {
75ab3608cc2f4f23d0245470999f943733f7fc93Dirk Hogan given(mockSessionFactory.getSessionInfo(sid)).willReturn(info);
75ab3608cc2f4f23d0245470999f943733f7fc93Dirk Hogan SessionInfo result = statelessOperations.refresh(mockSession, false);
75ab3608cc2f4f23d0245470999f943733f7fc93Dirk Hogan // Then exception should be thrown, as session is timed-out
87d68743726585ee101ba2e7be2cf06cd34ebb80Neil Madden public void shouldBlacklistSessionOnLogout() throws Exception {
05ca76d5ae014644d576f679ef6aa50e50f9636fMark de Reeper mockSessionFactory.getSessionInfo(mockSession.getSessionID()), SessionEvent.LOGOUT);
87d68743726585ee101ba2e7be2cf06cd34ebb80Neil Madden verify(mockSessionBlacklist).blacklist(mockSession);
87d68743726585ee101ba2e7be2cf06cd34ebb80Neil Madden public void shouldCheckPermissionToDestroySession() throws Exception {
87d68743726585ee101ba2e7be2cf06cd34ebb80Neil Madden statelessOperations.destroy(requester, mockSession);
87d68743726585ee101ba2e7be2cf06cd34ebb80Neil Madden verify(mockSessionService).checkPermissionToDestroySession(requester, sid);
87d68743726585ee101ba2e7be2cf06cd34ebb80Neil Madden public void shouldBlacklistSessionOnDestroyWhenAllowed() throws Exception {
87d68743726585ee101ba2e7be2cf06cd34ebb80Neil Madden statelessOperations.destroy(requester, mockSession);
05ca76d5ae014644d576f679ef6aa50e50f9636fMark de Reeper mockSessionFactory.getSessionInfo(mockSession.getSessionID()), SessionEvent.DESTROY);
87d68743726585ee101ba2e7be2cf06cd34ebb80Neil Madden verify(mockSessionBlacklist).blacklist(mockSession);
87d68743726585ee101ba2e7be2cf06cd34ebb80Neil Madden @Test(expectedExceptions = SessionException.class, expectedExceptionsMessageRegExp = "test")
87d68743726585ee101ba2e7be2cf06cd34ebb80Neil Madden public void shouldNotBlacklistSessionOnDestroyIfNotAllowed() throws Exception {
87d68743726585ee101ba2e7be2cf06cd34ebb80Neil Madden SessionException ex = new SessionException("test");
87d68743726585ee101ba2e7be2cf06cd34ebb80Neil Madden willThrow(ex).given(mockSessionService).checkPermissionToDestroySession(requester, sid);