View Javadoc
1   package com.atlassian.plugin;
2   
3   import com.atlassian.plugin.test.PluginJarBuilder;
4   import org.apache.commons.io.FileUtils;
5   
6   import org.junit.Before;
7   import org.junit.Rule;
8   import org.junit.Test;
9   import org.junit.rules.TemporaryFolder;
10  
11  import java.io.File;
12  import java.io.IOException;
13  
14  import static com.atlassian.plugin.ReferenceMode.FORBID_REFERENCE;
15  import static com.atlassian.plugin.ReferenceMode.PERMIT_REFERENCE;
16  import static org.hamcrest.MatcherAssert.assertThat;
17  import static org.hamcrest.Matchers.is;
18  import static org.junit.Assert.assertFalse;
19  import static org.junit.Assert.assertNotNull;
20  import static org.junit.Assert.assertTrue;
21  import static org.junit.Assert.fail;
22  
23  public class TestDefaultPluginArtifactFactory {
24      @Rule
25      public final TemporaryFolder temporaryFolder = new TemporaryFolder();
26  
27      private File testDir;
28      private File spaceTestDir;
29      private File file;
30  
31      @Before
32      public void setUp() throws IOException {
33          testDir = temporaryFolder.newFolder("test");
34          spaceTestDir = temporaryFolder.newFolder("space test");
35          file = new File(testDir, "some.jar");
36      }
37  
38      @Test
39      public void testCreate() throws IOException {
40          doCreationTestInDirectory(testDir);
41      }
42  
43      @Test
44      public void testCreateWithSpaceInArtifactPath() throws IOException {
45          doCreationTestInDirectory(spaceTestDir);
46      }
47  
48      @Test
49      public void testReferenceModeForbidReferenceDoesNotAllowReference() {
50          final DefaultPluginArtifactFactory defaultPluginArtifactFactory = new DefaultPluginArtifactFactory(FORBID_REFERENCE);
51          final PluginArtifact pluginArtifact = defaultPluginArtifactFactory.create(file.toURI());
52          assertFalse(pluginArtifact.getReferenceMode().allowsReference());
53          assertThat(pluginArtifact.getReferenceMode(), is(FORBID_REFERENCE));
54      }
55  
56      @Test
57      public void testReferenceModePermitReferenceAllowsReference() {
58          final DefaultPluginArtifactFactory defaultPluginArtifactFactory = new DefaultPluginArtifactFactory(PERMIT_REFERENCE);
59          final PluginArtifact pluginArtifact = defaultPluginArtifactFactory.create(file.toURI());
60          assertTrue(pluginArtifact.getReferenceMode().allowsReference());
61          assertThat(pluginArtifact.getReferenceMode(), is(PERMIT_REFERENCE));
62      }
63  
64      @Test
65      public void testDefaultDoesNotAllowsReference() {
66          final DefaultPluginArtifactFactory defaultPluginArtifactFactory = new DefaultPluginArtifactFactory();
67          final PluginArtifact pluginArtifact = defaultPluginArtifactFactory.create(file.toURI());
68          assertFalse(pluginArtifact.getReferenceMode().allowsReference());
69          assertThat(pluginArtifact.getReferenceMode(), is(FORBID_REFERENCE));
70      }
71  
72      @Test
73      public void testLegacyReferenceModeForbidReferenceDoesNotAllowReference() {
74          final DefaultPluginArtifactFactory defaultPluginArtifactFactory = new DefaultPluginArtifactFactory(
75                  ReferenceMode.FORBID_REFERENCE);
76          final PluginArtifact pluginArtifact = defaultPluginArtifactFactory.create(file.toURI());
77          assertFalse(pluginArtifact.getReferenceMode().allowsReference());
78      }
79  
80      @Test
81      public void testLegacyReferenceModePermitReferenceAllowsReference() {
82          final DefaultPluginArtifactFactory defaultPluginArtifactFactory = new DefaultPluginArtifactFactory(
83                  ReferenceMode.PERMIT_REFERENCE);
84          final PluginArtifact pluginArtifact = defaultPluginArtifactFactory.create(file.toURI());
85          assertTrue(pluginArtifact.getReferenceMode().allowsReference());
86      }
87  
88      private void doCreationTestInDirectory(File directory) throws IOException {
89          File xmlFile = new File(directory, "foo.xml");
90          FileUtils.writeStringToFile(xmlFile, "<xml/>");
91          File jarFile = new PluginJarBuilder("jar").build(directory);
92  
93          DefaultPluginArtifactFactory factory = new DefaultPluginArtifactFactory();
94  
95          PluginArtifact jarArt = factory.create(jarFile.toURI());
96          assertNotNull(jarArt);
97          assertTrue(jarArt instanceof JarPluginArtifact);
98  
99          PluginArtifact xmlArt = factory.create(xmlFile.toURI());
100         assertNotNull(xmlArt);
101         assertTrue(xmlArt instanceof XmlPluginArtifact);
102 
103         try {
104             factory.create(new File(testDir, "bob.jim").toURI());
105             fail("Should have thrown exception");
106         } catch (IllegalArgumentException ex) {
107             // test passed
108         }
109     }
110 }