/**
* Licensed to Apereo under one or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information regarding copyright ownership. Apereo
* licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use
* this file except in compliance with the License. You may obtain a copy of the License at the
* following location:
*
* <p>http://www.apache.org/licenses/LICENSE-2.0
*
* <p>Unless required by applicable law or agreed to in writing, software distributed under the
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apereo.portal.portlet.container.properties;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import junit.framework.TestCase;
import org.apereo.portal.portlet.om.IPortletWindow;
import org.apereo.portal.utils.MultivaluedMapPopulator;
import org.easymock.EasyMock;
import org.springframework.core.Ordered;
import org.springframework.mock.web.MockHttpServletRequest;
/**
*/
public class RequestPropertiesManagerBrokerTest extends TestCase {
private RequestPropertiesManagerBroker requestPropertiesManagerBroker;
/* (non-Javadoc)
* @see junit.framework.TestCase#setUp()
*/
@Override
protected void setUp() throws Exception {
this.requestPropertiesManagerBroker = new RequestPropertiesManagerBroker();
}
/* (non-Javadoc)
* @see junit.framework.TestCase#tearDown()
*/
@Override
protected void tearDown() throws Exception {
this.requestPropertiesManagerBroker = null;
}
public void testAddProperties() {
final MockHttpServletRequest request = new MockHttpServletRequest();
final IPortletWindow portletWindow = EasyMock.createMock(IPortletWindow.class);
EasyMock.replay(portletWindow);
final MockRequestPropertiesManager delegateManager1 = new MockRequestPropertiesManager();
delegateManager1.setOrder(Ordered.HIGHEST_PRECEDENCE);
final MockRequestPropertiesManager delegateManager2 = new MockRequestPropertiesManager();
delegateManager2.setOrder(Ordered.LOWEST_PRECEDENCE);
this.requestPropertiesManagerBroker.setPropertiesManagers(
ImmutableList.of(delegateManager1, delegateManager2));
this.requestPropertiesManagerBroker.addResponseProperty(
request, portletWindow, "prop.A", "prop.A.1");
final Map<String, List<String>> expected1 =
Collections.singletonMap("prop.A", Collections.singletonList("prop.A.1"));
MultivaluedMapPopulator<String, String> multivaluedMapPopulator =
new MultivaluedMapPopulator<String, String>();
this.requestPropertiesManagerBroker.populateRequestProperties(
request, portletWindow, multivaluedMapPopulator);
assertEquals(expected1, multivaluedMapPopulator.getMap());
multivaluedMapPopulator = new MultivaluedMapPopulator<String, String>();
delegateManager1.populateRequestProperties(request, portletWindow, multivaluedMapPopulator);
assertEquals(expected1, multivaluedMapPopulator.getMap());
multivaluedMapPopulator = new MultivaluedMapPopulator<String, String>();
delegateManager2.populateRequestProperties(request, portletWindow, multivaluedMapPopulator);
assertEquals(Collections.EMPTY_MAP, multivaluedMapPopulator.getMap());
this.requestPropertiesManagerBroker.addResponseProperty(
request, portletWindow, "prop.A", "prop.A.2");
final Map<String, List<String>> expected2 =
Collections.<String, List<String>>singletonMap(
"prop.A", ImmutableList.of("prop.A.1", "prop.A.2"));
multivaluedMapPopulator = new MultivaluedMapPopulator<String, String>();
this.requestPropertiesManagerBroker.populateRequestProperties(
request, portletWindow, multivaluedMapPopulator);
assertEquals(expected2, multivaluedMapPopulator.getMap());
multivaluedMapPopulator = new MultivaluedMapPopulator<String, String>();
delegateManager1.populateRequestProperties(request, portletWindow, multivaluedMapPopulator);
assertEquals(expected2, multivaluedMapPopulator.getMap());
multivaluedMapPopulator = new MultivaluedMapPopulator<String, String>();
delegateManager2.populateRequestProperties(request, portletWindow, multivaluedMapPopulator);
assertEquals(Collections.EMPTY_MAP, multivaluedMapPopulator.getMap());
}
public void testSetProperties() {
final MockHttpServletRequest request = new MockHttpServletRequest();
final IPortletWindow portletWindow = EasyMock.createMock(IPortletWindow.class);
EasyMock.replay(portletWindow);
final MockRequestPropertiesManager delegateManager1 = new MockRequestPropertiesManager();
delegateManager1.setOrder(Ordered.HIGHEST_PRECEDENCE);
final MockRequestPropertiesManager delegateManager2 = new MockRequestPropertiesManager();
delegateManager2.setOrder(Ordered.LOWEST_PRECEDENCE);
this.requestPropertiesManagerBroker.setPropertiesManagers(
ImmutableList.of(delegateManager1, delegateManager2));
this.requestPropertiesManagerBroker.setResponseProperty(
request, portletWindow, "prop.A", "prop.A.1");
final Map<String, List<String>> expected1 =
Collections.singletonMap("prop.A", Collections.singletonList("prop.A.1"));
MultivaluedMapPopulator<String, String> multivaluedMapPopulator =
new MultivaluedMapPopulator<String, String>();
this.requestPropertiesManagerBroker.populateRequestProperties(
request, portletWindow, multivaluedMapPopulator);
assertEquals(expected1, multivaluedMapPopulator.getMap());
multivaluedMapPopulator = new MultivaluedMapPopulator<String, String>();
delegateManager1.populateRequestProperties(request, portletWindow, multivaluedMapPopulator);
assertEquals(expected1, multivaluedMapPopulator.getMap());
multivaluedMapPopulator = new MultivaluedMapPopulator<String, String>();
delegateManager2.populateRequestProperties(request, portletWindow, multivaluedMapPopulator);
assertEquals(Collections.EMPTY_MAP, multivaluedMapPopulator.getMap());
this.requestPropertiesManagerBroker.setResponseProperty(
request, portletWindow, "prop.A", "prop.A.2");
final Map<String, List<String>> expected2 =
Collections.<String, List<String>>singletonMap(
"prop.A", ImmutableList.of("prop.A.2"));
multivaluedMapPopulator = new MultivaluedMapPopulator<String, String>();
this.requestPropertiesManagerBroker.populateRequestProperties(
request, portletWindow, multivaluedMapPopulator);
assertEquals(expected2, multivaluedMapPopulator.getMap());
multivaluedMapPopulator = new MultivaluedMapPopulator<String, String>();
delegateManager1.populateRequestProperties(request, portletWindow, multivaluedMapPopulator);
assertEquals(expected2, multivaluedMapPopulator.getMap());
multivaluedMapPopulator = new MultivaluedMapPopulator<String, String>();
delegateManager2.populateRequestProperties(request, portletWindow, multivaluedMapPopulator);
assertEquals(Collections.EMPTY_MAP, multivaluedMapPopulator.getMap());
}
public void testGetProperties() {
final MockHttpServletRequest request = new MockHttpServletRequest();
final IPortletWindow portletWindow = EasyMock.createMock(IPortletWindow.class);
EasyMock.replay(portletWindow);
final MockRequestPropertiesManager delegateManager1 = new MockRequestPropertiesManager();
delegateManager1.setOrder(Ordered.HIGHEST_PRECEDENCE);
final MockRequestPropertiesManager delegateManager2 = new MockRequestPropertiesManager();
delegateManager2.setOrder(Ordered.LOWEST_PRECEDENCE);
this.requestPropertiesManagerBroker.setPropertiesManagers(
ImmutableList.of(delegateManager1, delegateManager2));
delegateManager1.setResponseProperty(request, portletWindow, "prop.A", "prop.A.1");
delegateManager1.setResponseProperty(request, portletWindow, "prop.B", "prop.B.1");
delegateManager2.setResponseProperty(request, portletWindow, "prop.C", "prop.C.1");
MultivaluedMapPopulator<String, String> multivaluedMapPopulator =
new MultivaluedMapPopulator<String, String>();
this.requestPropertiesManagerBroker.populateRequestProperties(
request, portletWindow, multivaluedMapPopulator);
final Map<String, List<String>> expected1 =
ImmutableMap.<String, List<String>>of(
"prop.A", ImmutableList.of("prop.A.1"),
"prop.B", ImmutableList.of("prop.B.1"),
"prop.C", ImmutableList.of("prop.C.1"));
assertEquals(expected1, multivaluedMapPopulator.getMap());
delegateManager2.setResponseProperty(request, portletWindow, "prop.A", "prop.A.2");
multivaluedMapPopulator = new MultivaluedMapPopulator<String, String>();
this.requestPropertiesManagerBroker.populateRequestProperties(
request, portletWindow, multivaluedMapPopulator);
final Map<String, List<String>> expected2 =
ImmutableMap.<String, List<String>>of(
"prop.A", ImmutableList.of("prop.A.1", "prop.A.2"),
"prop.B", ImmutableList.of("prop.B.1"),
"prop.C", ImmutableList.of("prop.C.1"));
assertEquals(expected2, multivaluedMapPopulator.getMap());
}
}