View Javadoc
1   package com.atlassian.plugin;
2   
3   import com.atlassian.plugin.hostcontainer.DefaultHostContainer;
4   import com.atlassian.plugin.mock.MockAnimalModuleDescriptor;
5   import com.atlassian.plugin.mock.MockMineralModuleDescriptor;
6   import org.junit.Before;
7   import org.junit.Test;
8   
9   import java.util.ArrayList;
10  import java.util.List;
11  
12  import static org.junit.Assert.assertFalse;
13  import static org.junit.Assert.assertNotNull;
14  import static org.junit.Assert.assertNull;
15  import static org.junit.Assert.assertTrue;
16  
17  public class TestDefaultModuleDescriptorFactory {
18  
19      private DefaultModuleDescriptorFactory moduleDescriptorFactory;
20  
21      @Before
22      public void setUp() throws Exception {
23          moduleDescriptorFactory = new DefaultModuleDescriptorFactory(new DefaultHostContainer());
24      }
25  
26      @Test(expected = PluginParseException.class)
27      public void testInvalidModuleDescriptorType() throws IllegalAccessException, ClassNotFoundException, InstantiationException {
28          moduleDescriptorFactory.getModuleDescriptor("foobar");
29      }
30  
31      @Test
32      public void testModuleDescriptorFactory() throws PluginParseException, IllegalAccessException, ClassNotFoundException, InstantiationException {
33          moduleDescriptorFactory.addModuleDescriptor("animal", MockAnimalModuleDescriptor.class);
34          moduleDescriptorFactory.addModuleDescriptor("mineral", MockMineralModuleDescriptor.class);
35  
36          assertTrue(moduleDescriptorFactory.getModuleDescriptor("animal") instanceof MockAnimalModuleDescriptor);
37          assertTrue(moduleDescriptorFactory.getModuleDescriptor("mineral") instanceof MockMineralModuleDescriptor);
38  
39          assertTrue(moduleDescriptorFactory.hasModuleDescriptor("animal"));
40          assertTrue(moduleDescriptorFactory.hasModuleDescriptor("mineral"));
41          assertFalse(moduleDescriptorFactory.hasModuleDescriptor("something"));
42  
43          // Test removing a module descriptor
44          moduleDescriptorFactory.removeModuleDescriptorForType("mineral");
45  
46          // Ensure the removed module descriptor is not there
47          assertFalse(moduleDescriptorFactory.hasModuleDescriptor("mineral"));
48  
49          // Ensure the other one is still there
50          assertTrue(moduleDescriptorFactory.hasModuleDescriptor("animal"));
51          assertTrue(moduleDescriptorFactory.getModuleDescriptor("animal") instanceof MockAnimalModuleDescriptor);
52      }
53  
54      // PLUG-5
55      @Test
56      public void testModuleDescriptorFactoryOnlyPermittedDescriptors() throws IllegalAccessException, PluginParseException, ClassNotFoundException, InstantiationException {
57          // Add the "supported" module descriptors
58          moduleDescriptorFactory.addModuleDescriptor("animal", MockAnimalModuleDescriptor.class);
59          moduleDescriptorFactory.addModuleDescriptor("mineral", MockMineralModuleDescriptor.class);
60  
61          // Exclude "mineral"
62          final List<String> permittedList = new ArrayList<>();
63          permittedList.add("animal");
64          moduleDescriptorFactory.setPermittedModuleKeys(permittedList);
65          // Try and grab the "animal" descriptor
66          assertNotNull(moduleDescriptorFactory.getModuleDescriptor("animal"));
67  
68          // "mineral" is excluded, so it should return null
69          assertNull(moduleDescriptorFactory.getModuleDescriptor("mineral"));
70      }
71  }