PageRenderTime 41ms CodeModel.GetById 13ms RepoModel.GetById 0ms app.codeStats 0ms

/src/main/resources/com/onresolve/jira/groovy/test/TestSendCustomEmail.groovy

https://bitbucket.org/sorin/jira-plugin-intellij
Groovy | 134 lines | 99 code | 28 blank | 7 comment | 3 complexity | 2014352cdae3697a60cdff4a168bb1a2 MD5 | raw file
  1. package com.onresolve.jira.groovy.test
  2. import org.junit.Before
  3. import org.apache.log4j.Category
  4. import com.atlassian.jira.project.version.VersionManager
  5. import com.atlassian.jira.bc.project.component.ProjectComponentManager
  6. import static junit.framework.Assert.*
  7. import org.junit.Test
  8. import org.junit.After
  9. import com.onresolve.jira.groovy.canned.workflow.postfunctions.SendCustomEmail
  10. import com.atlassian.jira.issue.watchers.WatcherManager
  11. import com.atlassian.jira.user.util.UserUtil
  12. import com.atlassian.jira.ComponentManager
  13. import com.atlassian.jira.config.properties.APKeys
  14. import com.atlassian.jira.config.properties.ApplicationProperties
  15. import com.atlassian.crowd.embedded.api.Group
  16. import com.atlassian.jira.security.groups.GroupManager
  17. import com.atlassian.jira.bc.group.GroupService
  18. import com.atlassian.jira.bc.JiraServiceContextImpl
  19. import com.atlassian.crowd.embedded.api.CrowdService
  20. import com.atlassian.crowd.embedded.impl.ImmutableGroup
  21. import com.atlassian.jira.issue.fields.CustomField
  22. class TestSendCustomEmail extends CustomFieldBaseTests {
  23. Category log = Category.getInstance(this.class)
  24. ApplicationProperties applicationProperties = ComponentManager.getInstance().getApplicationProperties()
  25. ComponentManager componentManager = ComponentManager.getInstance()
  26. UserUtil userUtil = ComponentManager.getInstance().getUserUtil()
  27. GroupManager groupManager = ComponentManager.getComponentInstanceOfType(GroupManager.class)
  28. GroupService groupService = ComponentManager.getComponentInstanceOfType(GroupService.class)
  29. CrowdService crowdService = ComponentManager.getInstance().getCrowdService()
  30. def CustomField cf
  31. TestSendCustomEmail() {
  32. // def gcl = this.class.classLoader.parent
  33. // gcl.clearCache()
  34. }
  35. @Before
  36. public void setUp() {
  37. tearDown()
  38. assertNotNull(project)
  39. cf = createCustomField("testTextField", "com.atlassian.jira.plugin.system.customfieldtypes:textfield",
  40. "com.atlassian.jira.plugin.system.customfieldtypes:textsearcher")
  41. issue = componentManager.getIssueFactory().getIssue()
  42. issue.setProject(project.getGenericValue())
  43. issue.setSummary "my summary"
  44. issue.setReporterId "admin"
  45. issue.setIssueType issueType.getGenericValue()
  46. issue.setPriorityId('2')
  47. ProjectComponentManager projectComponentManager = componentManager.getProjectComponentManager()
  48. VersionManager versionManager = componentManager.getVersionManager()
  49. issue.setComponents(projectComponentManager.findAllForProject(project.id).collect{it.genericValue})
  50. issue.setAffectedVersions(versionManager.getVersions(project.id))
  51. issue.setCustomFieldValue(cf, "jamie.echlin@gmail.com")
  52. issueManager.createIssue(adminUser, issue);
  53. log.debug ("Created test issue $issue")
  54. }
  55. // @After
  56. public void tearDown() {
  57. deleteAllIssues();
  58. ["testTextField"].each {
  59. def cf = customFieldManager.getCustomFieldObjectByName(it)
  60. if (cf)
  61. customFieldManager.removeCustomField(cf)
  62. }
  63. }
  64. @Test
  65. public void testTemplateEngine() {
  66. Map<String, Object> inParams = [
  67. issue: issue,
  68. (SendCustomEmail.FIELD_EMAIL_TEMPLATE) : 'key: ${issue.key}',
  69. (SendCustomEmail.FIELD_PREVIEW_ISSUE) : issue.key,
  70. ] as Map<String, Object>
  71. SendCustomEmail emailer = SendCustomEmail.class.newInstance()
  72. assertEquals("key: ${issue.key}", emailer.mergeEmailTemplate(inParams, 'key: ${issue.key}', true).toString())
  73. // check the base url
  74. assertEquals(applicationProperties.getString(APKeys.JIRA_BASEURL), emailer.mergeEmailTemplate(inParams, '${baseUrl}', true).toString())
  75. }
  76. @Test
  77. public void testCustomFields() {
  78. SendCustomEmail emailer = SendCustomEmail.class.newInstance()
  79. assert ["jamie.echlin@gmail.com"] == emailer.getAddressesFromFields(issue, cf.id).toList()
  80. }
  81. @Test
  82. public void testParseToList() {
  83. SendCustomEmail emailer = SendCustomEmail.class.newInstance()
  84. // test with empty string
  85. assertEquals([], emailer.getAddressesFromFields(issue, "").toList())
  86. assertEquals([issue.reporter.emailAddress], emailer.getAddressesFromFields(issue, "reporter").toList())
  87. WatcherManager watcherManager = componentManager.getWatcherManager()
  88. watcherManager.startWatching(issue.reporter, issue.getGenericValue())
  89. assertEquals([issue.reporter.emailAddress], emailer.getAddressesFromFields(issue, "watchers").toList())
  90. // test role:
  91. assertEquals(new HashSet(userUtil.getUsersInGroupNames(["jira-users"])*.emailAddress),
  92. new HashSet (emailer.getAddressesFromFields(issue, "reporter role:Users").toList()))
  93. // test group:
  94. assertEquals(new HashSet(userUtil.getUsersInGroupNames(["jira-users"])*.emailAddress),
  95. new HashSet (emailer.getAddressesFromFields(issue, "reporter group:jira-users").toList()))
  96. String groupName = "a b"
  97. JiraServiceContextImpl serviceContext = new JiraServiceContextImpl(componentManager.getJiraAuthenticationContext().getUser());
  98. if (groupManager.groupExists(groupName)) {
  99. groupService.delete(serviceContext, groupName, "jira-users")
  100. }
  101. Group groupWithSpaces = crowdService.addGroup(new ImmutableGroup(groupName))
  102. groupManager.addUserToGroup(issue.reporter, groupWithSpaces)
  103. assertEquals([issue.reporter.emailAddress], emailer.getAddressesFromFields(issue, "group:\"a b\"").toList())
  104. crowdService.removeGroup(groupWithSpaces)
  105. }
  106. }