72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott/**
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott * Copyright 2014 ForgeRock AS.
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott *
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott * The contents of this file are subject to the terms of the Common Development and
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott * Distribution License (the License). You may not use this file except in compliance with the
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott * License.
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott *
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott * You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott * specific language governing permission and limitations under the License.
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott *
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott * When distributing Covered Software, include this CDDL Header Notice in each file and include
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott * the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott * Header, with the fields enclosed by brackets [] replaced by your own identifying
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott * information: "Portions copyright [year] [name of copyright owner]".
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott */
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshottpackage com.iplanet.dpro.session.service;
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshottimport com.iplanet.dpro.session.Session;
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshottimport com.iplanet.dpro.session.SessionID;
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshottimport com.iplanet.services.naming.ServerEntryNotFoundException;
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshottimport com.iplanet.services.naming.WebtopNamingQuery;
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshottimport com.sun.identity.shared.debug.Debug;
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshottimport org.testng.annotations.BeforeMethod;
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshottimport org.testng.annotations.Test;
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshottimport java.net.URL;
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshottimport java.util.Set;
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshottimport static org.fest.assertions.Assertions.assertThat;
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshottimport static org.mockito.BDDMockito.given;
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshottimport static org.mockito.Matchers.anyString;
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshottimport static org.mockito.Matchers.eq;
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshottimport static org.mockito.Mockito.mock;
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshottimport static org.mockito.Mockito.verify;
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshottpublic class WebtopNamingSiteUtilsTest {
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott private WebtopNamingQuery mockQuery;
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott private WebtopNamingSiteUtils utils;
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott private Session mockSession;
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott private SessionID mockSessionID;
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott @BeforeMethod
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott public void setUp() {
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott mockQuery = mock(WebtopNamingQuery.class);
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott utils = new WebtopNamingSiteUtils(mock(Debug.class), mockQuery);
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott mockSession = mock(Session.class);
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott mockSessionID = mock(SessionID.class);
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott given(mockSession.getID()).willReturn(mockSessionID);
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott }
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott @Test
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott public void shouldResolveServerToBePartOfSite() throws Exception {
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott // Given
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott String serverID = "SERVER";
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott String siteID = "SITE";
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott given(mockSessionID.getSessionServerID()).willReturn(serverID);
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott given(mockQuery.getSiteID(eq(serverID))).willReturn(siteID);
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott // When
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott utils.getSiteNodes(mockSession);
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott // Then
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott verify(mockQuery).getSiteNodes(eq(siteID));
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott }
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott @Test
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott public void shouldReturnServerIDIfServerNotInSite() {
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott // Given
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott String serverID = "SERVER";
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott given(mockSessionID.getSessionServerID()).willReturn(serverID);
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott given(mockQuery.getSiteID(eq(serverID))).willReturn(null);
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott // When
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott Set<String> result = utils.getSiteNodes(mockSession);
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott // Then
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott result.contains(serverID);
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott }
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott @Test (expectedExceptions = IllegalStateException.class)
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott public void shouldReturnThrowRuntimeIfErrorQueryingWebtopNaming() throws Exception {
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott // Given
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott String serverID = "SERVER";
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott String siteID = "SITE";
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott given(mockSessionID.getSessionServerID()).willReturn(serverID);
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott given(mockQuery.getSiteID(eq(serverID))).willReturn(siteID);
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott given(mockQuery.getSiteNodes(anyString())).willThrow(new Exception());
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott // When / Then
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott utils.getSiteNodes(mockSession);
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott }
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott @Test
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott public void shouldReturnURLsForServersInSite() throws ServerEntryNotFoundException {
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott // Given
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott String serverID = "SERVER";
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott given(mockSessionID.getSessionServerID()).willReturn(serverID);
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott given(mockQuery.getSiteID(eq(serverID))).willReturn(null);
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott given(mockQuery.getServerFromID(anyString())).willReturn("http://localhost");
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott // When
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott Set<URL> result = utils.getSiteNodeURLs(mockSession);
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott // Then
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott assertThat(result).hasSize(1);
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott }
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott @Test (expectedExceptions = IllegalStateException.class)
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott public void shouldThrowRuntimeExceptionForInvalidURLFormat() throws ServerEntryNotFoundException {
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott // Given
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott String serverID = "SERVER";
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott given(mockSessionID.getSessionServerID()).willReturn(serverID);
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott given(mockQuery.getSiteID(eq(serverID))).willReturn(null);
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott given(mockQuery.getServerFromID(anyString())).willReturn("badgerbadger...");
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott // When / Then
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott utils.getSiteNodeURLs(mockSession);
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott }
72450cb9c2ca854c6d3479832c2738196c1d3282Robert Wapshott}