1   package com.atlassian.plugin.osgi.factory.transform.stage;
2   
3   import com.atlassian.plugin.PluginAccessor;
4   import com.atlassian.plugin.JarPluginArtifact;
5   import com.atlassian.plugin.osgi.factory.transform.TransformContext;
6   import com.atlassian.plugin.osgi.factory.transform.model.SystemExports;
7   import com.atlassian.plugin.osgi.hostcomponents.HostComponentRegistration;
8   import com.atlassian.plugin.test.PluginJarBuilder;
9   
10  import java.io.File;
11  import java.util.Collections;
12  
13  import junit.framework.TestCase;
14  
15  public class TestScanDescriptorForHostClassesStage extends TestCase
16  {
17      public void testTransform() throws Exception
18      {
19          final File plugin = new PluginJarBuilder("plugin")
20                  .addFormattedResource("atlassian-plugin.xml",
21                          "<atlassian-plugin name='Test Bundle instruction plugin 2' key='test.plugin'>",
22                          "    <plugin-info>",
23                          "        <version>1.0</version>",
24                          "    </plugin-info>",
25                          "    <foo key='bar' class='com.atlassian.plugin.osgi.Foo' />",
26                          "</atlassian-plugin>")
27                  .build();
28  
29          ScanDescriptorForHostClassesStage stage = new ScanDescriptorForHostClassesStage();
30          SystemExports exports = new SystemExports("com.atlassian.plugin.osgi");
31          final TransformContext context = new TransformContext(Collections.<HostComponentRegistration> emptyList(), exports, new JarPluginArtifact(plugin),
32              null, PluginAccessor.Descriptor.FILENAME);
33          stage.execute(context);
34          assertTrue(context.getExtraImports().contains("com.atlassian.plugin.osgi"));
35      }
36  
37      public void testTransformButPackageInPlugin() throws Exception
38      {
39          final File plugin = new PluginJarBuilder("plugin")
40                  .addFormattedResource("atlassian-plugin.xml",
41                          "<atlassian-plugin name='Test Bundle instruction plugin 2' key='test.plugin'>",
42                          "    <plugin-info>",
43                          "        <version>1.0</version>",
44                          "    </plugin-info>",
45                          "    <foo key='bar' class='com.atlassian.plugin.osgi.Foo' />",
46                          "</atlassian-plugin>")
47                  .addResource("com/atlassian/plugin/osgi/", "")
48                  .addResource("com/atlassian/plugin/osgi/Foo.class", "asd")
49                  .build();
50  
51          ScanDescriptorForHostClassesStage stage = new ScanDescriptorForHostClassesStage();
52          SystemExports exports = new SystemExports("com.atlassian.plugin.osgi");
53          final TransformContext context = new TransformContext(Collections.<HostComponentRegistration> emptyList(), exports, new JarPluginArtifact(plugin),
54              null, PluginAccessor.Descriptor.FILENAME);
55          stage.execute(context);
56          assertTrue(!context.getExtraImports().contains("com.atlassian.plugin.osgi"));
57      }
58  
59      public void testTransformIgnoreUnknown() throws Exception
60      {
61          final File plugin = new PluginJarBuilder("plugin")
62                  .addFormattedResource("atlassian-plugin.xml",
63                          "<atlassian-plugin name='Test Bundle instruction plugin 2' key='test.plugin'>",
64                          "    <plugin-info>",
65                          "        <version>1.0</version>",
66                          "    </plugin-info>",
67                          "    <foo key='bar' class='blat.Foo' />",
68                          "</atlassian-plugin>")
69                  .build();
70  
71          ScanDescriptorForHostClassesStage stage = new ScanDescriptorForHostClassesStage();
72          SystemExports exports = new SystemExports("com.atlassian.plugin.osgi");
73          final TransformContext context = new TransformContext(Collections.<HostComponentRegistration> emptyList(), exports, new JarPluginArtifact(plugin),
74              null, PluginAccessor.Descriptor.FILENAME);
75          stage.execute(context);
76          assertFalse(context.getExtraImports().contains("blat"));
77      }
78  }