| package org.apache.continuum.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.continuum.web.test.parent.AbstractAdminTest; |
| import org.testng.annotations.AfterMethod; |
| import org.testng.annotations.BeforeMethod; |
| import org.testng.annotations.Test; |
| |
| /** |
| * Based on AddMavenOneProjectTestCase of Emmanuel Venisse. |
| * |
| * @author José Morales MartÃnez |
| * @version $Id$ |
| */ |
| @Test( groups = {"mavenOneProject"} ) |
| public class MavenOneProjectTest |
| extends AbstractAdminTest |
| { |
| private String pomUrl; |
| |
| private String pomUsername; |
| |
| private String projectGroupId; |
| |
| private String projectGroupDescription; |
| |
| private String projectGroupName; |
| |
| private String pomPassword; |
| |
| private String pomUrlMissingElement; |
| |
| private String pomUrlWithExtend; |
| |
| private String pomUrlUnparseableContent; |
| |
| private String malformedPomUrl; |
| |
| private String inaccessiblePomUrl; |
| |
| @BeforeMethod |
| protected void setUp() |
| throws Exception |
| { |
| pomUrl = getProperty( "MAVEN1_POM_URL" ); |
| pomUsername = getProperty( "MAVEN1_POM_USERNAME" ); |
| pomPassword = getProperty( "MAVEN1_POM_PASSWORD" ); |
| projectGroupName = getProperty( "MAVEN1_PROJECT_GROUP_NAME" ); |
| projectGroupId = getProperty( "MAVEN1_PROJECT_GROUP_ID" ); |
| projectGroupDescription = getProperty( "MAVEN1_PROJECT_GROUP_DESCRIPTION" ); |
| |
| pomUrlMissingElement = getProperty( "MAVEN1_MISSING_REPO_POM_URL" ); |
| pomUrlWithExtend = getProperty( "MAVEN1_EXTENDED_POM_URL" ); |
| pomUrlUnparseableContent = getProperty( "MAVEN1_UNPARSEABLE_POM_URL" ); |
| |
| malformedPomUrl = "aaa"; |
| inaccessiblePomUrl = baseUrl + "/inaccessible-pom/"; |
| } |
| |
| @AfterMethod |
| protected void tearDown() |
| { |
| removeProjectGroup( projectGroupName, false ); |
| } |
| |
| public void testAddMavenOneProjectToProjectGroup() |
| throws Exception |
| { |
| goToProjectGroupsSummaryPage(); |
| String defaultProjectGroupName = getProperty( "DEFAULT_PROJECT_GROUP_NAME" ); |
| clickLinkWithText( defaultProjectGroupName ); |
| selectValue( "preferredExecutor", "Add M1 Project" ); |
| clickButtonWithValue( "Add" ); |
| assertAddMavenOneProjectPage( defaultProjectGroupName ); |
| // rest is tested by other methods |
| } |
| |
| public void testAddMavenOneProjectWithNoDefaultBuildDefinitionFromTemplate() |
| throws Exception |
| { |
| removeDefaultBuildDefinitionFromTemplate( "maven1" ); |
| |
| goToAddMavenOneProjectPage(); |
| addMavenOneProject( pomUrl, pomUsername, pomPassword, null, true ); |
| assertProjectGroupSummaryPage( projectGroupName, projectGroupId, projectGroupDescription ); |
| |
| // Re-add default build definition of template |
| addDefaultBuildDefinitionFromTemplate( "maven1" ); |
| } |
| |
| /** |
| * test with valid pom url |
| */ |
| public void testValidPomUrl() |
| throws Exception |
| { |
| // Enter values into Add Maven Two Project fields, and submit |
| goToAddMavenOneProjectPage(); |
| addMavenOneProject( pomUrl, pomUsername, pomPassword, null, true ); |
| assertProjectGroupSummaryPage( projectGroupName, projectGroupId, projectGroupDescription ); |
| } |
| |
| /** |
| * test with no pom file or pom url specified |
| */ |
| public void testNoPomSpecified() |
| throws Exception |
| { |
| goToAddMavenOneProjectPage(); |
| addMavenOneProject( "", "", "", null, false ); |
| assertTextPresent( "Either POM URL or Upload POM is required." ); |
| } |
| |
| /** |
| * test with missing <repository> element in the pom file |
| */ |
| public void testMissingElementInPom() |
| throws Exception |
| { |
| goToAddMavenOneProjectPage(); |
| addMavenOneProject( pomUrlMissingElement, pomUsername, pomPassword, null, false ); |
| assertTextPresent( "Missing 'repository' element in the POM." ); |
| } |
| |
| /** |
| * test with <extend> element present in pom file |
| */ |
| public void testWithExtendElementPom() |
| throws Exception |
| { |
| goToAddMavenOneProjectPage(); |
| addMavenOneProject( pomUrlWithExtend, pomUsername, pomPassword, null, false ); |
| assertTextPresent( "Cannot use a POM with an 'extend' element" ); |
| } |
| |
| /** |
| * test with unparseable xml content for pom file |
| */ |
| public void testUnparseableXmlContent() |
| throws Exception |
| { |
| goToAddMavenOneProjectPage(); |
| addMavenOneProject( pomUrlUnparseableContent, pomUsername, pomPassword, null, false ); |
| assertTextPresent( "The XML content of the POM can not be parsed." ); |
| } |
| |
| /** |
| * test with a malformed pom url |
| */ |
| public void testMalformedPomUrl() |
| throws Exception |
| { |
| goToAddMavenOneProjectPage(); |
| addMavenOneProject( malformedPomUrl, "", "", null, false ); |
| assertTextPresent( |
| "The specified resource cannot be accessed. Please try again later or contact your administrator." ); |
| } |
| |
| /** |
| * test with an inaccessible pom url |
| */ |
| public void testInaccessiblePomUrl() |
| throws Exception |
| { |
| goToAddMavenOneProjectPage(); |
| addMavenOneProject( inaccessiblePomUrl, "", "", null, false ); |
| assertTextPresent( |
| "POM file does not exist. Either the POM you specified or one of its modules does not exist." ); |
| } |
| |
| /** |
| * test cancel button |
| */ |
| public void testCancelButton() |
| { |
| goToAboutPage(); |
| goToAddMavenOneProjectPage(); |
| clickButtonWithValue( "Cancel" ); |
| assertAboutPage(); |
| } |
| |
| public void testDeleteMavenOneProject() |
| throws Exception |
| { |
| // setup |
| goToProjectGroupsSummaryPage(); |
| addMaven1Project( projectGroupName, pomUrl, pomUsername, pomPassword ); |
| |
| // delete project - delete icon |
| clickLinkWithText( projectGroupName ); |
| clickLinkWithXPath( "//tbody/tr['0']/td['10']/a/img[@alt='Delete']" ); |
| assertTextPresent( "Delete Continuum Project" ); |
| clickButtonWithValue( "Delete" ); |
| assertPage( "Continuum - Project Group" ); |
| assertLinkNotPresent( projectGroupName ); |
| } |
| |
| public void testDeleteMavenOneProjects() |
| throws Exception |
| { |
| // setup |
| goToProjectGroupsSummaryPage(); |
| addMaven1Project( projectGroupName, pomUrl, pomUsername, pomPassword ); |
| |
| // delete project - "Delete Project(s)" button |
| clickLinkWithText( projectGroupName ); |
| checkField( "//tbody/tr['0']/td['0']/input[@name='selectedProjects']" ); |
| clickButtonWithValue( "Delete Project(s)" ); |
| assertTextPresent( "Delete Continuum Projects" ); |
| clickButtonWithValue( "Delete" ); |
| assertPage( "Continuum - Project Group" ); |
| assertLinkNotPresent( projectGroupName ); |
| } |
| |
| private void addMaven1Project( String groupName, String pomUrl, String pomUsername, String pomPassword ) |
| { |
| assertLinkNotPresent( groupName ); |
| goToAddMavenOneProjectPage(); |
| addMavenOneProject( pomUrl, pomUsername, pomPassword, null, true ); |
| goToProjectGroupsSummaryPage(); |
| assertLinkPresent( groupName ); |
| } |
| } |