From f36b1c087b4f0170cf488360d6e20d6bfec0611b Mon Sep 17 00:00:00 2001 From: I543321 Date: Tue, 17 Sep 2024 13:49:43 +0530 Subject: [PATCH 1/6] Update tests --- xmpls/attachments.test.js | 123 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 123 insertions(+) create mode 100644 xmpls/attachments.test.js diff --git a/xmpls/attachments.test.js b/xmpls/attachments.test.js new file mode 100644 index 0000000..021a76c --- /dev/null +++ b/xmpls/attachments.test.js @@ -0,0 +1,123 @@ +const { expect } = require("chai"); +const cds = require("@sap/cds"); +const axios = require("axios"); +const { urls } = require("./util/config"); +const { getAccessToken } = require("./utils.js"); +const { createReadStream } = cds.utils.fs; +const { join } = cds.utils.path; + +axios.defaults.baseURL = urls.baseURL; + +describe('REST API Tests', () => { + let accessToken; + + before(async () => { + accessToken = await getAccessToken(); + axios.defaults.headers.common['Authorization'] = `Bearer ${accessToken}`; + }); + + describe('Create a new incident', () => { + let draftId = null; + let docId = null; + const newIncident = { + title: 'attachments working 14', + status_code: 'N' + }; + + it('Create an incident', async () => { + try { + const res = await axios.post("/odata/v4/processor/Incidents", newIncident, { + headers: { 'Content-Type': 'application/json' } + }); + expect(res.status).to.equal(201); // HTTP 201 Created status expected + draftId = res.data.ID; + expect(res.data).to.include.keys('ID', 'title', 'status_code'); + expect(res.data.title).to.equal(newIncident.title); + expect(res.data.status_code).to.equal(newIncident.status_code); + } catch (error) { + console.error('Error creating incident:', error.response ? error.response.data : error.message); + throw error; + } + }); + + it('+ Activate the draft', async () => { + console.log(`Draft ID: ${draftId}`); + try { + const res = await axios.post(`/odata/v4/processor/Incidents(ID=${draftId},IsActiveEntity=false)/ProcessorService.draftActivate`, {}, { + headers: { 'Content-Type': 'application/json' } + }); + expect(res.status).to.equal(201); // HTTP 201 Created status expected + } catch (error) { + console.error('Error activating draft:', error.response ? error.response.data : error.message); + throw error; + } + }); + + it('Upload attachment to the incident', async () => { + try { + // Draft Edit + await axios.post(`/odata/v4/processor/Incidents(ID=${draftId},IsActiveEntity=true)/ProcessorService.draftEdit`, + { PreserveChanges: true }, { headers: { 'Content-Type': 'application/json' } }); + + const content = createReadStream(join(__dirname, "util/SolarPanelReport.pdf")); + const attachRes = await axios.post(`/odata/v4/processor/Incidents(ID=${draftId},IsActiveEntity=false)/attachments`, + { + up__ID: draftId, + filename: "SolarPanelReport.pdf", + mimeType: "application/pdf", + status: "Clean", + createdAt: new Date(), + }, { headers: { 'Content-Type': 'application/json' } }); + + docId = attachRes.data.ID; + + // Upload the file content with PUT + const uploadResp = await axios.put( + `/odata/v4/processor/Incidents_attachments(up__ID=${draftId},ID=${docId},IsActiveEntity=false)/content`, + content, + { headers: { 'Content-Type': 'application/pdf' } } + ); + expect(uploadResp.status).to.equal(204); // HTTP 204 No Content indicates success + + // Prepare draft actions + await axios.post(`/odata/v4/processor/Incidents(ID=${draftId},IsActiveEntity=false)/ProcessorService.draftPrepare`, { + SideEffectsQualifier: "", + }); + } catch (error) { + console.error('Error uploading attachment:', error.response ? error.response.data : error.message); + throw error; + } + }); + + it('+ Activate the draft again', async () => { + try { + const res = await axios.post(`/odata/v4/processor/Incidents(ID=${draftId},IsActiveEntity=false)/ProcessorService.draftActivate`, {}); + expect(res.status).to.equal(200); // Expecting HTTP 200 status on final activation + } catch (error) { + console.error('Error activating draft:', error.response ? error.response.data : error.message); + throw error; + } + }); + + it('Read the file content', async () => { + try { + const response = await axios.get(`/odata/v4/processor/Incidents(ID=${draftId},IsActiveEntity=true)/attachments(up__ID=${draftId},ID=${docId},IsActiveEntity=true)/content`); + expect(response.status).to.equal(200); + expect(response.data).to.not.be.undefined; + } catch (error) { + console.error('Error reading file content:', error.response ? error.response.data : error.message); + throw error; + } + }); + + it('- Delete the Incident', async () => { + try { + const res = await axios.delete(`/odata/v4/processor/Incidents(ID=${draftId},IsActiveEntity=true)`); + expect(res.status).to.equal(204); // HTTP 204 No Content expected + } catch (error) { + console.error('Error deleting incident:', error.response ? error.response.data : error.message); + throw error; + } + }); + }); +}); From b70ab4bfbad165f5da2d0ebdef936a3b47b237aa Mon Sep 17 00:00:00 2001 From: I543321 Date: Tue, 17 Sep 2024 13:58:09 +0530 Subject: [PATCH 2/6] Update attachments test --- xmpls/attachments.test.js | 175 +++++++++++++++----------------------- 1 file changed, 68 insertions(+), 107 deletions(-) diff --git a/xmpls/attachments.test.js b/xmpls/attachments.test.js index 021a76c..588a3a4 100644 --- a/xmpls/attachments.test.js +++ b/xmpls/attachments.test.js @@ -1,123 +1,84 @@ -const { expect } = require("chai"); -const cds = require("@sap/cds"); -const axios = require("axios"); -const { urls } = require("./util/config"); -const { getAccessToken } = require("./utils.js"); +const cds = require('@sap/cds/lib') +const { default: axios } = require('axios') +const { GET, POST, DELETE, PUT, expect } = cds.test(__dirname + '../../') const { createReadStream } = cds.utils.fs; const { join } = cds.utils.path; +axios.defaults.auth = { username: 'alice' } -axios.defaults.baseURL = urls.baseURL; +jest.setTimeout(11111) -describe('REST API Tests', () => { - let accessToken; - - before(async () => { - accessToken = await getAccessToken(); - axios.defaults.headers.common['Authorization'] = `Bearer ${accessToken}`; - }); - - describe('Create a new incident', () => { +describe('Test attachments service', () => { let draftId = null; let docId = null; - const newIncident = { - title: 'attachments working 14', + + it('Create an incident ', async () => { + const { status, statusText, data } = await POST(`/odata/v4/processor/Incidents`, { + title: 'Urgent attention required !', status_code: 'N' - }; + }) + draftId = data.ID + expect(status).to.equal(201) + expect(statusText).to.equal('Created') + }) - it('Create an incident', async () => { - try { - const res = await axios.post("/odata/v4/processor/Incidents", newIncident, { - headers: { 'Content-Type': 'application/json' } - }); - expect(res.status).to.equal(201); // HTTP 201 Created status expected - draftId = res.data.ID; - expect(res.data).to.include.keys('ID', 'title', 'status_code'); - expect(res.data.title).to.equal(newIncident.title); - expect(res.data.status_code).to.equal(newIncident.status_code); - } catch (error) { - console.error('Error creating incident:', error.response ? error.response.data : error.message); - throw error; - } - }); + it('+ Activate the draft', async () => { + const response = await POST( + `/odata/v4/processor/Incidents(ID=${draftId},IsActiveEntity=false)/ProcessorService.draftActivate` + ) + expect(response.status).to.eql(201) - it('+ Activate the draft', async () => { - console.log(`Draft ID: ${draftId}`); - try { - const res = await axios.post(`/odata/v4/processor/Incidents(ID=${draftId},IsActiveEntity=false)/ProcessorService.draftActivate`, {}, { - headers: { 'Content-Type': 'application/json' } - }); - expect(res.status).to.equal(201); // HTTP 201 Created status expected - } catch (error) { - console.error('Error activating draft:', error.response ? error.response.data : error.message); - throw error; - } - }); + }) - it('Upload attachment to the incident', async () => { - try { - // Draft Edit - await axios.post(`/odata/v4/processor/Incidents(ID=${draftId},IsActiveEntity=true)/ProcessorService.draftEdit`, - { PreserveChanges: true }, { headers: { 'Content-Type': 'application/json' } }); - const content = createReadStream(join(__dirname, "util/SolarPanelReport.pdf")); - const attachRes = await axios.post(`/odata/v4/processor/Incidents(ID=${draftId},IsActiveEntity=false)/attachments`, + describe('Test the file upload', () => { + it(`Should Close the Incident-${draftId}`, async () => { + const { status } = await POST( + `/odata/v4/processor/Incidents(ID=${draftId},IsActiveEntity=true)/ProcessorService.draftEdit`, { - up__ID: draftId, - filename: "SolarPanelReport.pdf", - mimeType: "application/pdf", - status: "Clean", - createdAt: new Date(), - }, { headers: { 'Content-Type': 'application/json' } }); - - docId = attachRes.data.ID; - - // Upload the file content with PUT - const uploadResp = await axios.put( - `/odata/v4/processor/Incidents_attachments(up__ID=${draftId},ID=${docId},IsActiveEntity=false)/content`, - content, - { headers: { 'Content-Type': 'application/pdf' } } - ); - expect(uploadResp.status).to.equal(204); // HTTP 204 No Content indicates success + PreserveChanges: true + } + ) + - // Prepare draft actions - await axios.post(`/odata/v4/processor/Incidents(ID=${draftId},IsActiveEntity=false)/ProcessorService.draftPrepare`, { - SideEffectsQualifier: "", - }); - } catch (error) { - console.error('Error uploading attachment:', error.response ? error.response.data : error.message); - throw error; - } - }); + const content = createReadStream(join(__dirname, "util/SolarPanelReport.pdf")); + const attachRes = await POST(`/odata/v4/processor/Incidents(ID=${draftId},IsActiveEntity=false)/attachments`, + { + up__ID: draftId, + filename: "SolarPanelReport.pdf", + mimeType: "application/pdf", + status: "Clean", + createdAt: new Date(), + }, { headers: { 'Content-Type': 'application/json' } }); + + console.log(attachRes); + docId = attachRes.data.ID; + console.log("doc id"+docId); + // Upload the file content with PUT + const uploadResp = await PUT( + `/odata/v4/processor/Incidents_attachments(up__ID=${draftId},ID=${docId},IsActiveEntity=false)/content`, + content, + { headers: { 'Content-Type': 'application/pdf' } } + ); + expect(uploadResp.status).to.equal(204); + // add attachments here - it('+ Activate the draft again', async () => { - try { - const res = await axios.post(`/odata/v4/processor/Incidents(ID=${draftId},IsActiveEntity=false)/ProcessorService.draftActivate`, {}); - expect(res.status).to.equal(200); // Expecting HTTP 200 status on final activation - } catch (error) { - console.error('Error activating draft:', error.response ? error.response.data : error.message); - throw error; - } - }); + + const response = await POST( + `/odata/v4/processor/Incidents(ID=${draftId},IsActiveEntity=false)/ProcessorService.draftActivate` + ) + expect(response.status).to.eql(200) + }) + - it('Read the file content', async () => { - try { - const response = await axios.get(`/odata/v4/processor/Incidents(ID=${draftId},IsActiveEntity=true)/attachments(up__ID=${draftId},ID=${docId},IsActiveEntity=true)/content`); - expect(response.status).to.equal(200); - expect(response.data).to.not.be.undefined; - } catch (error) { - console.error('Error reading file content:', error.response ? error.response.data : error.message); - throw error; - } - }); + }) + it('- check the uploaded file', async () => { + const response = await GET(`/odata/v4/processor/Incidents(ID=${draftId},IsActiveEntity=true)/attachments(up__ID=${draftId},ID=${docId},IsActiveEntity=true)/content`); + expect(response.status).to.equal(200); + expect(response.data).to.not.be.undefined; + }) - it('- Delete the Incident', async () => { - try { - const res = await axios.delete(`/odata/v4/processor/Incidents(ID=${draftId},IsActiveEntity=true)`); - expect(res.status).to.equal(204); // HTTP 204 No Content expected - } catch (error) { - console.error('Error deleting incident:', error.response ? error.response.data : error.message); - throw error; - } - }); - }); -}); + it('- Delete the Incident', async () => { + const response = await DELETE(`/odata/v4/processor/Incidents(ID=${draftId},IsActiveEntity=true)`) + expect(response.status).to.eql(204) + }) +}) From 020c22ceb7fc9ae0d9d64916236420f6b3d07f2b Mon Sep 17 00:00:00 2001 From: I543321 Date: Tue, 17 Sep 2024 14:25:38 +0530 Subject: [PATCH 3/6] Updated package.json --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 04e208f..ae45daa 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,7 @@ "watch": "cds watch", "start": "cds-serve", "test": "npx jest --silent", + "add-attachments": "npm add @cap-js/attachments && cp -r xmpls/attachments.cds ./db && cp xmpls/attachments.test.js ./test", "add-change-tracking": "npm add @cap-js/change-tracking && cp xmpls/change-tracking.cds ./srv && cp xmpls/change-tracking.test.js ./test", "add-telemetry": "npm add @cap-js/telemetry", "add-attachments": "npm add @cap-js/attachments && cp -r xmpls/attachments.cds ./db", From 093417f314db524967cda9e6b13364ad62f4e682 Mon Sep 17 00:00:00 2001 From: I543321 Date: Tue, 17 Sep 2024 14:28:04 +0530 Subject: [PATCH 4/6] Updated package.json --- package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package.json b/package.json index ae45daa..89044fe 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,6 @@ "add-attachments": "npm add @cap-js/attachments && cp -r xmpls/attachments.cds ./db && cp xmpls/attachments.test.js ./test", "add-change-tracking": "npm add @cap-js/change-tracking && cp xmpls/change-tracking.cds ./srv && cp xmpls/change-tracking.test.js ./test", "add-telemetry": "npm add @cap-js/telemetry", - "add-attachments": "npm add @cap-js/attachments && cp -r xmpls/attachments.cds ./db", "add-notifications": "npm add @cap-js/notifications && cp xmpls/alert-notifications.js ./srv && cp xmpls/notification-types.json ./srv", "add-audit-log": "npm add @cap-js/audit-logging && cp xmpls/data-privacy.cds ./srv && cp xmpls/audit-log.test.js ./test", "add-remote-service": "./.github/workflows/checkout remote-service", From 9448bffb865b3f522c553b35c792c17ac0883f30 Mon Sep 17 00:00:00 2001 From: Navin Krishnan Date: Tue, 17 Sep 2024 14:28:26 +0530 Subject: [PATCH 5/6] Update xmpls/attachments.test.js --- xmpls/attachments.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xmpls/attachments.test.js b/xmpls/attachments.test.js index 588a3a4..45325d7 100644 --- a/xmpls/attachments.test.js +++ b/xmpls/attachments.test.js @@ -71,7 +71,7 @@ describe('Test attachments service', () => { }) - it('- check the uploaded file', async () => { + it('Check the uploaded file', async () => { const response = await GET(`/odata/v4/processor/Incidents(ID=${draftId},IsActiveEntity=true)/attachments(up__ID=${draftId},ID=${docId},IsActiveEntity=true)/content`); expect(response.status).to.equal(200); expect(response.data).to.not.be.undefined; From 1b0489ac67fd06b809aee5563dfbf9fff742ede0 Mon Sep 17 00:00:00 2001 From: I543321 Date: Tue, 17 Sep 2024 14:55:13 +0530 Subject: [PATCH 6/6] updated test --- xmpls/SolarPanelReport.pdf | Bin 0 -> 55782 bytes xmpls/attachments.test.js | 7 +++---- 2 files changed, 3 insertions(+), 4 deletions(-) create mode 100644 xmpls/SolarPanelReport.pdf diff --git a/xmpls/SolarPanelReport.pdf b/xmpls/SolarPanelReport.pdf new file mode 100644 index 0000000000000000000000000000000000000000..0e29aa2b6fcf6e566158a03e453f3f86d8482f45 GIT binary patch literal 55782 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

J5j6g46zVHONqu7&d3Ux-3 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%0D`lweeeW{hvq-K% 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 literal 0 HcmV?d00001 diff --git a/xmpls/attachments.test.js b/xmpls/attachments.test.js index 588a3a4..7b5e0e5 100644 --- a/xmpls/attachments.test.js +++ b/xmpls/attachments.test.js @@ -1,6 +1,5 @@ -const cds = require('@sap/cds/lib') -const { default: axios } = require('axios') -const { GET, POST, DELETE, PUT, expect } = cds.test(__dirname + '../../') +const cds = require('@sap/cds') +const { GET, POST, PUT, DELETE , expect, axios} = cds.test(__dirname + '/..', '--with-mocks') const { createReadStream } = cds.utils.fs; const { join } = cds.utils.path; axios.defaults.auth = { username: 'alice' } @@ -40,7 +39,7 @@ describe('Test attachments service', () => { ) - const content = createReadStream(join(__dirname, "util/SolarPanelReport.pdf")); + const content = createReadStream(join(__dirname, "../xmpls/SolarPanelReport.pdf")); const attachRes = await POST(`/odata/v4/processor/Incidents(ID=${draftId},IsActiveEntity=false)/attachments`, { up__ID: draftId,