<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

   <modelVersion>4.0.0</modelVersion>
   <artifactId>alfresco-rm-automation</artifactId>
   <name>Alfresco Records Management Automation</name>

   <parent>
      <groupId>org.alfresco</groupId>
      <artifactId>alfresco-rm</artifactId>
      <version>2.4.b</version>
   </parent>

   <properties>
   
      <selenium.version>2.45.0</selenium.version>
      <spring.version>4.0.5.RELEASE</spring.version>
      <maven.build.sourceVersion>1.8</maven.build.sourceVersion>
      <suiteXmlFile>testng.xml</suiteXmlFile>
      <skip.automationtests>true</skip.automationtests>
      
   </properties>

   <build>
      <plugins>
         <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <executions>
               <execution>
                   <id>add-test-source</id>
                   <goals>
                      <goal>add-test-source</goal>
                   </goals>
                   <configuration>
                      <sources>
                         <source>src/unit-test/java</source>
                      </sources>
                   </configuration>
               </execution>
            </executions>
         </plugin>
         <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
               <redirectTestOutputToFile>false</redirectTestOutputToFile>
               <suiteXmlFiles>
                  <suiteXmlFile>${project.build.testOutputDirectory}/${suiteXmlFile}</suiteXmlFile>
               </suiteXmlFiles>
               <skipTests>${skip.automationtests}</skipTests>
            </configuration>
         </plugin>
         <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
               <execution>
                  <id>default-cli</id>
                  <configuration>
                     <target>
                        <echo>Stopping Alfresco...</echo>
                        <exec executable="${basedir}/target/alf-installation/alfresco.sh" dir="target/alf-installation" failonerror="true">
                           <arg value="stop" />
                        </exec>
                     </target>
                  </configuration>
               </execution>
            </executions>
         </plugin>
         
         <!-- License header generation -->
         <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>license-maven-plugin</artifactId>          
            <configuration>                        
               <licenseName>alfresco_enterprise</licenseName>
               <licenseResolver>file:${project.parent.basedir}/license</licenseResolver>
               <descriptionTemplate>${project.parent.basedir}/license/description.ftl</descriptionTemplate>
            </configuration>
         </plugin> 
	      
      </plugins>
      <pluginManagement>
      	<plugins>
      		<!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
      		<plugin>
      			<groupId>org.eclipse.m2e</groupId>
      			<artifactId>lifecycle-mapping</artifactId>
      			<version>1.0.0</version>
      			<configuration>
      				<lifecycleMappingMetadata>
      					<pluginExecutions>
      						<pluginExecution>
      							<pluginExecutionFilter>
      								<groupId>
      									org.codehaus.mojo
      								</groupId>
      								<artifactId>
      									license-maven-plugin
      								</artifactId>
      								<versionRange>
      									[1.8,)
      								</versionRange>
      								<goals>
      									<goal>
      										update-file-header
      									</goal>
      								</goals>
      							</pluginExecutionFilter>
      							<action>
      								<ignore />
      							</action>
      						</pluginExecution>      						
      					</pluginExecutions>
      				</lifecycleMappingMetadata>
      			</configuration>
      		</plugin>
      	</plugins>
      </pluginManagement>
   </build>

   <dependencies>
      <dependency>
         <groupId>org.alfresco.test</groupId>
         <artifactId>dataprep</artifactId>
         <version>1.8</version>
      </dependency>
      <dependency>
         <groupId>org.alfresco.test</groupId>
         <artifactId>alfresco-testng</artifactId>
         <version>1.1</version>
      </dependency>
      <dependency>
         <groupId>org.alfresco</groupId>
         <artifactId>selenium-grid</artifactId>
         <version>1.4</version>
      </dependency>
      <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-beans</artifactId>
         <version>${spring.version}</version>
      </dependency>
      <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-core</artifactId>
         <version>${spring.version}</version>
         </dependency>
      <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-context</artifactId>
         <version>${spring.version}</version>
      </dependency>
      <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-tx</artifactId>
         <version>${spring.version}</version>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.springframework</groupId>
         <artifactId>spring-test</artifactId>
         <version>${spring.version}</version>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.testng</groupId>
         <artifactId>testng</artifactId>
         <version>6.8.8</version>
      </dependency>
      <dependency>
         <groupId>ru.yandex.qatools.htmlelements</groupId>
         <artifactId>htmlelements-all</artifactId>
         <version>1.12</version>
      </dependency>
      <dependency>
         <groupId>ru.yandex.qatools.properties</groupId>
         <artifactId>properties-loader</artifactId>
         <version>1.5</version>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>com.github.tomakehurst</groupId>
         <artifactId>wiremock</artifactId>
         <version>1.56</version>
      </dependency>
      <dependency>
         <groupId>org.mockito</groupId>
         <artifactId>mockito-all</artifactId>
         <scope>test</scope>
      </dependency>
   </dependencies>

   <profiles>
      <profile>
         <id>install-alfresco</id>
         <build>
            <plugins>
               <plugin>
                  <artifactId>maven-antrun-plugin</artifactId>
                  <executions>
                     <execution>
                        <id>fetch-installer</id>
                        <phase>generate-test-resources</phase>
                        <goals>
                           <goal>run</goal>
                        </goals>
                        <configuration>
                           <target>
                              <echo>Recreating database...</echo>
                              <sql driver="org.postgresql.Driver" url="jdbc:postgresql:template1" userid="alfresco" password="alfresco" autocommit="true">drop database if exists alfresco; create database alfresco</sql>
                              <echo>Downloading Alfresco installer...</echo>
                              <sshexec username="tomcat" host="pbam01.alfresco.com" keyfile="${user.home}/.ssh/id_rsa" outputproperty="installerPath" command="ls -rt ${installer.path} | tail -1 | tr ' ' '?' " />
                              <scp remoteFile="tomcat@pbam01.alfresco.com:${installerPath}" localTofile="target/alf-installer.bin" keyfile="${user.home}/.ssh/id_rsa" />
                              <chmod file="target/alf-installer.bin" perm="a+x" verbose="true" />
                              <echo>Installing Alfresco...</echo>
                              <exec executable="${basedir}/target/alf-installer.bin" dir="target" failonerror="true">
                                 <arg line="--mode unattended --alfresco_admin_password admin --disable-components postgres,alfrescowcmqs --jdbc_username alfresco --jdbc_password alfresco --prefix ${basedir}/target/alf-installation" />
                              </exec>
                           </target>
                        </configuration>
                     </execution>
                  </executions>
                  <dependencies>
                     <dependency>
                        <groupId>org.apache.ant</groupId>
                        <artifactId>ant-jsch</artifactId>
                        <version>1.8.2</version>
                     </dependency>
                     <dependency>
                        <groupId>postgresql</groupId>
                        <artifactId>postgresql</artifactId>
                        <version>9.1-901-1.jdbc4</version>
                     </dependency>
                  </dependencies>
               </plugin>
               <plugin>
                  <artifactId>maven-dependency-plugin</artifactId>
                  <executions>
                     <execution>
                        <id>fetch-amps</id>
                        <phase>process-test-resources</phase>
                        <goals>
                           <goal>copy</goal>
                        </goals>
                        <configuration>
                           <artifactItems>
                              <artifactItem>
                                 <groupId>org.alfresco</groupId>
                                 <artifactId>alfresco-rm-community-share</artifactId>
                                 <version>${project.version}</version>
                                 <type>amp</type>
                              </artifactItem>
                              <artifactItem>
                                 <groupId>org.alfresco</groupId>
                                 <artifactId>alfresco-rm-enterprise-share</artifactId>
                                 <version>${project.version}</version>
                                 <type>amp</type>
                              </artifactItem>
                              <artifactItem>
                                 <groupId>org.alfresco</groupId>
                                 <artifactId>alfresco-rm-community-repo</artifactId>
                                 <version>${project.version}</version>
                                 <type>amp</type>
                              </artifactItem>
                              <artifactItem>
                                 <groupId>org.alfresco</groupId>
                                 <artifactId>alfresco-rm-enterprise-repo</artifactId>
                                 <version>${project.version}</version>
                                 <type>amp</type>
                              </artifactItem>
                           </artifactItems>
                           <outputDirectory>${project.build.directory}/amps</outputDirectory>
                           <useBaseVersion>true</useBaseVersion>
                        </configuration>
                     </execution>
                  </executions>
               </plugin>
               <plugin>
                  <groupId>org.alfresco.maven.plugin</groupId>
                  <artifactId>alfresco-maven-plugin</artifactId>
                  <extensions>true</extensions>
                  <executions>
                     <execution>
                        <id>install-community-repo-amp</id>
                        <goals>
                           <goal>install</goal>
                        </goals>
                        <phase>process-test-resources</phase>
                        <configuration>
                           <backup>true</backup>
                           <ampLocation>${project.build.directory}/amps/alfresco-rm-community-repo-${project.version}.amp</ampLocation>
                           <warLocation>${project.build.directory}/alf-installation/tomcat/webapps/alfresco.war</warLocation>
                        </configuration>
                     </execution>
                     <execution>
                        <id>install-enterprise-repo-amp</id>
                        <goals>
                           <goal>install</goal>
                        </goals>
                        <phase>process-test-resources</phase>
                        <configuration>
                           <backup>true</backup>
                           <ampLocation>${project.build.directory}/amps/alfresco-rm-enterprise-repo-${project.version}.amp</ampLocation>
                           <warLocation>${project.build.directory}/alf-installation/tomcat/webapps/alfresco.war</warLocation>
                        </configuration>
                     </execution>
                     <execution>
                        <id>install-community-share-amp</id>
                        <goals>
                           <goal>install</goal>
                        </goals>
                        <phase>process-test-resources</phase>
                        <configuration>
                           <backup>true</backup>
                           <ampLocation>${project.build.directory}/amps/alfresco-rm-community-share-${project.version}.amp</ampLocation>
                           <warLocation>${project.build.directory}/alf-installation/tomcat/webapps/share.war</warLocation>
                        </configuration>
                     </execution>
                     <execution>
                        <id>install-enterprise-share-amp</id>
                        <goals>
                           <goal>install</goal>
                        </goals>
                        <phase>process-test-resources</phase>
                        <configuration>
                           <backup>true</backup>
                           <ampLocation>${project.build.directory}/amps/alfresco-rm-enterprise-share-${project.version}.amp</ampLocation>
                           <warLocation>${project.build.directory}/alf-installation/tomcat/webapps/share.war</warLocation>
                        </configuration>
                     </execution>
                  </executions>
               </plugin>
            </plugins>
         </build>
      </profile>
      <profile>
         <id>run-alfresco</id>
         <build>
            <plugins>
               <plugin>
                  <groupId>org.jacoco</groupId>
                  <artifactId>jacoco-maven-plugin</artifactId>
                  <version>0.7.5.201505241946</version>
                  <executions>
                     <execution>
                        <id>prepare-jacoco</id>
                        <goals>
                           <goal>prepare-agent</goal>
                        </goals>
                     </execution>
                  </executions>
                  <configuration>
                     <includes>
                        <include>org.alfresco.*</include>
                     </includes>
                  </configuration>
               </plugin>
               <plugin>
                  <artifactId>maven-antrun-plugin</artifactId>
                  <executions>
                     <execution>
                        <id>start-alfresco</id>
                        <phase>process-test-classes</phase>
                        <goals>
                           <goal>run</goal>
                        </goals>
                        <configuration>
                           <target>
                              <echo>Starting Alfresco...</echo>
                              <exec executable="${basedir}/target/alf-installation/alfresco.sh" dir="target/alf-installation" failonerror="true">
                                 <arg value="start" />
                                 <env key="CATALINA_OPTS" value="${argLine}" />
                              </exec>
                              <sleep minutes="5" />
                           </target>
                        </configuration>
                     </execution>
                     <execution>
                        <id>stop-alfresco</id>
                        <phase>post-integration-test</phase>
                        <goals>
                           <goal>run</goal>
                        </goals>
                        <configuration>
                           <target>
                              <echo>Stopping Alfresco...</echo>
                              <exec executable="${basedir}/target/alf-installation/alfresco.sh" dir="target/alf-installation" failonerror="true">
                                 <arg value="stop" />
                              </exec>
                           </target>
                        </configuration>
                     </execution>
                  </executions>
               </plugin>
            </plugins>
         </build>
      </profile>
   </profiles>
</project>
