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
44 moduleDescriptorFactory.removeModuleDescriptorForType("mineral");
45
46
47 assertFalse(moduleDescriptorFactory.hasModuleDescriptor("mineral"));
48
49
50 assertTrue(moduleDescriptorFactory.hasModuleDescriptor("animal"));
51 assertTrue(moduleDescriptorFactory.getModuleDescriptor("animal") instanceof MockAnimalModuleDescriptor);
52 }
53
54
55 @Test
56 public void testModuleDescriptorFactoryOnlyPermittedDescriptors() throws IllegalAccessException, PluginParseException, ClassNotFoundException, InstantiationException {
57
58 moduleDescriptorFactory.addModuleDescriptor("animal", MockAnimalModuleDescriptor.class);
59 moduleDescriptorFactory.addModuleDescriptor("mineral", MockMineralModuleDescriptor.class);
60
61
62 final List<String> permittedList = new ArrayList<>();
63 permittedList.add("animal");
64 moduleDescriptorFactory.setPermittedModuleKeys(permittedList);
65
66 assertNotNull(moduleDescriptorFactory.getModuleDescriptor("animal"));
67
68
69 assertNull(moduleDescriptorFactory.getModuleDescriptor("mineral"));
70 }
71 }