1 package com.atlassian.plugin.osgi.factory.transform.stage;
2
3 import com.atlassian.plugin.JarPluginArtifact;
4 import com.atlassian.plugin.PluginAccessor;
5 import com.atlassian.plugin.osgi.container.OsgiContainerManager;
6 import com.atlassian.plugin.osgi.factory.transform.TransformContext;
7 import com.atlassian.plugin.osgi.factory.transform.model.SystemExports;
8 import com.atlassian.plugin.osgi.hostcomponents.HostComponentRegistration;
9 import com.atlassian.plugin.test.PluginJarBuilder;
10 import junit.framework.TestCase;
11 import org.osgi.framework.ServiceReference;
12
13 import java.io.File;
14 import java.util.Collections;
15
16 import static org.mockito.Mockito.mock;
17 import static org.mockito.Mockito.when;
18
19 public class TestScanInnerJarsStage extends TestCase
20 {
21 public void testTransform() throws Exception
22 {
23
24 final File plugin = new PluginJarBuilder("plugin")
25 .addFormattedResource("atlassian-plugin.xml",
26 "<atlassian-plugin name='Test Bundle instruction plugin 2' key='test.plugin'>",
27 " <plugin-info>",
28 " <version>1.0</version>",
29 " <bundle-instructions>",
30 " <Export-Package>!*.internal.*,*</Export-Package>",
31 " </bundle-instructions>",
32 " </plugin-info>",
33 "</atlassian-plugin>")
34 .addFormattedJava("my.MyFooChild",
35 "package my;",
36 "public class MyFooChild extends com.atlassian.plugin.osgi.factory.transform.dummypackage2.DummyClass2 {",
37 "}")
38 .addResource(ScanInnerJarsStage.INNER_JARS_BASE_LOCATION + "myjar1.jar", "content1")
39 .addResource(ScanInnerJarsStage.INNER_JARS_BASE_LOCATION + "myjar2.jar", "content2")
40 .addResource("myjar3.jar", "content3")
41 .build();
42
43
44 final ScanInnerJarsStage stage = new ScanInnerJarsStage();
45 OsgiContainerManager osgiContainerManager = mock(OsgiContainerManager.class);
46 when(osgiContainerManager.getRegisteredServices()).thenReturn(new ServiceReference[0]);
47 final TransformContext context = new TransformContext(Collections.<HostComponentRegistration> emptyList(), SystemExports.NONE, new JarPluginArtifact(plugin),
48 null, PluginAccessor.Descriptor.FILENAME, osgiContainerManager);
49 stage.execute(context);
50
51
52 assertFalse(context.getBundleClassPathJars().contains("myjar3.jar"));
53
54
55 assertEquals(context.getBundleClassPathJars().size(), 2);
56 assertTrue(context.getBundleClassPathJars().contains(ScanInnerJarsStage.INNER_JARS_BASE_LOCATION + "myjar1.jar"));
57 assertTrue(context.getBundleClassPathJars().contains(ScanInnerJarsStage.INNER_JARS_BASE_LOCATION + "myjar2.jar"));
58 }
59 }