blob: ba2a35558528d90d90b989e547083631c6bfe6e1 [file] [log] [blame]
/*
* 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.
*/
package org.apache.sling.feature.extension.apiregions.launcher;
import java.io.IOException;
import java.util.Properties;
import org.apache.sling.feature.Artifact;
import org.apache.sling.feature.ArtifactId;
import org.apache.sling.feature.Feature;
import org.apache.sling.feature.extension.apiregions.api.ApiRegions;
import org.junit.Assert;
import org.junit.Test;
public class LauncherPropertiesTest
{
@Test
public void testInheritedFeature() throws IOException
{
ApiRegions apiRegions = ApiRegions.parse("[" +
"{\"name\": \"region1\", \"exports\": [\"org.foo.b\"],\"feature-origins\":[\"f:f1:1\"]}," +
"{\"name\": \"region2\", \"exports\": [\"org.foo.c\"],\"feature-origins\":[\"f:f1:1\",\"f:f2:1\"]}," +
"{\"name\": \"region3\", \"exports\": [],\"feature-origins\":[\"f:f2:1\"]}," +
"{\"name\": \"region4\", \"exports\": [\"org.foo.b\"],\"feature-origins\":[\"f:f1:1\"]}" +
"]");
Properties properties = LauncherProperties.getFeatureIDtoRegionsMap(apiRegions);
Assert.assertNotNull(properties);
Assert.assertEquals("region1,region2,region4", properties.getProperty("f:f1:1"));
Assert.assertEquals("region1,region2,region3", properties.getProperty("f:f2:1"));
Assert.assertEquals("region1,region2,region3,region4", properties.getProperty("__region.order__"));
}
@Test
public void testNotInheritedFeature() throws IOException
{
ApiRegions apiRegions = ApiRegions.parse("[" +
"{\"name\": \"region1\", \"exports\": [\"org.foo.b\"],\"feature-origins\":[\"f:f1:1\"]}," +
"{\"name\": \"region2\", \"exports\": [\"org.foo.c\"],\"feature-origins\":[\"f:f1:1\"]}," +
"{\"name\": \"region3\", \"exports\": [],\"feature-origins\":[\"f:f2:1\"]}," +
"{\"name\": \"region4\", \"exports\": [],\"feature-origins\":[\"f:f2:1\"]}," +
"{\"name\": \"region5\", \"exports\": [],\"feature-origins\":[\"f:f3:1\"]}" +
"]");
Properties properties = LauncherProperties.getFeatureIDtoRegionsMap(apiRegions);
Assert.assertNotNull(properties);
Assert.assertEquals("region1,region2", properties.getProperty("f:f1:1"));
Assert.assertEquals("region3,region4", properties.getProperty("f:f2:1"));
Assert.assertEquals("region1,region2,region3,region4,region5", properties.getProperty("__region.order__"));
}
@Test
public void testGetBundleIDtoFeaturesMapWithOrigins() {
final ArtifactId featureId = ArtifactId.parse("g:f:1");
final ArtifactId artifactId = ArtifactId.parse("g:a:2");
final ArtifactId originId = ArtifactId.parse("g:o:5");
final Feature f = new Feature(featureId);
final Artifact a = new Artifact(artifactId);
a.setFeatureOrigins(originId);
f.getBundles().add(a);
final Properties prop = LauncherProperties.getBundleIDtoFeaturesMap(f);
Assert.assertEquals(1, prop.size());
Assert.assertEquals(originId.toMvnId(), prop.get(artifactId.toMvnId()));
}
@Test
public void testGetBundleIDtoFeaturesMapWithoutOrigins() {
final ArtifactId featureId = ArtifactId.parse("g:f:1");
final ArtifactId artifactId = ArtifactId.parse("g:a:2");
final Feature f = new Feature(featureId);
final Artifact a = new Artifact(artifactId);
f.getBundles().add(a);
final Properties prop = LauncherProperties.getBundleIDtoFeaturesMap(f);
Assert.assertEquals(1, prop.size());
Assert.assertEquals(featureId.toMvnId(), prop.get(artifactId.toMvnId()));
}
}