Page History
...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
import com.atlassian.jira.issue.Issue import com.atlassian.jira.issue.link.IssueLinkManager import com.atlassian.jira.issue.link.IssueLinkType import com.atlassian.jira.issue.link.IssueLinkTypeManager import com.atlassian.jira.ComponentManager import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.jql.builder.JqlQueryBuilder import com.atlassian.jira.user.util.UserUtil import com.atlassian.jira.user.util.UserManager; import com.atlassian.jira.bc.issue.IssueService import com.atlassian.jira.bc.issue.search.SearchService import com.atlassian.jira.issue.search.SearchProvider import com.atlassian.jira.issue.search.SearchResults import com.atlassian.jira.web.bean.PagerFilter; import com.atlassian.jira.issue.MutableIssue import com.atlassian.jira.user.UserPropertyManager import com.atlassian.jira.propertyset.JiraPropertySetFactory; import com.google.common.collect.ImmutableMap; import com.opensymphony.module.propertyset.PropertySet; import com.opensymphony.module.propertyset.PropertySetManager; import com.atlassian.jira.util.BuildUtils import com.atlassian.jira.util.BuildUtilsInfo import com.atlassian.jira.util.BuildUtilsInfoImpl import com.atlassian.plugin.PluginAccessor import com.atlassian.plugin.PluginManager import com.atlassian.jira.bc.license.JiraLicenseService import com.atlassian.jira.bc.license.JiraLicenseServiceImpl import org.apache.log4j.Level import org.apache.log4j.Logger import com.atlassian.jira.issue.IssueManager import org.ofbiz.core.entity.GenericValue import com.atlassian.jira.ComponentManager import com.atlassian.jira.event.type.EventDispatchOption import groovy.json.JsonOutput import groovy.transform.BaseScript import groovy.json.JsonSlurper; import groovy.json.StreamingJsonBuilder; import javax.ws.rs.core.MultivaluedMap import javax.ws.rs.core.Response import com.atlassian.jira.issue.index.IssueIndexingService import com.atlassian.jira.util.ImportUtils import com.atlassian.jira.bc.issue.IssueService import com.atlassian.jira.bc.issue.IssueService.CreateValidationResult import com.atlassian.jira.bc.issue.IssueService.IssueResult import com.atlassian.jira.user.ApplicationUser Logger.getLogger("com.onresolve").setLevel(Level.DEBUG) projectManager = ComponentAccessor.getProjectManager() componentManager = ComponentManager.getInstance() issueManager = ComponentAccessor.getIssueManager() def issueFactory = ComponentAccessor.getIssueFactory() issueService = ComponentAccessor.issueService searchService = ComponentAccessor.getComponent(SearchService.class); serviceAccount = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser() customFieldManager = ComponentAccessor.getCustomFieldManager() def subTaskManager = ComponentAccessor.getSubTaskManager() issueService = ComponentAccessor.getIssueService() def user = ComponentAccessor.jiraAuthenticationContext.getLoggedInUser() Object getIssues(jqlQuery){ // A list of GenericValues representing issues List<Issue> searchResults = null; SearchService.ParseResult parseResult = searchService.parseQuery(serviceAccount, jqlQuery); if (parseResult.isValid()) { // throws SearchException SearchResults results = searchService.search(serviceAccount, parseResult.getQuery(), PagerFilter.getUnlimitedFilter()); searchResults = results.getIssues(); return searchResults; } return [] } Object getFieldValueByName(issue,customField) { def cField = customFieldManager.getCustomFieldObjectByName(customField) def cFieldValue = issue.getCustomFieldValue(cField) return cFieldValue } Object setFieldValueByName(issue,customField,value) { def cField = customFieldManager.getCustomFieldObjectByName(customField) issue.setCustomFieldValue(cField,*value) } Object setFieldValueByNameInParameters(inputParameters,customFieldName,value) { def customField = customFieldManager.getCustomFieldObjectByName(customFieldName) inputParameters.addCustomFieldValue(customField.id, value) } boolean associateTestsToTestExecution(testExecKey,listOfTestKeys){ def jiraBaseUrl = com.atlassian.jira.component.ComponentAccessor.getApplicationProperties().getString("jira.baseurl") def endpointUrl = "${jiraBaseUrl}/rest/raven/1.0/api/testexec/${testExecKey}/test" url = new URL(endpointUrl); def body_req = [ "add": listOfTestKeys ] // you should use a specific user for this purpose username = "admin" password = "admin" def authString = "${username}:${password}".bytes.encodeBase64().toString() URLConnection connection = url.openConnection(); connection.requestMethod = "POST" connection.doOutput = true connection.addRequestProperty("Authorization", "Basic ${authString}") connection.setRequestProperty("Content-Type", "application/json;charset=UTF-8") connection.outputStream.withWriter("UTF-8") { new StreamingJsonBuilder(it, body_req) } connection.connect(); log.debug(connection.getResponseCode()) log.debug(connection.getResponseMessage()) if (connection.getResponseCode() == 200) { // OK return true; } else { // error return false; } } def project = projectManager.getProjectObjByKey("CALC") def newIssueType = ComponentAccessor.issueTypeSchemeManager.getIssueTypesForProject(project).find { it.name == "Test Execution" } def newIssue def issueInputParameters = issueService.newIssueInputParameters() issueInputParameters.with { projectId = project.id summary = "Issue created from script" issueTypeId = newIssueType.id reporterId = user.name } def jql = "project = ${project.key} and issuetype = Test and component = UI" def issues = getIssues(jql) def testKeys = issues.collect{ it.key } appUser = user.getDirectoryUser() CreateValidationResult createValidationResult = issueService.validateCreate(user, issueInputParameters) if (!createValidationResult.isValid()) { log.error "Error validating new issue"+createValidationResult.getErrorCollection() } else { IssueResult createResult = issueService.create(user, createValidationResult) newIssue = createResult.issue log.debug(newIssue.key) associateTestsToTestExecution(newIssue.key, testKeys) } |
Validate requirement before alowing to make a transition
...