1 /** 2 * Copyright 2010 The Kuali Foundation Licensed under the 3 * Educational Community License, Version 2.0 (the "License"); you may 4 * not use this file except in compliance with the License. You may 5 * obtain a copy of the License at 6 * 7 * http://www.osedu.org/licenses/ECL-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, 10 * software distributed under the License is distributed on an "AS IS" 11 * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 12 * or implied. See the License for the specific language governing 13 * permissions and limitations under the License. 14 */ 15 16 package org.kuali.student.common.test.spring; 17 18 import org.junit.runner.RunWith; 19 20 /** 21 * This class will start a Jetty server and deploy an exploded war file 22 * defined in @IntegrationServer annotation. 23 * <p> 24 * <b>@IntegrationServer</b> annotation takes the following parameters: 25 * </p> 26 * <ul> 27 * <li><b>port</b> - Server port to deploy web application on e.g. 9090</li> 28 * <li><b>webAppPath</b> - Webapp path of exploded war file e.g. brms-ws-1.0.0.war</li> 29 * <li><b>contextPath</b> - Servlet context path e.g. brms-ws-1.0.0</li> 30 * </ul> 31 * <p> 32 * The @SystemProperties and @Property annotation is used to set 33 * System properties before starting the Jetty server. For instance, if you 34 * want to set the catalina.base path or the URL or port of a service that is 35 * different from what is specified in the file CXF configuration in the war 36 * file. 37 * </p> 38 * <p> 39 * <b>@SystemProperties</b> takes the following parameter: 40 * </p> 41 * <ul> 42 * <li><b>properties</b> - List of <code>Property</code> to set</li> 43 * </ul> 44 * <p> 45 * <b>@Property</b> takes the following parameter: 46 * </p> 47 * <ul> 48 * <li><b>key</b> - Property key</li> 49 * <li><b>value</b> - Property value</li> 50 * </ul> 51 * <p> 52 * <b>Example 1:</b> Setup an integration test on port 8080 which is the same 53 * port as specified in the application.properties file in the war file. 54 * </p> 55 * <pre> 56 * @IntegrationServer( 57 * port=8080, 58 * webAppPath="../../../brms-ws/target/brms-ws-0.1.0-SNAPSHOT", 59 * contextPath="/brms-ws-0.1.0-SNAPSHOT") 60 * </pre> 61 * 62 * <b>Example 2:</b> Setup an integration test on port 9090 which is different 63 * from what is specified in the application.properties file in the war file. 64 * </p> 65 * <pre> 66 * @IntegrationServer( 67 * port=9090, 68 * webAppPath="../../../brms-ws/target/brms-ws-0.1.0-SNAPSHOT", 69 * contextPath="/brms-ws-0.1.0-SNAPSHOT") 70 * 71 * @SystemProperties(properties={ 72 * @Property( 73 * key="ks.servicelocation.RuleManagementService", 74 * value="http://localhost:9090/brms-ws-0.1.0-SNAPSHOT/services/RuleManagementService") 75 * }) 76 * </pre> 77 * 78 * <b>Example 3:</b> Integration test. 79 * <pre> 80 * <b>package</b> org.kuali.student.rules.integration; 81 * // The following system properties are only needed if you want to specify a 82 * // server port (port 9000) other than 8080 as defined in 83 * // brms-ws/src/main/resources/application.properties, 84 * // application-ruleexecution.properties and application-rulerepository.properties 85 * <b>@IntegrationServer</b>(port=9000, webappPath="../../../brms-ws/target/brms-ws-0.1.0-SNAPSHOT", contextPath="/brms-ws-0.1.0-SNAPSHOT") 86 * <b>@SystemProperties</b>(properties={ 87 * <b>@Property</b>(key="ks.servicelocation.RuleManagementService", value="http://localhost:9000/brms-ws-0.1.0-SNAPSHOT/services/RuleManagementService"), 88 * }) 89 * <b>public class</b> IntegrationTest <b>extends</b> AbstractIntegrationServiceTest { 90 * private final static String HOST = "http://localhost:9000/brms-ws-0.1.0-SNAPSHOT"; 91 * 92 * private static String ruleManagementServiceURL = HOST+"/services/RuleManagementService"; 93 * private static String ruleManagementNamespace = "http://student.kuali.org/wsdl/brms/RuleManagement"; 94 * private static String ruleManagementServiceName = "RuleManagementService"; 95 * private static String ruleManagementServiceInterface = RuleManagementService.class.getName(); 96 * 97 * private static RuleManagementService ruleManagementService; 98 * 99 * <b>@BeforeClass</b> 100 * public static void setUpOnce() throws Exception { 101 * ruleManagementService = (RuleManagementService) ServiceFactory.getPort( 102 * ruleManagementServiceURL + "?wsdl", 103 * ruleManagementNamespace, 104 * ruleManagementServiceName, 105 * ruleManagementServiceInterface, 106 * ruleManagementServiceURL); 107 * 108 * } 109 * 110 * <b>@AfterClass</b> 111 * public static void tearDownOnce() throws Exception { } 112 * 113 * <b>@Before</b> 114 * public void setUp() throws Exception { } 115 * 116 * <b>@After</b> 117 * public void tearDown() throws Exception { } 118 * 119 * <b>@Test</b> 120 * public void testFindBusinessRuleTypesFromTestBeans() throws Exception { 121 * List<String> businessRuleIdList1 = ruleManagementService.findBusinessRuleIdsByBusinessRuleType("KUALI_PRE_REQ"); 122 * Assert.assertNotNull(businessRuleIdList1); 123 * List<String> businessRuleIdList2 = ruleManagementService.findBusinessRuleIdsByBusinessRuleType("KUALI_CO_REQ"); 124 * Assert.assertNotNull(businessRuleIdList2); 125 * } 126 * } 127 * </pre> 128 */ 129 @Deprecated 130 @RunWith(IntegrationServiceTestClassRunner.class) 131 public abstract class AbstractIntegrationServiceTest { 132 133 }