/src/main/resources/com/onresolve/jira/groovy/test/TestSendCustomEmail.groovy
Groovy | 134 lines | 99 code | 28 blank | 7 comment | 3 complexity | 2014352cdae3697a60cdff4a168bb1a2 MD5 | raw file
- package com.onresolve.jira.groovy.test
-
- import org.junit.Before
- import org.apache.log4j.Category
- import com.atlassian.jira.project.version.VersionManager
- import com.atlassian.jira.bc.project.component.ProjectComponentManager
- import static junit.framework.Assert.*
- import org.junit.Test
- import org.junit.After
- import com.onresolve.jira.groovy.canned.workflow.postfunctions.SendCustomEmail
- import com.atlassian.jira.issue.watchers.WatcherManager
- import com.atlassian.jira.user.util.UserUtil
- import com.atlassian.jira.ComponentManager
- import com.atlassian.jira.config.properties.APKeys
- import com.atlassian.jira.config.properties.ApplicationProperties
- import com.atlassian.crowd.embedded.api.Group
- import com.atlassian.jira.security.groups.GroupManager
- import com.atlassian.jira.bc.group.GroupService
- import com.atlassian.jira.bc.JiraServiceContextImpl
- import com.atlassian.crowd.embedded.api.CrowdService
- import com.atlassian.crowd.embedded.impl.ImmutableGroup
- import com.atlassian.jira.issue.fields.CustomField
-
- class TestSendCustomEmail extends CustomFieldBaseTests {
-
- Category log = Category.getInstance(this.class)
- ApplicationProperties applicationProperties = ComponentManager.getInstance().getApplicationProperties()
- ComponentManager componentManager = ComponentManager.getInstance()
- UserUtil userUtil = ComponentManager.getInstance().getUserUtil()
- GroupManager groupManager = ComponentManager.getComponentInstanceOfType(GroupManager.class)
- GroupService groupService = ComponentManager.getComponentInstanceOfType(GroupService.class)
- CrowdService crowdService = ComponentManager.getInstance().getCrowdService()
- def CustomField cf
-
- TestSendCustomEmail() {
- // def gcl = this.class.classLoader.parent
- // gcl.clearCache()
- }
-
- @Before
- public void setUp() {
- tearDown()
-
- assertNotNull(project)
-
- cf = createCustomField("testTextField", "com.atlassian.jira.plugin.system.customfieldtypes:textfield",
- "com.atlassian.jira.plugin.system.customfieldtypes:textsearcher")
-
- issue = componentManager.getIssueFactory().getIssue()
- issue.setProject(project.getGenericValue())
-
- issue.setSummary "my summary"
- issue.setReporterId "admin"
- issue.setIssueType issueType.getGenericValue()
- issue.setPriorityId('2')
- ProjectComponentManager projectComponentManager = componentManager.getProjectComponentManager()
- VersionManager versionManager = componentManager.getVersionManager()
-
- issue.setComponents(projectComponentManager.findAllForProject(project.id).collect{it.genericValue})
- issue.setAffectedVersions(versionManager.getVersions(project.id))
- issue.setCustomFieldValue(cf, "jamie.echlin@gmail.com")
-
- issueManager.createIssue(adminUser, issue);
- log.debug ("Created test issue $issue")
- }
-
- // @After
- public void tearDown() {
- deleteAllIssues();
- ["testTextField"].each {
- def cf = customFieldManager.getCustomFieldObjectByName(it)
- if (cf)
- customFieldManager.removeCustomField(cf)
- }
- }
-
- @Test
- public void testTemplateEngine() {
- Map<String, Object> inParams = [
- issue: issue,
- (SendCustomEmail.FIELD_EMAIL_TEMPLATE) : 'key: ${issue.key}',
- (SendCustomEmail.FIELD_PREVIEW_ISSUE) : issue.key,
- ] as Map<String, Object>
-
- SendCustomEmail emailer = SendCustomEmail.class.newInstance()
- assertEquals("key: ${issue.key}", emailer.mergeEmailTemplate(inParams, 'key: ${issue.key}', true).toString())
-
- // check the base url
- assertEquals(applicationProperties.getString(APKeys.JIRA_BASEURL), emailer.mergeEmailTemplate(inParams, '${baseUrl}', true).toString())
- }
-
- @Test
- public void testCustomFields() {
- SendCustomEmail emailer = SendCustomEmail.class.newInstance()
- assert ["jamie.echlin@gmail.com"] == emailer.getAddressesFromFields(issue, cf.id).toList()
- }
-
- @Test
- public void testParseToList() {
- SendCustomEmail emailer = SendCustomEmail.class.newInstance()
-
- // test with empty string
- assertEquals([], emailer.getAddressesFromFields(issue, "").toList())
-
- assertEquals([issue.reporter.emailAddress], emailer.getAddressesFromFields(issue, "reporter").toList())
-
- WatcherManager watcherManager = componentManager.getWatcherManager()
- watcherManager.startWatching(issue.reporter, issue.getGenericValue())
- assertEquals([issue.reporter.emailAddress], emailer.getAddressesFromFields(issue, "watchers").toList())
-
-
- // test role:
- assertEquals(new HashSet(userUtil.getUsersInGroupNames(["jira-users"])*.emailAddress),
- new HashSet (emailer.getAddressesFromFields(issue, "reporter role:Users").toList()))
-
- // test group:
- assertEquals(new HashSet(userUtil.getUsersInGroupNames(["jira-users"])*.emailAddress),
- new HashSet (emailer.getAddressesFromFields(issue, "reporter group:jira-users").toList()))
-
- String groupName = "a b"
- JiraServiceContextImpl serviceContext = new JiraServiceContextImpl(componentManager.getJiraAuthenticationContext().getUser());
-
- if (groupManager.groupExists(groupName)) {
- groupService.delete(serviceContext, groupName, "jira-users")
- }
-
- Group groupWithSpaces = crowdService.addGroup(new ImmutableGroup(groupName))
- groupManager.addUserToGroup(issue.reporter, groupWithSpaces)
-
- assertEquals([issue.reporter.emailAddress], emailer.getAddressesFromFields(issue, "group:\"a b\"").toList())
-
- crowdService.removeGroup(groupWithSpaces)
- }
- }