/*******************************************************************************
* Copyright (c) 2008, 2010 VMware Inc.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* VMware Inc. - initial contribution
*******************************************************************************/
package org.eclipse.virgo.kernel.artifact.plan;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.List;
import org.junit.Test;
import org.osgi.framework.Version;
import org.eclipse.virgo.kernel.artifact.ArtifactSpecification;
import org.eclipse.virgo.kernel.artifact.plan.PlanDescriptor;
import org.eclipse.virgo.kernel.artifact.plan.PlanReader;
import org.eclipse.virgo.util.osgi.manifest.VersionRange;
public class DMSPlanReaderTests {
private final PlanReader reader = new PlanReader();
@Test(expected = RuntimeException.class)
public void testBadPlanFile() throws FileNotFoundException {
reader.read(new FileInputStream("src/test/resources/dms-plans/malformed.plan"));
}
@Test
public void testSingleArtifactPlan() throws FileNotFoundException {
PlanDescriptor plan = reader.read(new FileInputStream("src/test/resources/dms-plans/single-artifact.plan"));
assertEquals("single-artifact.plan", plan.getName());
assertEquals(new Version(1, 0, 0), plan.getVersion());
List<ArtifactSpecification> artifactSpecifications = plan.getArtifactSpecifications();
assertEquals(1, artifactSpecifications.size());
ArtifactSpecification artifactSpecification = artifactSpecifications.iterator().next();
assertEquals("bundle", artifactSpecification.getType());
assertEquals("org.springframework.context.support", artifactSpecification.getName());
assertEquals(new VersionRange("[1.0.0, 2.0.0)"), artifactSpecification.getVersionRange());
assertNotNull(artifactSpecification.getProperties());
assertTrue(artifactSpecification.getProperties().isEmpty());
}
@Test
public void testSingleArtifactPlanWithAttributes() throws FileNotFoundException {
PlanDescriptor plan = reader.read(new FileInputStream("src/test/resources/dms-plans/attributes.plan"));
assertEquals("single-artifact.plan", plan.getName());
assertEquals(new Version(1, 0, 0), plan.getVersion());
List<ArtifactSpecification> artifactSpecifications = plan.getArtifactSpecifications();
assertEquals(1, artifactSpecifications.size());
ArtifactSpecification artifactSpecification = artifactSpecifications.iterator().next();
assertEquals("bundle", artifactSpecification.getType());
assertEquals("org.springframework.context.support", artifactSpecification.getName());
assertEquals(new VersionRange("[1.0.0, 2.0.0)"), artifactSpecification.getVersionRange());
}
@Test
public void testSingleArtifactPlanWithProperties() throws FileNotFoundException {
PlanDescriptor plan = reader.read(new FileInputStream("src/test/resources/dms-plans/properties.plan"));
assertEquals("properties.plan", plan.getName());
assertEquals(new Version(1, 0, 0), plan.getVersion());
List<ArtifactSpecification> artifactSpecifications = plan.getArtifactSpecifications();
assertEquals(1, artifactSpecifications.size());
ArtifactSpecification artifactSpecification = artifactSpecifications.iterator().next();
assertEquals("bundle", artifactSpecification.getType());
assertEquals("my.webapp", artifactSpecification.getName());
assertEquals(new VersionRange("[1.0.0, 2.0.0)"), artifactSpecification.getVersionRange());
assertEquals("/foo", artifactSpecification.getProperties().get("Web-ContextPath"));
}
@Test
public void testMultiArtifactPlan() throws FileNotFoundException {
PlanDescriptor plan = reader.read(new FileInputStream("src/test/resources/dms-plans/multi-artifact.plan"));
assertEquals("multi-artifact.plan", plan.getName());
assertEquals(new Version(1, 0, 0), plan.getVersion());
List<ArtifactSpecification> artifactSpecifications = plan.getArtifactSpecifications();
assertEquals(3, artifactSpecifications.size());
for (ArtifactSpecification artifactSpecification : artifactSpecifications) {
String type = artifactSpecification.getType();
if ("alpha".equals(type)) {
assertEquals("org.springframework.core", artifactSpecification.getName());
assertEquals(new VersionRange("0"), artifactSpecification.getVersionRange());
} else if ("bravo".equals(type)) {
assertEquals("org.springframework.context", artifactSpecification.getName());
assertEquals(new VersionRange("1.0.0"), artifactSpecification.getVersionRange());
} else if ("charlie".equals(type)) {
assertEquals("org.springframework.context.support", artifactSpecification.getName());
assertEquals(new VersionRange("[1.0.0, 2.0.0)"), artifactSpecification.getVersionRange());
}
}
}
}