| <?xml version="1.0"?> |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you 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. |
| --> |
| |
| <document> |
| |
| <properties> |
| <title>Test Container</title> |
| <author email="quintonm@bellsouth.net">Quinton McCombs</author> |
| <author email="epugh@upstate.com">Eric Pugh</author> |
| </properties> |
| |
| <body> |
| |
| <section name="Overview"> |
| <p> This component is really just a test container for testing the other components. This |
| container is not meant to be used in a production environment. </p> |
| <p> In order to save you a little coding, a base class has been provided for your test cases. |
| Simply extend <code>org.apache.fulcrum.testcontainer.BaseUnitTest</code> and you are ready |
| to go. </p> |
| </section> |
| |
| <section name="Usage"> |
| |
| <subsection name="Extending the test case"> |
| <p> In order to save you a little coding, a base class has been provided for your test |
| cases. Simply extend <code>org.apache.fulcrum.testcontainer.BaseUnitTest</code> and you |
| are ready to go. |
| </p> |
| <p> The <code>lookup</code> and <code>tearDown</code> methods of <code>BaseUnitTest</code> |
| will handle the lifecycle of the container for you. Each test will have a freshly |
| initialized container in which to run. |
| </p> |
| <p> To lookup and release components, call the <code>lookup</code> and <code>release</code> |
| methods of <code>BaseUnitTest</code>. |
| </p> |
| <p> By default, all tests will use the configuration files |
| <code>TestComponentConfig.xml</code> and <code>TestRoleConfig.xml</code> located in the |
| <code>src/test</code> directory. If you want to override that behavior for ALL your |
| tests, you can override the <code>getConfigurationFileName()</code> and/or |
| <code>getRoleFileName()</code> methods. |
| </p> |
| <p> If you are testing multiple config or role files, then just call |
| <code>setConfigurationFileName()</code> or <code>setRoleFileName()</code> before doing |
| your first lookup. The string you pass in should be prefixed from the directory the JVM is |
| running in (e.g. src/test/YOUR_CONFIG.xml). |
| </p> |
| <p> You can choose between two container implementations, the ECM and Fulcrum YAAFI. For this |
| just assign one of the values BaseUnitTest.CONTAINER_ECM or BaseUnitTest.CONTAINER_YAAFI to |
| the static variable BaseUnitTest.containerType before doing the first lookup. The default |
| container is Fulcrum YAAFI. |
| </p> |
| </subsection> |
| |
| <subsection name="Using the container directly"> |
| <p> If you need more control over the container itself for your test, just don't extend the |
| unit test provided with the container. Instead, embed the container directly in your test |
| case. See the java docs for <code>org.apache.fulcrum.testcontainer.Container</code> for |
| more information. |
| </p> |
| </subsection> |
| |
| <subsection name="Configuring the Components"> |
| <p> There are two ways of configuring your components. One is the traditional |
| TestComponentConfig.xml and TestRoleConfig.xml files described below. Or, for the ECMContainer |
| one is available that integrates the two, shown at the bottom. |
| </p> |
| <p> First, here is the role configuration example.</p> |
| <source> |
| <![CDATA[ |
| <role |
| name="org.apache.fulcrum.crypto.CryptoService" |
| shorthand="crypto" |
| default-class="org.apache.fulcrum.crypto.DefaultCryptoService"/> |
| ]]> |
| </source> |
| |
| <p> Now comes the basic configuration of the component. Here will will configure the various |
| encryption providers. |
| </p> |
| |
| <source> |
| <![CDATA[ |
| <crypto> |
| <algorithm> |
| <unix>org.apache.fulcrum.crypto.provider.UnixCrypt</unix> |
| <clear>org.apache.fulcrum.crypto.provider.ClearCrypt</clear> |
| <java>org.apache.fulcrum.crypto.provider.JavaCrypt</java> |
| <oldjava>org.apache.fulcrum.crypto.provider.OldJavaCrypt</oldjava> |
| |
| </algorithm> |
| </crypto> |
| ]]> |
| </source> |
| |
| <p>When using the ECM container you can choose to use an integrated roles and components file |
| like follows. Note that this file format is not supported with Fulcrum YAAFI and will cause |
| an Exception to be thrown. |
| </p> |
| |
| <source> |
| <![CDATA[ |
| <my-system> |
| <component |
| role="org.apache.fulcrum.testcontainer.SimpleComponent" |
| class="org.apache.fulcrum.testcontainer.AlternativeComponentImpl"> |
| </component> |
| </my-system> |
| ]]> |
| </source> |
| </subsection> |
| </section> |
| </body> |
| </document> |