mirror of https://github.com/apache/archiva.git
start adding layout for selenium test for webapp-js
git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1225381 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
b0448012bd
commit
9938b56847
|
@ -25,6 +25,11 @@ $(function() {
|
||||||
loadAndParseFile("restServices/redbackServices/utilServices/getBundleResources", {cache:false, mode: 'map',encoding:'utf-8'});
|
loadAndParseFile("restServices/redbackServices/utilServices/getBundleResources", {cache:false, mode: 'map',encoding:'utf-8'});
|
||||||
// load browser locale
|
// load browser locale
|
||||||
var browserLang = $.i18n.browserLang();
|
var browserLang = $.i18n.browserLang();
|
||||||
|
var requestLang = $.urlParam('request_lang');
|
||||||
|
if (requestLang) {
|
||||||
|
browserLang=requestLang;
|
||||||
|
}
|
||||||
|
$.log("use browserLang:"+browserLang);
|
||||||
loadAndParseFile("restServices/redbackServices/utilServices/getBundleResources?locale="+browserLang, {cache:false, mode: 'map',encoding:'utf-8'});
|
loadAndParseFile("restServices/redbackServices/utilServices/getBundleResources?locale="+browserLang, {cache:false, mode: 'map',encoding:'utf-8'});
|
||||||
// -- archiva
|
// -- archiva
|
||||||
// load default
|
// load default
|
||||||
|
|
|
@ -6,10 +6,10 @@
|
||||||
<h4 class="brand"><a href="index.html">Archiva</a></h4>
|
<h4 class="brand"><a href="index.html">Archiva</a></h4>
|
||||||
<ul class="nav secondary-nav">
|
<ul class="nav secondary-nav">
|
||||||
<li id="create-admin-link" style="display: none">
|
<li id="create-admin-link" style="display: none">
|
||||||
<a href="#" onclick="adminCreateBox();">${$.i18n.prop('create.admin.page.link')}</a>
|
<a href="#" onclick="adminCreateBox();" id="create-admin-link-a">${$.i18n.prop('create.admin.page.link')}</a>
|
||||||
</li>
|
</li>
|
||||||
<li id="login-link" style="display: none">
|
<li id="login-link" style="display: none">
|
||||||
<a href="#" onclick="loginBox();">
|
<a href="#" onclick="loginBox();" id="login-link-a">
|
||||||
<span class="label success">${login}</span>
|
<span class="label success">${login}</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -17,7 +17,7 @@
|
||||||
<a href="#" onclick="editUserDetailsBox();">${$.i18n.prop('edit.details')}</a>
|
<a href="#" onclick="editUserDetailsBox();">${$.i18n.prop('edit.details')}</a>
|
||||||
</li>
|
</li>
|
||||||
<li id="logout-link" style="display: none">
|
<li id="logout-link" style="display: none">
|
||||||
<a href="#" onclick="logout();">
|
<a href="#" onclick="logout();" id="logout-link-a">
|
||||||
<span class="label important">${logout}</span>
|
<span class="label important">${logout}</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
|
@ -110,7 +110,14 @@ $(function() {
|
||||||
var created = JSON.parse(result);
|
var created = JSON.parse(result);
|
||||||
if (created == true) {
|
if (created == true) {
|
||||||
displaySuccessMessage("admin user created");
|
displaySuccessMessage("admin user created");
|
||||||
loginCall(currentAdminUser.username(), currentAdminUser.password(),function(){screenChange();checkCreateAdminLink();checkSecurityLinks();});
|
var onSuccessCall=function(){
|
||||||
|
$.log("onSuccessCall after admin creation");
|
||||||
|
reccordLoginCookie(currentAdminUser);
|
||||||
|
screenChange();
|
||||||
|
checkCreateAdminLink();
|
||||||
|
checkSecurityLinks();
|
||||||
|
}
|
||||||
|
loginCall(currentAdminUser.username(), currentAdminUser.password(),onSuccessCall);
|
||||||
return this;
|
return this;
|
||||||
} else {
|
} else {
|
||||||
displayErrorMessage("admin user not created");
|
displayErrorMessage("admin user not created");
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
ReadMe
|
||||||
|
----------
|
||||||
|
Run selenium tests in src/test/testng with Maven and TestNG
|
||||||
|
- mvn clean install
|
||||||
|
|
||||||
|
Run Selenium tests in src/test/testng against an existing Archiva instance
|
||||||
|
- Start Archiva
|
||||||
|
- Configure admin user for archiva (match values in src/test/resources/testng.properties )
|
||||||
|
- modify src/test/resources/testng.properties as needed
|
||||||
|
- mvn clean install -Dcontainer-existing
|
||||||
|
|
||||||
|
The Cargo installations are stored outside of target to avoid multiple downloads.
|
||||||
|
To remove the Cargo installations and re-download them next run, use:
|
||||||
|
- mvn -Pclean-cargo clean
|
||||||
|
|
||||||
|
Internet Explorer and Safari users must disable their popup blockers. Using *iexplore as
|
||||||
|
the browser requires running as an Administrator on Windows 7/Vista, or alternatively you
|
||||||
|
can use *iexploreproxy.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
IMPORTANT:
|
||||||
|
|
||||||
|
When writing Selenium tests for artifact upload, please avoid using the "test" syllable/word for
|
||||||
|
the groupId or artifactId (ex. test.group:testAddArtifactValidValues:1.0) as this is used for the
|
||||||
|
search tests. The tests explicitly assert the returned number of hits for searching an artifact with
|
||||||
|
a groupId or artifactId containing the word "test", so if you upload or add a new artifact which has
|
||||||
|
the term "test", the number of hits will be different and the search tests will fail.
|
||||||
|
|
||||||
|
See org.apache.archiva.web.test.SearchTest.java or read the related thread discussion at
|
||||||
|
http://old.nabble.com/Selenium-tests-failure-in-trunk-td27830786.html
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,614 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
~ 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.
|
||||||
|
-->
|
||||||
|
<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/maven-v4_0_0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<parent>
|
||||||
|
<groupId>org.apache.archiva</groupId>
|
||||||
|
<artifactId>archiva-web</artifactId>
|
||||||
|
<version>1.4-M3-SNAPSHOT</version>
|
||||||
|
</parent>
|
||||||
|
<artifactId>archiva-webapp-test-js</artifactId>
|
||||||
|
<packaging>pom</packaging>
|
||||||
|
<name>Archiva Web :: Javascript Application Tests</name>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.testng</groupId>
|
||||||
|
<artifactId>testng</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>commons-io</groupId>
|
||||||
|
<artifactId>commons-io</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.codehaus.plexus</groupId>
|
||||||
|
<artifactId>plexus-command-line</artifactId>
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<artifactId>plexus-container-default</artifactId>
|
||||||
|
<groupId>org.codehaus.plexus</groupId>
|
||||||
|
</exclusion>
|
||||||
|
<exclusion>
|
||||||
|
<artifactId>plexus-component-api</artifactId>
|
||||||
|
<groupId>org.codehaus.plexus</groupId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.archiva</groupId>
|
||||||
|
<artifactId>archiva-webapp-js</artifactId>
|
||||||
|
<type>war</type>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.codehaus.plexus</groupId>
|
||||||
|
<artifactId>plexus-utils</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.codehaus.plexus</groupId>
|
||||||
|
<artifactId>plexus-slf4j-logging</artifactId>
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<artifactId>plexus-component-api</artifactId>
|
||||||
|
<groupId>org.codehaus.plexus</groupId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.seleniumhq.selenium.client-drivers</groupId>
|
||||||
|
<artifactId>selenium-java-client-driver</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<groupId>commons-logging</groupId>
|
||||||
|
<artifactId>commons-logging</artifactId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- Dependency for MavenConnectionTest -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>jdom</groupId>
|
||||||
|
<artifactId>jdom</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>jaxen</groupId>
|
||||||
|
<artifactId>jaxen</artifactId>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- Dependencies below are provided by the appserver -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.derby</groupId>
|
||||||
|
<artifactId>derby</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>javax.mail</groupId>
|
||||||
|
<artifactId>mail</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>javax.activation</groupId>
|
||||||
|
<artifactId>activation</artifactId>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<testSourceDirectory>src/test/testng</testSourceDirectory>
|
||||||
|
<testResources>
|
||||||
|
<testResource>
|
||||||
|
<directory>src/test/resources</directory>
|
||||||
|
<filtering>true</filtering>
|
||||||
|
<includes>
|
||||||
|
<include>**/*</include>
|
||||||
|
</includes>
|
||||||
|
</testResource>
|
||||||
|
</testResources>
|
||||||
|
<pluginManagement>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.codehaus.mojo</groupId>
|
||||||
|
<artifactId>selenium-maven-plugin</artifactId>
|
||||||
|
<version>${seleniumPluginVersion}</version>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.seleniumhq.selenium</groupId>
|
||||||
|
<artifactId>selenium-server</artifactId>
|
||||||
|
<version>${selenium-server.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.seleniumhq.selenium</groupId>
|
||||||
|
<artifactId>selenium-remote-driver</artifactId>
|
||||||
|
<version>${selenium-server.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.seleniumhq.selenium</groupId>
|
||||||
|
<artifactId>selenium-api</artifactId>
|
||||||
|
<version>${selenium-server.version}</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.rat</groupId>
|
||||||
|
<artifactId>apache-rat-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<excludes>
|
||||||
|
<exclude>src/test/resources/appserver-base/**</exclude>
|
||||||
|
<exclude>src/test/resources/repository/**</exclude>
|
||||||
|
<exclude>src/test/resources/local-repo/**</exclude>
|
||||||
|
<exclude>src/test/resources/projects/**</exclude>
|
||||||
|
<exclude>src/test/resources/snapshots/**</exclude>
|
||||||
|
<exclude>src/test/tomcat*/conf/catalina.policy</exclude>
|
||||||
|
</excludes>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</pluginManagement>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<artifactId>maven-resources-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<goals>
|
||||||
|
<goal>testResources</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<source>1.5</source>
|
||||||
|
<target>1.5</target>
|
||||||
|
<verbose>true</verbose>
|
||||||
|
</configuration>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<goals>
|
||||||
|
<goal>testCompile</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-surefire-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<redirectTestOutputToFile>false</redirectTestOutputToFile>
|
||||||
|
<properties>
|
||||||
|
<!--
|
||||||
|
Use this instead of suiteXmlFiles so that we can add the exclusion, as it is only accepted without suiteXmlFiles
|
||||||
|
-->
|
||||||
|
<property>
|
||||||
|
<name>listener</name>
|
||||||
|
<value>org.apache.archiva.web.test.listener.CaptureScreenShotsListener</value>
|
||||||
|
</property>
|
||||||
|
<property>
|
||||||
|
<name>excludegroups</name>
|
||||||
|
<!-- Exclude on all browsers but Firefox, as it is the only one that Selenium supports file uploads on -->
|
||||||
|
<value>${excluded.groups}</value>
|
||||||
|
</property>
|
||||||
|
</properties>
|
||||||
|
<runOrder>alphabetical</runOrder>
|
||||||
|
</configuration>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>integration-tests</id>
|
||||||
|
<phase>integration-test</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>test</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<systemProperties>
|
||||||
|
<property>
|
||||||
|
<name>browser</name>
|
||||||
|
<value>${selenium.browser}</value>
|
||||||
|
</property>
|
||||||
|
<property>
|
||||||
|
<name>baseUrl</name>
|
||||||
|
<value>${baseUrl}</value>
|
||||||
|
</property>
|
||||||
|
<property>
|
||||||
|
<name>maxWaitTimeInMs</name>
|
||||||
|
<value>${maxWaitTimeInMs}</value>
|
||||||
|
</property>
|
||||||
|
</systemProperties>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
|
||||||
|
<profiles>
|
||||||
|
<profile>
|
||||||
|
<id>create-container</id>
|
||||||
|
<activation>
|
||||||
|
<property>
|
||||||
|
<name>!container</name>
|
||||||
|
</property>
|
||||||
|
</activation>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-dependency-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>unzip-archiva-webapp</id>
|
||||||
|
<phase>generate-resources</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>unpack</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<artifactItems>
|
||||||
|
<artifactItem>
|
||||||
|
<groupId>${project.groupId}</groupId>
|
||||||
|
<artifactId>archiva-webapp-js</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
<type>war</type>
|
||||||
|
</artifactItem>
|
||||||
|
</artifactItems>
|
||||||
|
<outputDirectory>${project.build.directory}/${container.name}conf/webapps/archiva</outputDirectory>
|
||||||
|
<overWriteSnapshots>true</overWriteSnapshots>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
<execution>
|
||||||
|
<id>prepare-provided-dependencies</id>
|
||||||
|
<phase>generate-resources</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>copy-dependencies</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<!-- TODO: this sometimes copies everything, causing problems with the server start up -->
|
||||||
|
<includeGroupIds>org.apache.derby,javax.mail,javax.activation</includeGroupIds>
|
||||||
|
<overWriteReleases>false</overWriteReleases>
|
||||||
|
<overWriteSnapshots>true</overWriteSnapshots>
|
||||||
|
<excludeTransitive>false</excludeTransitive>
|
||||||
|
<outputDirectory>${project.build.directory}/providedDependencies</outputDirectory>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-antrun-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<phase>generate-resources</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>run</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<tasks>
|
||||||
|
<copy todir="${project.build.directory}/appserver-base">
|
||||||
|
<fileset dir="src/test/resources/appserver-base"/>
|
||||||
|
</copy>
|
||||||
|
<copy todir="${project.build.directory}/repository">
|
||||||
|
<fileset dir="src/test/resources/repository"/>
|
||||||
|
</copy>
|
||||||
|
<copy todir="${project.build.directory}/index">
|
||||||
|
<fileset dir="src/test/resources/index"/>
|
||||||
|
</copy>
|
||||||
|
<copy todir="${project.build.directory}/snapshots">
|
||||||
|
<fileset dir="src/test/resources/snapshots"/>
|
||||||
|
</copy>
|
||||||
|
<copy todir="${project.build.directory}/projects">
|
||||||
|
<fileset dir="src/test/resources/projects"/>
|
||||||
|
</copy>
|
||||||
|
<copy todir="${project.build.directory}/local-repo">
|
||||||
|
<fileset dir="src/test/resources/local-repo"/>
|
||||||
|
</copy>
|
||||||
|
</tasks>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
<execution>
|
||||||
|
<id>copy-container-conf</id>
|
||||||
|
<phase>package</phase>
|
||||||
|
<configuration>
|
||||||
|
<tasks>
|
||||||
|
<copy todir="${project.build.directory}/${container.name}conf">
|
||||||
|
<fileset dir="src/test/${container.name}"/>
|
||||||
|
</copy>
|
||||||
|
<copy
|
||||||
|
todir="${cargo.install.dir}/apache-tomcat-${tomcat.version}/apache-tomcat-${tomcat.version}/common/lib">
|
||||||
|
<fileset dir="${project.build.directory}/providedDependencies">
|
||||||
|
<include name="**/*.jar"/>
|
||||||
|
</fileset>
|
||||||
|
</copy>
|
||||||
|
<!-- for tomcat 6 -->
|
||||||
|
<copy
|
||||||
|
todir="${cargo.install.dir}/apache-tomcat-${tomcat.version}/apache-tomcat-${tomcat.version}/lib">
|
||||||
|
<fileset dir="${project.build.directory}/providedDependencies">
|
||||||
|
<include name="**/*.jar"/>
|
||||||
|
</fileset>
|
||||||
|
</copy>
|
||||||
|
</tasks>
|
||||||
|
</configuration>
|
||||||
|
<goals>
|
||||||
|
<goal>run</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
<execution>
|
||||||
|
<id>check-archiva-loaded</id>
|
||||||
|
<phase>integration-test</phase>
|
||||||
|
<configuration>
|
||||||
|
<tasks>
|
||||||
|
<get src="http://localhost:${container.test.port}/archiva/" dest="${project.build.directory}/index.html"/>
|
||||||
|
<delete file="${project.build.directory}/index.html"/>
|
||||||
|
</tasks>
|
||||||
|
</configuration>
|
||||||
|
<goals>
|
||||||
|
<goal>run</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.codehaus.cargo</groupId>
|
||||||
|
<artifactId>cargo-maven2-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>start-container</id>
|
||||||
|
<phase>pre-integration-test</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>start</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
<execution>
|
||||||
|
<id>stop-container</id>
|
||||||
|
<phase>post-integration-test</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>stop</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
<configuration>
|
||||||
|
<wait>${cargo.wait}</wait>
|
||||||
|
<container>
|
||||||
|
<containerId>${container.name}</containerId>
|
||||||
|
<zipUrlInstaller>
|
||||||
|
<url>${container.url}</url>
|
||||||
|
<downloadDir>${user.home}/.cargo</downloadDir>
|
||||||
|
</zipUrlInstaller>
|
||||||
|
<log>${project.build.directory}/logs/${container.name}.log</log>
|
||||||
|
<output>${project.build.directory}/logs/${container.name}.out</output>
|
||||||
|
<timeout>${cargo.timeout}</timeout>
|
||||||
|
<systemProperties>
|
||||||
|
<appserver.base>${project.build.directory}/appserver-base</appserver.base>
|
||||||
|
<appserver.home>${project.build.directory}/appserver-base</appserver.home>
|
||||||
|
<derby.system.home>${project.build.directory}</derby.system.home>
|
||||||
|
</systemProperties>
|
||||||
|
</container>
|
||||||
|
<configuration>
|
||||||
|
<home>${project.build.directory}/${container.name}conf</home>
|
||||||
|
<type>existing</type>
|
||||||
|
<properties>
|
||||||
|
<cargo.servlet.port>${container.test.port}</cargo.servlet.port>
|
||||||
|
<cargo.jvmargs>${cargo.jvm.args}</cargo.jvmargs>
|
||||||
|
</properties>
|
||||||
|
</configuration>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</profile>
|
||||||
|
<profile>
|
||||||
|
<id>existing-container</id>
|
||||||
|
<activation>
|
||||||
|
<property>
|
||||||
|
<name>!baseUrl</name>
|
||||||
|
</property>
|
||||||
|
</activation>
|
||||||
|
<properties>
|
||||||
|
<baseUrl>http://localhost:${container.test.port}/archiva/index.html</baseUrl>
|
||||||
|
</properties>
|
||||||
|
</profile>
|
||||||
|
<profile>
|
||||||
|
<id>start-selenium</id>
|
||||||
|
<activation>
|
||||||
|
<property>
|
||||||
|
<name>!seleniumHost</name>
|
||||||
|
</property>
|
||||||
|
</activation>
|
||||||
|
<properties>
|
||||||
|
<seleniumHost>localhost</seleniumHost>
|
||||||
|
<seleniumPort>4444</seleniumPort>
|
||||||
|
</properties>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.codehaus.mojo</groupId>
|
||||||
|
<artifactId>selenium-maven-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<phase>pre-integration-test</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>start-server</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<background>true</background>
|
||||||
|
<port>${seleniumPort}</port>
|
||||||
|
<logOutput>true</logOutput>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</profile>
|
||||||
|
<profile>
|
||||||
|
<id>tomcat6x</id>
|
||||||
|
<activation>
|
||||||
|
<property>
|
||||||
|
<name>!container</name>
|
||||||
|
</property>
|
||||||
|
</activation>
|
||||||
|
<properties>
|
||||||
|
<container.name>tomcat6x</container.name>
|
||||||
|
<tomcat.version>${tomcat6x.version}</tomcat.version>
|
||||||
|
<container.url>
|
||||||
|
${apache.mirror.url}/tomcat/tomcat-6/v${tomcat6x.version}/bin/apache-tomcat-${tomcat6x.version}.zip
|
||||||
|
</container.url>
|
||||||
|
</properties>
|
||||||
|
</profile>
|
||||||
|
<profile>
|
||||||
|
<id>firefox</id>
|
||||||
|
<activation>
|
||||||
|
<property>
|
||||||
|
<name>!browser</name>
|
||||||
|
</property>
|
||||||
|
</activation>
|
||||||
|
<properties>
|
||||||
|
<selenium.browser>*firefox</selenium.browser>
|
||||||
|
<excluded.groups/>
|
||||||
|
</properties>
|
||||||
|
</profile>
|
||||||
|
<profile>
|
||||||
|
<id>chrome</id>
|
||||||
|
<activation>
|
||||||
|
<property>
|
||||||
|
<name>browser</name>
|
||||||
|
<value>chrome</value>
|
||||||
|
</property>
|
||||||
|
</activation>
|
||||||
|
<properties>
|
||||||
|
<selenium.browser>*googlechrome</selenium.browser>
|
||||||
|
<excluded.groups>requiresUpload</excluded.groups>
|
||||||
|
</properties>
|
||||||
|
</profile>
|
||||||
|
<profile>
|
||||||
|
<id>iexplore</id>
|
||||||
|
<activation>
|
||||||
|
<property>
|
||||||
|
<name>browser</name>
|
||||||
|
<value>iexplore</value>
|
||||||
|
</property>
|
||||||
|
</activation>
|
||||||
|
<properties>
|
||||||
|
<selenium.browser>*iexplore</selenium.browser>
|
||||||
|
<excluded.groups>requiresUpload</excluded.groups>
|
||||||
|
</properties>
|
||||||
|
</profile>
|
||||||
|
<profile>
|
||||||
|
<id>safari</id>
|
||||||
|
<activation>
|
||||||
|
<property>
|
||||||
|
<name>browser</name>
|
||||||
|
<value>safari</value>
|
||||||
|
</property>
|
||||||
|
</activation>
|
||||||
|
<properties>
|
||||||
|
<selenium.browser>*safari</selenium.browser>
|
||||||
|
<excluded.groups>requiresUpload</excluded.groups>
|
||||||
|
</properties>
|
||||||
|
</profile>
|
||||||
|
<profile>
|
||||||
|
<id>otherbrowser</id>
|
||||||
|
<activation>
|
||||||
|
<property>
|
||||||
|
<name>browser</name>
|
||||||
|
<value>other</value>
|
||||||
|
</property>
|
||||||
|
</activation>
|
||||||
|
<properties>
|
||||||
|
<selenium.browser>*custom ${browserPath}</selenium.browser>
|
||||||
|
<excluded.groups>requiresUpload</excluded.groups>
|
||||||
|
</properties>
|
||||||
|
</profile>
|
||||||
|
<profile>
|
||||||
|
<id>headless</id>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.codehaus.mojo</groupId>
|
||||||
|
<artifactId>selenium-maven-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>xvfb</id>
|
||||||
|
<phase>validate</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>xvfb</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</profile>
|
||||||
|
<profile>
|
||||||
|
<id>debug</id>
|
||||||
|
<properties>
|
||||||
|
<!-- TODO: review how appropriate the memory settings are - should work with less -->
|
||||||
|
<cargo.jvm.args>
|
||||||
|
-Xdebug -Xnoagent -Djava.compiler=NONE
|
||||||
|
-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=${cargo.debug.port}
|
||||||
|
-Xmx512m -XX:MaxPermSize=256m
|
||||||
|
</cargo.jvm.args>
|
||||||
|
<cargo.debug.port>8000</cargo.debug.port>
|
||||||
|
<!-- wait an unusual amount of time (1hr) to allow debugging to occur -->
|
||||||
|
<maxWaitTimeInMs>3600000</maxWaitTimeInMs>
|
||||||
|
</properties>
|
||||||
|
</profile>
|
||||||
|
<profile>
|
||||||
|
<id>ci-server</id>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-antrun-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>cleanup-files</id>
|
||||||
|
<goals>
|
||||||
|
<goal>run</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<tasks>
|
||||||
|
<delete file="${user.home}/.m2/archiva.xml" quiet="true"/>
|
||||||
|
</tasks>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</profile>
|
||||||
|
</profiles>
|
||||||
|
|
||||||
|
<pluginRepositories>
|
||||||
|
<pluginRepository>
|
||||||
|
<id>codehaus.snapshots</id>
|
||||||
|
<url>https://nexus.codehaus.org/content/repositories/snapshots/</url>
|
||||||
|
<releases>
|
||||||
|
<enabled>false</enabled>
|
||||||
|
</releases>
|
||||||
|
<snapshots>
|
||||||
|
<enabled>true</enabled>
|
||||||
|
</snapshots>
|
||||||
|
</pluginRepository>
|
||||||
|
</pluginRepositories>
|
||||||
|
|
||||||
|
|
||||||
|
</project>
|
|
@ -0,0 +1,8 @@
|
||||||
|
<configuration>
|
||||||
|
<localRepository></localRepository>
|
||||||
|
<webapp>
|
||||||
|
<ui>
|
||||||
|
<appletFindEnabled>false</appletFindEnabled>
|
||||||
|
</ui>
|
||||||
|
</webapp>
|
||||||
|
</configuration>
|
|
@ -0,0 +1,49 @@
|
||||||
|
<!--
|
||||||
|
~ 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.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!DOCTYPE Repository PUBLIC "-//The Apache Software Foundation//DTD Jackrabbit 1.6//EN"
|
||||||
|
"http://jackrabbit.apache.org/dtd/repository-1.6.dtd">
|
||||||
|
|
||||||
|
<Repository>
|
||||||
|
<FileSystem class="org.apache.jackrabbit.core.fs.mem.MemoryFileSystem"/>
|
||||||
|
<!--<FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
|
||||||
|
<param name="path" value="${rep.home}/repository"/>
|
||||||
|
</FileSystem> -->
|
||||||
|
<Security appName="Jackrabbit">
|
||||||
|
<SecurityManager class="org.apache.jackrabbit.core.security.simple.SimpleSecurityManager" workspaceName="security"/>
|
||||||
|
<AccessManager class="org.apache.jackrabbit.core.security.simple.SimpleAccessManager"/>
|
||||||
|
<LoginModule class="org.apache.jackrabbit.core.security.simple.SimpleLoginModule"/>
|
||||||
|
</Security>
|
||||||
|
<Workspaces rootPath="${rep.home}/workspaces" defaultWorkspace="default"/>
|
||||||
|
<Workspace name="${wsp.name}">
|
||||||
|
<FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
|
||||||
|
<param name="path" value="${wsp.home}"/>
|
||||||
|
</FileSystem>
|
||||||
|
<PersistenceManager class="org.apache.jackrabbit.core.persistence.bundle.BundleFsPersistenceManager"/>
|
||||||
|
<SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
|
||||||
|
<param name="path" value="${wsp.home}/index"/>
|
||||||
|
</SearchIndex>
|
||||||
|
</Workspace>
|
||||||
|
<Versioning rootPath="${rep.home}/version">
|
||||||
|
<FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
|
||||||
|
<param name="path" value="${rep.home}/version"/>
|
||||||
|
</FileSystem>
|
||||||
|
<PersistenceManager class="org.apache.jackrabbit.core.persistence.bundle.BundleFsPersistenceManager"/>
|
||||||
|
</Versioning>
|
||||||
|
</Repository>
|
|
@ -0,0 +1 @@
|
||||||
|
<configuration />
|
Binary file not shown.
|
@ -0,0 +1 @@
|
||||||
|
ea7dea9244b2a0975cfa117dc34fe18e
|
|
@ -0,0 +1 @@
|
||||||
|
1039566ff5361d07eccd1243c45929b96441c7d6
|
|
@ -0,0 +1,54 @@
|
||||||
|
<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/maven-v4_0_0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<groupId>test</groupId>
|
||||||
|
<artifactId>test</artifactId>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
<version>1.0</version>
|
||||||
|
<name>test</name>
|
||||||
|
<url>http://maven.apache.org</url>
|
||||||
|
|
||||||
|
<licenses>
|
||||||
|
<license>
|
||||||
|
<name>Test License</name>
|
||||||
|
<url>http://www.test.org/test.html</url>
|
||||||
|
</license>
|
||||||
|
</licenses>
|
||||||
|
|
||||||
|
<mailingLists>
|
||||||
|
<mailingList>
|
||||||
|
<name>test user list</name>
|
||||||
|
<subscribe>http://test.net/lists/listinfo/test-user</subscribe>
|
||||||
|
<unsubscribe>http://test.net/lists/listinfo/test-user</unsubscribe>
|
||||||
|
<archive>http://www.test-archive.com/test-user%40lists.test.net/</archive>
|
||||||
|
</mailingList>
|
||||||
|
<mailingList>
|
||||||
|
<name>test developer list</name>
|
||||||
|
<subscribe>http://test.net/lists/listinfo/test-dev</subscribe>
|
||||||
|
<unsubscribe>http://test.net/lists/listinfo/test-dev</unsubscribe>
|
||||||
|
<archive>http://www.test-archive.com/test-dev%40lists.test.net/</archive>
|
||||||
|
</mailingList>
|
||||||
|
</mailingLists>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>test.group.id</groupId>
|
||||||
|
<artifactId>testArtifactId</artifactId>
|
||||||
|
<version>1.0</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>junit</groupId>
|
||||||
|
<artifactId>junit</artifactId>
|
||||||
|
<version>3.8.1</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
<distributionManagement>
|
||||||
|
<repository>
|
||||||
|
<id>test</id>
|
||||||
|
<url>file://localhost/Users/brett/scm/archiva/archiva/archiva-modules/archiva-web/archiva-webapp-test/src/test/it-resources/appserver-base/data/repositories/internal</url>
|
||||||
|
</repository>
|
||||||
|
</distributionManagement>
|
||||||
|
</project>
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
f80c7c493716de649a99db00cd2ff34c
|
|
@ -0,0 +1 @@
|
||||||
|
4b95c6fa09d1e02efdb69129f53f025e33bc8958
|
|
@ -0,0 +1,12 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<metadata>
|
||||||
|
<groupId>test</groupId>
|
||||||
|
<artifactId>test</artifactId>
|
||||||
|
<version>1.0</version>
|
||||||
|
<versioning>
|
||||||
|
<versions>
|
||||||
|
<version>1.0</version>
|
||||||
|
</versions>
|
||||||
|
<lastUpdated>20100114015837</lastUpdated>
|
||||||
|
</versioning>
|
||||||
|
</metadata>
|
|
@ -0,0 +1 @@
|
||||||
|
dab1b8c2475fe839f387ceaef0d82b30
|
|
@ -0,0 +1 @@
|
||||||
|
4e5b414d5419121ef75131cb52235a9abbf2095a
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,44 @@
|
||||||
|
<settings>
|
||||||
|
<localRepository></localRepository>
|
||||||
|
<servers>
|
||||||
|
<server>
|
||||||
|
<id>snapshots</id>
|
||||||
|
<username>admin</username>
|
||||||
|
<password>admin1</password>
|
||||||
|
</server>
|
||||||
|
</servers>
|
||||||
|
<profiles>
|
||||||
|
<profile>
|
||||||
|
<id>repositories</id>
|
||||||
|
<repositories>
|
||||||
|
<repository>
|
||||||
|
<id>snapshots</id>
|
||||||
|
<name>snapshots-repository</name>
|
||||||
|
<url>http://localhost:9696/archiva/repository/snapshots/</url>
|
||||||
|
<releases>
|
||||||
|
<enabled>false</enabled>
|
||||||
|
</releases>
|
||||||
|
<snapshots>
|
||||||
|
<enabled>true</enabled>
|
||||||
|
</snapshots>
|
||||||
|
</repository>
|
||||||
|
</repositories>
|
||||||
|
<pluginRepositories>
|
||||||
|
<pluginRepository>
|
||||||
|
<id>snapshots</id>
|
||||||
|
<name>snapshots-repository</name>
|
||||||
|
<url>http://localhost:9696/archiva/repository/snapshot/</url>
|
||||||
|
<releases>
|
||||||
|
<enabled>false</enabled>
|
||||||
|
</releases>
|
||||||
|
<snapshots>
|
||||||
|
<enabled>true</enabled>
|
||||||
|
</snapshots>
|
||||||
|
</pluginRepository>
|
||||||
|
</pluginRepositories>
|
||||||
|
</profile>
|
||||||
|
</profiles>
|
||||||
|
<activeProfiles>
|
||||||
|
<activeProfile>repositories</activeProfile>
|
||||||
|
</activeProfiles>
|
||||||
|
</settings>
|
|
@ -0,0 +1,41 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
~ 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.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<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/maven-v4_0_0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<groupId>org.apache.archiva</groupId>
|
||||||
|
<artifactId>bad-dependency</artifactId>
|
||||||
|
<version>1.0</version>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
<name>Bad Dependency</name>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.archiva.web.test</groupId>
|
||||||
|
<artifactId>bad-dependency</artifactId>
|
||||||
|
<version>1.0</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.archiva.web.test</groupId>
|
||||||
|
<artifactId>foo-bar</artifactId>
|
||||||
|
<version>1.2-SNAPSHOT</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</project>
|
|
@ -0,0 +1,41 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
~ 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.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<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/maven-v4_0_0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<groupId>org.apache.archiva</groupId>
|
||||||
|
<artifactId>dependency-in-proxied</artifactId>
|
||||||
|
<version>1.0</version>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
<name>Dependency In Proxied</name>
|
||||||
|
<dependencies>
|
||||||
|
<!--dependency>
|
||||||
|
<groupId>org.apache.maven</groupId>
|
||||||
|
<artifactId>maven-jxr</artifactId>
|
||||||
|
<version>2.1</version>
|
||||||
|
</dependency-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.lowagie</groupId>
|
||||||
|
<artifactId>itext</artifactId>
|
||||||
|
<version>1.3</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</project>
|
|
@ -0,0 +1,7 @@
|
||||||
|
#Last Scan Information, managed by Archiva. DO NOT EDIT
|
||||||
|
#Thu Apr 19 17:04:36 PHT 2007
|
||||||
|
scan.included.files=12
|
||||||
|
scan.skipped.files=0
|
||||||
|
scan.finished.timestamp=1176973476967
|
||||||
|
scan.consumed.files=20
|
||||||
|
scan.started.timestamp=1176973467414
|
|
@ -0,0 +1 @@
|
||||||
|
0360f14347d5502114ba7afe4ea2e07f
|
|
@ -0,0 +1 @@
|
||||||
|
4a667b9923fb936409b96c8242bebc2f96f374f5
|
|
@ -0,0 +1,25 @@
|
||||||
|
<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/maven-v4_0_0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<groupId>org.apache.maven.archiva.web.test</groupId>
|
||||||
|
<artifactId>artifact-a</artifactId>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
<version>1.0</version>
|
||||||
|
<name>artifact-a</name>
|
||||||
|
<url>http://maven.apache.org</url>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.maven.archiva.web.test</groupId>
|
||||||
|
<artifactId>artifact-b</artifactId>
|
||||||
|
<version>2.0</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
<build>
|
||||||
|
<extensions>
|
||||||
|
<extension>
|
||||||
|
<groupId>org.apache.maven.wagon</groupId>
|
||||||
|
<artifactId>wagon-webdav</artifactId>
|
||||||
|
</extension>
|
||||||
|
</extensions>
|
||||||
|
</build>
|
||||||
|
</project>
|
|
@ -0,0 +1 @@
|
||||||
|
cdf69ffbcb888aacea6cfeaf479fefd1
|
|
@ -0,0 +1 @@
|
||||||
|
f6a384b1ab62ed45ae7dee1a059815e94bbc7fa6
|
|
@ -0,0 +1,11 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?><metadata>
|
||||||
|
<groupId>org.apache.maven.archiva.web.test</groupId>
|
||||||
|
<artifactId>artifact-a</artifactId>
|
||||||
|
<version>1.0</version>
|
||||||
|
<versioning>
|
||||||
|
<versions>
|
||||||
|
<version>1.0</version>
|
||||||
|
</versions>
|
||||||
|
<lastUpdated>20070417090928</lastUpdated>
|
||||||
|
</versioning>
|
||||||
|
</metadata>
|
|
@ -0,0 +1 @@
|
||||||
|
bc87573a595a2c387b5baa4ad7d06743
|
|
@ -0,0 +1 @@
|
||||||
|
e9ecaaa14a3c09b07206980c15749a631dbc986a
|
|
@ -0,0 +1 @@
|
||||||
|
16a308257949f23afa5d1f1dec41aa44
|
|
@ -0,0 +1 @@
|
||||||
|
36a3a9cc35b8ca0d73998d7b39d290b489800a22
|
|
@ -0,0 +1,25 @@
|
||||||
|
<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/maven-v4_0_0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<groupId>org.apache.maven.archiva.web.test</groupId>
|
||||||
|
<artifactId>artifact-b</artifactId>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
<version>2.0</version>
|
||||||
|
<name>artifact-b</name>
|
||||||
|
<url>http://maven.apache.org</url>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.maven.archiva.web.test</groupId>
|
||||||
|
<artifactId>artifact-c</artifactId>
|
||||||
|
<version>3.0</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
<build>
|
||||||
|
<extensions>
|
||||||
|
<extension>
|
||||||
|
<groupId>org.apache.maven.wagon</groupId>
|
||||||
|
<artifactId>wagon-webdav</artifactId>
|
||||||
|
</extension>
|
||||||
|
</extensions>
|
||||||
|
</build>
|
||||||
|
</project>
|
|
@ -0,0 +1 @@
|
||||||
|
be5b8f8539a62b5935793ebeb87215fd
|
|
@ -0,0 +1 @@
|
||||||
|
012a658d4a4f70aa3e8dd4b2db67020817b7dfcc
|
|
@ -0,0 +1,11 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?><metadata>
|
||||||
|
<groupId>org.apache.maven.archiva.web.test</groupId>
|
||||||
|
<artifactId>artifact-b</artifactId>
|
||||||
|
<version>2.0</version>
|
||||||
|
<versioning>
|
||||||
|
<versions>
|
||||||
|
<version>2.0</version>
|
||||||
|
</versions>
|
||||||
|
<lastUpdated>20070417090908</lastUpdated>
|
||||||
|
</versioning>
|
||||||
|
</metadata>
|
|
@ -0,0 +1 @@
|
||||||
|
bedfccc27fc7dc262d5c99a7aa8b83d8
|
|
@ -0,0 +1 @@
|
||||||
|
4902ea6b16838ff26f9136460c4394b0ad7cc7f5
|
|
@ -0,0 +1 @@
|
||||||
|
853a10a201f8a296e37e856615c5349c
|
|
@ -0,0 +1 @@
|
||||||
|
5155da8820ed77c43e983c1244d94a3b27bf08f7
|
|
@ -0,0 +1,26 @@
|
||||||
|
<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/maven-v4_0_0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<groupId>org.apache.maven.archiva.web.test</groupId>
|
||||||
|
<artifactId>artifact-c</artifactId>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
<version>3.0</version>
|
||||||
|
<name>artifact-c</name>
|
||||||
|
<url>http://maven.apache.org</url>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>junit</groupId>
|
||||||
|
<artifactId>junit</artifactId>
|
||||||
|
<version>3.8.1</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
<build>
|
||||||
|
<extensions>
|
||||||
|
<extension>
|
||||||
|
<groupId>org.apache.maven.wagon</groupId>
|
||||||
|
<artifactId>wagon-webdav</artifactId>
|
||||||
|
</extension>
|
||||||
|
</extensions>
|
||||||
|
</build>
|
||||||
|
</project>
|
|
@ -0,0 +1 @@
|
||||||
|
4df0417579b1492f37da14316adb85af
|
|
@ -0,0 +1 @@
|
||||||
|
c3b007acd9c17b80753b39a4121255965e7e2e65
|
|
@ -0,0 +1,11 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?><metadata>
|
||||||
|
<groupId>org.apache.maven.archiva.web.test</groupId>
|
||||||
|
<artifactId>artifact-c</artifactId>
|
||||||
|
<version>3.0</version>
|
||||||
|
<versioning>
|
||||||
|
<versions>
|
||||||
|
<version>3.0</version>
|
||||||
|
</versions>
|
||||||
|
<lastUpdated>20070417090835</lastUpdated>
|
||||||
|
</versioning>
|
||||||
|
</metadata>
|
|
@ -0,0 +1 @@
|
||||||
|
74d58d97e78d5e51cc02c489c5edba0d
|
|
@ -0,0 +1 @@
|
||||||
|
5c7571eb35248be0f65758783b036e8f7899c146
|
|
@ -0,0 +1 @@
|
||||||
|
55f498a518e1151ce2e54daa674691de
|
|
@ -0,0 +1 @@
|
||||||
|
730551bde461564d3f8a7e0178ef9bc54a86d2dd
|
|
@ -0,0 +1,25 @@
|
||||||
|
<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/maven-v4_0_0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<groupId>org.apache.maven.archiva.web.test</groupId>
|
||||||
|
<artifactId>artifact-s</artifactId>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
<version>0.1</version>
|
||||||
|
<name>artifact-s</name>
|
||||||
|
<url>http://maven.apache.org</url>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.maven.archiva.web.test</groupId>
|
||||||
|
<artifactId>artifact-a</artifactId>
|
||||||
|
<version>1.0</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
<build>
|
||||||
|
<extensions>
|
||||||
|
<extension>
|
||||||
|
<groupId>org.apache.maven.wagon</groupId>
|
||||||
|
<artifactId>wagon-webdav</artifactId>
|
||||||
|
</extension>
|
||||||
|
</extensions>
|
||||||
|
</build>
|
||||||
|
</project>
|
|
@ -0,0 +1 @@
|
||||||
|
746ba2848229dbc1c9683ece0e7f02c8
|
|
@ -0,0 +1 @@
|
||||||
|
0d068f63069a86d982075a1dca7fe74fd95a29df
|
|
@ -0,0 +1,11 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?><metadata>
|
||||||
|
<groupId>org.apache.maven.archiva.web.test</groupId>
|
||||||
|
<artifactId>artifact-s</artifactId>
|
||||||
|
<version>0.1</version>
|
||||||
|
<versioning>
|
||||||
|
<versions>
|
||||||
|
<version>0.1</version>
|
||||||
|
</versions>
|
||||||
|
<lastUpdated>20070417090721</lastUpdated>
|
||||||
|
</versioning>
|
||||||
|
</metadata>
|
|
@ -0,0 +1 @@
|
||||||
|
baa0ad0afaba9cee66ec262b38f796b6
|
|
@ -0,0 +1 @@
|
||||||
|
dea84d579f673d2d87c7bd47e4318cdf8e59e4d0
|
|
@ -0,0 +1,7 @@
|
||||||
|
#Last Scan Information, managed by Archiva. DO NOT EDIT
|
||||||
|
#Thu Apr 19 17:04:36 PHT 2007
|
||||||
|
scan.included.files=12
|
||||||
|
scan.skipped.files=0
|
||||||
|
scan.finished.timestamp=1176973476967
|
||||||
|
scan.consumed.files=20
|
||||||
|
scan.started.timestamp=1176973467414
|
Binary file not shown.
|
@ -0,0 +1 @@
|
||||||
|
306d556e6e5e4d604dc854d09ddcdefd
|
|
@ -0,0 +1 @@
|
||||||
|
afb6586f5eb4c63dd5735a0bed11c99c7fac6755
|
|
@ -0,0 +1,9 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?><project>
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<groupId>org.apache.maven.archiva.web.test</groupId>
|
||||||
|
<artifactId>foo-bar</artifactId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
<distributionManagement>
|
||||||
|
<status>deployed</status>
|
||||||
|
</distributionManagement>
|
||||||
|
</project>
|
|
@ -0,0 +1 @@
|
||||||
|
8e896baea663a45d7bd2737f8e464481
|
|
@ -0,0 +1 @@
|
||||||
|
e37897c617d78dedd978766a2db318d301e80105
|
|
@ -0,0 +1,11 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?><metadata>
|
||||||
|
<groupId>org.apache.maven.archiva.web.test</groupId>
|
||||||
|
<artifactId>foo-bar</artifactId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
<versioning>
|
||||||
|
<snapshot>
|
||||||
|
<buildNumber>1</buildNumber>
|
||||||
|
</snapshot>
|
||||||
|
<lastUpdated>20070425105840</lastUpdated>
|
||||||
|
</versioning>
|
||||||
|
</metadata>
|
|
@ -0,0 +1 @@
|
||||||
|
add4f71a005137e9a296c5b192e900c2
|
|
@ -0,0 +1 @@
|
||||||
|
b505e302169e04fc821bf571da7435b1e42ef8d7
|
|
@ -0,0 +1,11 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?><metadata>
|
||||||
|
<groupId>org.apache.maven.archiva.web.test</groupId>
|
||||||
|
<artifactId>foo-bar</artifactId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
<versioning>
|
||||||
|
<versions>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
</versions>
|
||||||
|
<lastUpdated>20070425105840</lastUpdated>
|
||||||
|
</versioning>
|
||||||
|
</metadata>
|
|
@ -0,0 +1 @@
|
||||||
|
f3b657fb48d2e82fee5fada169756938
|
|
@ -0,0 +1 @@
|
||||||
|
f4629e609deb95cefdcdddc6dd8c2942d1c3e47f
|
|
@ -0,0 +1,143 @@
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
#
|
||||||
|
|
||||||
|
# properties for integration tests
|
||||||
|
|
||||||
|
ADMIN_USERNAME=admin
|
||||||
|
ADMIN_FULLNAME=Administrator
|
||||||
|
ADMIN_EMAIL=admin@localhost.fr
|
||||||
|
ADMIN_PASSWORD=admin1
|
||||||
|
|
||||||
|
SELENIUM_HOST=localhost
|
||||||
|
SELENIUM_PORT=4444
|
||||||
|
SELENIUM_BROWSER=*firefox
|
||||||
|
|
||||||
|
# Search, Artifact Management
|
||||||
|
SEARCH_BAD_ARTIFACT=asdf
|
||||||
|
# Existing Artifact
|
||||||
|
ARTIFACT_GROUPID=test
|
||||||
|
ARTIFACT_ARTIFACTID=test
|
||||||
|
ARTIFACT_VERSION=1.0
|
||||||
|
ARTIFACT_PACKAGING=jar
|
||||||
|
ARTIFACT_CLASSNAME=test.App
|
||||||
|
|
||||||
|
# Artifact for testing add artifact with valid values
|
||||||
|
VALIDARTIFACT_GROUPID=addArtifactValidValues
|
||||||
|
VALIDARTIFACT_ARTIFACTID=addArtifactValidValues-artifact
|
||||||
|
|
||||||
|
# Artifact for upload action in audit log report - MRM-1304
|
||||||
|
AUDITLOGARTIFACT_GROUPID=group.auditLogUpload
|
||||||
|
AUDITLOGARTIFACT_ARTIFACTID=auditLogUpload-artifact
|
||||||
|
AUDITLOG_EXPECTED_ARTIFACT=group/auditLogUpload/auditLogUpload-artifact/1.0/auditLogUpload-artifact-1.0.jar
|
||||||
|
|
||||||
|
# Reports
|
||||||
|
REPOSITORY_NAME=internal
|
||||||
|
START_DATE=05/01/2009
|
||||||
|
END_DATE=05/30/2009
|
||||||
|
|
||||||
|
# User Management
|
||||||
|
# For password and new password
|
||||||
|
USERROLE_EMAIL=admin@localhost
|
||||||
|
USERROLE_PASSWORD=password1
|
||||||
|
NEW_USERROLE_PASSWORD=password123
|
||||||
|
|
||||||
|
# Guest Role
|
||||||
|
GUEST_USERNAME=guest_user
|
||||||
|
GUEST_FULLNAME=Guest
|
||||||
|
# Registered User Role
|
||||||
|
REGISTERED_USERNAME=reg_user
|
||||||
|
REGISTERED_FULLNAME=Registered User
|
||||||
|
# System Administrator
|
||||||
|
SYSAD_USERNAME=sys_admin
|
||||||
|
SYSAD_FULLNAME=System Administrator
|
||||||
|
# User Administrator
|
||||||
|
USERADMIN_USERNAME=user_admin
|
||||||
|
USERADMIN_FULLNAME=User Administrator
|
||||||
|
# Global Repository Manager
|
||||||
|
GLOBALREPOMANAGER_USERNAME=globalrepo_manager
|
||||||
|
GLOBALREPOMANAGER_FULLNAME=Global Repository Manager
|
||||||
|
# Global Repository Observer
|
||||||
|
GLOBALREPOOBSERVER_USERNAME=globalrepo_observer
|
||||||
|
GLOBALREPOOBSERVER_FULLNAME=Global Repository Observer
|
||||||
|
# Repository Manager - internal
|
||||||
|
REPOMANAGER_INTERNAL_USERNAME=repomanager_internal
|
||||||
|
REPOMANAGER_INTERNAL_FULLNAME=Repository Manager - internal
|
||||||
|
# Repository Manager - snapshots
|
||||||
|
REPOMANAGER_SNAPSHOTS_USERNAME=repomanager_snapshots
|
||||||
|
REPOMANAGER_SNAPSHOTS_FULLNAME=Repository Manager - snapshots
|
||||||
|
# Repository Observer - internal
|
||||||
|
REPOOBSERVER_INTERNAL_USERNAME=repoobserver_internal
|
||||||
|
REPOOBSERVER_INTERNAL_FULLNAME=Repository Observer - internal
|
||||||
|
# Repository Observer - snapshots
|
||||||
|
REPOOBSERVER_SNAPSHOTS_USERNAME=repoobserver_snapshots
|
||||||
|
REPOOBSERVER_SNAPSHOTS_FULLNAME=Repository Observer - snapshots
|
||||||
|
|
||||||
|
# Add Artifact
|
||||||
|
GROUPID=test
|
||||||
|
ARTIFACTID=test
|
||||||
|
VERSION=1.0
|
||||||
|
PACKAGING=jar
|
||||||
|
ARTIFACTFILEPATH=test
|
||||||
|
REPOSITORYID=internal
|
||||||
|
|
||||||
|
GROUPID1=delete
|
||||||
|
ARTIFACTID1=delete
|
||||||
|
VERSION1=1.0
|
||||||
|
PACKAGING1=jar
|
||||||
|
ARTIFACTFILEPATH1=test
|
||||||
|
REPOSITORYID1=internal
|
||||||
|
|
||||||
|
GROUPID_DOTNETARTIFACT=dotNetTypes
|
||||||
|
ARTIFACTID_DOTNETARTIFACT=dotNetTypes
|
||||||
|
PACKAGING_DOTNETARTIFACT=library
|
||||||
|
|
||||||
|
SNAPSHOT_GROUPID=org.apache.archiva
|
||||||
|
SNAPSHOT_ARTIFACTID=archiva-test
|
||||||
|
SNAPSHOT_VERSION=1.0-SNAPSHOT
|
||||||
|
SNAPSHOT_PACKAGING=jar
|
||||||
|
SNAPSHOT_ARTIFACTFILEPATH=src/test/resources/snapshots/org/apache/maven/archiva/web/test/foo-bar/1.0-SNAPSHOT/foo-bar-1.0-SNAPSHOT.jar
|
||||||
|
SNAPSHOT_REPOSITORYID=snapshots
|
||||||
|
|
||||||
|
ADD_REMOVE_GROUPID=artifact.dummy
|
||||||
|
ADD_REMOVE_ARTIFACTID=artifact-dummy
|
||||||
|
|
||||||
|
# REPOSITORIES
|
||||||
|
# Manage Repositories
|
||||||
|
MANAGED_IDENTIFIER=testing1
|
||||||
|
MANAGED_NAME=Testing Managed Repository
|
||||||
|
MANAGED_DIRECTORY=
|
||||||
|
MANAGED_INDEX_DIRECTORY=
|
||||||
|
MANAGED_TYPE=
|
||||||
|
MANAGED_CRON=
|
||||||
|
MANAGED_REPOPURGE_DAYSOLDERTHAN=
|
||||||
|
MANAGED_REPOPURGE_RETENTIONCOUNT=
|
||||||
|
|
||||||
|
# Network Proxies
|
||||||
|
NETWORKPROXY_IDENTIFIER=networkproxytest
|
||||||
|
NETWORKPROXY_PROTOCOL=http
|
||||||
|
NETWORKPROXY_HOSTNAME=
|
||||||
|
NETWORKPROXY_PORT=8080
|
||||||
|
NETWORKPROXY_USERNAME=admin
|
||||||
|
NETWORKPROXY_PASSWORD=admin123
|
||||||
|
|
||||||
|
# Browse - MRM-1278 test
|
||||||
|
SNAPSHOTS_REPOSITORY=snapshots
|
||||||
|
RELEASES_REPOSITORY=releases
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,89 @@
|
||||||
|
package org.apache.archiva.web.test;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import org.apache.archiva.web.test.parent.AbstractArchivaTest;
|
||||||
|
import org.testng.annotations.AfterTest;
|
||||||
|
import org.testng.annotations.BeforeSuite;
|
||||||
|
import org.testng.annotations.BeforeTest;
|
||||||
|
import org.testng.annotations.Optional;
|
||||||
|
import org.testng.annotations.Parameters;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
public class ArchivaAdminTest
|
||||||
|
extends AbstractArchivaTest
|
||||||
|
{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@AfterTest
|
||||||
|
public void close()
|
||||||
|
throws Exception
|
||||||
|
{
|
||||||
|
super.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@BeforeSuite
|
||||||
|
public void open()
|
||||||
|
throws Exception
|
||||||
|
{
|
||||||
|
super.open();
|
||||||
|
}
|
||||||
|
|
||||||
|
@BeforeTest
|
||||||
|
@Parameters( { "baseUrl", "browser", "maxWaitTimeInMs", "seleniumHost", "seleniumPort" } )
|
||||||
|
public void initializeArchiva( String baseUrl, String browser, int maxWaitTimeInMs,
|
||||||
|
@Optional( "localhost" ) String seleniumHost, @Optional( "4444" ) int seleniumPort )
|
||||||
|
throws Exception
|
||||||
|
{
|
||||||
|
|
||||||
|
super.open( baseUrl, browser, seleniumHost, seleniumPort, Integer.toString( maxWaitTimeInMs ) );
|
||||||
|
|
||||||
|
getSelenium().open( baseUrl );
|
||||||
|
|
||||||
|
getSelenium().refresh();
|
||||||
|
|
||||||
|
// if not admin user created create one
|
||||||
|
if ( isElementVisible( "create-admin-link" ) )
|
||||||
|
{
|
||||||
|
clickLinkWithLocator( "create-admin-link-a", false );
|
||||||
|
assertCreateAdmin();
|
||||||
|
String fullname = getProperty( "ADMIN_FULLNAME" );
|
||||||
|
String username = getProperty( "ADMIN_USERNAME" );
|
||||||
|
String mail = getProperty( "ADMIN_EMAIL" );
|
||||||
|
String password = getProperty( "ADMIN_PASSWORD" );
|
||||||
|
submitAdminData( fullname, mail, password );
|
||||||
|
assertUserLoggedIn( username );
|
||||||
|
clickLinkWithLocator( "logout-link-a" );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
login( getAdminUsername(), getAdminPassword() );
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test( groups = { "about" }, alwaysRun = true )
|
||||||
|
public void testHome()
|
||||||
|
{
|
||||||
|
getSelenium().open( baseUrl );
|
||||||
|
assertPage( "Apache Archiva" );
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,122 @@
|
||||||
|
package org.apache.archiva.web.test;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import org.apache.archiva.web.test.parent.AbstractArchivaTest;
|
||||||
|
import org.testng.annotations.AfterTest;
|
||||||
|
import org.testng.annotations.BeforeTest;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Bug in TestNG. TESTNG-285: @Test(sequential=true) works incorrectly for classes with inheritance
|
||||||
|
* http://code.google.com/p/testng/source/browse/trunk/CHANGES.txt
|
||||||
|
* Waiting 5.9 release. It's comming soon.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* Based on LoginTest of Emmanuel Venisse test.
|
||||||
|
*
|
||||||
|
* @author José Morales Martínez
|
||||||
|
* @version $Id$
|
||||||
|
*/
|
||||||
|
|
||||||
|
@Test( groups = { "login" }, dependsOnGroups = {"about"})
|
||||||
|
public class LoginTest
|
||||||
|
extends AbstractArchivaTest
|
||||||
|
{
|
||||||
|
@Test(alwaysRun = true)
|
||||||
|
public void testWithBadUsername()
|
||||||
|
{
|
||||||
|
goToLoginPage();
|
||||||
|
setFieldValue( "user-login-form-username", "badUsername" );
|
||||||
|
|
||||||
|
waitPage();
|
||||||
|
assertElementPresent( "//ul[@class=\'errorMessage\']" );
|
||||||
|
//assertTextPresent( "You have entered an incorrect username and/or password" );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test( dependsOnMethods = { "testWithBadUsername" }, alwaysRun = true )
|
||||||
|
public void testWithBadPassword()
|
||||||
|
{
|
||||||
|
goToLoginPage();
|
||||||
|
setFieldValue( "loginForm_username", getProperty( "ADMIN_USERNAME" ) );
|
||||||
|
setFieldValue( "loginForm_password", "badPassword" );
|
||||||
|
getSelenium().click( "loginSubmit" );
|
||||||
|
//getSelenium().waitForPageToLoad( maxWaitTimeInMs );
|
||||||
|
waitPage();
|
||||||
|
//assertTextPresent( "You have entered an incorrect username and/or password" );
|
||||||
|
//<ul class="errorMessage"><li><span>
|
||||||
|
assertElementPresent( "//ul[@class=\'errorMessage\']" );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test( dependsOnMethods = { "testWithBadPassword" }, alwaysRun = true )
|
||||||
|
public void testWithEmptyUsername()
|
||||||
|
{
|
||||||
|
goToLoginPage();
|
||||||
|
setFieldValue( "loginForm_password", "password" );
|
||||||
|
getSelenium().click( "loginSubmit" );
|
||||||
|
//getSelenium().waitForPageToLoad( maxWaitTimeInMs );
|
||||||
|
waitPage();
|
||||||
|
//assertTextPresent( "User Name is required" );
|
||||||
|
assertElementPresent( "//tr[@errorFor=\'loginForm_username\']");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test( dependsOnMethods = { "testWithEmptyUsername" }, alwaysRun = true )
|
||||||
|
public void testWithEmptyPassword()
|
||||||
|
{
|
||||||
|
goToLoginPage();
|
||||||
|
setFieldValue( "loginForm_username", getProperty( "ADMIN_USERNAME" ) );
|
||||||
|
getSelenium().click( "loginSubmit" );
|
||||||
|
//getSelenium().waitForPageToLoad( maxWaitTimeInMs );
|
||||||
|
waitPage();
|
||||||
|
//assertTextPresent( "You have entered an incorrect username and/or password" );
|
||||||
|
assertElementPresent( "//ul[@class=\'errorMessage\']" );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test( groups = { "loginSuccess" }, dependsOnMethods = { "testWithEmptyPassword" }, alwaysRun = true )
|
||||||
|
public void testWithCorrectUsernamePassword()
|
||||||
|
{
|
||||||
|
goToLoginPage();
|
||||||
|
setFieldValue( "loginForm_username", getProperty( "ADMIN_USERNAME" ) );
|
||||||
|
setFieldValue( "loginForm_password", getProperty( "ADMIN_PASSWORD" ) );
|
||||||
|
getSelenium().click( "loginSubmit" );
|
||||||
|
//getSelenium().waitForPageToLoad( maxWaitTimeInMs );
|
||||||
|
waitPage();
|
||||||
|
//assertTextPresent( "Logout" );
|
||||||
|
assertElementPresent( "logoutLink" );
|
||||||
|
//assertTextPresent( "Edit Details" );
|
||||||
|
assertElementPresent( "editUserLink" );
|
||||||
|
assertTextPresent( getProperty( "ADMIN_USERNAME" ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
@BeforeTest
|
||||||
|
public void open()
|
||||||
|
throws Exception
|
||||||
|
{
|
||||||
|
super.open();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@AfterTest
|
||||||
|
public void close()
|
||||||
|
throws Exception
|
||||||
|
{
|
||||||
|
super.close();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,242 @@
|
||||||
|
package org.apache.archiva.web.test;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Utility class for creating xpath expressions
|
||||||
|
*/
|
||||||
|
public class XPathExpressionUtil
|
||||||
|
{
|
||||||
|
public static final String CONTAINS = "contains";
|
||||||
|
|
||||||
|
public static final String AND = " and ";
|
||||||
|
|
||||||
|
public static final String CURRENT_NODE = "./";
|
||||||
|
|
||||||
|
public static final String PARENT_NODE = "../";
|
||||||
|
|
||||||
|
public static final String GRANDPARENT_NODE = "../../";
|
||||||
|
|
||||||
|
public static final String ELEMENT_ANY_LEVEL = "//";
|
||||||
|
|
||||||
|
public static final String TABLE_COLUMN = "td";
|
||||||
|
|
||||||
|
public static final String TABLE_ROW = "tr";
|
||||||
|
|
||||||
|
public static final String START_NODE_TEST = "[";
|
||||||
|
|
||||||
|
public static final String END_NODE_TEST = "]";
|
||||||
|
|
||||||
|
public static final String ANCHOR = "a";
|
||||||
|
|
||||||
|
public static final String IMG = "img";
|
||||||
|
|
||||||
|
public static final String LIST = "ul";
|
||||||
|
|
||||||
|
public static final String LINE = "li";
|
||||||
|
|
||||||
|
public static String getList( String[] values )
|
||||||
|
{
|
||||||
|
String xpathExpression = "";
|
||||||
|
|
||||||
|
if ( values.length > 0 )
|
||||||
|
{
|
||||||
|
xpathExpression += ELEMENT_ANY_LEVEL;
|
||||||
|
xpathExpression += LIST;
|
||||||
|
xpathExpression += START_NODE_TEST;
|
||||||
|
|
||||||
|
for ( int nIndex = 0; nIndex < values.length; nIndex++ )
|
||||||
|
{
|
||||||
|
xpathExpression += ( ( nIndex > 0 ) ? AND : "" );
|
||||||
|
xpathExpression += contains( LINE + position( nIndex + 1 ), values[nIndex] );
|
||||||
|
}
|
||||||
|
|
||||||
|
xpathExpression += END_NODE_TEST;
|
||||||
|
}
|
||||||
|
|
||||||
|
return xpathExpression;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* expression for acquiring an element in one of the table columns
|
||||||
|
*
|
||||||
|
* @param element the node element
|
||||||
|
* @param elementIndex column index of the element, used for skipping
|
||||||
|
* @param columnValues the values to be matched in each column, element column is included
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static String getColumnElement( String element, int elementIndex, String[] columnValues )
|
||||||
|
{
|
||||||
|
return getColumnElement( element, elementIndex, null, columnValues );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* expression for acquiring an element in one of the table columns
|
||||||
|
*
|
||||||
|
* @param element the node element
|
||||||
|
* @param elementIndex column index of the element, used for skipping
|
||||||
|
* @param elementValue the matched element value
|
||||||
|
* @param columnValues the values to be matched in each column, element column is included
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static String getColumnElement( String element, int elementIndex, String elementValue, String[] columnValues )
|
||||||
|
{
|
||||||
|
return getColumnElement( element, elementIndex, elementValue, "TEXT", columnValues );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* expression for acquiring an element in one of the table columns
|
||||||
|
*
|
||||||
|
* @param element the node element
|
||||||
|
* @param elementIndex column index of the element, used for skipping
|
||||||
|
* @param imageName the matched image name
|
||||||
|
* @param columnValues the values to be matched in each column, element column is included
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static String getImgColumnElement( String element, int elementIndex, String imageName, String[] columnValues )
|
||||||
|
{
|
||||||
|
return getColumnElement( element, elementIndex, imageName, IMG, columnValues );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* expression for acquiring an element in one of the table columns
|
||||||
|
*
|
||||||
|
* @param element the node element
|
||||||
|
* @param elementIndex column index of the element, used for skipping
|
||||||
|
* @param imageName the matched image name
|
||||||
|
* @param columnValues the values to be matched in each column, element column is included
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private static String getColumnElement( String element, int elementIndex, String elementValue,
|
||||||
|
String elementValueType, String[] columnValues )
|
||||||
|
{
|
||||||
|
String xpathExpression = null;
|
||||||
|
|
||||||
|
if ( ( columnValues != null ) && ( columnValues.length > 0 ) )
|
||||||
|
{
|
||||||
|
xpathExpression = ELEMENT_ANY_LEVEL + element;
|
||||||
|
xpathExpression += START_NODE_TEST;
|
||||||
|
|
||||||
|
if ( elementValue != null )
|
||||||
|
{
|
||||||
|
if ( "TEXT".equals( elementValueType ) )
|
||||||
|
{
|
||||||
|
xpathExpression += contains( elementValue );
|
||||||
|
xpathExpression += ( columnValues.length > 0 ) ? AND : "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// we are two levels below the table row element ( tr/td/<element> )
|
||||||
|
xpathExpression += matchColumns( GRANDPARENT_NODE, columnValues, elementIndex );
|
||||||
|
|
||||||
|
xpathExpression += END_NODE_TEST;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( IMG.equals( elementValueType ) )
|
||||||
|
{
|
||||||
|
xpathExpression += "/img[contains(@src, '" + elementValue + "')]";
|
||||||
|
}
|
||||||
|
|
||||||
|
return xpathExpression;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* expression for acquiring the table row that matches all column values with the same order as the list
|
||||||
|
*
|
||||||
|
* @param columnValues the matched list of columnValues
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static String getTableRow( String[] columnValues )
|
||||||
|
{
|
||||||
|
String xpathExpression = null;
|
||||||
|
|
||||||
|
if ( ( columnValues != null ) && ( columnValues.length > 0 ) )
|
||||||
|
{
|
||||||
|
xpathExpression = new String( ELEMENT_ANY_LEVEL + TABLE_ROW + START_NODE_TEST );
|
||||||
|
xpathExpression += matchColumns( columnValues );
|
||||||
|
xpathExpression += END_NODE_TEST;
|
||||||
|
}
|
||||||
|
|
||||||
|
return xpathExpression;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String matchColumns( String[] columnValues )
|
||||||
|
{
|
||||||
|
return matchColumns( columnValues, -1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String matchColumns( String[] columnValues, int skipIndex )
|
||||||
|
{
|
||||||
|
return matchColumns( null, columnValues, skipIndex );
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String matchColumns( String parent, String[] columnValues, int skipIndex )
|
||||||
|
{
|
||||||
|
String xpathExpression = "";
|
||||||
|
|
||||||
|
for ( int nIndex = 0; nIndex < columnValues.length; nIndex++ )
|
||||||
|
{
|
||||||
|
if ( ( skipIndex != nIndex ) || ( skipIndex == -1 ) )
|
||||||
|
{
|
||||||
|
// prepend "and" if index > 0
|
||||||
|
xpathExpression += ( ( nIndex > 0 ) ? AND : "" );
|
||||||
|
xpathExpression += contains( parent, TABLE_COLUMN + position( nIndex + 1 ), columnValues[nIndex] );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return xpathExpression;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String position( int nIndex )
|
||||||
|
{
|
||||||
|
return new String( "[" + nIndex + "]" );
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String contains( String parent, String element, String matchedString )
|
||||||
|
{
|
||||||
|
String finalElement = ( parent != null ) ? parent : "";
|
||||||
|
finalElement += element;
|
||||||
|
|
||||||
|
return contains( finalElement, matchedString );
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String contains( String matchedString )
|
||||||
|
{
|
||||||
|
return contains( ".", matchedString );
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String contains( String axis, String matchedString )
|
||||||
|
{
|
||||||
|
return new String( CONTAINS + "(" + axis + "," + "'" + matchedString + "')" );
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String equals( String parent, String element, String matchedString )
|
||||||
|
{
|
||||||
|
String finalElement = ( parent != null ) ? parent : "";
|
||||||
|
finalElement += element;
|
||||||
|
|
||||||
|
return equals( finalElement, matchedString );
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String equals( String axis, String matchedString )
|
||||||
|
{
|
||||||
|
return new String( axis + "==" + "'" + matchedString + "'" );
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,109 @@
|
||||||
|
package org.apache.archiva.web.test.listener;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import com.thoughtworks.selenium.Selenium;
|
||||||
|
import org.apache.archiva.web.test.parent.AbstractSeleniumTest;
|
||||||
|
import org.apache.commons.io.FileUtils;
|
||||||
|
import org.testng.ITestResult;
|
||||||
|
import org.testng.TestListenerAdapter;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
public class CaptureScreenShotsListener
|
||||||
|
extends TestListenerAdapter
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void onTestSkipped( ITestResult tr )
|
||||||
|
{
|
||||||
|
System.out.println( "Test " + tr.getName() + " -> Skipped" );
|
||||||
|
super.onTestSkipped( tr );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onTestFailure( ITestResult tr )
|
||||||
|
{
|
||||||
|
captureError( tr );
|
||||||
|
System.out.println( "Test " + tr.getName() + " -> Failed" );
|
||||||
|
super.onTestFailure( tr );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onTestSuccess( ITestResult tr )
|
||||||
|
{
|
||||||
|
System.out.println( "Test " + tr.getName() + " -> Success" );
|
||||||
|
super.onTestFailure( tr );
|
||||||
|
}
|
||||||
|
|
||||||
|
private void captureError( ITestResult tr )
|
||||||
|
{
|
||||||
|
SimpleDateFormat sdf = new SimpleDateFormat( "yyyy.MM.dd-HH_mm_ss" );
|
||||||
|
String time = sdf.format( new Date() );
|
||||||
|
File targetPath = new File( "target", "screenshots" );
|
||||||
|
StackTraceElement stackTrace[] = tr.getThrowable().getStackTrace();
|
||||||
|
String cName = tr.getTestClass().getName();
|
||||||
|
int index = getStackTraceIndexOfCallingClass( cName, stackTrace );
|
||||||
|
String methodName = stackTrace[index].getMethodName();
|
||||||
|
int lNumber = stackTrace[index].getLineNumber();
|
||||||
|
String lineNumber = Integer.toString( lNumber );
|
||||||
|
String className = cName.substring( cName.lastIndexOf( '.' ) + 1 );
|
||||||
|
targetPath.mkdirs();
|
||||||
|
Selenium selenium = AbstractSeleniumTest.getSelenium();
|
||||||
|
String fileBaseName = methodName + "_" + className + ".java_" + lineNumber + "-" + time;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
selenium.windowMaximize();
|
||||||
|
File fileName = new File( targetPath, fileBaseName + ".png" );
|
||||||
|
selenium.captureEntirePageScreenshot( fileName.getAbsolutePath(), "background=#FFFFFF" );
|
||||||
|
}
|
||||||
|
catch ( RuntimeException e )
|
||||||
|
{
|
||||||
|
System.out.println( "Error when take screenshot for test " + tr.getName() + ": " + e.getMessage() );
|
||||||
|
}
|
||||||
|
try
|
||||||
|
{
|
||||||
|
File fileName = new File( targetPath, fileBaseName + ".html" );
|
||||||
|
FileUtils.writeStringToFile( fileName, selenium.getHtmlSource() );
|
||||||
|
}
|
||||||
|
catch ( IOException ioe )
|
||||||
|
{
|
||||||
|
System.out.println( ioe.getMessage() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private int getStackTraceIndexOfCallingClass( String nameOfClass, StackTraceElement stackTrace[] )
|
||||||
|
{
|
||||||
|
boolean match = false;
|
||||||
|
int i = 0;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
String className = stackTrace[i].getClassName();
|
||||||
|
match = Pattern.matches( nameOfClass, className );
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
while ( match == false );
|
||||||
|
i--;
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,726 @@
|
||||||
|
package org.apache.archiva.web.test.parent;
|
||||||
|
|
||||||
|
import org.apache.archiva.web.test.XPathExpressionUtil;
|
||||||
|
import org.testng.Assert;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
public abstract class AbstractArchivaTest
|
||||||
|
extends AbstractSeleniumTest
|
||||||
|
{
|
||||||
|
protected String username;
|
||||||
|
|
||||||
|
protected String fullname;
|
||||||
|
|
||||||
|
protected static String getErrorMessageText()
|
||||||
|
{
|
||||||
|
return getSelenium().getText( "//ul[@class='errorMessage']/li/span" );
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUserEmail()
|
||||||
|
{
|
||||||
|
String email = getProperty( "USERROLE_EMAIL" );
|
||||||
|
return email;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUserRolePassword()
|
||||||
|
{
|
||||||
|
String password = getProperty( "USERROLE_PASSWORD" );
|
||||||
|
return password;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUserRoleNewPassword()
|
||||||
|
{
|
||||||
|
String password_new = getProperty( "NEW_USERROLE_PASSWORD" );
|
||||||
|
return password_new;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getBasedir()
|
||||||
|
{
|
||||||
|
String basedir = System.getProperty( "basedir" );
|
||||||
|
|
||||||
|
if ( basedir == null )
|
||||||
|
{
|
||||||
|
basedir = new File( "" ).getAbsolutePath();
|
||||||
|
}
|
||||||
|
|
||||||
|
return basedir;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAdminUsername()
|
||||||
|
{
|
||||||
|
String adminUsername = getProperty( "ADMIN_USERNAME" );
|
||||||
|
return adminUsername;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAdminPassword()
|
||||||
|
{
|
||||||
|
String adminPassword = getProperty( "ADMIN_PASSWORD" );
|
||||||
|
return adminPassword;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void assertCreateAdmin()
|
||||||
|
{
|
||||||
|
assertElementPresent( "user-create" );
|
||||||
|
assertFieldValue( "admin", "username" );
|
||||||
|
assertElementPresent( "fullname" );
|
||||||
|
assertElementPresent( "password" );
|
||||||
|
assertElementPresent( "confirmPassword" );
|
||||||
|
assertElementPresent( "email" );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void submitAdminData( String fullname, String email, String password )
|
||||||
|
{
|
||||||
|
setFieldValue( "fullname", fullname );
|
||||||
|
setFieldValue( "email", email );
|
||||||
|
setFieldValue( "password", password );
|
||||||
|
setFieldValue( "confirmPassword", password );
|
||||||
|
clickButtonWithLocator( "user-create-form-register-button" );
|
||||||
|
//submit();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Go to Login Page
|
||||||
|
public void goToLoginPage()
|
||||||
|
{
|
||||||
|
getSelenium().open( baseUrl );
|
||||||
|
// are we already logged in ?
|
||||||
|
if ( isElementVisible( "logout-link" ) ) //isElementPresent( "logoutLink" ) )
|
||||||
|
{
|
||||||
|
// so logout
|
||||||
|
clickLinkWithLocator( "logout-link-a", false );
|
||||||
|
clickLinkWithLocator( "login-link-a" );
|
||||||
|
}
|
||||||
|
else if ( isElementVisible( "login-link-a" ) )
|
||||||
|
{
|
||||||
|
clickLinkWithLocator( "login-link-a" );
|
||||||
|
}
|
||||||
|
assertLoginModal();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void submitUserData( String username, String password, boolean rememberme, boolean success )
|
||||||
|
{
|
||||||
|
|
||||||
|
setFieldValue( "username", username );
|
||||||
|
setFieldValue( "password", password );
|
||||||
|
if ( rememberme )
|
||||||
|
{
|
||||||
|
checkField( "rememberMe" );
|
||||||
|
}
|
||||||
|
|
||||||
|
submit();
|
||||||
|
if ( success )
|
||||||
|
{
|
||||||
|
assertUserLoggedIn( username );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
assertLoginModal();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void assertLoginModal()
|
||||||
|
{
|
||||||
|
assertElementPresent( "user-login-form" );
|
||||||
|
Assert.assertTrue( isElementVisible( "register-link" ) );
|
||||||
|
assertElementPresent( "user-login-form-username" );
|
||||||
|
assertElementPresent( "user-login-form-password" );
|
||||||
|
assertButtonWithIdPresent( "modal-login-ok" );
|
||||||
|
}
|
||||||
|
|
||||||
|
// User Management
|
||||||
|
public void goToUserManagementPage()
|
||||||
|
{
|
||||||
|
getSelenium().open( "/archiva/security/userlist.action" );
|
||||||
|
assertUserManagementPage();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void assertUserManagementPage()
|
||||||
|
{
|
||||||
|
assertPage( "Apache Archiva \\ [Admin] User List" );
|
||||||
|
assertTextPresent( "[Admin] List of Users in Role: Any" );
|
||||||
|
assertTextPresent( "Navigation" );
|
||||||
|
assertImgWithAlt( "First" );
|
||||||
|
assertImgWithAlt( "Prev" );
|
||||||
|
assertImgWithAlt( "Next" );
|
||||||
|
assertImgWithAlt( "Last" );
|
||||||
|
assertTextPresent( "Display Rows" );
|
||||||
|
assertTextPresent( "Username" );
|
||||||
|
assertTextPresent( "Full Name" );
|
||||||
|
assertTextPresent( "Email" );
|
||||||
|
assertTextPresent( "Permanent" );
|
||||||
|
assertTextPresent( "Validated" );
|
||||||
|
assertTextPresent( "Locked" );
|
||||||
|
assertTextPresent( "Tasks" );
|
||||||
|
assertTextPresent( "Tools" );
|
||||||
|
assertTextPresent( "Tasks" );
|
||||||
|
assertTextPresent( "The following tools are available for administrators to manipulate the user list." );
|
||||||
|
assertButtonWithValuePresent( "Create New User" );
|
||||||
|
assertButtonWithValuePresent( "Show Users In Role" );
|
||||||
|
assertElementPresent( "roleName" );
|
||||||
|
assertTextPresent( "Reports" );
|
||||||
|
assertTextPresent( "Name" );
|
||||||
|
assertTextPresent( "Types" );
|
||||||
|
assertTextPresent( "User List" );
|
||||||
|
assertTextPresent( "Roles Matrix" );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* //User Role public void goToUserRolesPage() { clickLinkWithText( "User Roles" ); assertUserRolesPage(); }
|
||||||
|
*/
|
||||||
|
|
||||||
|
public void assertUserRolesPage()
|
||||||
|
{
|
||||||
|
//assertPage( "Apache Archiva \\ [Admin] User Edit" );
|
||||||
|
//[Admin] Rôles de l'utilisateur
|
||||||
|
|
||||||
|
assertTextPresent( "[Admin] User Roles", "[Admin] R\u00F4les de l'utilisateur" );
|
||||||
|
assertTextPresent( "Username", "Nom d'utilisateur" );
|
||||||
|
assertTextPresent( "Full Name", "Nom complet" );
|
||||||
|
String userRoles =
|
||||||
|
"Guest,Registered User,System Administrator,User Administrator,Global Repository Observer,Global Repository Manager,Repository Observer,Repository Manager,internal";
|
||||||
|
String[] arrayRole = userRoles.split( "," );
|
||||||
|
for ( String userroles : arrayRole )
|
||||||
|
{
|
||||||
|
assertTextPresent( userroles );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void assertDeleteUserPage( String username )
|
||||||
|
{
|
||||||
|
assertTextPresent( "[Admin] User Delete", "[Admin] Suppression de l'utilisateur",
|
||||||
|
"L'utilisateur suivant va \u00EAtre supprim\u00E9:" );
|
||||||
|
assertTextPresent( "The following user will be deleted:" );
|
||||||
|
assertTextPresent( "Username: " + username, "Nom d'utilisateur:" + username );
|
||||||
|
assertButtonWithIdPresent( "userDeleteSubmit" );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void createUser( String userName, String fullName, String email, String password, boolean valid )
|
||||||
|
{
|
||||||
|
createUser( userName, fullName, email, password, password, valid );
|
||||||
|
}
|
||||||
|
|
||||||
|
private void createUser( String userName, String fullName, String emailAd, String password, String confirmPassword,
|
||||||
|
boolean valid )
|
||||||
|
{
|
||||||
|
// login( getAdminUsername() , getAdminPassword() );
|
||||||
|
getSelenium().open( "/archiva/security/userlist.action" );
|
||||||
|
clickButtonWithLocator( "userCreateButton", true );
|
||||||
|
//clickButtonWithValue( "Create New User" );
|
||||||
|
assertCreateUserPage();
|
||||||
|
setFieldValue( "user.username", userName );
|
||||||
|
setFieldValue( "user.fullName", fullName );
|
||||||
|
setFieldValue( "user.email", emailAd );
|
||||||
|
setFieldValue( "user.password", password );
|
||||||
|
setFieldValue( "user.confirmPassword", confirmPassword );
|
||||||
|
submit();
|
||||||
|
|
||||||
|
assertUserRolesPage();
|
||||||
|
|
||||||
|
//clickButtonWithValue( "Submit" );
|
||||||
|
clickButtonWithName( "submitRolesButton", true );
|
||||||
|
|
||||||
|
if ( valid )
|
||||||
|
{
|
||||||
|
String[] columnValues = { userName, fullName, emailAd };
|
||||||
|
assertElementPresent( XPathExpressionUtil.getTableRow( columnValues ) );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
assertCreateUserPage();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void deleteUser( String userName, String fullName, String emailAdd )
|
||||||
|
{
|
||||||
|
deleteUser( userName, fullName, emailAdd, false, false );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void deleteUser( String userName, String fullName, String emailAd, boolean validated, boolean locked )
|
||||||
|
{
|
||||||
|
String[] columnValues = { userName, fullName, emailAd };
|
||||||
|
// clickLinkWithText( "userlist" );
|
||||||
|
clickLinkWithXPath( "//table[@id='ec_table']/tbody[2]/tr[3]/td[7]/a/img" );
|
||||||
|
assertDeleteUserPage( userName );
|
||||||
|
submit();
|
||||||
|
assertElementNotPresent( XPathExpressionUtil.getTableRow( columnValues ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void login( String username, String password )
|
||||||
|
{
|
||||||
|
login( username, password, true, "Login Page" );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void login( String username, String password, boolean valid, String assertReturnPage )
|
||||||
|
{
|
||||||
|
if ( isElementVisible( "login-link-a" ) )//isElementPresent( "loginLink" ) )
|
||||||
|
{
|
||||||
|
goToLoginPage();
|
||||||
|
|
||||||
|
submitLoginPage( username, password, false, valid, assertReturnPage );
|
||||||
|
}
|
||||||
|
if ( valid )
|
||||||
|
{
|
||||||
|
assertUserLoggedIn( username );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void submitLoginPage( String username, String password )
|
||||||
|
{
|
||||||
|
submitLoginPage( username, password, false, true, "Login Page" );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void submitLoginPage( String username, String password, boolean validUsernamePassword )
|
||||||
|
{
|
||||||
|
submitLoginPage( username, password, false, validUsernamePassword, "Login Page" );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void submitLoginPage( String username, String password, boolean rememberMe, boolean validUsernamePassword,
|
||||||
|
String assertReturnPage )
|
||||||
|
{
|
||||||
|
clickLinkWithLocator( "login-link-a", false );
|
||||||
|
setFieldValue( "user-login-form-username", username );
|
||||||
|
setFieldValue( "user-login-form-password", password );
|
||||||
|
/*
|
||||||
|
if ( rememberMe )
|
||||||
|
{
|
||||||
|
checkField( "rememberMe" );
|
||||||
|
}*/
|
||||||
|
|
||||||
|
clickButtonWithLocator( "modal-login-ok" );
|
||||||
|
if ( validUsernamePassword )
|
||||||
|
{
|
||||||
|
assertUserLoggedIn( username );
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ( "Login Page".equals( assertReturnPage ) )
|
||||||
|
{
|
||||||
|
assertLoginPage();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
assertPage( assertReturnPage );
|
||||||
|
}
|
||||||
|
}*/
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void assertUserLoggedIn( String username )
|
||||||
|
{
|
||||||
|
Assert.assertFalse( isElementVisible( "login-link" ) );
|
||||||
|
Assert.assertTrue( isElementVisible( "logout-link" ) );
|
||||||
|
Assert.assertFalse( isElementVisible( "register-link" ) );
|
||||||
|
Assert.assertFalse( isElementVisible( "create-admin-link" ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
// User Roles
|
||||||
|
public void assertUserRoleCheckBoxPresent( String value )
|
||||||
|
{
|
||||||
|
getSelenium().isElementPresent(
|
||||||
|
"xpath=//input[@id='addRolesToUser_addNDSelectedRoles' and @name='addNDSelectedRoles' and @value='" + value
|
||||||
|
+ "']" );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void assertResourceRolesCheckBoxPresent( String value )
|
||||||
|
{
|
||||||
|
getSelenium().isElementPresent( "xpath=//input[@name='addDSelectedRoles' and @value='" + value + "']" );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void checkUserRoleWithValue( String value )
|
||||||
|
{
|
||||||
|
assertUserRoleCheckBoxPresent( value );
|
||||||
|
getSelenium().click(
|
||||||
|
"xpath=//input[@id='addRolesToUser_addNDSelectedRoles' and @name='addNDSelectedRoles' and @value='" + value
|
||||||
|
+ "']" );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void checkResourceRoleWithValue( String value )
|
||||||
|
{
|
||||||
|
assertResourceRolesCheckBoxPresent( value );
|
||||||
|
getSelenium().click( "xpath=//input[@name='addDSelectedRoles' and @value='" + value + "']" );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void changePassword( String oldPassword, String newPassword )
|
||||||
|
{
|
||||||
|
assertPage( "Apache Archiva \\ Change Password" );
|
||||||
|
setFieldValue( "existingPassword", oldPassword );
|
||||||
|
setFieldValue( "newPassword", newPassword );
|
||||||
|
setFieldValue( "newPasswordConfirm", newPassword );
|
||||||
|
clickButtonWithValue( "Change Password" );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void assertCreateUserPage()
|
||||||
|
{
|
||||||
|
//assertPage( "Apache Archiva \\ [Admin] User Create" );
|
||||||
|
//assertTextPresent( "[Admin] User Create" );
|
||||||
|
assertTextPresent( "Username*:", "Nom d'utilisateur*:" );
|
||||||
|
assertElementPresent( "user.username" );
|
||||||
|
assertTextPresent( "Full Name*:", "Nom complet*:" );
|
||||||
|
assertElementPresent( "user.fullName" );
|
||||||
|
assertTextPresent( "Email Address*:", "Adresse email*:" );
|
||||||
|
assertElementPresent( "user.email" );
|
||||||
|
assertTextPresent( "Password*:", "Mot de passe*:" );
|
||||||
|
assertElementPresent( "user.password" );
|
||||||
|
assertTextPresent( "Confirm Password*:", "Confirmer le mot de passe*" );
|
||||||
|
assertElementPresent( "user.confirmPassword" );
|
||||||
|
//assertButtonWithValuePresent( "Create User" );
|
||||||
|
assertButtonWithIdPresent( "userCreateSubmit" );
|
||||||
|
// assertElementNotPresent( "userCreateSubmit" );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void assertLeftNavMenuWithRole( String role )
|
||||||
|
{
|
||||||
|
if ( role.equals( "Guest" ) || role.equals( "Registered User" ) || role.equals( "Global Repository Observer" )
|
||||||
|
|| role.equals( "Repository Observer - internal" ) || role.equals( "Repository Observer - snapshots" ) )
|
||||||
|
{
|
||||||
|
assertTextPresent( "Search" );
|
||||||
|
assertLinkPresent( "Find Artifact" );
|
||||||
|
assertLinkPresent( "Browse" );
|
||||||
|
assertLinkNotPresent( "Repositories" );
|
||||||
|
}
|
||||||
|
else if ( role.equals( "User Administrator" ) )
|
||||||
|
{
|
||||||
|
assertTextPresent( "Search" );
|
||||||
|
assertLinkPresent( "Find Artifact" );
|
||||||
|
assertLinkPresent( "Browse" );
|
||||||
|
assertLinkPresent( "User Management" );
|
||||||
|
assertLinkPresent( "User Roles" );
|
||||||
|
assertLinkNotPresent( "Repositories" );
|
||||||
|
}
|
||||||
|
else if ( role.equals( "Global Repository Manager" ) || role.equals( "Repository Manager - internal" )
|
||||||
|
|| role.equals( "Repository Manager - snapshots" ) )
|
||||||
|
{
|
||||||
|
assertTextPresent( "Search" );
|
||||||
|
assertLinkPresent( "Find Artifact" );
|
||||||
|
assertLinkPresent( "Browse" );
|
||||||
|
assertLinkPresent( "Upload Artifact" );
|
||||||
|
assertLinkPresent( "Delete Artifact" );
|
||||||
|
assertLinkNotPresent( "Repositories" );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
assertTextPresent( "Search" );
|
||||||
|
String navMenu =
|
||||||
|
"Find Artifact,Browse,Reports,User Management,User Roles,Appearance,Upload Artifact,Delete Artifact,Repository Groups,Repositories,Proxy Connectors,Legacy Support,Network Proxies,Repository Scanning";
|
||||||
|
String[] arrayMenu = navMenu.split( "," );
|
||||||
|
for ( String navmenu : arrayMenu )
|
||||||
|
{
|
||||||
|
assertLinkPresent( navmenu );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Find Artifact
|
||||||
|
public void goToFindArtifactPage()
|
||||||
|
{
|
||||||
|
getSelenium().open( "/archiva/findArtifact.action" );
|
||||||
|
assertFindArtifactPage();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void assertFindArtifactPage()
|
||||||
|
{
|
||||||
|
//assertPage( "Apache Archiva \\ Find Artifact" );
|
||||||
|
assertElementPresent( "searchBox" );
|
||||||
|
//assertTextPresent( "Find Artifact" );
|
||||||
|
//assertTextPresent( "Search for:" );
|
||||||
|
//assertTextPresent( "Checksum:" );
|
||||||
|
assertElementPresent( "quickSearchBox" );
|
||||||
|
assertElementPresent( "checksumSearch" );
|
||||||
|
//assertButtonWithValuePresent( "Search" );
|
||||||
|
assertElementPresent( "checksumSearch_0" );
|
||||||
|
}
|
||||||
|
|
||||||
|
// Appearance
|
||||||
|
public void goToAppearancePage()
|
||||||
|
{
|
||||||
|
getSelenium().open( "/archiva/admin/configureAppearance.action" );
|
||||||
|
assertAppearancePage();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void assertAppearancePage()
|
||||||
|
{
|
||||||
|
assertPage( "Apache Archiva \\ Configure Appearance" );
|
||||||
|
String appearance =
|
||||||
|
"Appearance,Organization Details,The logo in the top right of the screen is controlled by the following settings.,Organization Information,Name,URL,Logo URL";
|
||||||
|
String[] arrayAppearance = appearance.split( "," );
|
||||||
|
for ( String appear : arrayAppearance )
|
||||||
|
{
|
||||||
|
assertTextPresent( appear );
|
||||||
|
}
|
||||||
|
assertLinkPresent( "Edit" );
|
||||||
|
assertLinkPresent( "Change your appearance" );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addEditAppearance( String name, String url, String logoUrl, boolean wait )
|
||||||
|
{
|
||||||
|
setFieldValue( "organisationName", name );
|
||||||
|
setFieldValue( "organisationUrl", url );
|
||||||
|
setFieldValue( "organisationLogo", logoUrl );
|
||||||
|
clickButtonWithValue( "Save", wait );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void goToHomePage()
|
||||||
|
{
|
||||||
|
getSelenium().open( "" );
|
||||||
|
}
|
||||||
|
|
||||||
|
// Upload Artifact
|
||||||
|
public void goToAddArtifactPage()
|
||||||
|
{
|
||||||
|
// must be logged as admin
|
||||||
|
getSelenium().open( "/archiva/upload.action" );
|
||||||
|
assertAddArtifactPage();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void assertAddArtifactPage()
|
||||||
|
{
|
||||||
|
assertPage( "Apache Archiva \\ Upload Artifact" );
|
||||||
|
assertTextPresent( "Upload Artifact" );
|
||||||
|
|
||||||
|
String artifact =
|
||||||
|
"Upload Artifact,Group Id*:,Artifact Id*:,Version*:,Packaging*:,Classifier:,Generate Maven 2 POM,Artifact File*:,POM File:,Repository Id:";
|
||||||
|
String[] arrayArtifact = artifact.split( "," );
|
||||||
|
for ( String arrayartifact : arrayArtifact )
|
||||||
|
{
|
||||||
|
assertTextPresent( arrayartifact );
|
||||||
|
}
|
||||||
|
|
||||||
|
String artifactElements =
|
||||||
|
"upload_groupId,upload_artifactId,upload_version,upload_packaging,upload_classifier,upload_generatePom,upload_artifact,upload_pom,upload_repositoryId,uploadSubmit";
|
||||||
|
String[] arrayArtifactElements = artifactElements.split( "," );
|
||||||
|
for ( String artifactelements : arrayArtifactElements )
|
||||||
|
{
|
||||||
|
assertElementPresent( artifactelements );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addArtifact( String groupId, String artifactId, String version, String packaging,
|
||||||
|
String artifactFilePath, String repositoryId, boolean wait )
|
||||||
|
{
|
||||||
|
addArtifact( groupId, artifactId, version, packaging, true, artifactFilePath, repositoryId, wait );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addArtifact( String groupId, String artifactId, String version, String packaging, boolean generatePom,
|
||||||
|
String artifactFilePath, String repositoryId, boolean wait )
|
||||||
|
{
|
||||||
|
login( getProperty( "ADMIN_USERNAME" ), getProperty( "ADMIN_PASSWORD" ) );
|
||||||
|
goToAddArtifactPage();
|
||||||
|
setFieldValue( "groupId", groupId );
|
||||||
|
setFieldValue( "artifactId", artifactId );
|
||||||
|
setFieldValue( "version", version );
|
||||||
|
setFieldValue( "packaging", packaging );
|
||||||
|
|
||||||
|
if ( generatePom )
|
||||||
|
{
|
||||||
|
checkField( "generatePom" );
|
||||||
|
}
|
||||||
|
|
||||||
|
String path;
|
||||||
|
if ( artifactFilePath != null && artifactFilePath.trim().length() > 0 )
|
||||||
|
{
|
||||||
|
File f = new File( artifactFilePath );
|
||||||
|
try
|
||||||
|
{
|
||||||
|
path = f.getCanonicalPath();
|
||||||
|
}
|
||||||
|
catch ( IOException e )
|
||||||
|
{
|
||||||
|
path = f.getAbsolutePath();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
path = artifactFilePath;
|
||||||
|
}
|
||||||
|
|
||||||
|
setFieldValue( "artifact", path );
|
||||||
|
selectValue( "upload_repositoryId", repositoryId );
|
||||||
|
|
||||||
|
//clickButtonWithValue( "Submit" );
|
||||||
|
clickButtonWithLocator( "uploadSubmit", wait );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void goToRepositoriesPage()
|
||||||
|
{
|
||||||
|
if ( !getTitle().equals( "Apache Archiva \\ Administration - Repositories" ) )
|
||||||
|
{
|
||||||
|
getSelenium().open( "/archiva/admin/repositories.action" );
|
||||||
|
}
|
||||||
|
assertRepositoriesPage();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void assertRepositoriesPage()
|
||||||
|
{
|
||||||
|
assertPage( "Apache Archiva \\ Administration - Repositories" );
|
||||||
|
assertTextPresent( "Administration - Repositories" );
|
||||||
|
assertTextPresent( "Managed Repositories" );
|
||||||
|
assertTextPresent( "Remote Repositories" );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addManagedRepository( String identifier, String name, String directory, String indexDirectory,
|
||||||
|
String type, String cron, String daysOlder, String retentionCount, boolean wait )
|
||||||
|
{
|
||||||
|
// goToRepositoriesPage();
|
||||||
|
// clickLinkWithText( "Add" );
|
||||||
|
setFieldValue( "repository.id", identifier );
|
||||||
|
setFieldValue( "repository.name", name );
|
||||||
|
setFieldValue( "repository.location", directory );
|
||||||
|
setFieldValue( "repository.indexDirectory", indexDirectory );
|
||||||
|
selectValue( "repository.layout", type );
|
||||||
|
setFieldValue( "repository.cronExpression", cron );
|
||||||
|
setFieldValue( "repository.daysOlder", daysOlder );
|
||||||
|
setFieldValue( "repository.retentionCount", retentionCount );
|
||||||
|
// TODO
|
||||||
|
clickButtonWithValue( "Add Repository", wait );
|
||||||
|
}
|
||||||
|
|
||||||
|
// artifact management
|
||||||
|
public void assertDeleteArtifactPage()
|
||||||
|
{
|
||||||
|
assertPage( "Apache Archiva \\ Delete Artifact" );
|
||||||
|
assertTextPresent( "Delete Artifact" );
|
||||||
|
assertTextPresent( "Group Id*:" );
|
||||||
|
assertTextPresent( "Artifact Id*:" );
|
||||||
|
assertTextPresent( "Version*:" );
|
||||||
|
assertTextPresent( "Repository Id:" );
|
||||||
|
assertElementPresent( "groupId" );
|
||||||
|
assertElementPresent( "artifactId" );
|
||||||
|
assertElementPresent( "version" );
|
||||||
|
assertElementPresent( "repositoryId" );
|
||||||
|
assertButtonWithValuePresent( "Submit" );
|
||||||
|
}
|
||||||
|
|
||||||
|
// network proxies
|
||||||
|
public void goToNetworkProxiesPage()
|
||||||
|
{
|
||||||
|
clickLinkWithText( "Network Proxies" );
|
||||||
|
assertNetworkProxiesPage();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void assertNetworkProxiesPage()
|
||||||
|
{
|
||||||
|
assertPage( "Apache Archiva \\ Administration - Network Proxies" );
|
||||||
|
assertTextPresent( "Administration - Network Proxies" );
|
||||||
|
assertTextPresent( "Network Proxies" );
|
||||||
|
assertLinkPresent( "Add Network Proxy" );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addNetworkProxy( String identifier, String protocol, String hostname, String port, String username,
|
||||||
|
String password )
|
||||||
|
{
|
||||||
|
//goToNetworkProxiesPage();
|
||||||
|
clickLinkWithText( "Add Network Proxy" );
|
||||||
|
assertAddNetworkProxy();
|
||||||
|
setFieldValue( "proxy.id", identifier );
|
||||||
|
setFieldValue( "proxy.protocol", protocol );
|
||||||
|
setFieldValue( "proxy.host", hostname );
|
||||||
|
setFieldValue( "proxy.port", port );
|
||||||
|
setFieldValue( "proxy.username", username );
|
||||||
|
setFieldValue( "proxy.password", password );
|
||||||
|
clickButtonWithValue( "Save Network Proxy" );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void assertAddNetworkProxy()
|
||||||
|
{
|
||||||
|
assertPage( "Apache Archiva \\ Admin: Add Network Proxy" );
|
||||||
|
assertTextPresent( "Admin: Add Network Proxy" );
|
||||||
|
assertTextPresent( "Add network proxy:" );
|
||||||
|
assertTextPresent( "Identifier*:" );
|
||||||
|
assertTextPresent( "Protocol*:" );
|
||||||
|
assertTextPresent( "Hostname*:" );
|
||||||
|
assertTextPresent( "Port*:" );
|
||||||
|
assertTextPresent( "Username:" );
|
||||||
|
assertTextPresent( "Password:" );
|
||||||
|
assertButtonWithValuePresent( "Save Network Proxy" );
|
||||||
|
}
|
||||||
|
|
||||||
|
// Legacy Support
|
||||||
|
public void goToLegacySupportPage()
|
||||||
|
{
|
||||||
|
getSelenium().open( "/archiva/admin/legacyArtifactPath.action" );
|
||||||
|
assertLegacySupportPage();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void assertLegacySupportPage()
|
||||||
|
{
|
||||||
|
assertPage( "Apache Archiva \\ Administration - Legacy Support" );
|
||||||
|
assertTextPresent( "Administration - Legacy Artifact Path Resolution" );
|
||||||
|
assertTextPresent( "Path Mappings" );
|
||||||
|
assertLinkPresent( "Add" );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addLegacyArtifactPath( String path, String groupId, String artifactId, String version,
|
||||||
|
String classifier, String type, boolean wait )
|
||||||
|
{
|
||||||
|
assertAddLegacyArtifactPathPage();
|
||||||
|
setFieldValue( "legacyArtifactPath.path", path );
|
||||||
|
setFieldValue( "groupId", groupId );
|
||||||
|
setFieldValue( "artifactId", artifactId );
|
||||||
|
setFieldValue( "version", version );
|
||||||
|
setFieldValue( "classifier", classifier );
|
||||||
|
setFieldValue( "type", type );
|
||||||
|
clickButtonWithValue( "Add Legacy Artifact Path", wait );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void assertAddLegacyArtifactPathPage()
|
||||||
|
{
|
||||||
|
assertPage( "Apache Archiva \\ Admin: Add Legacy Artifact Path" );
|
||||||
|
assertTextPresent( "Admin: Add Legacy Artifact Path" );
|
||||||
|
assertTextPresent(
|
||||||
|
"Enter the legacy path to map to a particular artifact reference, then adjust the fields as necessary." );
|
||||||
|
String element =
|
||||||
|
"addLegacyArtifactPath_legacyArtifactPath_path,addLegacyArtifactPath_groupId,addLegacyArtifactPath_artifactId,addLegacyArtifactPath_version,addLegacyArtifactPath_classifier,addLegacyArtifactPath_type";
|
||||||
|
String[] arrayElement = element.split( "," );
|
||||||
|
for ( String arrayelement : arrayElement )
|
||||||
|
{
|
||||||
|
assertElementPresent( arrayelement );
|
||||||
|
}
|
||||||
|
assertButtonWithValuePresent( "Add Legacy Artifact Path" );
|
||||||
|
}
|
||||||
|
|
||||||
|
// add managed repository and its staging repository
|
||||||
|
public void addStagingRepository( String identifier, String name, String directory, String indexDirectory,
|
||||||
|
String type, String cron, String daysOlder, String retentionCount )
|
||||||
|
{
|
||||||
|
setFieldValue( "repository.id", identifier );
|
||||||
|
setFieldValue( "repository.name", name );
|
||||||
|
setFieldValue( "repository.location", directory );
|
||||||
|
setFieldValue( "repository.indexDirectory", indexDirectory );
|
||||||
|
selectValue( "repository.layout", type );
|
||||||
|
setFieldValue( "repository.cronExpression", cron );
|
||||||
|
setFieldValue( "repository.daysOlder", daysOlder );
|
||||||
|
setFieldValue( "repository.retentionCount", retentionCount );
|
||||||
|
checkField( "stageNeeded" );
|
||||||
|
|
||||||
|
clickButtonWithValue( "Add Repository" );
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void logout()
|
||||||
|
{
|
||||||
|
clickLinkWithText( "Logout" );
|
||||||
|
assertTextNotPresent( "Current User:" );
|
||||||
|
assertLinkNotPresent( "Edit Details" );
|
||||||
|
assertLinkNotPresent( "Logout" );
|
||||||
|
assertLinkPresent( "Login" );
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,82 @@
|
||||||
|
package org.apache.archiva.web.test.parent;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
public abstract class AbstractArtifactManagementTest
|
||||||
|
extends AbstractArchivaTest
|
||||||
|
{
|
||||||
|
|
||||||
|
public String getGroupId()
|
||||||
|
{
|
||||||
|
String groupId = getProperty( "GROUPID" );
|
||||||
|
return groupId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getArtifactId()
|
||||||
|
{
|
||||||
|
String artifactId = getProperty( "ARTIFACTID" );
|
||||||
|
return artifactId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getVersion()
|
||||||
|
{
|
||||||
|
String version = getProperty( "VERSION" );
|
||||||
|
return version;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPackaging()
|
||||||
|
{
|
||||||
|
String packaging = getProperty( "PACKAGING" );
|
||||||
|
return packaging;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getArtifactFilePath()
|
||||||
|
{
|
||||||
|
return "src/test/resources/snapshots/org/apache/maven/archiva/web/test/foo-bar/1.0-SNAPSHOT/foo-bar-1.0-SNAPSHOT.jar";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRepositoryId()
|
||||||
|
{
|
||||||
|
String repositoryId = getProperty( "REPOSITORYID" );
|
||||||
|
return repositoryId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void goToDeleteArtifactPage()
|
||||||
|
{
|
||||||
|
login( getProperty( "ADMIN_USERNAME" ), getProperty( "ADMIN_PASSWORD" ) );
|
||||||
|
getSelenium().open( "/archiva/deleteArtifact.action" );
|
||||||
|
assertDeleteArtifactPage();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void deleteArtifact( String groupId, String artifactId, String version, String repositoryId )
|
||||||
|
{
|
||||||
|
deleteArtifact( groupId, artifactId, version, repositoryId, false );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void deleteArtifact( String groupId, String artifactId, String version, String repositoryId, boolean wait )
|
||||||
|
{
|
||||||
|
goToDeleteArtifactPage();
|
||||||
|
setFieldValue( "groupId", groupId );
|
||||||
|
setFieldValue( "artifactId", artifactId );
|
||||||
|
setFieldValue( "version", version );
|
||||||
|
selectValue( "repositoryId", repositoryId );
|
||||||
|
clickButtonWithValue( "Submit", wait );
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,80 @@
|
||||||
|
package org.apache.archiva.web.test.parent;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
public abstract class AbstractArtifactReportsTest
|
||||||
|
extends AbstractArchivaTest
|
||||||
|
{
|
||||||
|
|
||||||
|
// Reports
|
||||||
|
public void goToReportsPage()
|
||||||
|
{
|
||||||
|
getSelenium().open( "/archiva/report/pickReport.action" );
|
||||||
|
assertReportsPage();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void assertReportsPage()
|
||||||
|
{
|
||||||
|
assertPage( "Apache Archiva \\ Reports" );
|
||||||
|
assertTextPresent( "Reports" );
|
||||||
|
assertTextPresent( "Repository Statistics" );
|
||||||
|
assertTextPresent( "Repositories To Be Compared" );
|
||||||
|
assertElementPresent( "availableRepositories" );
|
||||||
|
assertButtonWithValuePresent( "v" );
|
||||||
|
assertButtonWithValuePresent( "^" );
|
||||||
|
assertButtonWithValuePresent( "<-" );
|
||||||
|
assertButtonWithValuePresent( "->" );
|
||||||
|
assertButtonWithValuePresent( "<<--" );
|
||||||
|
assertButtonWithValuePresent( "-->>" );
|
||||||
|
assertButtonWithValuePresent( "<*>" );
|
||||||
|
assertElementPresent( "selectedRepositories" );
|
||||||
|
assertButtonWithValuePresent( "v" );
|
||||||
|
assertButtonWithValuePresent( "^" );
|
||||||
|
assertTextPresent( "Row Count" );
|
||||||
|
assertElementPresent( "rowCount" );
|
||||||
|
assertTextPresent( "Start Date" );
|
||||||
|
assertElementPresent( "startDate" );
|
||||||
|
assertTextPresent( "End Date" );
|
||||||
|
assertElementPresent( "endDate" );
|
||||||
|
assertButtonWithValuePresent( "View Statistics" );
|
||||||
|
assertTextPresent( "Repository Health" );
|
||||||
|
assertTextPresent( "Row Count" );
|
||||||
|
assertElementPresent( "rowCount" );
|
||||||
|
assertTextPresent( "Group ID" );
|
||||||
|
assertElementPresent( "groupId" );
|
||||||
|
assertTextPresent( "Repository ID" );
|
||||||
|
assertElementPresent( "repositoryId" );
|
||||||
|
assertButtonWithValuePresent( "Show Report" );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void compareRepositories( String labelSelected, String startDate, String endDate )
|
||||||
|
{
|
||||||
|
goToReportsPage();
|
||||||
|
getSelenium().removeSelection( "generateStatisticsReport_availableRepositories", labelSelected );
|
||||||
|
clickButtonWithValue( "->", false );
|
||||||
|
getSelenium().type( "startDate", startDate );
|
||||||
|
// clickLinkWithLocator( "1" , false );
|
||||||
|
// getSelenium().click( "endDate" );
|
||||||
|
getSelenium().type( "endDate", endDate );
|
||||||
|
// clickLinkWithLocator( "30" , false );
|
||||||
|
clickButtonWithValue( "View Statistics" );
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,40 @@
|
||||||
|
package org.apache.archiva.web.test.parent;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
public abstract class AbstractBrowseTest
|
||||||
|
extends AbstractArchivaTest
|
||||||
|
{
|
||||||
|
|
||||||
|
// Browse
|
||||||
|
public void goToBrowsePage()
|
||||||
|
{
|
||||||
|
getSelenium().open( "/archiva/browse" );
|
||||||
|
assertBrowsePage();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void assertBrowsePage()
|
||||||
|
{
|
||||||
|
assertPage( "Apache Archiva \\ Browse Repository" );
|
||||||
|
assertTextPresent( "Browse Repository" );
|
||||||
|
assertTextPresent( "Groups" );
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,74 @@
|
||||||
|
package org.apache.archiva.web.test.parent;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
|
public class AbstractMergingRepositoriesTest
|
||||||
|
extends AbstractArchivaTest
|
||||||
|
{
|
||||||
|
|
||||||
|
public void goToAuditLogReports()
|
||||||
|
{
|
||||||
|
getSelenium().open( "/archiva/report/queryAuditLogReport.action" );
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRepositoryDir()
|
||||||
|
{
|
||||||
|
File f = new File( "" );
|
||||||
|
String artifactFilePath = f.getAbsolutePath();
|
||||||
|
return artifactFilePath + "/target/";
|
||||||
|
}
|
||||||
|
|
||||||
|
public void editManagedRepository()
|
||||||
|
{
|
||||||
|
goToRepositoriesPage();
|
||||||
|
clickLinkWithXPath( "//div[@id='contentArea']/div/div[5]/div[1]/a[1]/img" );
|
||||||
|
assertPage( "Apache Archiva \\ Admin: Edit Managed Repository" );
|
||||||
|
checkField( "repository.blockRedeployments" );
|
||||||
|
clickButtonWithValue( "Update Repository" );
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getGroupId()
|
||||||
|
{
|
||||||
|
return getProperty( "VALIDARTIFACT_GROUPID" );
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getArtifactId()
|
||||||
|
{
|
||||||
|
return getProperty( "VALIDARTIFACT_ARTIFACTID" );
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getVersion()
|
||||||
|
{
|
||||||
|
return getProperty( "VERSION" );
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPackaging()
|
||||||
|
{
|
||||||
|
return getProperty( "PACKAGING" );
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getValidArtifactFilePath()
|
||||||
|
{
|
||||||
|
return "src/test/resources/snapshots/org/apache/maven/archiva/web/test/foo-bar/1.0-SNAPSHOT/foo-bar-1.0-SNAPSHOT.jar";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,358 @@
|
||||||
|
package org.apache.archiva.web.test.parent;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import org.testng.Assert;
|
||||||
|
|
||||||
|
public abstract class AbstractRepositoryTest
|
||||||
|
extends AbstractArchivaTest
|
||||||
|
{
|
||||||
|
// Repository Groups
|
||||||
|
public void goToRepositoryGroupsPage()
|
||||||
|
{
|
||||||
|
if ( !getTitle().equals( "Apache Archiva \\ Administration - Repository Groups" ) )
|
||||||
|
{
|
||||||
|
getSelenium().open( "/archiva/admin/repositoryGroups.action" );
|
||||||
|
}
|
||||||
|
assertRepositoryGroupsPage();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void assertRepositoryGroupsPage()
|
||||||
|
{
|
||||||
|
assertPage( "Apache Archiva \\ Administration - Repository Groups" );
|
||||||
|
assertTextPresent( "Administration - Repository Groups" );
|
||||||
|
assertTextPresent( "Identifier*:" );
|
||||||
|
assertElementPresent( "repositoryGroup.id" );
|
||||||
|
assertButtonWithValuePresent( "Add Group" );
|
||||||
|
assertTextPresent( "Repository Groups" );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void assertAddedRepositoryLink( String repositoryGroupName )
|
||||||
|
{
|
||||||
|
assertPage( "Apache Archiva \\ Administration - Repository Groups" );
|
||||||
|
String repositoryGroupUrlValue = "repository/" + repositoryGroupName + "/";
|
||||||
|
String baseUrlValue = "archiva";
|
||||||
|
String repositoryGroupLink = baseUrl.replaceFirst( baseUrlValue, repositoryGroupUrlValue );
|
||||||
|
assertTextPresent( repositoryGroupLink );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void assertAddedRepositoryToRepositoryGroups( String repositoryName )
|
||||||
|
{
|
||||||
|
assertPage( "Apache Archiva \\ Administration - Repository Groups" );
|
||||||
|
assertTextPresent( repositoryName );
|
||||||
|
assertTextPresent( "Archiva Managed Internal Repository" );
|
||||||
|
assertAddedRepositoryLink( repositoryName );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void assertDeleteRepositoryGroupPage( String repositoryName )
|
||||||
|
{
|
||||||
|
assertPage( "Apache Archiva \\ Admin: Delete Repository Group" );
|
||||||
|
assertTextPresent( "WARNING: This operation can not be undone." );
|
||||||
|
assertTextPresent( "Are you sure you want to delete the following repository group?" );
|
||||||
|
assertTextPresent( "ID:" );
|
||||||
|
assertTextPresent( repositoryName );
|
||||||
|
assertButtonWithValuePresent( "Confirm" );
|
||||||
|
assertButtonWithValuePresent( "Cancel" );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addRepositoryGroup( String repoGroupName, boolean wait )
|
||||||
|
{
|
||||||
|
goToRepositoryGroupsPage();
|
||||||
|
setFieldValue( "repositoryGroup.id", repoGroupName );
|
||||||
|
clickButtonWithValue( "Add Group", wait );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addRepositoryToRepositoryGroup( String repositoryGroupName, String repositoryName )
|
||||||
|
{
|
||||||
|
goToRepositoryGroupsPage();
|
||||||
|
String s = getSelenium().getBodyText();
|
||||||
|
if ( s.contains( "No Repository Groups Defined." ) )
|
||||||
|
{
|
||||||
|
setFieldValue( "repositoryGroup.id", repositoryGroupName );
|
||||||
|
clickButtonWithValue( "Add Group" );
|
||||||
|
// assertAddedRepositoryLink( repositoryGroupName );
|
||||||
|
|
||||||
|
selectValue( "addRepositoryToGroup_repoId", repositoryName );
|
||||||
|
clickButtonWithValue( "Add Repository" );
|
||||||
|
assertAddedRepositoryToRepositoryGroups( repositoryName );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// assertAddedRepositoryLink( repositoryGroupName );
|
||||||
|
selectValue( "addRepositoryToGroup_repoId", repositoryName );
|
||||||
|
clickButtonWithValue( "Add Repository" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void deleteRepositoryInRepositoryGroups()
|
||||||
|
{
|
||||||
|
goToRepositoryGroupsPage();
|
||||||
|
getSelenium().click( "xpath=//div[@id='contentArea']/div[2]/div/div[3]/div[1]/a/img" );
|
||||||
|
waitPage();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void deleteRepositoryGroup( String repositoryName )
|
||||||
|
{
|
||||||
|
getSelenium().click( "xpath=//div[@id='contentArea']/div[2]/div/div[1]/div/a/img" );
|
||||||
|
waitPage();
|
||||||
|
assertDeleteRepositoryGroupPage( repositoryName );
|
||||||
|
clickButtonWithValue( "Confirm" );
|
||||||
|
}
|
||||||
|
|
||||||
|
// /////////////////////////////
|
||||||
|
// proxy connectors
|
||||||
|
// /////////////////////////////
|
||||||
|
public void goToProxyConnectorsPage()
|
||||||
|
{
|
||||||
|
clickLinkWithText( "Proxy Connectors" );
|
||||||
|
assertProxyConnectorsPage();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void assertProxyConnectorsPage()
|
||||||
|
{
|
||||||
|
assertPage( "Apache Archiva \\ Administration - Proxy Connectors" );
|
||||||
|
assertTextPresent( "Administration - Proxy Connectors" );
|
||||||
|
assertTextPresent( "Repository Proxy Connectors" );
|
||||||
|
assertTextPresent( "internal" );
|
||||||
|
assertTextPresent( "Archiva Managed Internal Repository" );
|
||||||
|
assertTextPresent( "Proxy Connector" );
|
||||||
|
assertTextPresent( "Central Repository" );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void assertAddProxyConnectorPage()
|
||||||
|
{
|
||||||
|
assertPage( "Apache Archiva \\ Admin: Add Proxy Connector" );
|
||||||
|
assertTextPresent( "Admin: Add Proxy Connector" );
|
||||||
|
String proxy =
|
||||||
|
"Network Proxy*:,Managed Repository*:,Remote Repository*:,Policies:,Return error when:,On remote error:,Releases:,Snapshots:,Checksum:,Cache failures:,Properties:,No properties have been set.,Black List:,No black list patterns have been set.,White List:,No white list patterns have been set.";
|
||||||
|
String[] arrayProxy = proxy.split( "," );
|
||||||
|
for ( String arrayproxy : arrayProxy )
|
||||||
|
assertTextPresent( arrayproxy );
|
||||||
|
/*
|
||||||
|
* String proxyElements =
|
||||||
|
* "addProxyConnector_connector_proxyId,addProxyConnector_connector_sourceRepoId,addProxyConnector_connector_targetRepoId,policy_propagate-errors-on-update,policy_propagate-errors,policy_releases,policy_snapshots,policy_checksum,policy_cache-failures,propertiesEntry,propertiesValue,blackListEntry,whiteListEntry"
|
||||||
|
* ; String[] arrayProxyElements = proxyElements.split( "," ); for ( String arrayproxyelements :
|
||||||
|
* arrayProxyElements ) assertTextPresent( arrayproxyelements );
|
||||||
|
*/
|
||||||
|
assertButtonWithValuePresent( "Add Property" );
|
||||||
|
assertButtonWithValuePresent( "Add Pattern" );
|
||||||
|
assertButtonWithValuePresent( "Add Proxy Connector" );
|
||||||
|
}
|
||||||
|
|
||||||
|
// this only fills in the values of required fields in adding Proxy Connectors
|
||||||
|
public void addProxyConnector( String networkProxy, String managedRepo, String remoteRepo )
|
||||||
|
{
|
||||||
|
goToProxyConnectorsPage();
|
||||||
|
clickLinkWithText( "Add" );
|
||||||
|
assertAddProxyConnectorPage();
|
||||||
|
selectValue( "connector.proxyId", networkProxy );
|
||||||
|
selectValue( "connector.sourceRepoId", managedRepo );
|
||||||
|
selectValue( "connector.targetRepoId", remoteRepo );
|
||||||
|
clickButtonWithValue( "Add Proxy Connector" );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void deleteProxyConnector()
|
||||||
|
{
|
||||||
|
goToProxyConnectorsPage();
|
||||||
|
clickLinkWithXPath( "//div[@id='contentArea']/div[2]/div[1]/div[2]/div[1]/a[3]/img" );
|
||||||
|
assertPage( "Apache Archiva \\ Admin: Delete Proxy Connectors" );
|
||||||
|
clickButtonWithValue( "Delete" );
|
||||||
|
assertPage( "Apache Archiva \\ Administration - Proxy Connectors" );
|
||||||
|
}
|
||||||
|
|
||||||
|
// /////////////////////////////
|
||||||
|
// network proxies
|
||||||
|
// /////////////////////////////
|
||||||
|
|
||||||
|
public void editNetworkProxies( String fieldName, String value )
|
||||||
|
{
|
||||||
|
// goToNetworkProxiesPage();
|
||||||
|
clickLinkWithText( "Edit Network Proxy" );
|
||||||
|
setFieldValue( fieldName, value );
|
||||||
|
clickButtonWithValue( "Save Network Proxy" );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void deleteNetworkProxy()
|
||||||
|
{
|
||||||
|
// goToNetworkProxiesPage();
|
||||||
|
clickLinkWithText( "Delete Network Proxy" );
|
||||||
|
assertPage( "Apache Archiva \\ Admin: Delete Network Proxy" );
|
||||||
|
assertTextPresent( "WARNING: This operation can not be undone." );
|
||||||
|
clickButtonWithValue( "Delete" );
|
||||||
|
}
|
||||||
|
|
||||||
|
// remote repositories
|
||||||
|
public void assertAddRemoteRepository()
|
||||||
|
{
|
||||||
|
assertPage( "Apache Archiva \\ Admin: Add Remote Repository" );
|
||||||
|
String remote = "Identifier*:,Name*:,URL*:,Username:,Password:,Timeout in seconds:,Type:";
|
||||||
|
String[] arrayRemote = remote.split( "," );
|
||||||
|
for ( String arrayremote : arrayRemote )
|
||||||
|
assertTextPresent( arrayremote );
|
||||||
|
String remoteElements =
|
||||||
|
"addRemoteRepository_repository_id,addRemoteRepository_repository_name,addRemoteRepository_repository_url,addRemoteRepository_repository_userName,addRemoteRepository_repository_password,addRemoteRepository_repository_timeout,addRemoteRepository_repository_layout";
|
||||||
|
String[] arrayRemoteElements = remoteElements.split( "," );
|
||||||
|
for ( String arrayremotelement : arrayRemoteElements )
|
||||||
|
assertElementPresent( arrayremotelement );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void assertDeleteRemoteRepositoryPage()
|
||||||
|
{
|
||||||
|
assertPage( "Apache Archiva \\ Admin: Delete Remote Repository" );
|
||||||
|
assertTextPresent( "Admin: Delete Remote Repository" );
|
||||||
|
assertTextPresent( "WARNING: This operation can not be undone." );
|
||||||
|
assertTextPresent( "Are you sure you want to delete the following remote repository?" );
|
||||||
|
assertButtonWithValuePresent( "Confirm" );
|
||||||
|
assertButtonWithValuePresent( "Cancel" );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addRemoteRepository( String identifier, String name, String url, String username, String password,
|
||||||
|
String timeout, String type, boolean wait )
|
||||||
|
{
|
||||||
|
assertAddRemoteRepository();
|
||||||
|
setFieldValue( "addRemoteRepository_repository_id", identifier );
|
||||||
|
setFieldValue( "addRemoteRepository_repository_name", name );
|
||||||
|
setFieldValue( "addRemoteRepository_repository_url", url );
|
||||||
|
setFieldValue( "addRemoteRepository_repository_userName", username );
|
||||||
|
setFieldValue( "addRemoteRepository_repository_password", password );
|
||||||
|
setFieldValue( "addRemoteRepository_repository_timeout", timeout );
|
||||||
|
selectValue( "addRemoteRepository_repository_layout", type );
|
||||||
|
clickButtonWithValue( "Add Repository", wait );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void deleteRemoteRepository()
|
||||||
|
{
|
||||||
|
goToRepositoriesPage();
|
||||||
|
clickLinkWithXPath( "//div[@id='contentArea']/div/div[8]/div[1]/a[2]" );
|
||||||
|
assertDeleteRemoteRepositoryPage();
|
||||||
|
clickButtonWithValue( "Confirm" );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void editRemoteRepository( String fieldName, String value )
|
||||||
|
{
|
||||||
|
goToRepositoriesPage();
|
||||||
|
clickLinkWithXPath( "//div[@id='contentArea']/div/div[8]/div[1]/a[1]" );
|
||||||
|
setFieldValue( fieldName, value );
|
||||||
|
clickButtonWithValue( "Update Repository" );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void editManagedRepository( String fieldName, String value )
|
||||||
|
{
|
||||||
|
goToRepositoriesPage();
|
||||||
|
clickLinkWithXPath( "//div[@id='contentArea']/div/div[5]/div[1]/a[1]/img" );
|
||||||
|
assertPage( "Apache Archiva \\ Admin: Edit Managed Repository" );
|
||||||
|
setFieldValue( fieldName, value );
|
||||||
|
// TODO
|
||||||
|
clickButtonWithValue( "Update Repository" );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void editManagedRepository(String name, String directory, String indexDirectory, String type, String cron, String daysOlder, String retentionCount)
|
||||||
|
{
|
||||||
|
goToRepositoriesPage();
|
||||||
|
clickLinkWithXPath( "//div[@id='contentArea']/div/div[5]/div[1]/a[1]/img" );
|
||||||
|
assertPage( "Apache Archiva \\ Admin: Edit Managed Repository" );
|
||||||
|
setFieldValue( "repository.name" , name );
|
||||||
|
setFieldValue( "repository.location" , directory );
|
||||||
|
setFieldValue( "repository.indexDirectory" , indexDirectory );
|
||||||
|
selectValue( "repository.layout", type );
|
||||||
|
setFieldValue( "repository.cronExpression" , cron );
|
||||||
|
setFieldValue( "repository.daysOlder" , daysOlder );
|
||||||
|
setFieldValue( "repository.retentionCount" , retentionCount );
|
||||||
|
clickButtonWithValue( "Update Repository" );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void deleteManagedRepository()
|
||||||
|
{
|
||||||
|
clickLinkWithXPath( "//div[@id='contentArea']/div/div[5]/div[1]/a[2]" );
|
||||||
|
assertPage( "Apache Archiva \\ Admin: Delete Managed Repository" );
|
||||||
|
clickButtonWithValue( "Delete Configuration Only" );
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRepositoryDir()
|
||||||
|
{
|
||||||
|
File f = new File( "" );
|
||||||
|
String artifactFilePath = f.getAbsolutePath();
|
||||||
|
return artifactFilePath + "/target/";
|
||||||
|
}
|
||||||
|
|
||||||
|
// ///////////////////////////////////////////
|
||||||
|
// Repository Scanning
|
||||||
|
// ///////////////////////////////////////////
|
||||||
|
public void goToRepositoryScanningPage()
|
||||||
|
{
|
||||||
|
getSelenium().open( "/archiva/admin/repositoryScanning.action" );
|
||||||
|
assertRepositoryScanningPage();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void assertRepositoryScanningPage()
|
||||||
|
{
|
||||||
|
assertPage( "Apache Archiva \\ Administration - Repository Scanning" );
|
||||||
|
assertTextPresent( "Administration - Repository Scanning" );
|
||||||
|
assertTextPresent( "Repository Scanning - File Types" );
|
||||||
|
String artifactsTypes =
|
||||||
|
"**/*.pom,**/*.jar,**/*.ear,**/*.war,**/*.car,**/*.sar,**/*.mar,**/*.rar,**/*.dtd,**/*.tld,**/*.tar.gz,**/*.tar.bz2,**/*.zip";
|
||||||
|
String[] arrayArtifactTypes = artifactsTypes.split( "," );
|
||||||
|
for ( int i = 0; i < arrayArtifactTypes.length; i++ )
|
||||||
|
Assert.assertEquals( getSelenium().getTable( "//div[@id='contentArea']/div/div[1]/table." + i + ".0" ),
|
||||||
|
arrayArtifactTypes[i] );
|
||||||
|
|
||||||
|
String autoremove = "**/*.bak,**/*~,**/*-";
|
||||||
|
String[] arrayAutoremove = autoremove.split( "," );
|
||||||
|
for ( int i = 0; i < arrayAutoremove.length; i++ )
|
||||||
|
Assert.assertEquals( getSelenium().getTable( "//div[@id='contentArea']/div/div[2]/table." + i + ".0" ),
|
||||||
|
arrayAutoremove[i] );
|
||||||
|
|
||||||
|
String ignored = "**/.htaccess,**/KEYS,**/*.rb,**/*.sh,**/.svn/**,**/.DAV/**";
|
||||||
|
String[] arrayIgnored = ignored.split( "," );
|
||||||
|
for ( int i = 0; i < arrayIgnored.length; i++ )
|
||||||
|
Assert.assertEquals( getSelenium().getTable( "//div[@id='contentArea']/div/div[3]/table." + i + ".0" ),
|
||||||
|
arrayIgnored[i] );
|
||||||
|
|
||||||
|
String indexableContent =
|
||||||
|
"**/*.txt,**/*.TXT,**/*.block,**/*.config,**/*.pom,**/*.xml,**/*.xsd,**/*.dtd,**/*.tld";
|
||||||
|
String[] arrayIndexableContent = indexableContent.split( "," );
|
||||||
|
for ( int i = 0; i < arrayIndexableContent.length; i++ )
|
||||||
|
Assert.assertEquals( getSelenium().getTable( "//div[@id='contentArea']/div/div[4]/table." + i + ".0" ),
|
||||||
|
arrayIndexableContent[i] );
|
||||||
|
}
|
||||||
|
|
||||||
|
// ///////////////////////////////////////////
|
||||||
|
// Database
|
||||||
|
// ///////////////////////////////////////////
|
||||||
|
public void goToDatabasePage()
|
||||||
|
{
|
||||||
|
clickLinkWithText( "Database" );
|
||||||
|
assertDatabasePage();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void assertDatabasePage()
|
||||||
|
{
|
||||||
|
assertPage( "Apache Archiva \\ Administration - Database" );
|
||||||
|
assertTextPresent( "Administration - Database" );
|
||||||
|
assertTextPresent( "Database - Unprocessed Artifacts Scanning" );
|
||||||
|
assertTextPresent( "Cron:" );
|
||||||
|
assertElementPresent( "database_cron" );
|
||||||
|
assertButtonWithValuePresent( "Update Cron" );
|
||||||
|
assertButtonWithValuePresent( "Update Database Now" );
|
||||||
|
assertTextPresent( "Database - Unprocessed Artifacts Scanning" );
|
||||||
|
assertTextPresent( "Database - Artifact Cleanup Scanning" );
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,117 @@
|
||||||
|
package org.apache.archiva.web.test.parent;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
public abstract class AbstractSearchTest
|
||||||
|
extends AbstractArchivaTest
|
||||||
|
{
|
||||||
|
// Search
|
||||||
|
public void goToSearchPage()
|
||||||
|
{
|
||||||
|
goToHomePage();
|
||||||
|
if (!isElementPresent( "quickSearchBox" ) )
|
||||||
|
{
|
||||||
|
getSelenium().open( "/index.action");
|
||||||
|
//getSelenium().waitForPageToLoad( maxWaitTimeInMs );
|
||||||
|
waitPage();
|
||||||
|
assertElementPresent( "quickSearchSubmit" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void assertSearchPage()
|
||||||
|
{
|
||||||
|
assertPage( "Apache Archiva \\ Quick Search" );
|
||||||
|
assertTextPresent( "Search for" );
|
||||||
|
assertElementPresent( "quickSearchSubmit" );
|
||||||
|
assertButtonWithValuePresent( "Search" );
|
||||||
|
// assertLinkPresent( "Advanced Search" );
|
||||||
|
assertTextPresent( "Enter your search terms. A variety of data will be searched for your keywords." );
|
||||||
|
// assertButtonWithDivIdPresent( "searchHint" );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void searchForArtifact( String artifactId )
|
||||||
|
{
|
||||||
|
goToSearchPage();
|
||||||
|
|
||||||
|
setFieldValue( "quickSearchValue", artifactId );
|
||||||
|
clickButtonWithLocator( "quickSearchSubmit" );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void searchForArtifactAdvancedSearch( String groupId, String artifactId, String version, String repositoryId,
|
||||||
|
String className, String rowCount )
|
||||||
|
{
|
||||||
|
goToSearchPage();
|
||||||
|
|
||||||
|
clickLinkWithXPath( "//div[@id='contentArea']/div[1]/a[1]/strong", false );
|
||||||
|
assertElementPresent( "filteredSearch_searchField" );
|
||||||
|
assertElementPresent( "filteredSearch_repositoryId" );
|
||||||
|
|
||||||
|
if ( groupId != null )
|
||||||
|
{
|
||||||
|
selectValue( "filteredSearch_searchField", "Group ID" );
|
||||||
|
clickLinkWithLocator( "//a[@id='filteredSearch_']/img", false );
|
||||||
|
|
||||||
|
assertElementPresent( "groupId" );
|
||||||
|
setFieldValue( "groupId", groupId );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( artifactId != null )
|
||||||
|
{
|
||||||
|
selectValue( "filteredSearch_searchField", "Artifact ID" );
|
||||||
|
clickLinkWithLocator( "//a[@id='filteredSearch_']/img", false );
|
||||||
|
|
||||||
|
assertElementPresent( "artifactId" );
|
||||||
|
setFieldValue( "artifactId", artifactId );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( version != null )
|
||||||
|
{
|
||||||
|
selectValue( "filteredSearch_searchField", "Version" );
|
||||||
|
clickLinkWithLocator( "//a[@id='filteredSearch_']/img", false );
|
||||||
|
|
||||||
|
assertElementPresent( "version" );
|
||||||
|
setFieldValue( "version", version );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( className != null )
|
||||||
|
{
|
||||||
|
selectValue( "filteredSearch_searchField", "Class/Package Name" );
|
||||||
|
clickLinkWithLocator( "//a[@id='filteredSearch_']/img", false );
|
||||||
|
|
||||||
|
assertElementPresent( "className" );
|
||||||
|
setFieldValue( "className", className );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( rowCount != null )
|
||||||
|
{
|
||||||
|
selectValue( "filteredSearch_searchField", "Row Count" );
|
||||||
|
clickLinkWithLocator( "//a[@id='filteredSearch_']/img", false );
|
||||||
|
|
||||||
|
assertElementPresent( "rowCount" );
|
||||||
|
setFieldValue( "rowCount", rowCount );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( repositoryId != null )
|
||||||
|
{
|
||||||
|
selectValue( "filteredSearch_repositoryId", repositoryId );
|
||||||
|
}
|
||||||
|
clickSubmitWithLocator( "filteredSearch_0" );
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,488 @@
|
||||||
|
package org.apache.archiva.web.test.parent;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import com.thoughtworks.selenium.DefaultSelenium;
|
||||||
|
import com.thoughtworks.selenium.Selenium;
|
||||||
|
import org.apache.commons.io.IOUtils;
|
||||||
|
import org.testng.Assert;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Map.Entry;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author <a href="mailto:evenisse@apache.org">Emmanuel Venisse</a>
|
||||||
|
* @version $Id: AbstractSeleniumTestCase.java 761154 2009-04-02 03:31:19Z wsmoak $
|
||||||
|
*/
|
||||||
|
|
||||||
|
public abstract class AbstractSeleniumTest
|
||||||
|
{
|
||||||
|
|
||||||
|
public static String baseUrl;
|
||||||
|
|
||||||
|
public static String maxWaitTimeInMs;
|
||||||
|
|
||||||
|
private static ThreadLocal<Selenium> selenium = new ThreadLocal<Selenium>();
|
||||||
|
|
||||||
|
public static Properties p;
|
||||||
|
|
||||||
|
private final static String PROPERTIES_SEPARATOR = "=";
|
||||||
|
|
||||||
|
public void open()
|
||||||
|
throws Exception
|
||||||
|
{
|
||||||
|
p = new Properties();
|
||||||
|
p.load( this.getClass().getClassLoader().getResourceAsStream( "testng.properties" ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize selenium
|
||||||
|
*/
|
||||||
|
public void open( String baseUrl, String browser, String seleniumHost, int seleniumPort, String maxWaitTimeInMs )
|
||||||
|
throws Exception
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
AbstractSeleniumTest.baseUrl = baseUrl;
|
||||||
|
AbstractSeleniumTest.maxWaitTimeInMs = maxWaitTimeInMs;
|
||||||
|
|
||||||
|
if ( getSelenium() == null )
|
||||||
|
{
|
||||||
|
DefaultSelenium s = new DefaultSelenium( seleniumHost, seleniumPort, browser, baseUrl );
|
||||||
|
s.start();
|
||||||
|
s.setTimeout( maxWaitTimeInMs );
|
||||||
|
selenium.set( s );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch ( Exception e )
|
||||||
|
{
|
||||||
|
// yes
|
||||||
|
System.out.print( e.getMessage() );
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Selenium getSelenium()
|
||||||
|
{
|
||||||
|
return selenium == null ? null : selenium.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected String getProperty( String key )
|
||||||
|
{
|
||||||
|
return p.getProperty( key );
|
||||||
|
}
|
||||||
|
|
||||||
|
protected String getEscapeProperty( String key )
|
||||||
|
{
|
||||||
|
InputStream input = this.getClass().getClassLoader().getResourceAsStream( "testng.properties" );
|
||||||
|
String value = null;
|
||||||
|
List<String> lines;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
lines = IOUtils.readLines( input );
|
||||||
|
}
|
||||||
|
catch ( IOException e )
|
||||||
|
{
|
||||||
|
lines = new ArrayList<String>();
|
||||||
|
}
|
||||||
|
for ( String l : lines )
|
||||||
|
{
|
||||||
|
if ( l != null && l.startsWith( key ) )
|
||||||
|
{
|
||||||
|
int indexSeparator = l.indexOf( PROPERTIES_SEPARATOR );
|
||||||
|
value = l.substring( indexSeparator + 1 ).trim();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Close selenium session. Called from AfterSuite method of sub-class
|
||||||
|
*/
|
||||||
|
public void close()
|
||||||
|
throws Exception
|
||||||
|
{
|
||||||
|
if ( getSelenium() != null )
|
||||||
|
{
|
||||||
|
getSelenium().stop();
|
||||||
|
selenium.set( null );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// *******************************************************
|
||||||
|
// Auxiliar methods. This method help us and simplify test.
|
||||||
|
// *******************************************************
|
||||||
|
|
||||||
|
public void assertFieldValue( String fieldValue, String fieldName )
|
||||||
|
{
|
||||||
|
assertElementPresent( fieldName );
|
||||||
|
Assert.assertEquals( fieldValue, getSelenium().getValue( fieldName ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void assertPage( String title )
|
||||||
|
{
|
||||||
|
Assert.assertEquals( getTitle(), title );
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTitle()
|
||||||
|
{
|
||||||
|
// Collapse spaces
|
||||||
|
return getSelenium().getTitle().replaceAll( "[ \n\r]+", " " );
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getHtmlContent()
|
||||||
|
{
|
||||||
|
return getSelenium().getHtmlSource();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getText( String locator )
|
||||||
|
{
|
||||||
|
return getSelenium().getText( locator );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void assertTextPresent( String text )
|
||||||
|
{
|
||||||
|
Assert.assertTrue( getSelenium().isTextPresent( text ), "'" + text + "' isn't present." );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* one of text args must be in the page so use en and fr text (olamy use en locale :-) )
|
||||||
|
*
|
||||||
|
* @param texts
|
||||||
|
*/
|
||||||
|
public void assertTextPresent( String... texts )
|
||||||
|
{
|
||||||
|
boolean present = false;
|
||||||
|
StringBuilder sb = new StringBuilder();
|
||||||
|
for ( String text : texts )
|
||||||
|
{
|
||||||
|
present = present || getSelenium().isTextPresent( text );
|
||||||
|
sb.append( " " + text + " " );
|
||||||
|
}
|
||||||
|
Assert.assertTrue( present, "'one of the following test " + sb.toString() + "' isn't present." );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void assertTextNotPresent( String text )
|
||||||
|
{
|
||||||
|
Assert.assertFalse( getSelenium().isTextPresent( text ), "'" + text + "' is present." );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void assertElementPresent( String elementLocator )
|
||||||
|
{
|
||||||
|
Assert.assertTrue( isElementPresent( elementLocator ), "'" + elementLocator + "' isn't present." );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void assertElementNotPresent( String elementLocator )
|
||||||
|
{
|
||||||
|
Assert.assertFalse( isElementPresent( elementLocator ), "'" + elementLocator + "' is present." );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void assertLinkPresent( String text )
|
||||||
|
{
|
||||||
|
Assert.assertTrue( isElementPresent( "link=" + text ), "The link '" + text + "' isn't present." );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void assertLinkNotPresent( String text )
|
||||||
|
{
|
||||||
|
Assert.assertFalse( isElementPresent( "link=" + text ), "The link('" + text + "' is present." );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void assertImgWithAlt( String alt )
|
||||||
|
{
|
||||||
|
assertElementPresent( "/¯img[@alt='" + alt + "']" );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void assertImgWithAltAtRowCol( boolean isALink, String alt, int row, int column )
|
||||||
|
{
|
||||||
|
String locator = "//tr[" + row + "]/td[" + column + "]/";
|
||||||
|
locator += isALink ? "a/" : "";
|
||||||
|
locator += "img[@alt='" + alt + "']";
|
||||||
|
|
||||||
|
assertElementPresent( locator );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void assertImgWithAltNotPresent( String alt )
|
||||||
|
{
|
||||||
|
assertElementNotPresent( "/¯img[@alt='" + alt + "']" );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void assertCellValueFromTable( String expected, String tableElement, int row, int column )
|
||||||
|
{
|
||||||
|
Assert.assertEquals( expected, getCellValueFromTable( tableElement, row, column ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isTextPresent( String text )
|
||||||
|
{
|
||||||
|
return getSelenium().isTextPresent( text );
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isLinkPresent( String text )
|
||||||
|
{
|
||||||
|
return isElementPresent( "link=" + text );
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isElementPresent( String locator )
|
||||||
|
{
|
||||||
|
return getSelenium().isElementPresent( locator );
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isElementVisible( String locator )
|
||||||
|
{
|
||||||
|
return getSelenium().isVisible( locator );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void waitPage()
|
||||||
|
{
|
||||||
|
// TODO define a smaller maxWaitTimeJsInMs for wait javascript response for browser side validation
|
||||||
|
//getSelenium().w .wait( Long.parseLong( maxWaitTimeInMs ) );
|
||||||
|
//getSelenium().waitForPageToLoad( maxWaitTimeInMs );
|
||||||
|
// http://jira.openqa.org/browse/SRC-302
|
||||||
|
// those hack looks to break some tests :-(
|
||||||
|
// getSelenium().waitForCondition( "selenium.isElementPresent('document.body');", maxWaitTimeInMs );
|
||||||
|
//getSelenium().waitForCondition( "selenium.isElementPresent('footer');", maxWaitTimeInMs );
|
||||||
|
//getSelenium().waitForCondition( "selenium.browserbot.getCurrentWindow().document.getElementById('footer')",
|
||||||
|
// maxWaitTimeInMs );
|
||||||
|
// so the only hack is to not use a too small wait time
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Thread.sleep( Long.parseLong( maxWaitTimeInMs ) );
|
||||||
|
}
|
||||||
|
catch ( InterruptedException e )
|
||||||
|
{
|
||||||
|
throw new RuntimeException( "issue on Thread.sleep : " + e.getMessage(), e );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFieldValue( String fieldName )
|
||||||
|
{
|
||||||
|
return getSelenium().getValue( fieldName );
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCellValueFromTable( String tableElement, int row, int column )
|
||||||
|
{
|
||||||
|
return getSelenium().getTable( tableElement + "." + row + "." + column );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void selectValue( String locator, String value )
|
||||||
|
{
|
||||||
|
getSelenium().select( locator, "label=" + value );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void assertOptionPresent( String selectField, String[] options )
|
||||||
|
{
|
||||||
|
assertElementPresent( selectField );
|
||||||
|
String[] optionsPresent = getSelenium().getSelectOptions( selectField );
|
||||||
|
List<String> expected = Arrays.asList( options );
|
||||||
|
List<String> present = Arrays.asList( optionsPresent );
|
||||||
|
Assert.assertTrue( present.containsAll( expected ), "Options expected are not included in present options" );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void assertSelectedValue( String value, String fieldName )
|
||||||
|
{
|
||||||
|
assertElementPresent( fieldName );
|
||||||
|
String optionsPresent = getSelenium().getSelectedLabel( value );
|
||||||
|
Assert.assertEquals( optionsPresent, value );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void submit()
|
||||||
|
{
|
||||||
|
clickLinkWithXPath( "//input[@type='submit']" );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void assertButtonWithValuePresent( String text )
|
||||||
|
{
|
||||||
|
Assert.assertTrue( isButtonWithValuePresent( text ), "'" + text + "' button isn't present" );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void assertButtonWithIdPresent( String id )
|
||||||
|
{
|
||||||
|
Assert.assertTrue( isButtonWithIdPresent( id ), "'Button with id =" + id + "' isn't present" );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void assertButtonWithValueNotPresent( String text )
|
||||||
|
{
|
||||||
|
Assert.assertFalse( isButtonWithValuePresent( text ), "'" + text + "' button is present" );
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isButtonWithValuePresent( String text )
|
||||||
|
{
|
||||||
|
return isElementPresent( "//button[@value='" + text + "']" ) || isElementPresent(
|
||||||
|
"//input[@value='" + text + "']" );
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isButtonWithIdPresent( String text )
|
||||||
|
{
|
||||||
|
return isElementPresent( "//button[@id='" + text + "']" ) || isElementPresent( "//input[@id='" + text + "']" );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void clickButtonWithName( String text, boolean wait )
|
||||||
|
{
|
||||||
|
clickLinkWithXPath( "//input[@name='" + text + "']", wait );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void clickButtonWithValue( String text )
|
||||||
|
{
|
||||||
|
clickButtonWithValue( text, true );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void clickButtonWithValue( String text, boolean wait )
|
||||||
|
{
|
||||||
|
assertButtonWithValuePresent( text );
|
||||||
|
|
||||||
|
if ( isElementPresent( "//button[@value='" + text + "']" ) )
|
||||||
|
{
|
||||||
|
clickLinkWithXPath( "//button[@value='" + text + "']", wait );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
clickLinkWithXPath( "//input[@value='" + text + "']", wait );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void clickSubmitWithLocator( String locator )
|
||||||
|
{
|
||||||
|
clickLinkWithLocator( locator );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void clickSubmitWithLocator( String locator, boolean wait )
|
||||||
|
{
|
||||||
|
clickLinkWithLocator( locator, wait );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void clickImgWithAlt( String alt )
|
||||||
|
{
|
||||||
|
clickLinkWithLocator( "//img[@alt='" + alt + "']" );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void clickLinkWithText( String text )
|
||||||
|
{
|
||||||
|
clickLinkWithText( text, true );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void clickLinkWithText( String text, boolean wait )
|
||||||
|
{
|
||||||
|
clickLinkWithLocator( "link=" + text, wait );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void clickLinkWithXPath( String xpath )
|
||||||
|
{
|
||||||
|
clickLinkWithXPath( xpath, true );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void clickLinkWithXPath( String xpath, boolean wait )
|
||||||
|
{
|
||||||
|
clickLinkWithLocator( "xpath=" + xpath, wait );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void clickLinkWithLocator( String locator )
|
||||||
|
{
|
||||||
|
clickLinkWithLocator( locator, true );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void clickLinkWithLocator( String locator, boolean wait )
|
||||||
|
{
|
||||||
|
assertElementPresent( locator );
|
||||||
|
getSelenium().click( locator );
|
||||||
|
if ( wait )
|
||||||
|
{
|
||||||
|
waitPage();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void clickButtonWithLocator( String locator )
|
||||||
|
{
|
||||||
|
clickButtonWithLocator( locator, true );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void clickButtonWithLocator( String locator, boolean wait )
|
||||||
|
{
|
||||||
|
assertElementPresent( locator );
|
||||||
|
getSelenium().click( locator );
|
||||||
|
if ( wait )
|
||||||
|
{
|
||||||
|
waitPage();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFieldValues( Map<String, String> fieldMap )
|
||||||
|
{
|
||||||
|
Map.Entry<String, String> entry;
|
||||||
|
|
||||||
|
for ( Iterator<Entry<String, String>> entries = fieldMap.entrySet().iterator(); entries.hasNext(); )
|
||||||
|
{
|
||||||
|
entry = entries.next();
|
||||||
|
|
||||||
|
getSelenium().type( entry.getKey(), entry.getValue() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFieldValue( String fieldName, String value )
|
||||||
|
{
|
||||||
|
getSelenium().type( fieldName, value );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void checkField( String locator )
|
||||||
|
{
|
||||||
|
getSelenium().check( locator );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void uncheckField( String locator )
|
||||||
|
{
|
||||||
|
getSelenium().uncheck( locator );
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isChecked( String locator )
|
||||||
|
{
|
||||||
|
return getSelenium().isChecked( locator );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void assertIsChecked( String locator )
|
||||||
|
{
|
||||||
|
Assert.assertTrue( getSelenium().isChecked( locator ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void assertIsNotChecked( String locator )
|
||||||
|
{
|
||||||
|
Assert.assertFalse( getSelenium().isChecked( locator ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void assertXpathCount( String locator, int expectedCount )
|
||||||
|
{
|
||||||
|
int count = getSelenium().getXpathCount( locator ).intValue();
|
||||||
|
Assert.assertEquals( count, expectedCount );
|
||||||
|
}
|
||||||
|
|
||||||
|
public void assertElementValue( String locator, String expectedValue )
|
||||||
|
{
|
||||||
|
Assert.assertEquals( getSelenium().getValue( locator ), expectedValue );
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
~ 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.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<Context path="/archiva"
|
||||||
|
docBase="${catalina.base}/webapps/archiva">
|
||||||
|
|
||||||
|
<Resource name="jdbc/users" auth="Container" type="javax.sql.DataSource"
|
||||||
|
username="sa"
|
||||||
|
password=""
|
||||||
|
driverClassName="org.apache.derby.jdbc.EmbeddedDriver"
|
||||||
|
url="jdbc:derby:target/database/users;create=true"
|
||||||
|
/>
|
||||||
|
</Context>
|
|
@ -0,0 +1,34 @@
|
||||||
|
<!--
|
||||||
|
~ 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.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
Context configuration file for the Tomcat Host Manager Web App
|
||||||
|
|
||||||
|
$Id$
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
<Context docBase="${catalina.home}/webapps/host-manager"/>
|
||||||
|
<!--
|
||||||
|
privileged="true" antiResourceLocking="false" antiJARLocking="false">
|
||||||
|
|
||||||
|
</Context>
|
||||||
|
-->
|
|
@ -0,0 +1,38 @@
|
||||||
|
<!--
|
||||||
|
~ 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.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
Context configuration file for the Tomcat Manager Web App
|
||||||
|
|
||||||
|
$Id$
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
<Context docBase="${catalina.home}/webapps/manager"/>
|
||||||
|
<!--
|
||||||
|
privileged="true" antiResourceLocking="false" antiJARLocking="false">
|
||||||
|
|
||||||
|
|
||||||
|
<ResourceLink name="users" global="UserDatabase"
|
||||||
|
type="org.apache.catalina.UserDatabase"/>
|
||||||
|
|
||||||
|
</Context>
|
||||||
|
-->
|
|
@ -0,0 +1,7 @@
|
||||||
|
grant {
|
||||||
|
permission java.security.AllPermission;
|
||||||
|
};
|
||||||
|
|
||||||
|
grant codeBase "file:${catalina.home}/lib/tomcat-juli.jar" {
|
||||||
|
permission java.lang.RuntimePermission "setContextClassLoader";
|
||||||
|
};
|
|
@ -0,0 +1,81 @@
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
#
|
||||||
|
# List of comma-separated packages that start with or equal this string
|
||||||
|
# will cause a security exception to be thrown when
|
||||||
|
# passed to checkPackageAccess unless the
|
||||||
|
# corresponding RuntimePermission ("accessClassInPackage."+package) has
|
||||||
|
# been granted.
|
||||||
|
package.access=sun.,org.apache.catalina.,org.apache.coyote.,org.apache.tomcat.,org.apache.jasper.,sun.beans.
|
||||||
|
#
|
||||||
|
# List of comma-separated packages that start with or equal this string
|
||||||
|
# will cause a security exception to be thrown when
|
||||||
|
# passed to checkPackageDefinition unless the
|
||||||
|
# corresponding RuntimePermission ("defineClassInPackage."+package) has
|
||||||
|
# been granted.
|
||||||
|
#
|
||||||
|
# by default, no packages are restricted for definition, and none of
|
||||||
|
# the class loaders supplied with the JDK call checkPackageDefinition.
|
||||||
|
#
|
||||||
|
package.definition=sun.,java.,org.apache.catalina.,org.apache.coyote.,org.apache.tomcat.,org.apache.jasper.
|
||||||
|
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# List of comma-separated paths defining the contents of the "common"
|
||||||
|
# classloader. Prefixes should be used to define what is the repository type.
|
||||||
|
# Path may be relative to the CATALINA_HOME or CATALINA_BASE path or absolute.
|
||||||
|
# If left as blank,the JVM system loader will be used as Catalina's "common"
|
||||||
|
# loader.
|
||||||
|
# Examples:
|
||||||
|
# "foo": Add this folder as a class repository
|
||||||
|
# "foo/*.jar": Add all the JARs of the specified folder as class
|
||||||
|
# repositories
|
||||||
|
# "foo/bar.jar": Add bar.jar as a class repository
|
||||||
|
common.loader=${catalina.base}/lib,${catalina.base}/lib/*.jar,${catalina.home}/lib,${catalina.home}/lib/*.jar
|
||||||
|
|
||||||
|
#
|
||||||
|
# List of comma-separated paths defining the contents of the "server"
|
||||||
|
# classloader. Prefixes should be used to define what is the repository type.
|
||||||
|
# Path may be relative to the CATALINA_HOME or CATALINA_BASE path or absolute.
|
||||||
|
# If left as blank, the "common" loader will be used as Catalina's "server"
|
||||||
|
# loader.
|
||||||
|
# Examples:
|
||||||
|
# "foo": Add this folder as a class repository
|
||||||
|
# "foo/*.jar": Add all the JARs of the specified folder as class
|
||||||
|
# repositories
|
||||||
|
# "foo/bar.jar": Add bar.jar as a class repository
|
||||||
|
server.loader=
|
||||||
|
|
||||||
|
#
|
||||||
|
# List of comma-separated paths defining the contents of the "shared"
|
||||||
|
# classloader. Prefixes should be used to define what is the repository type.
|
||||||
|
# Path may be relative to the CATALINA_BASE path or absolute. If left as blank,
|
||||||
|
# the "common" loader will be used as Catalina's "shared" loader.
|
||||||
|
# Examples:
|
||||||
|
# "foo": Add this folder as a class repository
|
||||||
|
# "foo/*.jar": Add all the JARs of the specified folder as class
|
||||||
|
# repositories
|
||||||
|
# "foo/bar.jar": Add bar.jar as a class repository
|
||||||
|
# Please note that for single jars, e.g. bar.jar, you need the URL form
|
||||||
|
# starting with file:.
|
||||||
|
shared.loader=
|
||||||
|
|
||||||
|
#
|
||||||
|
# String cache configuration.
|
||||||
|
tomcat.util.buf.StringCache.byte.enabled=true
|
||||||
|
#tomcat.util.buf.StringCache.char.enabled=true
|
||||||
|
#tomcat.util.buf.StringCache.trainThreshold=500000
|
||||||
|
#tomcat.util.buf.StringCache.cacheSize=5000
|
|
@ -0,0 +1,35 @@
|
||||||
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
|
<!--
|
||||||
|
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.
|
||||||
|
-->
|
||||||
|
<!-- The contents of this file will be loaded for each web application -->
|
||||||
|
<Context>
|
||||||
|
|
||||||
|
<!-- Default set of monitored resources -->
|
||||||
|
<WatchedResource>WEB-INF/web.xml</WatchedResource>
|
||||||
|
|
||||||
|
<!-- Uncomment this to disable session persistence across Tomcat restarts -->
|
||||||
|
<!--
|
||||||
|
<Manager pathname="" />
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!-- Uncomment this to enable Comet connection tacking (provides events
|
||||||
|
on session expiration as well as webapp lifecycle) -->
|
||||||
|
<!--
|
||||||
|
<Valve className="org.apache.catalina.valves.CometConnectionManagerValve" />
|
||||||
|
-->
|
||||||
|
|
||||||
|
</Context>
|
|
@ -0,0 +1,46 @@
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
handlers = java.util.logging.ConsoleHandler
|
||||||
|
|
||||||
|
############################################################
|
||||||
|
# Handler specific properties.
|
||||||
|
# Describes specific configuration info for Handlers.
|
||||||
|
############################################################
|
||||||
|
|
||||||
|
java.util.logging.ConsoleHandler.level = FINE
|
||||||
|
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
|
||||||
|
|
||||||
|
############################################################
|
||||||
|
# Facility specific properties.
|
||||||
|
# Provides extra control for each logger.
|
||||||
|
############################################################
|
||||||
|
|
||||||
|
org.apache.catalina.level = @catalina.logging.level@
|
||||||
|
org.apache.catalina.startup.HostConfig.level = INFO
|
||||||
|
org.apache.catalina.session.ManagerBase.level = INFO
|
||||||
|
|
||||||
|
|
||||||
|
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO
|
||||||
|
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = java.util.logging.ConsoleHandler
|
||||||
|
|
||||||
|
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO
|
||||||
|
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = java.util.logging.ConsoleHandler
|
||||||
|
|
||||||
|
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/admin].level = INFO
|
||||||
|
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/admin].handlers = java.util.logging.ConsoleHandler
|
||||||
|
|
||||||
|
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFO
|
||||||
|
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = java.util.logging.ConsoleHandler
|
|
@ -0,0 +1,68 @@
|
||||||
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
|
<!--
|
||||||
|
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.
|
||||||
|
-->
|
||||||
|
<!-- Note: A "Server" is not itself a "Container", so you may not
|
||||||
|
define subcomponents such as "Valves" at this level.
|
||||||
|
Documentation at /docs/config/server.html
|
||||||
|
-->
|
||||||
|
<Server port="9695" shutdown="SHUTDOWN">
|
||||||
|
|
||||||
|
<!--APR library loader. Documentation at /docs/apr.html -->
|
||||||
|
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
|
||||||
|
<!--Initialize Jasper prior to webapps are loaded. Documentation at /docs/jasper-howto.html -->
|
||||||
|
<Listener className="org.apache.catalina.core.JasperListener" />
|
||||||
|
<!-- Prevent memory leaks due to use of particular java/javax APIs-->
|
||||||
|
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
|
||||||
|
<!-- JMX Support for the Tomcat server. Documentation at /docs/non-existent.html -->
|
||||||
|
<Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />
|
||||||
|
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
|
||||||
|
|
||||||
|
<!-- Global JNDI resources
|
||||||
|
Documentation at /docs/jndi-resources-howto.html
|
||||||
|
-->
|
||||||
|
<GlobalNamingResources>
|
||||||
|
<!-- Editable user database that can also be used by
|
||||||
|
UserDatabaseRealm to authenticate users
|
||||||
|
-->
|
||||||
|
<Resource name="UserDatabase" auth="Container"
|
||||||
|
type="org.apache.catalina.UserDatabase"
|
||||||
|
description="User database that can be updated and saved"
|
||||||
|
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
|
||||||
|
pathname="conf/tomcat-users.xml" />
|
||||||
|
</GlobalNamingResources>
|
||||||
|
|
||||||
|
<Service name="Catalina">
|
||||||
|
|
||||||
|
<Connector port="9696" protocol="HTTP/1.1"
|
||||||
|
connectionTimeout="20000"
|
||||||
|
redirectPort="8443" />
|
||||||
|
|
||||||
|
<Engine name="Catalina" defaultHost="localhost">
|
||||||
|
|
||||||
|
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
|
||||||
|
resourceName="UserDatabase"/>
|
||||||
|
<Valve className="org.apache.catalina.valves.AccessLogValve"
|
||||||
|
resolveHosts="false" pattern="%t-m:%m-url:%U-%q-%Dms"/>
|
||||||
|
|
||||||
|
<Host name="localhost" appBase="webapps"
|
||||||
|
unpackWARs="true" autoDeploy="true"
|
||||||
|
xmlValidation="false" xmlNamespaceAware="false">
|
||||||
|
|
||||||
|
</Host>
|
||||||
|
</Engine>
|
||||||
|
</Service>
|
||||||
|
</Server>
|
|
@ -0,0 +1,36 @@
|
||||||
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
|
<!--
|
||||||
|
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.
|
||||||
|
-->
|
||||||
|
<tomcat-users>
|
||||||
|
<!--
|
||||||
|
NOTE: By default, no user is included in the "manager-gui" role required
|
||||||
|
to operate the "/manager/html" web application. If you wish to use this app,
|
||||||
|
you must define such a user - the username and password are arbitrary.
|
||||||
|
-->
|
||||||
|
<!--
|
||||||
|
NOTE: The sample user and role entries below are wrapped in a comment
|
||||||
|
and thus are ignored when reading this file. Do not forget to remove
|
||||||
|
<!.. ..> that surrounds them.
|
||||||
|
-->
|
||||||
|
<!--
|
||||||
|
<role rolename="tomcat"/>
|
||||||
|
<role rolename="role1"/>
|
||||||
|
<user username="tomcat" password="tomcat" roles="tomcat"/>
|
||||||
|
<user username="both" password="tomcat" roles="tomcat,role1"/>
|
||||||
|
<user username="role1" password="tomcat" roles="role1"/>
|
||||||
|
-->
|
||||||
|
</tomcat-users>
|
File diff suppressed because it is too large
Load Diff
|
@ -29,39 +29,20 @@
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
<name>Archiva Web :: Application Tests</name>
|
<name>Archiva Web :: Application Tests</name>
|
||||||
|
|
||||||
<properties>
|
|
||||||
<container.test.port>9696</container.test.port>
|
|
||||||
<tomcat5x.version>5.5.34</tomcat5x.version>
|
|
||||||
<tomcat6x.version>6.0.33</tomcat6x.version>
|
|
||||||
<cargo.wait>false</cargo.wait>
|
|
||||||
<cargo.timeout>600000</cargo.timeout>
|
|
||||||
<cargo.install.dir>${project.build.directory}/cargo/installs</cargo.install.dir>
|
|
||||||
<maxWaitTimeInMs>10000</maxWaitTimeInMs>
|
|
||||||
<!-- TODO: review how appropriate the memory settings are - should work with less -->
|
|
||||||
<cargo.jvm.args>-Xmx512m -XX:MaxPermSize=256m</cargo.jvm.args>
|
|
||||||
<seleniumPluginVersion>2.1</seleniumPluginVersion>
|
|
||||||
<selenium-server.version>2.12.0</selenium-server.version>
|
|
||||||
<apache.mirror.url>http://archive.apache.org/dist</apache.mirror.url>
|
|
||||||
<apache.archive.url>http://archive.apache.org/dist</apache.archive.url>
|
|
||||||
</properties>
|
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.testng</groupId>
|
<groupId>org.testng</groupId>
|
||||||
<artifactId>testng</artifactId>
|
<artifactId>testng</artifactId>
|
||||||
<version>6.2.1</version>
|
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>commons-io</groupId>
|
<groupId>commons-io</groupId>
|
||||||
<artifactId>commons-io</artifactId>
|
<artifactId>commons-io</artifactId>
|
||||||
<version>1.4</version>
|
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.codehaus.plexus</groupId>
|
<groupId>org.codehaus.plexus</groupId>
|
||||||
<artifactId>plexus-command-line</artifactId>
|
<artifactId>plexus-command-line</artifactId>
|
||||||
<version>1.0-alpha-2</version>
|
|
||||||
<exclusions>
|
<exclusions>
|
||||||
<exclusion>
|
<exclusion>
|
||||||
<artifactId>plexus-container-default</artifactId>
|
<artifactId>plexus-container-default</artifactId>
|
||||||
|
@ -95,7 +76,6 @@
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.seleniumhq.selenium.client-drivers</groupId>
|
<groupId>org.seleniumhq.selenium.client-drivers</groupId>
|
||||||
<artifactId>selenium-java-client-driver</artifactId>
|
<artifactId>selenium-java-client-driver</artifactId>
|
||||||
<version>1.0.2</version>
|
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
<exclusions>
|
<exclusions>
|
||||||
<exclusion>
|
<exclusion>
|
||||||
|
@ -388,7 +368,6 @@
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.codehaus.cargo</groupId>
|
<groupId>org.codehaus.cargo</groupId>
|
||||||
<artifactId>cargo-maven2-plugin</artifactId>
|
<artifactId>cargo-maven2-plugin</artifactId>
|
||||||
<version>1.1.1</version>
|
|
||||||
<executions>
|
<executions>
|
||||||
<execution>
|
<execution>
|
||||||
<id>start-container</id>
|
<id>start-container</id>
|
||||||
|
@ -419,6 +398,7 @@
|
||||||
<systemProperties>
|
<systemProperties>
|
||||||
<appserver.base>${project.build.directory}/appserver-base</appserver.base>
|
<appserver.base>${project.build.directory}/appserver-base</appserver.base>
|
||||||
<appserver.home>${project.build.directory}/appserver-base</appserver.home>
|
<appserver.home>${project.build.directory}/appserver-base</appserver.home>
|
||||||
|
<derby.system.home>${project.build.directory}</derby.system.home>
|
||||||
</systemProperties>
|
</systemProperties>
|
||||||
</container>
|
</container>
|
||||||
<configuration>
|
<configuration>
|
||||||
|
|
|
@ -26,6 +26,22 @@
|
||||||
<name>Archiva Web</name>
|
<name>Archiva Web</name>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<container.test.port>9696</container.test.port>
|
||||||
|
<tomcat5x.version>5.5.34</tomcat5x.version>
|
||||||
|
<tomcat6x.version>6.0.35</tomcat6x.version>
|
||||||
|
<cargo.wait>false</cargo.wait>
|
||||||
|
<cargo.timeout>600000</cargo.timeout>
|
||||||
|
<cargo.install.dir>${project.build.directory}/cargo/installs</cargo.install.dir>
|
||||||
|
<maxWaitTimeInMs>10000</maxWaitTimeInMs>
|
||||||
|
<!-- TODO: review how appropriate the memory settings are - should work with less -->
|
||||||
|
<cargo.jvm.args>-Xmx512m -XX:MaxPermSize=256m</cargo.jvm.args>
|
||||||
|
<seleniumPluginVersion>2.2-SNAPSHOT</seleniumPluginVersion>
|
||||||
|
<selenium-server.version>2.15.0</selenium-server.version>
|
||||||
|
<apache.mirror.url>http://archive.apache.org/dist</apache.mirror.url>
|
||||||
|
<apache.archive.url>http://archive.apache.org/dist</apache.archive.url>
|
||||||
|
</properties>
|
||||||
|
|
||||||
<modules>
|
<modules>
|
||||||
<module>archiva-applet</module>
|
<module>archiva-applet</module>
|
||||||
<module>archiva-security</module>
|
<module>archiva-security</module>
|
||||||
|
@ -36,6 +52,44 @@
|
||||||
<module>archiva-webapp</module>
|
<module>archiva-webapp</module>
|
||||||
</modules>
|
</modules>
|
||||||
|
|
||||||
|
<dependencyManagement>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.testng</groupId>
|
||||||
|
<artifactId>testng</artifactId>
|
||||||
|
<version>6.2.1</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.codehaus.plexus</groupId>
|
||||||
|
<artifactId>plexus-command-line</artifactId>
|
||||||
|
<version>1.0-alpha-2</version>
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<artifactId>plexus-container-default</artifactId>
|
||||||
|
<groupId>org.codehaus.plexus</groupId>
|
||||||
|
</exclusion>
|
||||||
|
<exclusion>
|
||||||
|
<artifactId>plexus-component-api</artifactId>
|
||||||
|
<groupId>org.codehaus.plexus</groupId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.seleniumhq.selenium.client-drivers</groupId>
|
||||||
|
<artifactId>selenium-java-client-driver</artifactId>
|
||||||
|
<version>1.0.2</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<groupId>commons-logging</groupId>
|
||||||
|
<artifactId>commons-logging</artifactId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</dependencyManagement>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
<pluginManagement>
|
<pluginManagement>
|
||||||
<plugins>
|
<plugins>
|
||||||
|
@ -66,5 +120,12 @@
|
||||||
<module>archiva-webapp-js</module>
|
<module>archiva-webapp-js</module>
|
||||||
</modules>
|
</modules>
|
||||||
</profile>
|
</profile>
|
||||||
|
<profile>
|
||||||
|
<id>it-js</id>
|
||||||
|
<modules>
|
||||||
|
<module>archiva-webapp-js</module>
|
||||||
|
<module>archiva-webapp-test-js</module>
|
||||||
|
</modules>
|
||||||
|
</profile>
|
||||||
</profiles>
|
</profiles>
|
||||||
</project>
|
</project>
|
||||||
|
|
11
pom.xml
11
pom.xml
|
@ -393,6 +393,12 @@
|
||||||
<version>${project.version}</version>
|
<version>${project.version}</version>
|
||||||
<type>war</type>
|
<type>war</type>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.archiva</groupId>
|
||||||
|
<artifactId>archiva-webapp-js</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
<type>war</type>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.archiva</groupId>
|
<groupId>org.apache.archiva</groupId>
|
||||||
<artifactId>archiva-xml-tools</artifactId>
|
<artifactId>archiva-xml-tools</artifactId>
|
||||||
|
@ -1516,6 +1522,11 @@
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</plugin>
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.codehaus.cargo</groupId>
|
||||||
|
<artifactId>cargo-maven2-plugin</artifactId>
|
||||||
|
<version>1.1.4</version>
|
||||||
|
</plugin>
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-antrun-plugin</artifactId>
|
<artifactId>maven-antrun-plugin</artifactId>
|
||||||
|
|
Loading…
Reference in New Issue