]> source.dussan.org Git - archiva.git/commitdiff
[MRM-980] selenium tests for repository merging
authorMaria Odea B. Ching <oching@apache.org>
Sun, 15 Aug 2010 03:20:27 +0000 (03:20 +0000)
committerMaria Odea B. Ching <oching@apache.org>
Sun, 15 Aug 2010 03:20:27 +0000 (03:20 +0000)
submitted by Patti Arachchige Eshan Sudharaka

git-svn-id: https://svn.apache.org/repos/asf/archiva/branches/archiva-MRM-980@985612 13f79535-47bb-0310-9956-ffa450edef68

archiva-modules/archiva-web/archiva-webapp-test/src/test/testng/org/apache/archiva/web/test/MergingRepositoriesTest.java [new file with mode: 0644]
archiva-modules/archiva-web/archiva-webapp-test/src/test/testng/org/apache/archiva/web/test/parent/AbstractArchivaTest.java
archiva-modules/archiva-web/archiva-webapp-test/src/test/testng/org/apache/archiva/web/test/parent/AbstractMergingRepositoriesTest.java [new file with mode: 0644]
archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/editRepository.jsp
archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/repositories.jsp

diff --git a/archiva-modules/archiva-web/archiva-webapp-test/src/test/testng/org/apache/archiva/web/test/MergingRepositoriesTest.java b/archiva-modules/archiva-web/archiva-webapp-test/src/test/testng/org/apache/archiva/web/test/MergingRepositoriesTest.java
new file mode 100644 (file)
index 0000000..8197762
--- /dev/null
@@ -0,0 +1,101 @@
+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.AbstractMergingRepositoriesTest;
+import org.testng.annotations.Test;
+
+@Test(groups = {"merging"}, dependsOnMethods = {"testWithCorrectUsernamePassword"}, sequential = true)
+public class MergingRepositoriesTest
+    extends AbstractMergingRepositoriesTest
+{
+
+    public void testAddStagingRepository()
+    {
+        goToRepositoriesPage();
+        getSelenium().open( "/archiva/admin/addRepository.action" );
+        addStagingRepository( "merging-repo", "merging-repo", getRepositoryDir() + "merging-repo/", "",
+                              "Maven 2.x Repository", "0 0 * * * ?", "", "" );
+        assertTextPresent( "merging-repo" );
+    }
+
+    // here we upload an artifact to the staging repository
+    @Test(dependsOnMethods = {"testAddStagingRepository"})
+    public void testAddArtifactToStagingRepository()
+    {
+        addArtifact( getGroupId(), getArtifactId(), getVersion(), getPackaging(), getValidArtifactFilePath(),
+                     "merging-repo-stage" );
+        assertTextPresent( "Artifact '" + getGroupId() + ":" + getArtifactId() + ":" + getVersion() +
+            "' was successfully deployed to repository 'merging-repo-stage'" );
+    }
+
+    // here we test the merging (no conflicts artifacts are available)
+    @Test(dependsOnMethods = {"testAddArtifactToStagingRepository"})
+    public void testMerging()
+    {
+        goToRepositoriesPage();
+        clickButtonWithValue( "Merge" );
+        assertTextPresent( "No conflicting artifacts" );
+        clickButtonWithValue( "Merge All" );
+        assertTextPresent( "Repository 'merging-repo-stage' successfully merged to 'merging-repo'." );
+    }
+
+    // check audit updating is done properly or not
+    @Test(dependsOnMethods = {"testMerging"})
+    public void testAuditLogs()
+    {
+        goToAuditLogReports();
+        assertTextPresent( "Merged Artifact" );
+        assertTextPresent( "merging-repo" );
+    }
+
+    // merging is done by skipping conflicts
+    @Test(dependsOnMethods = {"testMerging"})
+    public void testMergingWithSkippingConflicts()
+    {
+        goToRepositoriesPage();
+        clickButtonWithValue( "Merge" );
+        assertTextPresent( "WARNING: The following are the artifacts in conflict." );
+        clickButtonWithValue( "Merge With Skip" );
+        assertTextPresent( "Repository 'merging-repo-stage' successfully merged to 'merging-repo'." );
+    }
+
+    // merging all 
+    @Test(dependsOnMethods = {"testMerging"})
+    public void testMergingWithOutSkippingConflicts()
+    {
+        goToRepositoriesPage();
+        clickButtonWithValue( "Merge" );
+        assertTextPresent( "WARNING: The following are the artifacts in conflict." );
+        clickButtonWithValue( "Merge All" );
+        assertTextPresent( "Repository 'merging-repo-stage' successfully merged to 'merging-repo'." );
+    }
+
+    // change the configuaration first and try to upload existing artifact to the repository
+    public void testConfigurationChangesOfStagingRepository()
+    {
+        editManagedRepository();
+        addArtifact( getGroupId(), getArtifactId(), getVersion(), getPackaging(), getValidArtifactFilePath(),
+                     "merging-repo-stage" );
+        assertTextPresent(
+            "Overwriting released artifacts in repository '" + "merging-repo-stage" + "' is not allowed." );
+    }
+
+}
\ No newline at end of file
index 815895875203342f0d99da89f6acca672925816a..5cd08610c9209291e224fb93d8d44d73de2085c4 100644 (file)
@@ -562,6 +562,23 @@ public abstract class AbstractArchivaTest
         clickButtonWithValue( "Add Repository" );
     }
 
+    // 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.indexDir", indexDirectory );
+        selectValue( "repository.layout", type );
+        setFieldValue( "repository.refreshCronExpression", cron );
+        setFieldValue( "repository.daysOlder", daysOlder );
+        setFieldValue( "repository.retentionCount", retentionCount );
+        checkField( "stageNeeded" );
+
+        clickButtonWithValue( "Add Repository" );
+    }
+
     protected void logout()
     {
         clickLinkWithText( "Logout" );
diff --git a/archiva-modules/archiva-web/archiva-webapp-test/src/test/testng/org/apache/archiva/web/test/parent/AbstractMergingRepositoriesTest.java b/archiva-modules/archiva-web/archiva-webapp-test/src/test/testng/org/apache/archiva/web/test/parent/AbstractMergingRepositoriesTest.java
new file mode 100644 (file)
index 0000000..91af2cf
--- /dev/null
@@ -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";
+    }
+
+}
index 88086a6f27435782ca8249881c8fa81cf7e975bf..eb3987db63bd0e9af3c9ffbc602ae236115f82c3 100644 (file)
@@ -48,7 +48,7 @@
      </c:if>
      <c:if
       test='<%= stats.booleanValue() %>'>
-      <s:checkbox name="stageNeeded" value="false" label="Create stage repository"/>
+      <s:checkbox id="stageNeeded" name="stageNeeded" value="false" label="Create stage repository"/>
      </c:if>
     <s:submit value="Update Repository"/>
   </s:form>
index 5c84137f8ff0ff8e931e0111355b2ed01315c193..61341928e7440dda6fe1a03f27b8009147d42b21 100644 (file)
             <%--<s:hidden name="repository" value="%{repository}"/>--%>
             <table>
               <tr>
-                <td><s:submit value="Merge"/></td>
+                <td><s:submit id="Merge" value="Merge"/></td>
               </tr>
 
             </table>