Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 17 additions & 26 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@ plugins {
id 'io.spring.dependency-management' version '1.1.7'
id 'java'
id 'jacoco'
id "com.github.node-gradle.node" version "2.2.1"
id "com.github.node-gradle.node" version "7.1.0"
id "org.openapi.generator" version "7.16.0"
id "org.springframework.boot" version "3.4.2" apply false
id "org.springframework.boot" version "${springBootVersion}" apply false
id 'com.gradleup.shadow' version '9.3.1'
}

import org.openapitools.generator.gradle.plugin.tasks.GenerateTask
Expand All @@ -19,33 +20,24 @@ apply from: scriptsUrl + '/release-fat.gradle'
apply from: scriptsUrl + '/signing.gradle'

repositories {
mavenCentral { url "https://repo1.maven.org/maven2" }
maven { url "https://packages.atlassian.com/maven/repository/public" }

if (!releaseMode) {
maven { url 'https://jitpack.io' }
}
mavenCentral { url = "https://repo1.maven.org/maven2" }
maven { url = 'https://jitpack.io' }
}

dependencyManagement {
imports {
mavenBom(releaseMode ? 'com.epam.reportportal:commons-bom:5.14.3' : 'com.epam.reportportal:commons-bom:5.14.3')
mavenBom(releaseMode ? 'com.epam.reportportal:commons-bom:5.15.1' : 'com.epam.reportportal:commons-bom:5.15.1')
}
}
ext['spring-boot.version'] = "${springBootVersion}"

dependencies {
// ALL new dependencies should be included in shadowJar plugin!
// transitive dependencies may be required as well. could be checked in runtime only!
if (releaseMode) {
implementation 'com.epam.reportportal:commons-dao'
implementation 'com.epam.reportportal:plugin-api'
annotationProcessor 'com.epam.reportportal:plugin-api'
} else {
implementation 'com.github.reportportal:commons-dao:6298e53'
implementation 'com.github.reportportal:plugin-api:8cd6958'
annotationProcessor 'com.github.reportportal:plugin-api:8cd6958'
}
implementation 'com.github.reportportal:commons-dao:5.15.1'
implementation 'com.github.reportportal:plugin-api:5.15.0'
annotationProcessor 'com.github.reportportal:plugin-api:5.15.0'


implementation("org.apache.httpcomponents.client5:httpclient5:5.4.2") // supports gzip encoding
implementation "org.hibernate.validator:hibernate-validator:8.0.2.Final"
Expand All @@ -59,15 +51,16 @@ dependencies {
testAnnotationProcessor "org.projectlombok:lombok:${lombokVersion}"

testImplementation('org.junit.jupiter:junit-jupiter:5.11.4')
testImplementation "org.mockito:mockito-junit-jupiter:5.14.2"
testImplementation "org.mockito:mockito-junit-jupiter:5.21.0"
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'

}

sourceSets {
main {
java {
srcDirs "$buildDir/generated/src/main/java"
exclude("$buildDir/generated/src/main/java/com/epam/reportportal/api/jira/MyselfApi.java")
srcDirs layout.buildDirectory.dir("generated/src/main/java").get().asFile.path
exclude("${layout.buildDirectory.dir("generated/src/main/java").get().asFile.path}/com/epam/reportportal/api/jira/MyselfApi.java")
}
}
}
Expand All @@ -76,7 +69,7 @@ sourceSets {
tasks.register('generateJiraApi', GenerateTask) {
generatorName.set("java")
inputSpec.set("$rootDir/src/main/resources/openapi/swagger-v3.v3.json")
outputDir.set("$buildDir/generated")
outputDir.set(layout.buildDirectory.dir("generated").get().asFile.path)
configFile.set("$rootDir/src/main/resources/openapi/config.json")
ignoreFileOverride = "${projectDir.path}/.openapi-generator-ignore"
skipOverwrite.set(true)
Expand All @@ -93,9 +86,7 @@ test {

build.dependsOn jacocoTestReport

artifacts {
archives shadowJar
}
assemble.dependsOn shadowJar

sourceSets {
main {
Expand Down Expand Up @@ -135,7 +126,7 @@ shadowJar {
into("/resources")
}
configurations = [project.configurations.compileClasspath]
zip64 true
zip64 = true
dependencies {
include(dependency("jakarta.ws.rs:jakarta.ws.rs-api:.*"))
include(dependency("org.apache.tomcat:tomcat-annotations-api:.*"))
Expand Down
4 changes: 2 additions & 2 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
version=5.13.8
version=5.13.9
description=EPAM Report Portal. Cloud Jira plugin
pluginId = JIRA Cloud

springBootVersion=3.4.2
springBootVersion=3.4.12
lombokVersion=1.18.36
Binary file modified gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.1-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down
2 changes: 1 addition & 1 deletion project-properties.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,5 @@ project.ext {
publishRepo = "https://maven.pkg.github.com/reportportal/plugin-bts-jira-cloud"
dependencyRepos = ["plugin-api", "commons-bom"]
releaseMode = project.hasProperty("releaseMode")
pluginsDir = "$buildDir/plugins"
pluginsDir = layout.buildDirectory.dir("plugins").get().asFile.path
}
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,8 @@ public static IssueUpdateDetails toIssueInput(JiraRestClient client, Project jir

ProjectIssueCreateMetadata project = issueCreateMetadata.getProjects().get(0);
BusinessRule.expect(project, Predicates.notNull())
.verify(ErrorType.UNABLE_INTERACT_WITH_INTEGRATION, String.format("Project %s not found", jiraProject.getKey()));
.verify(ErrorType.UNABLE_INTERACT_WITH_INTEGRATION,
String.format("Project %s not found", jiraProject.getKey()));

List<IssueTypeIssueCreateMetadata> cimIssueType = project.getIssuetypes();

Expand All @@ -117,7 +118,8 @@ public static IssueUpdateDetails toIssueInput(JiraRestClient client, Project jir

// Skip issuetype and project fields cause got them in
// issueInputBuilder already
if (one.getId().equalsIgnoreCase(IssueField.ISSUE_TYPE_FIELD.value) || one.getId().equalsIgnoreCase(IssueField.PROJECT_FIELD.value)) {
if (one.getId().equalsIgnoreCase(IssueField.ISSUE_TYPE_FIELD.value)
|| one.getId().equalsIgnoreCase(IssueField.PROJECT_FIELD.value)) {
continue;
}

Expand Down Expand Up @@ -182,9 +184,7 @@ public static IssueUpdateDetails toIssueInput(JiraRestClient client, Project jir
}
} else {
if (one.getFieldType().equalsIgnoreCase(IssueFieldType.ARRAY.getName())) {
List<Object> arrayOfValues = new ArrayList<>();
one.getValue().forEach(value -> arrayOfValues.add(Map.entry("value", value)));
issueUpdateDetails.putFieldsItem(one.getId(), arrayOfValues);
issueUpdateDetails.putFieldsItem(one.getId(), one.getValue());
} else if (one.getFieldType().equalsIgnoreCase(IssueFieldType.NUMBER.getName())) {
issueUpdateDetails.putFieldsItem(one.getId(), Long.valueOf(one.getValue().get(0)));
} else if (one.getFieldType().equalsIgnoreCase(IssueFieldType.USER.getName())) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,32 +21,36 @@
import static com.epam.reportportal.extension.jira.command.utils.CloudJiraProperties.URL;
import static org.junit.jupiter.api.Assertions.assertFalse;

import com.epam.reportportal.extension.jira.utils.SampleData.WorkType;
import com.epam.reportportal.model.externalsystem.PostFormField;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import org.junit.jupiter.params.provider.EnumSource;

@Slf4j
class GetIssueFieldsCommandTest extends BaseCommandTest {

@ParameterizedTest
@CsvSource(value = {
"Epic"
})
void getIssueFields(String issueType) {
@EnumSource(value = WorkType.class)
void getIssueFields(WorkType workType) throws JsonProcessingException {
if (disabled()) {
return;
}

Map<String, Object> params = new HashMap<>(JIRA_COMMAND_PARAMS);
params.put(PROJECT.getName(), PROJECT.getParam(INTEGRATION.getParams()));
params.put(URL.getName(), URL.getParam(INTEGRATION.getParams()));
params.put(ISSUE_TYPE, issueType);
params.put(ISSUE_TYPE, workType.name());

var command = new GetIssueFieldsCommand(projectRepository, cloudJiraClientProvider);
List<PostFormField> response = command.invokeCommand(INTEGRATION, params);

log.info(new ObjectMapper().writerWithDefaultPrettyPrinter().writeValueAsString(response));
assertFalse(response.isEmpty());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
import static com.epam.reportportal.extension.jira.command.GetIssueFieldsCommand.ISSUE_TYPE;
import static com.epam.reportportal.extension.jira.command.utils.CloudJiraProperties.PROJECT;
import static com.epam.reportportal.extension.jira.command.utils.CloudJiraProperties.URL;
import static com.epam.reportportal.extension.jira.utils.SampleData.BUG;
import static com.epam.reportportal.extension.jira.utils.SampleData.getSample;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
Expand All @@ -29,6 +29,7 @@
import static org.mockito.Mockito.when;

import com.epam.reportportal.extension.jira.command.utils.JIRATicketDescriptionService;
import com.epam.reportportal.extension.jira.utils.SampleData.WorkType;
import com.epam.reportportal.extension.util.RequestEntityConverter;
import com.epam.reportportal.model.externalsystem.PostTicketRQ;
import com.epam.reportportal.model.externalsystem.Ticket;
Expand All @@ -43,7 +44,7 @@
import java.util.Optional;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import org.junit.jupiter.params.provider.EnumSource;
import org.mockito.Mock;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.web.client.RestTemplate;
Expand All @@ -62,23 +63,21 @@ class PostTicketCommandTest extends BaseCommandTest {
LogRepository logRepository;

@ParameterizedTest
@CsvSource(value = {
"Story"
})
void postTicketCommand(String issueType) throws JsonProcessingException {
@EnumSource(WorkType.class)
void postTicketCommand(WorkType issueType) throws JsonProcessingException {
if (disabled()) {
return;
}
TestItem testItem = new TestItem();
when(itemRepository.findById(anyLong())).thenReturn(Optional.of(testItem));

PostTicketRQ entity = objectMapper.readValue(BUG, PostTicketRQ.class);
PostTicketRQ postTicketRQ = objectMapper.readValue(getSample(issueType), PostTicketRQ.class);

Map<String, Object> params = new HashMap<>(JIRA_COMMAND_PARAMS);
params.put(PROJECT.getName(), PROJECT.getParam(INTEGRATION.getParams()));
params.put(URL.getName(), URL.getParam(INTEGRATION.getParams()));
params.put(ISSUE_TYPE, issueType);
params.put("entity", entity);
params.put("entity", postTicketRQ);

lenient().when(dataStoreService.load(anyString()))
.thenReturn(Optional.of(getClass().getClassLoader().getResourceAsStream("attachment.txt")));
Expand Down
Loading
Loading