View Javadoc

1   package com.atlassian.plugin;
2   
3   import com.atlassian.plugin.mock.MockAnimalModuleDescriptor;
4   import com.atlassian.plugin.mock.MockMineralModuleDescriptor;
5   import com.atlassian.plugin.hostcontainer.DefaultHostContainer;
6   
7   import java.util.ArrayList;
8   import java.util.List;
9   
10  import junit.framework.TestCase;
11  
12  public class TestDefaultModuleDescriptorFactory extends TestCase
13  {
14      private DefaultModuleDescriptorFactory moduleDescriptorFactory;
15  
16      @Override
17      protected void setUp() throws Exception
18      {
19          super.setUp();
20  
21          moduleDescriptorFactory = new DefaultModuleDescriptorFactory(new DefaultHostContainer());
22      }
23  
24      public void testInvalidModuleDescriptorType()
25      {
26          try
27          {
28              moduleDescriptorFactory.getModuleDescriptor("foobar");
29              fail("Should have thrown exception");
30          }
31          catch (final IllegalAccessException e)
32          {
33              e.printStackTrace();
34          }
35          catch (final PluginParseException e)
36          {
37              return;
38          }
39          catch (final ClassNotFoundException e)
40          {
41              e.printStackTrace();
42          }
43          catch (final InstantiationException e)
44          {
45              e.printStackTrace();
46          }
47  
48          fail("Threw the wrong exception");
49      }
50  
51      public void testModuleDescriptorFactory() throws PluginParseException, IllegalAccessException, ClassNotFoundException, InstantiationException
52      {
53          moduleDescriptorFactory.addModuleDescriptor("animal", MockAnimalModuleDescriptor.class);
54          moduleDescriptorFactory.addModuleDescriptor("mineral", MockMineralModuleDescriptor.class);
55  
56          assertTrue(moduleDescriptorFactory.getModuleDescriptor("animal") instanceof MockAnimalModuleDescriptor);
57          assertTrue(moduleDescriptorFactory.getModuleDescriptor("mineral") instanceof MockMineralModuleDescriptor);
58  
59          assertTrue(moduleDescriptorFactory.hasModuleDescriptor("animal"));
60          assertTrue(moduleDescriptorFactory.hasModuleDescriptor("mineral"));
61          assertFalse(moduleDescriptorFactory.hasModuleDescriptor("something"));
62  
63          // Test removing a module descriptor
64          moduleDescriptorFactory.removeModuleDescriptorForType("mineral");
65  
66          // Ensure the removed module descriptor is not there
67          assertFalse(moduleDescriptorFactory.hasModuleDescriptor("mineral"));
68  
69          // Ensure the other one is still there
70          assertTrue(moduleDescriptorFactory.hasModuleDescriptor("animal"));
71          assertTrue(moduleDescriptorFactory.getModuleDescriptor("animal") instanceof MockAnimalModuleDescriptor);
72      }
73  
74      // PLUG-5
75      public void testModuleDescriptorFactoryOnlyPermittedDescriptors() throws IllegalAccessException, PluginParseException, ClassNotFoundException, InstantiationException
76      {
77          // Add the "supported" module descriptors
78          moduleDescriptorFactory.addModuleDescriptor("animal", MockAnimalModuleDescriptor.class);
79          moduleDescriptorFactory.addModuleDescriptor("mineral", MockMineralModuleDescriptor.class);
80  
81          // Exclude "mineral"
82          final List<String> permittedList = new ArrayList<String>();
83          permittedList.add("animal");
84          moduleDescriptorFactory.setPermittedModuleKeys(permittedList);
85          // Try and grab the "animal" descriptor
86          assertNotNull(moduleDescriptorFactory.getModuleDescriptor("animal"));
87  
88          // "mineral" is excluded, so it should return null
89          assertNull(moduleDescriptorFactory.getModuleDescriptor("mineral"));
90      }
91  }