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