From 3e1f574244c5ea500bac422ed67b67c9ec3591dd Mon Sep 17 00:00:00 2001 From: dushimsam Date: Wed, 10 Aug 2022 09:42:22 +0200 Subject: [PATCH] fix(MULTIPLE-API-CALLS) merge multiple upload-api calls into one --- src/api/upload.js | 45 ++++++++++++++++++++++-- src/api/upload.test.js | 62 ++++++++++++++++++++++++++++++++-- src/pages/Upload/Vcs/index.jsx | 36 +++----------------- src/services/upload.js | 10 +++--- 4 files changed, 112 insertions(+), 41 deletions(-) diff --git a/src/api/upload.js b/src/api/upload.js index 64783b2c3..758978964 100644 --- a/src/api/upload.js +++ b/src/api/upload.js @@ -55,8 +55,20 @@ export const createUploadApi = ( }; // Create Uploads from Version Control System -export const createUploadVcsApi = (header, body) => { +export const createUploadVcsApi = (header, vcsData, scanData) => { const url = endpoints.upload.uploadCreate(); + const { bucket, copyrightEmailAuthor, ecc, keyword, mime, monk, nomos, ojo } = + scanData?.analysis; + const { nomosMonk, bulkReused, newScanner, ojoDecider } = scanData?.decider; + const { + reuseUpload, + reuseGroup, + reuseMain, + reuseEnhanced, + reuseReport, + reuseCopyright, + } = scanData?.reuse; + return sendRequest({ url, method: "POST", @@ -64,7 +76,36 @@ export const createUploadVcsApi = (header, body) => { ...header, Authorization: getToken(), }, - body, + body: { + vcsData, + scanOptions: { + analysis: { + bucket, + copyright_email_author: copyrightEmailAuthor, + ecc, + keyword, + mime, + monk, + nomos, + ojo, + package: scanData.analysis.package, + }, + decider: { + nomos_monk: nomosMonk, + bulk_reused: bulkReused, + new_scanner: newScanner, + ojo_decider: ojoDecider, + }, + reuse: { + reuse_upload: reuseUpload, + reuse_group: reuseGroup, + reuse_main: reuseMain, + reuse_enhanced: reuseEnhanced, + reuse_report: reuseReport, + reuse_copyright: reuseCopyright, + }, + }, + }, }); }; diff --git a/src/api/upload.test.js b/src/api/upload.test.js index 7228c04f8..57f9e45a1 100644 --- a/src/api/upload.test.js +++ b/src/api/upload.test.js @@ -104,11 +104,38 @@ describe("upload", () => { test("createUploadVcsApi", () => { const header = "header"; - const body = "body"; + const vcsData = "vcsData"; + const scanData = { + analysis: { + bucket: "bucket", + copyrightEmailAuthor: "copyrightEmailAuthor", + ecc: "ecc", + keyword: "keyword", + mime: "mime", + monk: "monk", + nomos: "nomos", + ojo: "ojo", + package: "package", + }, + decider: { + nomosMonk: "nomosMonk", + bulkReused: "bulkReused", + newScanner: "newScanner", + ojoDecider: "ojoDecider", + }, + reuse: { + reuseUpload: "reuseUpload", + reuseGroup: "reuseGroup", + reuseMain: "reuseMain", + reuseEnhanced: "reuseEnhanced", + reuseReport: "reuseReport", + reuseCopyright: "reuseCopyright", + }, + }; const url = endpoints.upload.uploadCreate(); sendRequest.mockImplementation(() => true); - expect(createUploadVcsApi(header, body)).toBe(sendRequest({})); + expect(createUploadVcsApi(header, vcsData, scanData)).toBe(sendRequest({})); expect(sendRequest).toHaveBeenCalledWith( expect.objectContaining({ url, @@ -117,7 +144,36 @@ describe("upload", () => { ...header, Authorization: getToken(), }, - body, + body: { + vcsData, + scanOptions: { + analysis: { + bucket: scanData.analysis.bucket, + copyright_email_author: scanData.analysis.copyrightEmailAuthor, + ecc: scanData.analysis.ecc, + keyword: scanData.analysis.keyword, + mime: scanData.analysis.mime, + monk: scanData.analysis.monk, + nomos: scanData.analysis.nomos, + ojo: scanData.analysis.ojo, + package: scanData.analysis.package, + }, + decider: { + nomos_monk: scanData.decider.nomosMonk, + bulk_reused: scanData.decider.bulkReused, + new_scanner: scanData.decider.newScanner, + ojo_decider: scanData.decider.ojoDecider, + }, + reuse: { + reuse_upload: scanData.reuse.reuseUpload, + reuse_group: scanData.reuse.reuseGroup, + reuse_main: scanData.reuse.reuseMain, + reuse_enhanced: scanData.reuse.reuseEnhanced, + reuse_report: scanData.reuse.reuseReport, + reuse_copyright: scanData.reuse.reuseCopyright, + }, + }, + }, }) ); }); diff --git a/src/pages/Upload/Vcs/index.jsx b/src/pages/Upload/Vcs/index.jsx index 006b373a6..abeaebc31 100644 --- a/src/pages/Upload/Vcs/index.jsx +++ b/src/pages/Upload/Vcs/index.jsx @@ -17,7 +17,6 @@ */ import React, { useState, useEffect } from "react"; -import messages from "constants/messages"; // Title import Title from "components/Title"; @@ -30,8 +29,7 @@ import CommonFields from "components/Upload/CommonFields"; // Required functions for calling APIs import { getAllFolders } from "services/folders"; -import { createUploadVcs, getUploadById } from "services/upload"; -import { scheduleAnalysis } from "services/jobs"; +import { createUploadVcs } from "services/upload"; // Default Agents list import { @@ -44,11 +42,9 @@ import { // Helper function for error handling import { handleError } from "shared/helper"; +import messages from "../../../constants/messages"; const UploadFromVcs = () => { - // Upload Id required for scheduling Analysis - let uploadId; - // Data required for creating the upload const [uploadVcsData, setUploadVcsData] = useState(initialStateVcs); @@ -69,36 +65,14 @@ const UploadFromVcs = () => { const handleSubmit = (e) => { e.preventDefault(); setLoading(true); - createUploadVcs(uploadVcsData, vcsData) - .then((res) => { + createUploadVcs(uploadVcsData, vcsData, scanFileData) + .then(() => { window.scrollTo({ top: 0 }); setMessage({ type: "success", - text: `${messages.queuedUpload} #${res.message}`, + text: `${messages.uploadSuccess}`, }); - uploadId = res.message; }) - // Calling the api for maximum 10 times to check whether the upload is unpacked by the agent - .then(() => getUploadById(uploadId, 10)) - .then(() => - setTimeout( - () => - scheduleAnalysis(uploadVcsData.folderId, uploadId, scanFileData) - .then(() => { - window.scrollTo({ top: 0 }); - setMessage({ - type: "success", - text: messages.scheduledAnalysis, - }); - setUploadVcsData(initialStateVcs); - setScanFileData(initialScanFileData); - }) - .catch((error) => { - handleError(error, setMessage); - }), - 200000 - ) - ) .catch((error) => { handleError(error, setMessage); }) diff --git a/src/services/upload.js b/src/services/upload.js index c1b091a21..edba3520f 100644 --- a/src/services/upload.js +++ b/src/services/upload.js @@ -42,8 +42,8 @@ export const createUploadFile = ({ }; // Create Uploads from Version Control System -export const createUploadVcs = (header, body) => { - return createUploadVcsApi(header, body).then((res) => { +export const createUploadVcs = (header, vcsData, scanData) => { + return createUploadVcsApi(header, vcsData, scanData).then((res) => { return res; }); }; @@ -55,21 +55,21 @@ export const createUploadUrl = (header, body) => { }); }; -// Getting a Upload by id +// Getting an Upload by id export const getUploadById = (uploadId, retries) => { return getUploadByIdApi(uploadId, retries).then((res) => { return res; }); }; -// Getting a Upload Summary +// Getting an Upload Summary export const getUploadSummary = (uploadId) => { return getUploadSummaryApi(uploadId).then((res) => { return res; }); }; -// Getting a Upload License +// Getting an Upload License export const getUploadLicense = (uploadId, agent) => { return getUploadLicenseApi(uploadId, agent).then((res) => { return res;