/src/test/java/hudson/plugins/emailext/plugins/ContentBuilderTest.java

https://gitlab.com/github-cloud-corp/email-ext-plugin · Java · 183 lines · 157 code · 26 blank · 0 comment · 0 complexity · d96dd322ceb131ddbb31895124dbae24 MD5 · raw file

  1. package hudson.plugins.emailext.plugins;
  2. import com.google.common.collect.ListMultimap;
  3. import hudson.EnvVars;
  4. import hudson.model.AbstractBuild;
  5. import hudson.model.BuildListener;
  6. import hudson.model.StreamBuildListener;
  7. import hudson.model.TaskListener;
  8. import hudson.plugins.emailext.ExtendedEmailPublisher;
  9. import hudson.plugins.emailext.ExtendedEmailPublisherContext;
  10. import hudson.plugins.emailext.ExtendedEmailPublisherDescriptor;
  11. import hudson.util.StreamTaskListener;
  12. import java.io.IOException;
  13. import java.lang.reflect.Field;
  14. import java.util.Collections;
  15. import java.util.Map;
  16. import static junit.framework.Assert.assertEquals;
  17. import static junit.framework.Assert.assertEquals;
  18. import static junit.framework.Assert.assertEquals;
  19. import org.jenkinsci.plugins.tokenmacro.MacroEvaluationException;
  20. import org.jenkinsci.plugins.tokenmacro.TokenMacro;
  21. import org.junit.Rule;
  22. import org.junit.Test;
  23. import org.jvnet.hudson.test.JenkinsRule;
  24. import static org.mockito.Mockito.*;
  25. public class ContentBuilderTest {
  26. private ExtendedEmailPublisher publisher;
  27. private BuildListener listener;
  28. private AbstractBuild<?, ?> build;
  29. @Rule
  30. public JenkinsRule j = new JenkinsRule() {
  31. @Override
  32. public void before() throws Throwable {
  33. super.before();
  34. listener = new StreamBuildListener(System.out);
  35. publisher = new ExtendedEmailPublisher();
  36. publisher.defaultContent = "For only 10 easy payment of $69.99 , AWESOME-O 4000 can be yours!";
  37. publisher.defaultSubject = "How would you like your very own AWESOME-O 4000?";
  38. publisher.recipientList = "ashlux@gmail.com";
  39. Field f = ExtendedEmailPublisherDescriptor.class.getDeclaredField("defaultBody");
  40. f.setAccessible(true);
  41. f.set(publisher.getDescriptor(), "Give me $4000 and I'll mail you a check for $40,000!");
  42. f = ExtendedEmailPublisherDescriptor.class.getDeclaredField("defaultSubject");
  43. f.setAccessible(true);
  44. f.set(publisher.getDescriptor(), "Nigerian needs your help!");
  45. f = ExtendedEmailPublisherDescriptor.class.getDeclaredField("recipientList");
  46. f.setAccessible(true);
  47. f.set(publisher.getDescriptor(), "ashlux@gmail.com");
  48. build = mock(AbstractBuild.class);
  49. when(build.getEnvironment(listener)).thenReturn(new EnvVars());
  50. }
  51. };
  52. @Test
  53. public void testTransformText_shouldExpand_$PROJECT_DEFAULT_CONTENT()
  54. throws IOException, InterruptedException {
  55. assertEquals(publisher.defaultContent, ContentBuilder.transformText("$PROJECT_DEFAULT_CONTENT", publisher,
  56. build, j.createLocalLauncher(), listener));
  57. assertEquals(publisher.defaultContent, ContentBuilder.transformText("${PROJECT_DEFAULT_CONTENT}", publisher,
  58. build, j.createLocalLauncher(), listener));
  59. }
  60. @Test
  61. public void testTransformText_shouldExpand_$PROJECT_DEFAULT_SUBJECT()
  62. throws IOException, InterruptedException {
  63. assertEquals(publisher.defaultSubject, ContentBuilder.transformText("$PROJECT_DEFAULT_SUBJECT", publisher,
  64. build, listener));
  65. assertEquals(publisher.defaultSubject, ContentBuilder.transformText("${PROJECT_DEFAULT_SUBJECT}", publisher,
  66. build, listener));
  67. }
  68. @Test
  69. public void testTransformText_shouldExpand_$DEFAULT_CONTENT()
  70. throws IOException, InterruptedException {
  71. assertEquals(publisher.getDescriptor().getDefaultBody(),
  72. ContentBuilder.transformText("$DEFAULT_CONTENT", publisher,
  73. build, listener));
  74. assertEquals(publisher.getDescriptor().getDefaultBody(),
  75. ContentBuilder.transformText("${DEFAULT_CONTENT}", publisher,
  76. build, listener));
  77. }
  78. @Test
  79. public void testTransformText_shouldExpand_$DEFAULT_SUBJECT()
  80. throws IOException, InterruptedException {
  81. assertEquals(publisher.getDescriptor().getDefaultSubject(),
  82. ContentBuilder.transformText("$DEFAULT_SUBJECT", publisher,
  83. build, listener));
  84. assertEquals(publisher.getDescriptor().getDefaultSubject(),
  85. ContentBuilder.transformText("${DEFAULT_SUBJECT}", publisher,
  86. build, listener));
  87. }
  88. @Test
  89. public void testTransformText_shouldExpand_$DEFAULT_RECIPIENT_LIST()
  90. throws IOException, InterruptedException {
  91. assertEquals(publisher.getDescriptor().getDefaultRecipients(),
  92. ContentBuilder.transformText("$DEFAULT_RECIPIENTS", publisher,
  93. build, listener));
  94. assertEquals(publisher.getDescriptor().getDefaultRecipients(),
  95. ContentBuilder.transformText("${DEFAULT_RECIPIENTS}", publisher,
  96. build, listener));
  97. }
  98. @Test
  99. public void testTransformText_shouldExpand_$DEFAULT_PRESEND_SCRIPT()
  100. throws IOException, InterruptedException {
  101. assertEquals(publisher.getDescriptor().getDefaultPresendScript(),
  102. ContentBuilder.transformText("$DEFAULT_PRESEND_SCRIPT", publisher,
  103. build, listener));
  104. assertEquals(publisher.getDescriptor().getDefaultPresendScript(),
  105. ContentBuilder.transformText("${DEFAULT_PRESEND_SCRIPT}", publisher,
  106. build, listener));
  107. }
  108. @Test
  109. public void testTransformText_shouldExpand_$DEFAULT_POSTSEND_SCRIPT()
  110. throws IOException, InterruptedException {
  111. assertEquals(publisher.getDescriptor().getDefaultPostsendScript(),
  112. ContentBuilder.transformText("$DEFAULT_POSTSEND_SCRIPT", publisher,
  113. build, listener));
  114. assertEquals(publisher.getDescriptor().getDefaultPostsendScript(),
  115. ContentBuilder.transformText("${DEFAULT_POSTSEND_SCRIPT}", publisher,
  116. build, listener));
  117. }
  118. @Test
  119. public void testTransformText_noNPEWithNullDefaultSubjectBody() throws NoSuchFieldException, IllegalAccessException {
  120. Field f = ExtendedEmailPublisherDescriptor.class.getDeclaredField("defaultBody");
  121. f.setAccessible(true);
  122. f.set(publisher.getDescriptor(), null);
  123. f = ExtendedEmailPublisherDescriptor.class.getDeclaredField("defaultSubject");
  124. f.setAccessible(true);
  125. f.set(publisher.getDescriptor(), null);
  126. assertEquals("", ContentBuilder.transformText("$DEFAULT_SUBJECT", publisher, build, listener));
  127. assertEquals("", ContentBuilder.transformText("$DEFAULT_CONTENT", publisher, build, listener));
  128. }
  129. @Test
  130. public void testEscapedToken() throws IOException, InterruptedException {
  131. build = mock(AbstractBuild.class);
  132. EnvVars testVars = new EnvVars();
  133. testVars.put("FOO", "BAR");
  134. when(build.getEnvironment(listener)).thenReturn(testVars);
  135. assertEquals("\\BAR", ContentBuilder.transformText("\\${ENV, var=\"FOO\"}", publisher, build, listener));
  136. }
  137. @Test
  138. public void testRuntimeMacro() throws IOException, InterruptedException {
  139. RuntimeContent content = new RuntimeContent("Hello, world");
  140. assertEquals("Hello, world", ContentBuilder.transformText("${RUNTIME}", new ExtendedEmailPublisherContext(publisher, build, j.createLocalLauncher(), listener), Collections.singletonList((TokenMacro)content)));
  141. }
  142. public class RuntimeContent extends TokenMacro {
  143. public static final String MACRO_NAME = "RUNTIME";
  144. private final String replacement;
  145. public RuntimeContent(String replacement) {
  146. this.replacement = replacement;
  147. }
  148. @Override
  149. public boolean acceptsMacroName(String name) {
  150. return name.equals(MACRO_NAME);
  151. }
  152. @Override
  153. public String evaluate(AbstractBuild<?, ?> ab, TaskListener tl, String string, Map<String, String> map, ListMultimap<String, String> lm) throws MacroEvaluationException, IOException, InterruptedException {
  154. return replacement;
  155. }
  156. }
  157. }