--- /dev/null
+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
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" );
--- /dev/null
+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";
+ }
+
+}