View Javadoc
1   package com.atlassian.plugin.factories;
2   
3   import com.atlassian.plugin.Application;
4   import com.atlassian.plugin.ModuleDescriptor;
5   import com.atlassian.plugin.ModuleDescriptorFactory;
6   import com.atlassian.plugin.Plugin;
7   import com.atlassian.plugin.PluginAccessor;
8   import com.atlassian.plugin.PluginArtifact;
9   import com.atlassian.plugin.PluginParseException;
10  import com.atlassian.plugin.impl.DefaultDynamicPlugin;
11  import com.atlassian.plugin.parsers.DescriptorParser;
12  import com.atlassian.plugin.parsers.XmlDescriptorParserFactory;
13  import com.google.common.collect.ImmutableSet;
14  import org.dom4j.Element;
15  import org.junit.Before;
16  import org.junit.Rule;
17  import org.junit.Test;
18  import org.junit.rules.ExpectedException;
19  import org.junit.runner.RunWith;
20  import org.mockito.Mock;
21  import org.mockito.runners.MockitoJUnitRunner;
22  
23  import java.io.File;
24  import java.io.IOException;
25  import java.io.InputStream;
26  
27  import static org.hamcrest.MatcherAssert.assertThat;
28  import static org.hamcrest.Matchers.is;
29  import static org.hamcrest.Matchers.nullValue;
30  import static org.mockito.Matchers.anyString;
31  import static org.mockito.Mockito.mock;
32  import static org.mockito.Mockito.verify;
33  import static org.mockito.Mockito.when;
34  
35  @RunWith(MockitoJUnitRunner.class)
36  public class TestLegacyDynamicPluginFactory {
37      @Rule
38      public ExpectedException expectedException = ExpectedException.none();
39  
40      private LegacyDynamicPluginFactory legacyDynamicPluginFactory;
41  
42      @Mock
43      private ModuleDescriptorFactory moduleDescriptorFactory;
44      @Mock
45      private XmlDescriptorParserFactory xmlDescriptorParserFactory;
46      @Mock
47      private Element module;
48      @Mock
49      private PluginArtifact pluginArtifact;
50      @Mock
51      private InputStream pluginDescriptor;
52      @Mock
53      private DescriptorParser descriptorParser;
54      @Mock
55      private ModuleDescriptor moduleDescriptor;
56  
57      @Before
58      public void before() throws Exception {
59          legacyDynamicPluginFactory = new LegacyDynamicPluginFactory(PluginAccessor.Descriptor.FILENAME, new File(System.getProperty("java.io.tmpdir")), xmlDescriptorParserFactory);
60      }
61  
62      @Test
63      public void createCorruptJar() {
64          final PluginArtifact pluginArtifact = mock(PluginArtifact.class);
65          when(pluginArtifact.getResourceAsStream(anyString())).thenReturn(null);
66          when(pluginArtifact.toFile()).thenReturn(new File("sadfasdf"));
67  
68          expectedException.expect(PluginParseException.class);
69  
70          legacyDynamicPluginFactory.create(pluginArtifact, moduleDescriptorFactory);
71      }
72  
73      @Test
74      public void createModule() throws IOException {
75          final DefaultDynamicPlugin plugin = mock(DefaultDynamicPlugin.class);
76  
77          when(plugin.getPluginArtifact()).thenReturn(pluginArtifact);
78          when(pluginArtifact.getResourceAsStream(PluginAccessor.Descriptor.FILENAME)).thenReturn(pluginDescriptor);
79          when(xmlDescriptorParserFactory.getInstance(pluginDescriptor, ImmutableSet.<Application>of())).thenReturn(descriptorParser);
80          when(descriptorParser.addModule(moduleDescriptorFactory, plugin, module)).thenReturn(moduleDescriptor);
81  
82          assertThat(legacyDynamicPluginFactory.createModule(plugin, module, moduleDescriptorFactory), is(moduleDescriptor));
83  
84          verify(pluginDescriptor).close();
85      }
86  
87      @Test
88      public void creatModuleIncorrectPluginType() {
89          final Plugin plugin = mock(Plugin.class);
90  
91          assertThat(legacyDynamicPluginFactory.createModule(plugin, module, moduleDescriptorFactory), nullValue());
92      }
93  }