diff --git a/backend/src-common/src/main/java/org/eclipse/sw360/datahandler/db/ComponentDatabaseHandler.java b/backend/src-common/src/main/java/org/eclipse/sw360/datahandler/db/ComponentDatabaseHandler.java index 9ae1156c06..8c6b5e0ace 100644 --- a/backend/src-common/src/main/java/org/eclipse/sw360/datahandler/db/ComponentDatabaseHandler.java +++ b/backend/src-common/src/main/java/org/eclipse/sw360/datahandler/db/ComponentDatabaseHandler.java @@ -54,9 +54,12 @@ import org.eclipse.sw360.datahandler.thrift.vulnerabilities.ReleaseVulnerabilityRelation; import org.eclipse.sw360.datahandler.thrift.vulnerabilities.VulnerabilityCheckStatus; import org.eclipse.sw360.datahandler.thrift.vulnerabilities.VulnerabilityService; +import org.eclipse.sw360.exporter.ComponentExporter; +import org.eclipse.sw360.exporter.ProjectExporter; import org.eclipse.sw360.mail.MailConstants; import org.eclipse.sw360.mail.MailUtil; import org.apache.logging.log4j.Logger; +import org.apache.commons.io.IOUtils; import org.apache.http.HttpStatus; import org.apache.logging.log4j.LogManager; import org.apache.thrift.TException; @@ -69,6 +72,7 @@ import org.spdx.library.InvalidSPDXAnalysisException; import java.io.InputStreamReader; import java.net.MalformedURLException; +import java.nio.ByteBuffer; import java.util.*; import java.util.concurrent.TimeUnit; import java.util.function.Function; @@ -2828,4 +2832,44 @@ public Map getReleasesName(String releases) { } return releaseNames; } + + public String getComponentReportInEmail(User user,boolean extendedByReleases) throws TException { + try { + List componentlist = getRecentComponentsSummary(-1, user); + ComponentExporter exporter = getComponentExporterObject(componentlist,user, extendedByReleases); + return exporter.makeExcelExportForProject(componentlist, user); + }catch (IOException e) { + throw new SW360Exception(e.getMessage()); + } + } + + private ComponentExporter getComponentExporterObject(List componentList ,User user, + boolean extendedByRelease) throws SW360Exception { + ThriftClients thriftClients = new ThriftClients(); + return new ComponentExporter(thriftClients.makeComponentClient(), componentList, user,extendedByRelease); + } + + public ByteBuffer downloadExcel(User user,boolean extendedByReleases,String token) throws SW360Exception { + try { + ThriftClients thriftClients = new ThriftClients(); + ComponentExporter exporter = new ComponentExporter(thriftClients.makeComponentClient(), user, + extendedByReleases); + InputStream stream = exporter.downloadExcelSheet(token); + return ByteBuffer.wrap(IOUtils.toByteArray(stream)); + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } + + public ByteBuffer getComponentReportDataStream(User user, boolean extendedByReleases) throws TException{ + try { + List componentlist = getRecentComponentsSummary(-1, user); + ComponentExporter exporter = getComponentExporterObject(componentlist, user, extendedByReleases); + InputStream stream = exporter.makeExcelExport(componentlist); + return ByteBuffer.wrap(IOUtils.toByteArray(stream)); + }catch (IOException e) { + throw new SW360Exception(e.getMessage()); + } + } } diff --git a/backend/src-common/src/main/java/org/eclipse/sw360/datahandler/db/ProjectDatabaseHandler.java b/backend/src-common/src/main/java/org/eclipse/sw360/datahandler/db/ProjectDatabaseHandler.java index 650bdfaa80..cec9696cc4 100644 --- a/backend/src-common/src/main/java/org/eclipse/sw360/datahandler/db/ProjectDatabaseHandler.java +++ b/backend/src-common/src/main/java/org/eclipse/sw360/datahandler/db/ProjectDatabaseHandler.java @@ -88,6 +88,7 @@ */ public class ProjectDatabaseHandler extends AttachmentAwareDatabaseHandler { + private static final String PROJECTS = "projects"; private static final Logger log = LogManager.getLogger(ProjectDatabaseHandler.class); private static final int DELETION_SANITY_CHECK_THRESHOLD = 5; private static final String DUMMY_NEW_PROJECT_ID = "newproject"; diff --git a/backend/src/src-components/src/main/java/org/eclipse/sw360/components/ComponentHandler.java b/backend/src/src-components/src/main/java/org/eclipse/sw360/components/ComponentHandler.java index ee928e94d7..a7cb78fa0c 100644 --- a/backend/src/src-components/src/main/java/org/eclipse/sw360/components/ComponentHandler.java +++ b/backend/src/src-components/src/main/java/org/eclipse/sw360/components/ComponentHandler.java @@ -26,6 +26,7 @@ import com.cloudant.client.api.CloudantClient; import java.io.IOException; +import java.nio.ByteBuffer; import java.util.List; import java.util.Map; import java.util.Set; @@ -711,4 +712,19 @@ public Map> getRecentComponentsSummaryWithPagina public void sendExportSpreadsheetSuccessMail(String url, String recepient) throws TException { handler.sendExportSpreadsheetSuccessMail(url, recepient); } + + @Override + public ByteBuffer downloadExcel(User user, boolean extendedByReleases, String token) throws TException { + return handler.downloadExcel(user,extendedByReleases,token); + } + + @Override + public ByteBuffer getComponentReportDataStream(User user, boolean extendedByReleases) throws TException { + return handler.getComponentReportDataStream(user,extendedByReleases); + } + + @Override + public String getComponentReportInEmail(User user, boolean extendedByReleases) throws TException { + return handler.getComponentReportInEmail(user,extendedByReleases); + } } diff --git a/libraries/datahandler/src/main/thrift/components.thrift b/libraries/datahandler/src/main/thrift/components.thrift index e411f5886b..584a3b83e0 100644 --- a/libraries/datahandler/src/main/thrift/components.thrift +++ b/libraries/datahandler/src/main/thrift/components.thrift @@ -904,4 +904,16 @@ service ComponentService { * Send email to the user once spreadsheet export completed */ void sendExportSpreadsheetSuccessMail(1: string url, 2: string userEmail); + /* + * download api + */ + binary downloadExcel(1:User user,2:bool extendedByReleases,3:string token) throws (1: SW360Exception exp); + /* + * get report data stream + */ + binary getComponentReportDataStream(1: User user, 2: bool extendedByReleases) throws (1: SW360Exception exp); + /* + * get component report in mail + */ + string getComponentReportInEmail(1: User user, 2: bool extendedByReleases) throws (1: SW360Exception exp); } diff --git a/rest/resource-server/src/docs/asciidoc/components.adoc b/rest/resource-server/src/docs/asciidoc/components.adoc index e8d93fd077..cf9aaf833b 100644 --- a/rest/resource-server/src/docs/asciidoc/components.adoc +++ b/rest/resource-server/src/docs/asciidoc/components.adoc @@ -375,6 +375,7 @@ include::{snippets}/should_document_get_mycomponents_components/http-response.ad ===== Links include::{snippets}/should_document_get_mycomponents_components/links.adoc[] +<<<<<<< HEAD [[resources-component-get-component-vulnerabilities]] ==== Listing component vulnerabilities @@ -491,3 +492,34 @@ include::{snippets}/should_document_import_sbom_for_component/curl-request.adoc[ ===== Example response include::{snippets}/should_document_import_sbom_for_component/http-response.adoc[] + +[[resources-components-download-report]] +==== Downloading component report + +A `GET` request help to download the components report. + +===== Request parameter +include::{snippets}/should_document_get_component_report/request-parameters.adoc[] + +===== Example request +include::{snippets}/should_document_get_component_report/curl-request.adoc[] + +===== Example response +include::{snippets}/should_document_get_component_report/http-response.adoc[] + +[[resources-components-download-report-mail_req]] +==== Downloading component report with mail request + +A `GET` request help to download the components report with mail request. + +===== Request parameter +include::{snippets}/should_document_get_component_report_with_mail_req/request-parameters.adoc[] + +===== Response structure +include::{snippets}/should_document_get_component_report_with_mail_req/response-fields.adoc[] + +===== Example request +include::{snippets}/should_document_get_component_report_with_mail_req/curl-request.adoc[] + +===== Example response +include::{snippets}/should_document_get_component_report_with_mail_req/http-response.adoc[] diff --git a/rest/resource-server/src/docs/asciidoc/projects.adoc b/rest/resource-server/src/docs/asciidoc/projects.adoc index 2f788cfd3d..bb4e25b6af 100644 --- a/rest/resource-server/src/docs/asciidoc/projects.adoc +++ b/rest/resource-server/src/docs/asciidoc/projects.adoc @@ -668,6 +668,7 @@ include::{snippets}/should_document_get_project_count/http-response.adoc[] [[resources-projects-download-report]] ==== Downloading project report +<<<<<<< HEAD A `GET` request help to download the projects report with mail request false. ===== Request parameter diff --git a/rest/resource-server/src/main/java/org/eclipse/sw360/rest/resourceserver/report/SW360ReportController.java b/rest/resource-server/src/main/java/org/eclipse/sw360/rest/resourceserver/report/SW360ReportController.java index 2bd989c026..9eb79045a6 100644 --- a/rest/resource-server/src/main/java/org/eclipse/sw360/rest/resourceserver/report/SW360ReportController.java +++ b/rest/resource-server/src/main/java/org/eclipse/sw360/rest/resourceserver/report/SW360ReportController.java @@ -40,14 +40,17 @@ @BasePathAwareController @RequiredArgsConstructor(onConstructor = @__(@Autowired)) public class SW360ReportController implements RepresentationModelProcessor{ + private static final String COMPONENTS = "components"; - public static final String REPORTS_URL = "/reports"; + private static final String PROJECTS = "projects"; + + public static final String REPORTS_URL = "/reports"; private static String CONTENT_TYPE = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; @NonNull private final RestControllerHelper restControllerHelper; - + @NonNull private final SW360ReportService sw360ReportService; @@ -59,38 +62,28 @@ public RepositoryLinksResource process(RepositoryLinksResource resource) { private List mimeTypeList = Arrays.asList("xls","xlsx"); - @RequestMapping(value = REPORTS_URL + "/myprojectreports", method = RequestMethod.GET) + @RequestMapping(value = REPORTS_URL , method = RequestMethod.GET) public void getProjectReport(@RequestParam(value = "withlinkedreleases", required = false, defaultValue = "false") boolean withLinkedReleases, @RequestParam(value = "mimetype", required = false, defaultValue = "xlsx") String mimeType, - @RequestParam(value = "mailrequest", required = false, defaultValue="false") boolean mailRequest, HttpServletRequest request, + @RequestParam(value = "mailrequest", required = false, defaultValue="false") boolean mailRequest, + @RequestParam(value = "module", required = true) String module,HttpServletRequest request, HttpServletResponse response) throws TException{ final User sw360User = restControllerHelper.getSw360UserFromAuthentication(); try { if(validateMimeType(mimeType)) { - if(mailRequest) { - StringBuffer url = request.getRequestURL(); - String uri = request.getRequestURI(); - String ctx = request.getContextPath(); - String base = url.substring(0, url.length() - uri.length() + ctx.length()) + "/"; - - String projectPath = sw360ReportService.getUploadedProjectPath(sw360User, withLinkedReleases); - - String backendURL = base + "api/reports/download?user="+sw360User.getEmail()+"&extendedByReleases="+withLinkedReleases+"&token="; - URL emailURL = new URL(backendURL+projectPath); + switch (module) { + case PROJECTS : + getProjectReports(withLinkedReleases, mailRequest, response, request,sw360User,module); + break; - if(!CommonUtils.isNullEmptyOrWhitespace(projectPath)) { - sw360ReportService.sendExportSpreadsheetSuccessMail(emailURL.toString(), sw360User.getEmail()); - } - JsonObject responseJson = new JsonObject(); - responseJson.addProperty("response", "E-mail sent succesfully to the end user."); - responseJson.addProperty("url", emailURL.toString()); - responseJson.toString(); - response.getWriter().write(responseJson.toString()); - }else { - downloadExcelReport(withLinkedReleases, response, sw360User); + case COMPONENTS : + getComponentsReports(withLinkedReleases,mailRequest, response, request, sw360User,module); + break; + default: + break; } - }else { + } else { throw new TException("Error : Mimetype either should be : xls/xlsx"); } }catch (Exception e) { @@ -98,10 +91,79 @@ public void getProjectReport(@RequestParam(value = "withlinkedreleases", require } } - private void downloadExcelReport(boolean withLinkedReleases, HttpServletResponse response, - User user) throws TException, IOException { + private void getProjectReports(boolean withLinkedReleases, boolean mailRequest, HttpServletResponse response,HttpServletRequest request, + User sw360User, String module) throws TException{ + try { + if(mailRequest) { + String base = getBaseUrl(request); + + String projectPath = sw360ReportService.getUploadedProjectPath(sw360User, withLinkedReleases); + + String backendURL = base + "api/reports/download?user="+sw360User.getEmail() + "&module=projects" +"&extendedByReleases="+withLinkedReleases+"&token="; + URL emailURL = new URL(backendURL+projectPath); + + if(!CommonUtils.isNullEmptyOrWhitespace(projectPath)) { + sw360ReportService.sendExportSpreadsheetSuccessMail(emailURL.toString(), sw360User.getEmail()); + } + JsonObject responseJson = new JsonObject(); + responseJson.addProperty("response", "E-mail sent succesfully to the end user."); + responseJson.addProperty("url", emailURL.toString()); + responseJson.toString(); + response.getWriter().write(responseJson.toString()); + }else { + downloadExcelReport(withLinkedReleases, response, sw360User,module); + } + }catch (Exception e) { + throw new TException(e.getMessage()); + } + } + + private String getBaseUrl(HttpServletRequest request) { + StringBuffer url = request.getRequestURL(); + String uri = request.getRequestURI(); + String ctx = request.getContextPath(); + return url.substring(0, url.length() - uri.length() + ctx.length()) + "/"; + } + + private void getComponentsReports(boolean withLinkedReleases, boolean mailRequest, HttpServletResponse response, + HttpServletRequest request, User sw360User, String module) throws TException{ + try { + if (mailRequest) { + String base = getBaseUrl(request); + String componentPath = sw360ReportService.getUploadedComponentPath(sw360User,withLinkedReleases); + String backendURL =base + "api/reports/download?user=" + sw360User.getEmail()+ "&module=components" + "&extendedByReleases=" + withLinkedReleases + "&token="; + URL emailURL = new URL(backendURL+componentPath); + + if (!CommonUtils.isNullEmptyOrWhitespace(componentPath)) { + sw360ReportService.sendComponentExportSpreadsheetSuccessMail(emailURL.toString(), sw360User.getEmail()); + } + JsonObject responseJson = new JsonObject(); + responseJson.addProperty("response", "E-mail sent succesfully to the end user."); + responseJson.addProperty("url", emailURL.toString()); + responseJson.toString(); + response.getWriter().write(responseJson.toString()); + } else { + downloadExcelReport(withLinkedReleases, response, sw360User,module); + } + }catch (Exception e) { + throw new TException(e.getMessage()); + } + } + + private void downloadExcelReport(boolean withLinkedReleases, HttpServletResponse response, + User user,String module) throws TException, IOException { try { - ByteBuffer buffer = sw360ReportService.getProjectBuffer(user,withLinkedReleases); + ByteBuffer buffer = null; + switch (module) { + case PROJECTS: + buffer = sw360ReportService.getProjectBuffer(user,withLinkedReleases); + break; + case COMPONENTS: + buffer = sw360ReportService.getComponentBuffer(user,withLinkedReleases); + break; + default: + break; + } if(null==buffer) { throw new TException("No data available for the user "+ user.getEmail()); } @@ -121,16 +183,29 @@ private void copyDataStreamToResponse(HttpServletResponse response, ByteBuffer b private boolean validateMimeType(String mimeType) { return mimeTypeList.contains(mimeType); } - + @RequestMapping(value = REPORTS_URL + "/download", method = RequestMethod.GET) public void downloadExcel(HttpServletRequest request,HttpServletResponse response) throws TException{ final User sw360User = restControllerHelper.getSw360UserFromAuthentication(); + String module = request.getParameter("module"); String token = request.getParameter("token"); String extendedByReleases = request.getParameter("extendedByReleases"); User user=restControllerHelper.getUserByEmail(sw360User.getEmail()); + String fileConstant="projects-%s.xlsx"; try { - ByteBuffer buffer = sw360ReportService.getReportStreamFromURl(user,Boolean.valueOf(extendedByReleases), token); - String filename = String.format("projects-%s.xlsx", SW360Utils.getCreatedOn()); + ByteBuffer buffer = null; + switch (module) { + case PROJECTS: + buffer = sw360ReportService.getReportStreamFromURl(user,Boolean.valueOf(extendedByReleases), token); + break; + case COMPONENTS: + fileConstant="components-%s.xlsx"; + buffer = sw360ReportService.getComponentReportStreamFromURl(user, Boolean.valueOf(extendedByReleases), token); + break; + default: + break; + } + String filename = String.format(fileConstant, SW360Utils.getCreatedOn()); response.setContentType(CONTENT_TYPE); response.setHeader("Content-Disposition", String.format("attachment; filename=\"%s\"", filename)); copyDataStreamToResponse(response, buffer); @@ -138,5 +213,4 @@ public void downloadExcel(HttpServletRequest request,HttpServletResponse respons throw new TException(e.getMessage()); } } - -} +} \ No newline at end of file diff --git a/rest/resource-server/src/main/java/org/eclipse/sw360/rest/resourceserver/report/SW360ReportService.java b/rest/resource-server/src/main/java/org/eclipse/sw360/rest/resourceserver/report/SW360ReportService.java index 3057c754cc..df2df8a8f0 100644 --- a/rest/resource-server/src/main/java/org/eclipse/sw360/rest/resourceserver/report/SW360ReportService.java +++ b/rest/resource-server/src/main/java/org/eclipse/sw360/rest/resourceserver/report/SW360ReportService.java @@ -9,6 +9,7 @@ import org.apache.thrift.TException; import org.eclipse.sw360.datahandler.thrift.ThriftClients; +import org.eclipse.sw360.datahandler.thrift.components.ComponentService; import org.eclipse.sw360.datahandler.thrift.projects.ProjectService; import org.eclipse.sw360.datahandler.thrift.users.User; import org.springframework.beans.factory.annotation.Autowired; @@ -21,23 +22,39 @@ public class SW360ReportService { ThriftClients thriftClients = new ThriftClients(); - ProjectService.Iface client = thriftClients.makeProjectClient(); + ProjectService.Iface projectclient = thriftClients.makeProjectClient(); + ComponentService.Iface componentclient = thriftClients.makeComponentClient(); public ByteBuffer getProjectBuffer(User user, boolean extendedByReleases) throws TException { - return client.getReportDataStream(user, extendedByReleases); + return projectclient.getReportDataStream(user, extendedByReleases); } public String getUploadedProjectPath(User user, boolean extendedByReleases) throws TException{ - return client.getReportInEmail(user, extendedByReleases); + return projectclient.getReportInEmail(user, extendedByReleases); } - + public ByteBuffer getReportStreamFromURl(User user,boolean extendedByReleases, String token) throws TException{ - return client.downloadExcel(user,extendedByReleases, token); + return projectclient.downloadExcel(user,extendedByReleases, token); } - public void sendExportSpreadsheetSuccessMail(String emailURL, String email) throws TException{ - client.sendExportSpreadsheetSuccessMail(emailURL, email); + projectclient.sendExportSpreadsheetSuccessMail(emailURL, email); + } + + public String getUploadedComponentPath(User sw360User, boolean withLinkedReleases) throws TException{ + return componentclient.getComponentReportInEmail(sw360User, withLinkedReleases); + } + + public ByteBuffer getComponentBuffer(User sw360User, boolean withLinkedReleases) throws TException{ + return componentclient.getComponentReportDataStream(sw360User, withLinkedReleases); + } + + public ByteBuffer getComponentReportStreamFromURl(User user,boolean extendedByReleases, String token) + throws TException{ + return componentclient.downloadExcel(user,extendedByReleases, token); + } + public void sendComponentExportSpreadsheetSuccessMail(String emailURL, String email) throws TException{ + componentclient.sendExportSpreadsheetSuccessMail(emailURL, email); } -} +} \ No newline at end of file diff --git a/rest/resource-server/src/test/java/org/eclipse/sw360/rest/resourceserver/restdocs/ComponentSpecTest.java b/rest/resource-server/src/test/java/org/eclipse/sw360/rest/resourceserver/restdocs/ComponentSpecTest.java index b8d24bd41b..d72d2d99dc 100644 --- a/rest/resource-server/src/test/java/org/eclipse/sw360/rest/resourceserver/restdocs/ComponentSpecTest.java +++ b/rest/resource-server/src/test/java/org/eclipse/sw360/rest/resourceserver/restdocs/ComponentSpecTest.java @@ -36,6 +36,7 @@ import org.eclipse.sw360.rest.resourceserver.TestHelper; import org.eclipse.sw360.rest.resourceserver.attachment.Sw360AttachmentService; import org.eclipse.sw360.rest.resourceserver.component.Sw360ComponentService; +import org.eclipse.sw360.rest.resourceserver.report.SW360ReportService; import org.eclipse.sw360.rest.resourceserver.user.Sw360UserService; import org.eclipse.sw360.rest.resourceserver.vulnerability.Sw360VulnerabilityService; import org.eclipse.sw360.rest.resourceserver.vendor.Sw360VendorService; @@ -56,12 +57,14 @@ import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import java.io.IOException; +import java.nio.ByteBuffer; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; import static org.mockito.BDDMockito.given; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.when; import static org.springframework.restdocs.hypermedia.HypermediaDocumentation.linkWithRel; @@ -97,6 +100,9 @@ public class ComponentSpecTest extends TestRestDocsSpecBase { @MockBean private Sw360VendorService vendorServiceMock; + + @MockBean + private SW360ReportService sw360ReportServiceMock; private Component angularComponent; @@ -241,6 +247,7 @@ public void before() throws TException, IOException { .setCreatedOn(new SimpleDateFormat("yyyy-MM-dd").format(new Date()))); given(this.componentServiceMock.getComponentsForUser(any())).willReturn(componentList); + given(this.sw360ReportServiceMock.getComponentBuffer(any(),anyBoolean())).willReturn(ByteBuffer.allocate(10000)); given(this.componentServiceMock.getRecentComponents(any())).willReturn(componentList); given(this.componentServiceMock.getComponentSubscriptions(any())).willReturn(componentList); given(this.componentServiceMock.getMyComponentsForUser(any())).willReturn(componentList); @@ -1130,4 +1137,48 @@ public void should_document_prepare_import_sbom_for_component() throws Exception .queryParam("type", "SPDX"); this.mockMvc.perform(builder).andExpect(status().isOk()).andDo(this.documentationHandler.document()); } + + @Test + public void should_document_get_component_report() throws Exception{ + String accessToken = TestHelper.getAccessToken(mockMvc, testUserId, testUserPassword); + mockMvc.perform(get("/api/reports") + .header("Authorization", "Bearer " + accessToken) + .param("withlinkedreleases", "true") + .param("mimetype", "xlsx") + .param("mailrequest", "false") + .param("module", "components") + .accept(MediaTypes.HAL_JSON)) + .andExpect(status().isOk()) + .andDo(this.documentationHandler.document( + requestParameters( + parameterWithName("withlinkedreleases").description("Projects with linked releases. Possible values are ``"), + parameterWithName("mimetype").description("Projects download format. Possible values are ``"), + parameterWithName("mailrequest").description("Downloading project report requirted mail link. Possible values are ``"), + parameterWithName("module").description("module represent the project or component. Possible values are ``") + ))); + } + + @Test + public void should_document_get_component_report_with_mail_req() throws Exception{ + String accessToken = TestHelper.getAccessToken(mockMvc, testUserId, testUserPassword); + mockMvc.perform(get("/api/reports") + .header("Authorization", "Bearer " + accessToken) + .param("withlinkedreleases", "true") + .param("mimetype", "xlsx") + .param("mailrequest", "true") + .param("module", "components") + .accept(MediaTypes.HAL_JSON)) + .andExpect(status().isOk()) + .andDo(this.documentationHandler.document( + requestParameters( + parameterWithName("withlinkedreleases").description("components with linked releases. Possible values are ``"), + parameterWithName("mimetype").description("components download format. Possible values are ``"), + parameterWithName("module").description("module represent the project or component. Possible values are ``"), + parameterWithName("mailrequest").description("Downloading components report requirted mail link. Possible values are ``") + ),responseFields( + subsectionWithPath("response").description("The response message displayed").optional(), + subsectionWithPath("url").description("The components download path will be displayed").optional() + ) + )); + } } diff --git a/rest/resource-server/src/test/java/org/eclipse/sw360/rest/resourceserver/restdocs/ProjectSpecTest.java b/rest/resource-server/src/test/java/org/eclipse/sw360/rest/resourceserver/restdocs/ProjectSpecTest.java index 04efa6cd53..81874d3a0a 100644 --- a/rest/resource-server/src/test/java/org/eclipse/sw360/rest/resourceserver/restdocs/ProjectSpecTest.java +++ b/rest/resource-server/src/test/java/org/eclipse/sw360/rest/resourceserver/restdocs/ProjectSpecTest.java @@ -1690,18 +1690,20 @@ public void should_document_get_project_count() throws Exception { } public void should_document_get_project_report() throws Exception{ String accessToken = TestHelper.getAccessToken(mockMvc, testUserId, testUserPassword); - mockMvc.perform(get("/api/reports/myprojectreports") + mockMvc.perform(get("/api/reports") .header("Authorization", "Bearer " + accessToken) .param("withlinkedreleases", "true") .param("mimetype", "xlsx") .param("mailrequest", "true") + .param("module", "projects") .accept(MediaTypes.HAL_JSON)) .andExpect(status().isOk()) .andDo(this.documentationHandler.document( requestParameters( parameterWithName("withlinkedreleases").description("Projects with linked releases. Possible values are ``"), parameterWithName("mimetype").description("Projects download format. Possible values are ``"), - parameterWithName("mailrequest").description("Downloading project report requirted mail link. Possible values are ``") + parameterWithName("mailrequest").description("Downloading project report requirted mail link. Possible values are ``"), + parameterWithName("module").description("module represent the project or component. Possible values are ``") ),responseFields( subsectionWithPath("response").description("The response message displayed").optional(), subsectionWithPath("url").description("The project download path will be displayed").optional() @@ -1712,18 +1714,20 @@ public void should_document_get_project_report() throws Exception{ @Test public void should_document_get_project_report_without_mail_req() throws Exception{ String accessToken = TestHelper.getAccessToken(mockMvc, testUserId, testUserPassword); - mockMvc.perform(get("/api/reports/myprojectreports") + mockMvc.perform(get("/api/reports") .header("Authorization", "Bearer " + accessToken) .param("withlinkedreleases", "true") .param("mimetype", "xlsx") .param("mailrequest", "false") + .param("module", "projects") .accept("application/xhtml+xml")) .andExpect(status().isOk()) .andDo(this.documentationHandler.document( requestParameters( parameterWithName("withlinkedreleases").description("Projects with linked releases. Possible values are ``"), parameterWithName("mimetype").description("Projects download format. Possible values are ``"), - parameterWithName("mailrequest").description("Downloading project report requirted mail link. Possible values are ``") + parameterWithName("mailrequest").description("Downloading project report requirted mail link. Possible values are ``"), + parameterWithName("module").description("module represent the project or component. Possible values are ``") ))); } }