View Javadoc
1   package it.com.atlassian.plugin.loaders;
2   
3   import com.atlassian.plugin.DefaultModuleDescriptorFactory;
4   import com.atlassian.plugin.ModuleDescriptor;
5   import com.atlassian.plugin.ModuleDescriptorFactory;
6   import com.atlassian.plugin.Plugin;
7   import com.atlassian.plugin.hostcontainer.DefaultHostContainer;
8   import com.atlassian.plugin.loaders.ClassPathPluginLoader;
9   import com.atlassian.plugin.mock.MockAnimalModuleDescriptor;
10  import com.atlassian.plugin.mock.MockMineralModuleDescriptor;
11  import org.dom4j.Element;
12  import org.dom4j.dom.DOMElement;
13  import org.junit.Before;
14  import org.junit.Test;
15  
16  import static org.hamcrest.MatcherAssert.assertThat;
17  import static org.hamcrest.Matchers.is;
18  import static org.hamcrest.Matchers.notNullValue;
19  import static org.hamcrest.Matchers.nullValue;
20  import static org.mockito.Mockito.mock;
21  
22  public class TestClassPathPluginLoader {
23      private ClassPathPluginLoader classPathPluginLoader;
24      private ModuleDescriptorFactory moduleDescriptorFactory;
25  
26      @Before
27      public void before() {
28          classPathPluginLoader = new ClassPathPluginLoader("test-atlassian-plugin.xml");
29  
30          final DefaultModuleDescriptorFactory defaultModuleDescriptorFactory = new DefaultModuleDescriptorFactory(new DefaultHostContainer());
31          defaultModuleDescriptorFactory.addModuleDescriptor("animal", MockAnimalModuleDescriptor.class);
32          defaultModuleDescriptorFactory.addModuleDescriptor("mineral", MockMineralModuleDescriptor.class);
33          defaultModuleDescriptorFactory.addModuleDescriptor("vegetable", MockMineralModuleDescriptor.class);
34  
35          moduleDescriptorFactory = defaultModuleDescriptorFactory;
36      }
37  
38      @Test
39      public void atlassianPlugin() {
40          Iterable plugins = classPathPluginLoader.loadAllPlugins(moduleDescriptorFactory);
41  
42          Plugin plugin = (Plugin) plugins.iterator().next();
43          assertThat(plugin.getName(), is("Test Plugin"));
44          assertThat(plugin.getKey(), is("test.atlassian.plugin"));
45          assertThat(plugin.getPluginInformation().getDescription(), is("This plugin descriptor is just used for test purposes!"));
46          assertThat(plugin.getModuleDescriptors().size(), is(4));
47  
48          assertThat(plugin.getModuleDescriptor("bear").getName(), is("Bear Animal"));
49      }
50  
51      @Test
52      public void createModule() {
53          final Iterable plugins = classPathPluginLoader.loadAllPlugins(moduleDescriptorFactory);
54          final Plugin plugin = (Plugin) plugins.iterator().next();
55  
56          final Element dynamicModule = new DOMElement("vegetable");
57          dynamicModule.addAttribute("key", "aubergine");
58          dynamicModule.addAttribute("class", "com.atlassian.plugin.mock.MockVegetable");
59  
60          final ModuleDescriptor moduleDescriptor = classPathPluginLoader.createModule(plugin, dynamicModule, moduleDescriptorFactory);
61          assertThat(moduleDescriptor, notNullValue());
62          assertThat(moduleDescriptor.getKey(), is("aubergine"));
63      }
64  
65      @Test
66      public void createModuleNoFactory() {
67          classPathPluginLoader.loadAllPlugins(moduleDescriptorFactory);
68  
69          assertThat(classPathPluginLoader.createModule(mock(Plugin.class), mock(Element.class), moduleDescriptorFactory), nullValue());
70      }
71  }