Author: oching
Date: Wed Feb 24 10:51:01 2010
New Revision: 915747
URL: http://svn.apache.org/viewvc?rev=915747&view=rev
Log:
[CONTINUUM-2466] authorization failed when building ant / shell projects
o set scm username and password in context which will be used in initial checkout (shell and
ant projects)
o added test to verify if scm username and password were set in context
o do not store credentials id useScmCredentialsCache is set to true in store-project action
o added test to check storing of credentials based on value of useScmCredentialsCache for
ant and shell projects
Added:
continuum/branches/continuum-1.3.x/continuum-core/src/test/java/org/apache/maven/continuum/AddProjectToCheckoutQueueStub.java
Modified:
continuum/branches/continuum-1.3.x/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java
continuum/branches/continuum-1.3.x/continuum-core/src/main/java/org/apache/maven/continuum/core/action/AddProjectToCheckOutQueueAction.java
continuum/branches/continuum-1.3.x/continuum-core/src/main/java/org/apache/maven/continuum/core/action/StoreProjectAction.java
continuum/branches/continuum-1.3.x/continuum-core/src/test/java/org/apache/maven/continuum/AddProjectTest.java
continuum/branches/continuum-1.3.x/continuum-core/src/test/resources/org/apache/maven/continuum/AddProjectTest.xml
Modified: continuum/branches/continuum-1.3.x/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-1.3.x/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java?rev=915747&r1=915746&r2=915747&view=diff
==============================================================================
--- continuum/branches/continuum-1.3.x/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java
(original)
+++ continuum/branches/continuum-1.3.x/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java
Wed Feb 24 10:51:01 2010
@@ -1426,6 +1426,22 @@
AbstractContinuumAction.setUnvalidatedProjectGroup( context, projectGroup );
AbstractContinuumAction.setProjectGroupId( context, projectGroup.getId() );
+
+ StoreProjectAction.setUseScmCredentialsCache( context, project.isScmUseCache() );
+
+ // set for initial checkout
+ String scmUsername = project.getScmUsername();
+ String scmPassword = project.getScmPassword();
+
+ if( scmUsername != null && !StringUtils.isEmpty( scmUsername ) )
+ {
+ CheckoutProjectContinuumAction.setScmUsername( context, scmUsername );
+ }
+
+ if( scmPassword != null && !StringUtils.isEmpty( scmPassword ) )
+ {
+ CheckoutProjectContinuumAction.setScmPassword( context, scmPassword );
+ }
executeAction( "validate-project", context );
Modified: continuum/branches/continuum-1.3.x/continuum-core/src/main/java/org/apache/maven/continuum/core/action/AddProjectToCheckOutQueueAction.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-1.3.x/continuum-core/src/main/java/org/apache/maven/continuum/core/action/AddProjectToCheckOutQueueAction.java?rev=915747&r1=915746&r2=915747&view=diff
==============================================================================
--- continuum/branches/continuum-1.3.x/continuum-core/src/main/java/org/apache/maven/continuum/core/action/AddProjectToCheckOutQueueAction.java
(original)
+++ continuum/branches/continuum-1.3.x/continuum-core/src/main/java/org/apache/maven/continuum/core/action/AddProjectToCheckOutQueueAction.java
Wed Feb 24 10:51:01 2010
@@ -21,6 +21,7 @@
import java.util.Map;
+import org.apache.commons.lang.StringUtils;
import org.apache.continuum.buildmanager.BuildsManager;
import org.apache.continuum.dao.ProjectDao;
import org.apache.maven.continuum.model.project.BuildDefinition;
@@ -61,10 +62,22 @@
project = projectDao.getProject( getProjectId( context ) );
}
+ String scmUsername = project.getScmUsername();
+ String scmPassword = project.getScmPassword();
+
+ if( scmUsername == null || StringUtils.isEmpty( scmUsername ) )
+ {
+ scmUsername = CheckoutProjectContinuumAction.getScmUsername( context, null );
+ }
+
+ if( scmPassword == null || StringUtils.isEmpty( scmPassword ) )
+ {
+ scmPassword = CheckoutProjectContinuumAction.getScmPassword( context, null );
+ }
+
BuildDefinition defaultBuildDefinition = getBuildDefinition( context );
parallelBuildsManager.checkoutProject( project.getId(), project.getName(),
workingDirectoryService.getWorkingDirectory(
project ),
- project.getScmUsername(), project.getScmPassword(),
- defaultBuildDefinition );
+ scmUsername, scmPassword, defaultBuildDefinition
);
}
}
Modified: continuum/branches/continuum-1.3.x/continuum-core/src/main/java/org/apache/maven/continuum/core/action/StoreProjectAction.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-1.3.x/continuum-core/src/main/java/org/apache/maven/continuum/core/action/StoreProjectAction.java?rev=915747&r1=915746&r2=915747&view=diff
==============================================================================
--- continuum/branches/continuum-1.3.x/continuum-core/src/main/java/org/apache/maven/continuum/core/action/StoreProjectAction.java
(original)
+++ continuum/branches/continuum-1.3.x/continuum-core/src/main/java/org/apache/maven/continuum/core/action/StoreProjectAction.java
Wed Feb 24 10:51:01 2010
@@ -56,11 +56,11 @@
boolean useCredentialsCache = isUseScmCredentialsCache( context, false );
// CONTINUUM-1605 don't store username/password
- if ( !useCredentialsCache )
+ if ( useCredentialsCache )
{
project.setScmUsername( null );
project.setScmPassword( null );
- project.setScmUseCache( false );
+ project.setScmUseCache( true );
}
projectGroup.addProject( project );
Modified: continuum/branches/continuum-1.3.x/continuum-core/src/test/java/org/apache/maven/continuum/AddProjectTest.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-1.3.x/continuum-core/src/test/java/org/apache/maven/continuum/AddProjectTest.java?rev=915747&r1=915746&r2=915747&view=diff
==============================================================================
--- continuum/branches/continuum-1.3.x/continuum-core/src/test/java/org/apache/maven/continuum/AddProjectTest.java
(original)
+++ continuum/branches/continuum-1.3.x/continuum-core/src/test/java/org/apache/maven/continuum/AddProjectTest.java
Wed Feb 24 10:51:01 2010
@@ -18,6 +18,8 @@
*/
package org.apache.maven.continuum;
+import org.apache.maven.continuum.builddefinition.BuildDefinitionService;
+import org.apache.maven.continuum.execution.ContinuumBuildExecutorConstants;
import org.apache.maven.continuum.model.project.Project;
import org.apache.maven.continuum.project.builder.ContinuumProjectBuildingResult;
import org.apache.maven.continuum.project.builder.maven.MavenTwoContinuumProjectBuilder;
@@ -30,6 +32,10 @@
public class AddProjectTest
extends AbstractContinuumTest
{
+ static final String SCM_USERNAME = "test";
+
+ static final String SCM_PASSWORD = ";password";
+
public void testScmUserNamePasswordNotStoring()
throws Exception
{
@@ -61,8 +67,67 @@
// read the project from store
Project project = continuum.getProject( result.getProjects().get( 0 ).getId() );
- assertEquals( "test", project.getScmUsername() );
- assertEquals( ";password", project.getScmPassword() );
+ assertEquals( SCM_USERNAME, project.getScmUsername() );
+ assertEquals( SCM_PASSWORD, project.getScmPassword() );
assertFalse( project.isScmUseCache() );
}
+
+ public void testAntProjectScmUserNamePasswordNotStoring()
+ throws Exception
+ {
+ // use same url since we're just going to add the project, not build it
+ String scmUrl = "http://test:;password@svn.apache.org/repos/asf/continuum/tags/continuum-1.1/continuum-api/pom.xml";
+ DefaultContinuum continuum = (DefaultContinuum) lookup( Continuum.ROLE );
+
+ Project project = new Project();
+ project.setName( "Sample Ant Project" );
+ project.setVersion( "1.0" );
+ project.setScmUsername( SCM_USERNAME );
+ project.setScmPassword( SCM_PASSWORD );
+ project.setScmUrl( scmUrl );
+ project.setScmUseCache( true );
+
+ BuildDefinitionService bdService = ( BuildDefinitionService )lookup( BuildDefinitionService.class.getName()
);
+
+ int projectId =
+ continuum.addProject( project, ContinuumBuildExecutorConstants.ANT_BUILD_EXECUTOR,
+ getDefaultProjectGroup().getId(),
+ bdService.getDefaultAntBuildDefinitionTemplate().getId()
);
+
+ // read the project from store
+ Project retrievedProject = continuum.getProject( projectId );
+ assertNull( retrievedProject.getScmUsername() );
+ assertNull( retrievedProject.getScmPassword() );
+ assertTrue( retrievedProject.isScmUseCache() );
+ }
+
+ public void testAntProjectScmUserNamePasswordStoring()
+ throws Exception
+ {
+ // use same url since we're just going to add the project, not build it
+ String scmUrl = "http://test:;password@svn.apache.org/repos/asf/continuum/tags/continuum-1.1/continuum-api/pom.xml";
+ DefaultContinuum continuum = (DefaultContinuum) lookup( Continuum.ROLE );
+
+ Project project = new Project();
+ project.setName( "Sample Ant Project" );
+ project.setVersion( "1.0" );
+ project.setScmUsername( SCM_USERNAME );
+ project.setScmPassword( SCM_PASSWORD );
+ project.setScmUrl( scmUrl );
+ project.setScmUseCache( false );
+
+ BuildDefinitionService bdService = ( BuildDefinitionService )lookup( BuildDefinitionService.class.getName()
);
+
+ int projectId =
+ continuum.addProject( project, ContinuumBuildExecutorConstants.ANT_BUILD_EXECUTOR,
+ getDefaultProjectGroup().getId(),
+ bdService.getDefaultAntBuildDefinitionTemplate().getId()
);
+
+ // read the project from store
+ Project retrievedProject = continuum.getProject( projectId );
+ assertEquals( SCM_USERNAME, retrievedProject.getScmUsername() );
+ assertEquals( SCM_PASSWORD, retrievedProject.getScmPassword() );
+ assertFalse( retrievedProject.isScmUseCache() );
+ }
+
}
Added: continuum/branches/continuum-1.3.x/continuum-core/src/test/java/org/apache/maven/continuum/AddProjectToCheckoutQueueStub.java
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-1.3.x/continuum-core/src/test/java/org/apache/maven/continuum/AddProjectToCheckoutQueueStub.java?rev=915747&view=auto
==============================================================================
--- continuum/branches/continuum-1.3.x/continuum-core/src/test/java/org/apache/maven/continuum/AddProjectToCheckoutQueueStub.java
(added)
+++ continuum/branches/continuum-1.3.x/continuum-core/src/test/java/org/apache/maven/continuum/AddProjectToCheckoutQueueStub.java
Wed Feb 24 10:51:01 2010
@@ -0,0 +1,45 @@
+package org.apache.maven.continuum;
+
+/*
+ * 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.util.Map;
+
+import junit.framework.Assert;
+
+import org.apache.maven.continuum.core.action.AbstractContinuumAction;
+import org.apache.maven.continuum.core.action.CheckoutProjectContinuumAction;
+
+/**
+ * @author <a href="mailto:oching@apache.org">Maria Odea Ching</a>
+ */
+public class AddProjectToCheckoutQueueStub
+ extends AbstractContinuumAction
+{
+ @SuppressWarnings( "unchecked" )
+ public void execute( Map context )
+ throws Exception
+ {
+ getLogger().info( "Executing add-project-to-checkout-queue (stub for testing) action."
);
+
+ // check if scm credentials were set in context (CONTINUUM-2466)
+ Assert.assertEquals( AddProjectTest.SCM_USERNAME, CheckoutProjectContinuumAction.getScmUsername(
context, null ) );
+ Assert.assertEquals( AddProjectTest.SCM_PASSWORD, CheckoutProjectContinuumAction.getScmPassword(
context, null ) );
+ }
+}
Modified: continuum/branches/continuum-1.3.x/continuum-core/src/test/resources/org/apache/maven/continuum/AddProjectTest.xml
URL: http://svn.apache.org/viewvc/continuum/branches/continuum-1.3.x/continuum-core/src/test/resources/org/apache/maven/continuum/AddProjectTest.xml?rev=915747&r1=915746&r2=915747&view=diff
==============================================================================
--- continuum/branches/continuum-1.3.x/continuum-core/src/test/resources/org/apache/maven/continuum/AddProjectTest.xml
(original)
+++ continuum/branches/continuum-1.3.x/continuum-core/src/test/resources/org/apache/maven/continuum/AddProjectTest.xml
Wed Feb 24 10:51:01 2010
@@ -24,5 +24,10 @@
<role-hint>continuumUrl</role-hint>
<implementation>org.apache.maven.continuum.utils.ContinuumUrlValidator</implementation>
</component>
+ <component>
+ <role>org.codehaus.plexus.action.Action</role>
+ <role-hint>add-project-to-checkout-queue</role-hint>
+ <implementation>org.apache.maven.continuum.AddProjectToCheckoutQueueStub</implementation>
+ </component>
</components>
</plexus>
|