001 /** 002 * Copyright 2005-2011 The Kuali Foundation 003 * 004 * Licensed under the Educational Community License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.opensource.org/licenses/ecl2.php 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 package org.kuali.rice.kew.engine; 017 018 import static org.junit.Assert.assertNotNull; 019 020 import java.io.IOException; 021 import java.util.Map; 022 023 import org.apache.log4j.Logger; 024 import org.custommonkey.xmlunit.XMLAssert; 025 import org.custommonkey.xmlunit.XMLUnit; 026 import org.junit.Test; 027 import org.kuali.rice.kew.doctype.bo.DocumentType; 028 import org.kuali.rice.kew.engine.node.RouteNode; 029 import org.kuali.rice.kew.service.KEWServiceLocator; 030 import org.kuali.rice.kew.test.KEWTestCase; 031 import org.kuali.rice.kew.util.Utilities; 032 import org.xml.sax.SAXException; 033 034 /** 035 * Tests the parsing of route node config params 036 * @author Kuali Rice Team (rice.collab@kuali.org) 037 */ 038 public class RouteNodeConfigParamTest extends KEWTestCase { 039 040 private static final Logger LOG = Logger.getLogger(RouteNodeConfigParamTest.class); 041 042 protected void loadTestData() throws Exception { 043 loadXmlFile("RouteNodeConfigParams.xml"); 044 } 045 046 /** 047 * Asserts that specified route node definition has the specified config parameter 048 */ 049 protected void assertHasConfigParam(RouteNode routeNodeDef, String key, String value) { 050 Map<String, String> cfgMap = Utilities.getKeyValueCollectionAsMap(routeNodeDef.getConfigParams()); 051 try { 052 XMLUnit.setIgnoreWhitespace(true); 053 XMLAssert.assertXMLEqual(value, cfgMap.get(key)); 054 } catch (SAXException e) { 055 e.printStackTrace(); 056 } catch (IOException e) { 057 e.printStackTrace(); 058 } 059 } 060 061 @Test public void testRouteNodeConfigParams() { 062 DocumentType docType = KEWServiceLocator.getDocumentTypeService().findByName("RouteNodeConfigParams"); 063 assertNotNull(docType); 064 assertNotNull(docType.getDocumentTypeId()); 065 066 // adhoc node 067 RouteNode routeNodeDef = KEWServiceLocator.getRouteNodeService().findRouteNodeByName(docType.getDocumentTypeId(), "AdHoc"); 068 assertNotNull(routeNodeDef); 069 assertHasConfigParam(routeNodeDef, RouteNode.CONTENT_FRAGMENT_CFG_KEY, "<start name=\"AdHoc\"><activationType>P</activationType></start>"); 070 assertHasConfigParam(routeNodeDef, "activationType", "P"); 071 072 routeNodeDef = KEWServiceLocator.getRouteNodeService().findRouteNodeByName(docType.getDocumentTypeId(), "setStartedVar"); 073 assertNotNull(routeNodeDef); 074 assertHasConfigParam(routeNodeDef, RouteNode.CONTENT_FRAGMENT_CFG_KEY, "<simple name=\"setStartedVar\"><type>org.kuali.rice.kew.engine.node.var.SetVarNode</type><name>started</name><value>startedVariableValue</value></simple>"); 075 assertHasConfigParam(routeNodeDef, "type", "org.kuali.rice.kew.engine.node.var.SetVarNode"); 076 assertHasConfigParam(routeNodeDef, "name", "started"); 077 assertHasConfigParam(routeNodeDef, "value", "startedVariableValue"); 078 079 routeNodeDef = KEWServiceLocator.getRouteNodeService().findRouteNodeByName(docType.getDocumentTypeId(), "setCopiedVar"); 080 assertNotNull(routeNodeDef); 081 assertHasConfigParam(routeNodeDef, RouteNode.CONTENT_FRAGMENT_CFG_KEY, "<simple name=\"setCopiedVar\"><type>org.kuali.rice.kew.engine.node.var.SetVarNode</type><name>copiedVar</name><value>var:started</value></simple>"); 082 assertHasConfigParam(routeNodeDef, "type", "org.kuali.rice.kew.engine.node.var.SetVarNode"); 083 assertHasConfigParam(routeNodeDef, "name", "copiedVar"); 084 assertHasConfigParam(routeNodeDef, "value", "var:started"); 085 086 routeNodeDef = KEWServiceLocator.getRouteNodeService().findRouteNodeByName(docType.getDocumentTypeId(), "PreApprovalTestOne"); 087 assertNotNull(routeNodeDef); 088 assertHasConfigParam(routeNodeDef, RouteNode.CONTENT_FRAGMENT_CFG_KEY, "<requests name=\"PreApprovalTestOne\"><activationType>S</activationType><ruleSelector>Named</ruleSelector><ruleName>TestRule1</ruleName></requests>"); 089 assertHasConfigParam(routeNodeDef, "activationType", "S"); 090 assertHasConfigParam(routeNodeDef, "ruleSelector", "Named"); 091 assertHasConfigParam(routeNodeDef, "ruleName", "TestRule1"); 092 093 routeNodeDef = KEWServiceLocator.getRouteNodeService().findRouteNodeByName(docType.getDocumentTypeId(), "setEndedVar"); 094 assertNotNull(routeNodeDef); 095 assertHasConfigParam(routeNodeDef, RouteNode.CONTENT_FRAGMENT_CFG_KEY, "<simple name=\"setEndedVar\"><type>org.kuali.rice.kew.engine.node.var.SetVarNode</type><name>ended</name><value>endedVariableValue</value></simple>"); 096 assertHasConfigParam(routeNodeDef, "type", "org.kuali.rice.kew.engine.node.var.SetVarNode"); 097 assertHasConfigParam(routeNodeDef, "name", "ended"); 098 assertHasConfigParam(routeNodeDef, "value", "endedVariableValue"); 099 100 routeNodeDef = KEWServiceLocator.getRouteNodeService().findRouteNodeByName(docType.getDocumentTypeId(), "setGoogleVar"); 101 assertNotNull(routeNodeDef); 102 assertHasConfigParam(routeNodeDef, RouteNode.CONTENT_FRAGMENT_CFG_KEY, "<simple name=\"setGoogleVar\"><type>org.kuali.rice.kew.engine.node.var.SetVarNode</type><name>google</name><value>url:http://google.com</value></simple>"); 103 assertHasConfigParam(routeNodeDef, "type", "org.kuali.rice.kew.engine.node.var.SetVarNode"); 104 assertHasConfigParam(routeNodeDef, "name", "google"); 105 assertHasConfigParam(routeNodeDef, "value", "url:http://google.com"); 106 107 routeNodeDef = KEWServiceLocator.getRouteNodeService().findRouteNodeByName(docType.getDocumentTypeId(), "setXPathVar"); 108 assertNotNull(routeNodeDef); 109 assertHasConfigParam(routeNodeDef, RouteNode.CONTENT_FRAGMENT_CFG_KEY, "<simple name=\"setXPathVar\"><type>org.kuali.rice.kew.engine.node.var.SetVarNode</type><name>xpath</name><value>xpath:concat(local-name(//documentContent),$ended)</value></simple>"); 110 assertHasConfigParam(routeNodeDef, "type", "org.kuali.rice.kew.engine.node.var.SetVarNode"); 111 assertHasConfigParam(routeNodeDef, "name", "xpath"); 112 assertHasConfigParam(routeNodeDef, "value", "xpath:concat(local-name(//documentContent),$ended)"); 113 114 routeNodeDef = KEWServiceLocator.getRouteNodeService().findRouteNodeByName(docType.getDocumentTypeId(), "resetStartedVar"); 115 assertNotNull(routeNodeDef); 116 assertHasConfigParam(routeNodeDef, RouteNode.CONTENT_FRAGMENT_CFG_KEY, "<simple name=\"resetStartedVar\"><type>org.kuali.rice.kew.engine.node.var.SetVarNode</type><name>started</name><value>aNewStartedVariableValue</value></simple>"); 117 assertHasConfigParam(routeNodeDef, "type", "org.kuali.rice.kew.engine.node.var.SetVarNode"); 118 assertHasConfigParam(routeNodeDef, "name", "started"); 119 assertHasConfigParam(routeNodeDef, "value", "aNewStartedVariableValue"); 120 121 routeNodeDef = KEWServiceLocator.getRouteNodeService().findRouteNodeByName(docType.getDocumentTypeId(), "logNode"); 122 assertNotNull(routeNodeDef); 123 assertHasConfigParam(routeNodeDef, RouteNode.CONTENT_FRAGMENT_CFG_KEY, "<simple name=\"logNode\"><type>org.kuali.rice.kew.engine.node.LogNode</type><message>var:xpath</message></simple>"); 124 assertHasConfigParam(routeNodeDef, "type", "org.kuali.rice.kew.engine.node.LogNode"); 125 assertHasConfigParam(routeNodeDef, "message", "var:xpath"); 126 127 routeNodeDef = KEWServiceLocator.getRouteNodeService().findRouteNodeByName(docType.getDocumentTypeId(), "logNode2"); 128 assertNotNull(routeNodeDef); 129 assertHasConfigParam(routeNodeDef, RouteNode.CONTENT_FRAGMENT_CFG_KEY, "<simple name=\"logNode2\"><type>org.kuali.rice.kew.engine.node.LogNode</type><level>ErRoR</level><log>Custom.Logger.Name</log><message>THAT'S ALL FOLKS</message></simple>"); 130 assertHasConfigParam(routeNodeDef, "type", "org.kuali.rice.kew.engine.node.LogNode"); 131 assertHasConfigParam(routeNodeDef, "level", "ErRoR"); 132 assertHasConfigParam(routeNodeDef, "message", "THAT'S ALL FOLKS"); 133 } 134 }