/* * Copyright (c) 2002-2012 Alibaba Group Holding Limited. * All rights reserved. * * 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. */ package com.alibaba.citrus.webx.servlet; import static com.alibaba.citrus.test.TestEnvStatic.*; import static com.alibaba.citrus.test.TestUtil.*; import static org.junit.Assert.*; import java.io.File; import java.lang.reflect.Method; import com.alibaba.citrus.webx.AbstractWebxTests; import com.alibaba.citrus.webx.WebxComponent; import com.alibaba.citrus.webx.WebxComponents; import com.meterware.servletunit.PatchedServletRunner; import com.meterware.servletunit.ServletRunner; import org.junit.Before; import org.junit.Test; /** * 测试从classpath中装载配置文件。 * * @author Michael Zhou */ public class WebxClasspathTests extends AbstractWebxTests { private WebxFrameworkFilter filter; private WebxComponents components; @Before public void init() throws Exception { File webInf = new File(srcdir, "app3/WEB-INF"); File webXml = new File(webInf, "web.xml"); ServletRunner servletRunner = new PatchedServletRunner(webXml, ""); client = servletRunner.newClient(); filter = (WebxFrameworkFilter) client.newInvocation("http://www.taobao.com/app1").getFilter(); assertNotNull(filter); components = filter.getWebxComponents(); assertNotNull(components); } @Test public void illegal_configLocationPattern() throws Exception { File webInf = new File(srcdir, "app4/WEB-INF"); File webXml = new File(webInf, "web.xml"); try { new PatchedServletRunner(webXml, ""); fail(); } catch (IllegalArgumentException e) { assertThat(e, exception("Invalid componentConfigurationLocationPattern: classpath*:META-INF/mycomponent.xml")); } } @Test public void components() throws Exception { assertArrayEquals(new String[] { "a", "b" }, components.getComponentNames()); WebxComponent a = components.getComponent("a"); WebxComponent b = components.getComponent("b"); Method m = getAccessibleMethod(a.getApplicationContext().getClass(), "getConfigLocations", null); assertArrayEquals(new String[] { "classpath:META-INF/mycomponent/a.xml" }, String[].class.cast(m.invoke(a.getApplicationContext()))); assertArrayEquals(new String[] { "classpath:META-INF/mycomponent/b.xml" }, String[].class.cast(m.invoke(b.getApplicationContext()))); assertEquals("hello", a.getApplicationContext().getBean("s1")); assertEquals("world", b.getApplicationContext().getBean("s2")); } }