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