package org.sakaiproject.maven.plugin.component;
/*
* 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 java.util.ArrayList;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.factory.ArtifactFactory;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.resolver.ArtifactResolver;
import org.sakaiproject.maven.plugin.component.stub.MavenProjectBasicStub;
import org.sakaiproject.maven.plugin.component.stub.ResourceStub;
import org.sakaiproject.maven.plugin.component.stub.SimpleWarArtifactStub;
import org.sakaiproject.maven.plugin.component.stub.SimpleConfigurationArtifactStub;
public class ComponentDeployExplodedMojoTest
extends AbstractComponentMojoTest
{
protected static final String pomFilePath =
getBasedir() + "/target/test-classes/unit/wardeployexplodedmojo/plugin-config.xml";
private ComponentDeployExplodedMojo mojo;
/**
* @component
*/
protected ArtifactFactory artifactFactory;
/**
* @component
*/
protected ArtifactResolver artifactResolver;
/**
* @parameter expression="${localRepository}
*/
protected ArtifactRepository artifactRepository;
/**
* @parameter expression="${project.remoteArtifactRepositories}"
*/
protected List remoteRepositories;
protected File getTestDirectory()
throws Exception
{
return new File( getBasedir(), "target/test-classes/unit/wardeployexplodedmojo/test-dir" );
}
public void setUp()
throws Exception
{
super.setUp();
mojo = (ComponentDeployExplodedMojo) lookupMojo( "deploy-exploded", pomFilePath );
artifactFactory = (ArtifactFactory) lookup(ArtifactFactory.class.getName());
assertNotNull( mojo );
assertNotNull( artifactFactory );
}
/**
* @throws Exception
*/
public void testWebappDeployExplodedWar()
throws Exception
{
// setup test data
String testId = "SimpleDeployExplodedWebApp";
MavenProjectBasicStub project = new MavenProjectBasicStub();
project.setArtifact(new SimpleWarArtifactStub(getBasedir()));
project.setPackaging("war");
File webAppSource = createWebAppSource( testId );
File classesDir = createClassesDir( testId, false );
File webAppResource = new File( getTestDirectory(), testId + "-resources" );
File webAppDirectory = new File( getTestDirectory(), testId );
File deployDirectory = new File( getTestDirectory(), testId + "-tomcat" );
File sampleResource = new File( webAppResource, "pix/panis_na.jpg" );
ResourceStub[] resources = new ResourceStub[]{new ResourceStub()};
createFile( sampleResource );
assertTrue("sampeResource not found",sampleResource.exists());
// configure mojo
resources[0].setDirectory( webAppResource.getAbsolutePath() );
this.configureMojo( mojo, new LinkedList(), classesDir, webAppSource, webAppDirectory, deployDirectory, project );
setVariableValueToObject( mojo, "webResources", resources );
mojo.execute();
// validate operation
File expectedExplodedWarDir = new File( deployDirectory, "webapps/"+project.getArtifactId() );
File noWarFile = new File( deployDirectory, "webapps/"+project.getArtifactId()+".war" );
assertTrue( "Exploded War Dir Not Found: " + expectedExplodedWarDir.toString(), expectedExplodedWarDir.exists() );
assertTrue( "Exploded War Dir is not a directory: " + expectedExplodedWarDir.toString(), expectedExplodedWarDir.isDirectory() );
assertFalse( "War File Found: " + noWarFile.toString(), noWarFile.exists() );
// house keeping
expectedExplodedWarDir.delete();
}
/**
* @throws Exception
*/
public void testComponentDeployWar()
throws Exception
{
// setup test data
String testId = "SimpleDeployExplodedComponent";
MavenProjectBasicStub project = new MavenProjectBasicStub();
project.setArtifact(new SimpleWarArtifactStub(getBasedir()));
project.setPackaging("sakai-component");
File webAppSource = createWebAppSource( testId );
File classesDir = createClassesDir( testId, false );
File webAppResource = new File( getTestDirectory(), testId + "-resources" );
File webAppDirectory = new File( getTestDirectory(), testId );
File deployDirectory = new File( getTestDirectory(), testId + "-tomcat" );
File sampleResource = new File( webAppResource, "pix/panis_na.jpg" );
ResourceStub[] resources = new ResourceStub[]{new ResourceStub()};
createFile( sampleResource );
assertTrue("sampeResource not found",sampleResource.exists());
// configure mojo
resources[0].setDirectory( webAppResource.getAbsolutePath() );
this.configureMojo( mojo, new LinkedList(), classesDir, webAppSource, webAppDirectory, deployDirectory, project );
setVariableValueToObject( mojo, "webResources", resources );
mojo.execute();
// validate operation
File expectedWarFile = new File( deployDirectory, "components/"+project.getArtifactId()+"/org/sample/company/test.jsp" );
assertTrue( "War File Not Found: " + expectedWarFile.toString(), expectedWarFile.exists() );
// house keeping
expectedWarFile.delete();
}
/**
* @throws Exception
*/
public void testConfigurationDeploy()
throws Exception
{
// setup test data
String testId = "SimpleDeployExplodedConfiguration";
MavenProjectBasicStub project = new MavenProjectBasicStub();
project.setArtifact(new SimpleConfigurationArtifactStub(getBasedir()));
project.setPackaging("sakai-configuration");
File webAppSource = createWebAppSource( testId );
File classesDir = createClassesDir( testId, false );
File webAppResource = new File( getTestDirectory(), testId + "-resources" );
File webAppDirectory = new File( getTestDirectory(), testId );
File deployDirectory = new File( getTestDirectory(), testId + "-tomcat" );
File sampleResource = new File( webAppResource, "pix/panis_na.jpg" );
ResourceStub[] resources = new ResourceStub[]{new ResourceStub()};
createFile( sampleResource );
assertTrue("sampeResource not found",sampleResource.exists());
// configure mojo
resources[0].setDirectory( webAppResource.getAbsolutePath() );
this.configureMojo( mojo, new LinkedList(), classesDir, webAppSource, webAppDirectory, deployDirectory, project );
setVariableValueToObject( mojo, "webResources", resources );
mojo.execute();
// validate operation
File expectedWarFile = new File( deployDirectory, "/org/sample/company/test.jsp" );
assertTrue( "Output File Not Found: " + expectedWarFile.toString(), expectedWarFile.exists() );
// house keeping
// expectedWarFile.delete();
}
/**
* @throws Exception
*/
public void xtestSharedDeployJar()
throws Exception
{
// setup test data
String testId = "SimpleDeployExplodedShared";
MavenProjectBasicStub project = new MavenProjectBasicStub();
project.setArtifact(artifactFactory.createArtifact(project.getGroupId(), project.getArtifactId(), project.getVersion(), null, "jar"));
Artifact artifact = artifactFactory.createArtifact("org.apache.maven","maven-core","2.0",null,"jar");
HashSet<Artifact> dependencySet = new HashSet<Artifact>();
dependencySet.add(artifact);
project.setDependencyArtifacts(dependencySet);
project.setPackaging("jar");
project.addProperty("deploy.target", "shared");
File webAppSource = createWebAppSource( testId );
File classesDir = createClassesDir( testId, false );
File webAppResource = new File( getTestDirectory(), testId + "-resources" );
File webAppDirectory = new File( getTestDirectory(), testId );
File deployDirectory = new File( getTestDirectory(), testId + "-tomcat" );
File sampleResource = new File( webAppResource, "pix/panis_na.jpg" );
ResourceStub[] resources = new ResourceStub[]{new ResourceStub()};
createFile( sampleResource );
assertTrue("sampeResource not found",sampleResource.exists());
// configure mojo
resources[0].setDirectory( webAppResource.getAbsolutePath() );
this.configureMojo( mojo, new LinkedList(), classesDir, webAppSource, webAppDirectory, deployDirectory, project );
setVariableValueToObject( mojo, "webResources", resources );
setVariableValueToObject(mojo, "remoteRepositories", new ArrayList());
mojo.execute();
// validate operation
File expectedJarFile = new File( deployDirectory, "shared/lib/"+artifact.getArtifactId()+"-"+artifact.getVersion()+"."+artifact.getType() );
assertTrue( "Jar File Not Found: " + expectedJarFile.toString(), expectedJarFile.exists() );
// house keeping
expectedJarFile.delete();
}
/**
* @throws Exception
*/
public void xtestCommonDeployJar()
throws Exception
{
// setup test data
String testId = "SimpleDeployExplodedCommon";
MavenProjectBasicStub project = new MavenProjectBasicStub();
project.setArtifact(artifactFactory.createArtifact(project.getGroupId(), project.getArtifactId(), project.getVersion(), null, "jar"));
Artifact artifact = artifactFactory.createArtifact("org.apache.maven","maven-core","2.0",null,"jar");
HashSet<Artifact> dependencySet = new HashSet<Artifact>();
dependencySet.add(artifact);
project.setDependencyArtifacts(dependencySet);
project.setPackaging("jar");
project.addProperty("deploy.target", "common");
File webAppSource = createWebAppSource( testId );
File classesDir = createClassesDir( testId, false );
File webAppResource = new File( getTestDirectory(), testId + "-resources" );
File webAppDirectory = new File( getTestDirectory(), testId );
File deployDirectory = new File( getTestDirectory(), testId + "-tomcat" );
File sampleResource = new File( webAppResource, "pix/panis_na.jpg" );
ResourceStub[] resources = new ResourceStub[]{new ResourceStub()};
createFile( sampleResource );
assertTrue("sampeResource not found",sampleResource.exists());
// configure mojo
resources[0].setDirectory( webAppResource.getAbsolutePath() );
this.configureMojo( mojo, new LinkedList(), classesDir, webAppSource, webAppDirectory, deployDirectory, project );
setVariableValueToObject( mojo, "webResources", resources );
setVariableValueToObject(mojo, "remoteRepositories", new ArrayList());
mojo.execute();
// validate operation
File expectedJarFile = new File( deployDirectory, "common/lib/"+artifact.getArtifactId()+"-"+artifact.getVersion()+"."+artifact.getType() );
assertTrue( "Jar File Not Found: " + expectedJarFile.toString(), expectedJarFile.exists() );
// house keeping
expectedJarFile.delete();
}
protected void configureMojo( ComponentDeployExplodedMojo mojo, List filters, File classesDir, File webAppSource,
File webAppDir, File deployDir, MavenProjectBasicStub project )
throws Exception
{
super.configureMojo(mojo, filters, classesDir, webAppSource, webAppDir, deployDir, project);
mojo.setDeployDirectory( deployDir );
mojo.setDeployId(project.getArtifactId());
}
}