package org.openecomp.fusion.core; import java.io.IOException; import org.junit.Before; import org.junit.runner.RunWith; import org.openecomp.portalsdk.core.conf.AppConfig; import org.openecomp.portalsdk.core.objectcache.AbstractCacheManager; import org.openecomp.portalsdk.core.util.CacheManager; import org.openecomp.portalsdk.core.util.SystemProperties; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.web.AnnotationConfigWebContextLoader; import org.springframework.test.context.web.WebAppConfiguration; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.setup.MockMvcBuilders; import org.springframework.web.context.WebApplicationContext; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; /** * In order to write a unit test, 1. inherit this class - See SanityTest.java 2. * place the "war" folder on your test class's classpath 3. run the test with * the following VM argument; This is important because when starting the * application from Container, the System Properties file * (SystemProperties.java) can have the direct path but, when running from the * Mock Junit container, the path should be prefixed with "classpath" to enable * the mock container to search for the file in the classpath * -Dcontainer.classpath="classpath:" * */ @RunWith(SpringJUnit4ClassRunner.class) @WebAppConfiguration @ContextConfiguration(loader = AnnotationConfigWebContextLoader.class, classes = { MockAppConfig.class }) @ActiveProfiles(value = "test") public class MockApplicationContextTestSuite { @Autowired public WebApplicationContext wac; private MockMvc mockMvc; @Before public void setup() { if (mockMvc == null) { this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build(); } } public Object getBean(String name) { return this.wac.getBean(name); } public MockMvc getMockMvc() { return mockMvc; } public void setMockMvc(MockMvc mockMvc) { this.mockMvc = mockMvc; } public WebApplicationContext getWebApplicationContext() { return wac; } } @Configuration @ComponentScan(basePackages = "org.openecomp", excludeFilters = { // see AppConfig class }) @Profile("test") class MockAppConfig extends AppConfig { @Bean public SystemProperties systemProperties() { return new MockSystemProperties(); } @Bean public AbstractCacheManager cacheManager() { return new CacheManager() { public void configure() throws IOException { } }; } protected String[] tileDefinitions() { return new String[] { "classpath:/WEB-INF/fusion/defs/definitions.xml", "classpath:/WEB-INF/defs/definitions.xml" }; } @Override public void addInterceptors(InterceptorRegistry registry) { // registry.addInterceptor(new // SessionTimeoutInterceptor()).excludePathPatterns(getExcludeUrlPathsForSessionTimeout()); // registry.addInterceptor(resourceInterceptor()); } public static class MockSystemProperties extends SystemProperties { public MockSystemProperties() { } } }