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
64 moduleDescriptorFactory.removeModuleDescriptorForType("mineral");
65
66
67 assertFalse(moduleDescriptorFactory.hasModuleDescriptor("mineral"));
68
69
70 assertTrue(moduleDescriptorFactory.hasModuleDescriptor("animal"));
71 assertTrue(moduleDescriptorFactory.getModuleDescriptor("animal") instanceof MockAnimalModuleDescriptor);
72 }
73
74
75 public void testModuleDescriptorFactoryOnlyPermittedDescriptors() throws IllegalAccessException, PluginParseException, ClassNotFoundException, InstantiationException
76 {
77
78 moduleDescriptorFactory.addModuleDescriptor("animal", MockAnimalModuleDescriptor.class);
79 moduleDescriptorFactory.addModuleDescriptor("mineral", MockMineralModuleDescriptor.class);
80
81
82 final List<String> permittedList = new ArrayList<String>();
83 permittedList.add("animal");
84 moduleDescriptorFactory.setPermittedModuleKeys(permittedList);
85
86 assertNotNull(moduleDescriptorFactory.getModuleDescriptor("animal"));
87
88
89 assertNull(moduleDescriptorFactory.getModuleDescriptor("mineral"));
90 }
91 }