/*
* (C) Copyright 2006-2009 Nuxeo SA (http://nuxeo.com/) and others.
*
* Licensed 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
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* 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.
*
* Contributors:
* Nuxeo - initial API and implementation
*
* $Id$
*/
package org.nuxeo.ecm.platform.web.requestcontroller;
import java.util.Map;
import javax.servlet.FilterConfig;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;
import org.nuxeo.ecm.platform.web.common.requestcontroller.service.RequestControllerManager;
import org.nuxeo.ecm.platform.web.common.requestcontroller.service.RequestControllerService;
import org.nuxeo.ecm.platform.web.common.requestcontroller.service.RequestFilterConfig;
import org.nuxeo.runtime.api.Framework;
import org.nuxeo.runtime.test.NXRuntimeTestCase;
public class TestService extends NXRuntimeTestCase {
@Before
public void setUp() throws Exception {
super.setUp();
deployContrib("org.nuxeo.ecm.platform.web.common", "OSGI-INF/web-request-controller-framework.xml");
}
@Test
public void testServiceRegistration() {
RequestControllerManager rcm = Framework.getLocalService(RequestControllerManager.class);
assertNotNull(rcm);
}
@Test
public void testServiceContrib() throws Exception {
deployContrib("org.nuxeo.ecm.platform.web.common.test", "OSGI-INF/web-request-controller-contrib-test.xml");
RequestControllerManager rcm = Framework.getLocalService(RequestControllerManager.class);
assertNotNull(rcm);
RequestControllerService rcmTest = (RequestControllerService) rcm;
String uri = "";
RequestFilterConfig config;
uri = "/SyncNoTx/test";
config = rcmTest.computeConfigForRequest(uri);
assertTrue(config.needSynchronization());
assertFalse(config.needTransaction());
uri = "/NoSyncTx/test";
config = rcmTest.computeConfigForRequest(uri);
assertFalse(config.needSynchronization());
assertTrue(config.needTransaction());
uri = "/SyncTx/test";
config = rcmTest.computeConfigForRequest(uri);
assertTrue(config.needSynchronization());
assertTrue(config.needTransaction());
uri = "/SyncTx/deny";
config = rcmTest.computeConfigForRequest(uri);
assertFalse(config.needSynchronization());
assertFalse(config.needTransaction());
uri = "/whatever";
config = rcmTest.computeConfigForRequest(uri);
assertFalse(config.needSynchronization());
assertFalse(config.needTransaction());
uri = "/nuxeo/TestServlet/";
config = rcmTest.computeConfigForRequest(uri);
assertTrue(config.needSynchronization());
assertTrue(config.needTransaction());
uri = "/nuxeo/TestServlet";
config = rcmTest.computeConfigForRequest(uri);
assertTrue(config.needSynchronization());
assertTrue(config.needTransaction());
uri = "/nuxeo/TestServlet/toto";
config = rcmTest.computeConfigForRequest(uri);
assertTrue(config.needSynchronization());
assertTrue(config.needTransaction());
uri = "/nuxeo/CacheDefault";
config = rcmTest.computeConfigForRequest(uri);
assertFalse(config.isCached());
assertFalse(config.isPrivate());
assertEquals("3599", config.getCacheTime());
uri = "/nuxeo/Cache";
config = rcmTest.computeConfigForRequest(uri);
assertTrue(config.isCached());
assertTrue(config.isPrivate());
assertEquals("3000", config.getCacheTime());
}
@Test
public void testCorsContrib() throws Exception {
deployContrib("org.nuxeo.ecm.platform.web.common.test", "OSGI-INF/web-request-controller-contrib-test.xml");
RequestControllerManager rcm = Framework.getLocalService(RequestControllerManager.class);
assertNotNull(rcm);
String uri = "";
FilterConfig fc;
RequestControllerService rcs = (RequestControllerService) rcm;
assertNull(rcs.computeCorsFilterConfigForUri("/dummy/uri"));
uri = "/nuxeo/site/minimal/something/long/dummy.html";
fc = rcs.computeCorsFilterConfigForUri(uri);
assertEquals("-1", fc.getInitParameter("cors.maxAge"));
assertEquals(null, fc.getInitParameter("cors.allowOrigin"));
uri = "/nuxeo/site/dummy/";
fc = rcs.computeCorsFilterConfigForUri(uri);
assertEquals("3600", fc.getInitParameter("cors.maxAge"));
assertEquals("http://example.com http://example.com:8080", fc.getInitParameter("cors.allowOrigin"));
assertEquals("false", fc.getInitParameter("cors.supportsCredentials"));
}
@Test
public void testHeadersContrib() throws Exception {
deployContrib("org.nuxeo.ecm.platform.web.common.test", "OSGI-INF/web-request-controller-contrib-test.xml");
RequestControllerManager rcm = Framework.getLocalService(RequestControllerManager.class);
assertNotNull(rcm);
Map<String, String> rh = rcm.getResponseHeaders();
assertEquals(2, rh.size());
assertTrue(rh.containsKey("WWW-Authenticate"));
assertEquals("basic", rh.get("WWW-Authenticate"));
}
}