1   package com.atlassian.plugins.codegen.modules.common.servlet;
2   
3   import java.io.File;
4   import java.io.IOException;
5   import java.util.regex.Matcher;
6   
7   import com.atlassian.plugins.codegen.AbstractCodegenTestCase;
8   import com.atlassian.plugins.codegen.modules.PluginModuleLocation;
9   
10  import org.apache.commons.io.FileUtils;
11  import org.junit.Before;
12  import org.junit.Test;
13  
14  import static org.junit.Assert.assertTrue;
15  //TODO: update test to use Dom4J
16  
17  /**
18   * @since 3.6
19   */
20  public class ServletCodegenTest extends AbstractCodegenTestCase<ServletProperties>
21  {
22      public static final String PACKAGE_NAME = "com.atlassian.plugins.servlet";
23  
24      @Before
25      public void runGenerator() throws Exception
26      {
27          setCreator(new ServletModuleCreator());
28          setModuleLocation(new PluginModuleLocation.Builder(srcDir)
29                  .resourcesDirectory(resourcesDir)
30                  .testDirectory(testDir)
31                  .templateDirectory(templateDir)
32                  .build());
33  
34          setProps(new ServletProperties(PACKAGE_NAME + ".MyServlet"));
35  
36          props.setUrlPattern("/myservlet");
37          props.setIncludeExamples(false);
38          props.addInitParam("foo", "bar");
39  
40          creator.createModule(moduleLocation, props);
41          creator.createModule(moduleLocation, props);
42      }
43  
44      @Test
45      public void allFilesAreGenerated() throws Exception
46      {
47          String packagePath = PACKAGE_NAME.replaceAll("\\.", Matcher.quoteReplacement(File.separator));
48          String itPackagePath = "it" + File.separator + packagePath;
49          assertTrue("main class not generated", new File(srcDir, packagePath + File.separator + "MyServlet.java").exists());
50          assertTrue("test class not generated", new File(testDir, packagePath + File.separator + "MyServletTest.java").exists());
51          assertTrue("funcTest class not generated", new File(testDir, itPackagePath + File.separator + "MyServletFuncTest.java").exists());
52          assertTrue("main class not generated", new File(resourcesDir, "atlassian-plugin.xml").exists());
53  
54      }
55  
56      @Test
57      public void pluginXmlContainsModule() throws IOException
58      {
59          String pluginXmlContent = FileUtils.readFileToString(pluginXml);
60  
61          assertTrue("module not found in plugin xml", pluginXmlContent.contains("<servlet"));
62          assertTrue("module class not found in plugin xml", pluginXmlContent.contains("class=\"" + PACKAGE_NAME + ".MyServlet\""));
63      }
64  
65  }