JBoss.orgCommunity Documentation
The process of launching the Organization Service TCK tests against your Organization Service is quite easy. For instance you may add TCK tests to your maven project and launch them during unit testing phase. To do that you need to complete the next two steps:
Configure your maven pom.xml file
Configure standalone container and Organization Service
If you need deeper investigation you can find Organization Service TCK test sources at svn
Organization Service TCK tests are available as a separate maven artifact, so the first thing you need to do is to add this artifact as a dependency to your pom.xml file
<dependency> <groupId>org.exoplatform.core</groupId> <artifactId>exo.core.component.organization.tests</artifactId> <version>2.4.3-GA</version> <classifier>sources</classifier> <scope>test</scope> </dependency>
You will also need to unpack tests as they are archieved within jar file. For this purpose you may use maven-dependency-plugin
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <executions> <execution> <id>unpack</id> <phase>generate-test-sources</phase> <goals> <goal>unpack</goal> </goals> <configuration> <artifactItems> <artifactItem> <groupId>org.exoplatform.core</groupId> <artifactId>exo.core.component.organization.tests</artifactId> <classifier>sources</classifier> <type>jar</type> <overWrite>false</overWrite> </artifactItem> </artifactItems> <outputDirectory>${project.build.directory}/org-service-tck-tests</outputDirectory> </configuration> </execution> </executions> </plugin>
Remember the value of outputDirectory parameter as you will need it later.
After you have unpacked the tests you need to add the tests sources and resources, use build-helper-maven-plugin
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <version>1.3</version> <executions> <execution> <id>add-test-resource</id> <phase>generate-test-sources</phase> <goals> <goal>add-test-resource</goal> </goals> <configuration> <resources> <resource> <directory>${project.build.directory}/org-service-tck-tests</directory> </resource> </resources> </configuration> </execution> <execution> <id>add-test-source</id> <phase>generate-test-sources</phase> <goals> <goal>add-test-source</goal> </goals> <configuration> <sources> <source>${project.build.directory}/org-service-tck-tests</source> </sources> </configuration> </execution> </executions> </plugin>
directory and source parameter should point to the location you've specified in outputDirectory parameter just above.
You also need to include all TCK tests using maven-surefire-plugin
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> ... <includes> <include>org/exoplatform/services/tck/organization/Test*.java</include> </includes> ... </configuration> </plugin>
As a result you should have TCK being launched during your next maven clean install. Example of configured pom.xml file you can find at svn server
TCK tests use standalone container, so to launch TCK tests propertly you will also need to add Organization Service as a standalone component. For that purpose use configuration file, which is to be located in 'src/test/java/conf/standalone/test-configuration.xml' by default, but its location can be changed by system property called orgservice.test.configuration.file. Add your Organization Service configuration with all needed components there.
In addition you need to populate your Organization Service with organization data (TCK tests are designed to use this data):
<external-component-plugins> <target-component>org.exoplatform.services.organization.OrganizationService</target-component> <component-plugin> <name>init.service.listener</name> <set-method>addListenerPlugin</set-method> <type>org.exoplatform.services.organization.OrganizationDatabaseInitializer</type> <description>this listener populate organization data for the first launch</description> <init-params> <value-param> <name>checkDatabaseAlgorithm</name> <description>check database</description> <value>entry</value> </value-param> <value-param> <name>printInformation</name> <description>Print information init database</description> <value>false</value> </value-param> <object-param> <name>configuration</name> <description>description</description> <object type="org.exoplatform.services.organization.OrganizationConfig"> <field name="membershipType"> <collection type="java.util.ArrayList"> <value> <object type="org.exoplatform.services.organization.OrganizationConfig$MembershipType"> <field name="type"><string>manager</string></field> <field name="description"><string>manager membership type</string></field> </object> </value> <value> <object type="org.exoplatform.services.organization.OrganizationConfig$MembershipType"> <field name="type"><string>member</string></field> <field name="description"><string>member membership type</string></field> </object> </value> <value> <object type="org.exoplatform.services.organization.OrganizationConfig$MembershipType"> <field name="type"><string>validator</string></field> <field name="description"><string>validator membership type</string></field> </object> </value> </collection> </field> <field name="group"> <collection type="java.util.ArrayList"> <value> <object type="org.exoplatform.services.organization.OrganizationConfig$Group"> <field name="name"><string>platform</string></field> <field name="parentId"><string></string></field> <field name="description"><string>the /platform group</string></field> <field name="label"><string>Platform</string></field> </object> </value> <value> <object type="org.exoplatform.services.organization.OrganizationConfig$Group"> <field name="name"><string>administrators</string></field> <field name="parentId"><string>/platform</string></field> <field name="description"><string>the /platform/administrators group</string></field> <field name="label"><string>Administrators</string></field> </object> </value> <value> <object type="org.exoplatform.services.organization.OrganizationConfig$Group"> <field name="name"><string>users</string></field> <field name="parentId"><string>/platform</string></field> <field name="description"><string>the /platform/users group</string></field> <field name="label"><string>Users</string></field> </object> </value> <value> <object type="org.exoplatform.services.organization.OrganizationConfig$Group"> <field name="name"><string>guests</string></field> <field name="parentId"><string>/platform</string></field> <field name="description"><string>the /platform/guests group</string></field> <field name="label"><string>Guests</string></field> </object> </value> <value> <object type="org.exoplatform.services.organization.OrganizationConfig$Group"> <field name="name"><string>organization</string></field> <field name="parentId"><string></string></field> <field name="description"><string>the organization group</string></field> <field name="label"><string>Organization</string></field> </object> </value> <value> <object type="org.exoplatform.services.organization.OrganizationConfig$Group"> <field name="name"><string>management</string></field> <field name="parentId"><string>/organization</string></field> <field name="description"><string>the /organization/management group</string></field> <field name="label"><string>Management</string></field> </object> </value> <value> <object type="org.exoplatform.services.organization.OrganizationConfig$Group"> <field name="name"><string>executive-board</string></field> <field name="parentId"><string>/organization/management</string></field> <field name="description"><string>the /organization/management/executive-board group</string></field> <field name="label"><string>Executive Board</string></field> </object> </value> <value> <object type="org.exoplatform.services.organization.OrganizationConfig$Group"> <field name="name"><string>human-resources</string></field> <field name="parentId"><string>/organization/management</string></field> <field name="description"><string>the /organization/management/human-resource group</string></field> <field name="label"><string>Human Resources</string></field> </object> </value> <value> <object type="org.exoplatform.services.organization.OrganizationConfig$Group"> <field name="name"><string>communication</string></field> <field name="parentId"><string>/organization</string></field> <field name="description"><string>the /organization/communication group</string></field> <field name="label"><string>Communication</string></field> </object> </value> <value> <object type="org.exoplatform.services.organization.OrganizationConfig$Group"> <field name="name"><string>marketing</string></field> <field name="parentId"><string>/organization/communication</string></field> <field name="description"><string>the /organization/communication/marketing group</string></field> <field name="label"><string>Marketing</string></field> </object> </value> <value> <object type="org.exoplatform.services.organization.OrganizationConfig$Group"> <field name="name"><string>press-and-media</string></field> <field name="parentId"><string>/organization/communication</string></field> <field name="description"><string>the /organization/communication/press-and-media group</string></field> <field name="label"><string>Press and Media</string></field> </object> </value> <value> <object type="org.exoplatform.services.organization.OrganizationConfig$Group"> <field name="name"><string>operations</string></field> <field name="parentId"><string>/organization</string></field> <field name="description"><string>the /organization/operations and media group</string></field> <field name="label"><string>Operations</string></field> </object> </value> <value> <object type="org.exoplatform.services.organization.OrganizationConfig$Group"> <field name="name"><string>sales</string></field> <field name="parentId"><string>/organization/operations</string></field> <field name="description"><string>the /organization/operations/sales group</string></field> <field name="label"><string>Sales</string></field> </object> </value> <value> <object type="org.exoplatform.services.organization.OrganizationConfig$Group"> <field name="name"><string>finances</string></field> <field name="parentId"><string>/organization/operations</string></field> <field name="description"><string>the /organization/operations/finances group</string></field> <field name="label"><string>Finances</string></field> </object> </value> <value> <object type="org.exoplatform.services.organization.OrganizationConfig$Group"> <field name="name"><string>customers</string></field> <field name="parentId"><string></string></field> <field name="description"><string>the /customers group</string></field> <field name="label"><string>Customers</string></field> </object> </value> <value> <object type="org.exoplatform.services.organization.OrganizationConfig$Group"> <field name="name"><string>partners</string></field> <field name="parentId"><string></string></field> <field name="description"><string>the /partners group</string></field> <field name="label"><string>Partners</string></field> </object> </value> </collection> </field> <field name="user"> <collection type="java.util.ArrayList"> <value> <object type="org.exoplatform.services.organization.OrganizationConfig$User"> <field name="userName"><string>root</string></field> <field name="password"><string>exo</string></field> <field name="firstName"><string>Root</string></field> <field name="lastName"><string>Root</string></field> <field name="email"><string>root@localhost</string></field> <field name="groups"> <string> manager:/platform/administrators,member:/platform/users, member:/organization/management/executive-board </string> </field> </object> </value> <value> <object type="org.exoplatform.services.organization.OrganizationConfig$User"> <field name="userName"><string>john</string></field> <field name="password"><string>exo</string></field> <field name="firstName"><string>John</string></field> <field name="lastName"><string>Anthony</string></field> <field name="email"><string>john@localhost</string></field> <field name="groups"> <string> member:/platform/administrators,member:/platform/users, manager:/organization/management/executive-board </string> </field> </object> </value> <value> <object type="org.exoplatform.services.organization.OrganizationConfig$User"> <field name="userName"><string>marry</string></field> <field name="password"><string>exo</string></field> <field name="firstName"><string>Marry</string></field> <field name="lastName"><string>Kelly</string></field> <field name="email"><string>marry@localhost</string></field> <field name="groups"> <string>member:/platform/users</string> </field> </object> </value> <value> <object type="org.exoplatform.services.organization.OrganizationConfig$User"> <field name="userName"><string>demo</string></field> <field name="password"><string>exo</string></field> <field name="firstName"><string>Demo</string></field> <field name="lastName"><string>exo</string></field> <field name="email"><string>demo@localhost</string></field> <field name="groups"> <string>member:/platform/guests,member:/platform/users</string> </field> </object> </value> </collection> </field> </object> </object-param> </init-params> </component-plugin> </external-component-plugins> <external-component-plugins> <target-component>org.exoplatform.services.organization.OrganizationService</target-component> <component-plugin> <name>tester.membership.type.listener</name> <set-method>addListenerPlugin</set-method> <type>org.exoplatform.services.organization.MembershipTypeEventListener</type> <description>Membership type listerner for testing purpose</description> </component-plugin> </external-component-plugins>
Ultimately you will have a configuration file which determines standalone container and consists of Organization Service configuration and initialization data. You can find prepared test-configuration.xml file at svn