Skip to content

Commit

Permalink
(CB2-12581): Update SNS topic retro-gen to use raw message delivery (#…
Browse files Browse the repository at this point in the history
…119)

* feat(CB2-12581): change double decode

* feat(CB2-12581): console log

* feat(CB2-12581): remove common process record

* feat(CB2-12581): unmarshal

* feat(CB2-12581): comemted out test

* feat(CB2-12581): removed test that is no longer needed

* feat(CB2-12581): removed test that is no longer neede

* feat(CB2-12581): added console logs

* feat(CB2-12581): removed console logs

* feat(CB2-12581): removed unused imports
  • Loading branch information
Daniel-Searle authored Jun 18, 2024
1 parent beae0ca commit 47554f6
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 34 deletions.
7 changes: 4 additions & 3 deletions src/functions/retroGen.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { processRecord } from "@dvsa/cvs-microservice-common/functions/sqsFilter";
import { unmarshall } from "@aws-sdk/util-dynamodb";
import { LambdaClient } from "@aws-sdk/client-lambda";
import * as rp from "request-promise";
import { ERRORS } from "../assets/Enum";
Expand All @@ -22,14 +22,15 @@ const retroGen = async (event: any): Promise<void | PutObjectCommandOutput[]> =>
console.error("ERROR: event is not defined.");
throw new Error(ERRORS.EventIsEmpty);
}

const retroService: RetroGenerationService = new RetroGenerationService(new TestResultsService(new LambdaService(new LambdaClient({ ...credentials }))), new ActivitiesService(new LambdaService(new LambdaClient({ ...credentials }))));
const retroUploadPromises: Array<Promise<PutObjectCommandOutput>> = [];
const sharepointAuthenticationService = new SharePointAuthenticationService(rp);
const sharePointService = new SharePointService(rp);

event.Records.forEach((record: any) => {
const recordBody = JSON.parse(JSON.parse(record.body).Message);
const visit: any = processRecord(recordBody);
const recordBody = JSON.parse(record.body);
const visit: any = unmarshall(recordBody?.dynamodb.NewImage);
if (visit) {
const retroUploadPromise = retroService.generateRetroReport(visit).then(async (generationServiceResponse: { fileName: string; fileBuffer: Buffer }) => {
const tokenResponse = await sharepointAuthenticationService.getToken();
Expand Down
31 changes: 0 additions & 31 deletions tests/unit/RetroGenFunction.unitTest.ts
Original file line number Diff line number Diff line change
@@ -1,19 +1,5 @@
const mockProcessRecord = jest.fn();

import { expect } from "chai";
import { retroGen } from "../../src/functions/retroGen";
import { RetroGenerationService } from "../../src/services/RetroGenerationService";
// import mockContext from "aws-lambda-mock-context";
import sinon from "sinon";
// import mockConfig from "../util/mockConfig";

jest.mock("@dvsa/cvs-microservice-common/functions/sqsFilter", () => ({
processRecord: mockProcessRecord,
}));

const sandbox = sinon.createSandbox();
const mockPayload =
'{\n "Type" : "Notification",\n "MessageId" : "-c9d5---",\n "TopicArn" : "tf-visit",\n "Message" : "{\\"eventID\\":\\"f9e63bf29bd6adf174e308201a97259f\\",\\"eventName\\":\\"MODIFY\\",\\"eventVersion\\":\\"1.1\\",\\"eventSource\\":\\"aws:dynamodb\\",\\"awsRegion\\":\\"eu-west-1\\",\\"dynamodb\\":{\\"ApproximateCreationDateTime\\":1711549645,\\"Keys\\":{\\"id\\":{\\"S\\":\\"6e4bd304-446e-4678-8289-dasdasjkl\\"}},\\"NewImage\\":{\\"testerStaffId\\":{\\"S\\":\\"132\\"},\\"testStationPNumber\\":{\\"S\\":\\"87-1369564\\"},\\"testerEmail\\":{\\"S\\":\\"tester@dvsa.gov.uk1111\\"},\\"testStationType\\":{\\"S\\":\\"gvts\\"},\\"testStationEmail\\":{\\"S\\":\\"teststationname@dvsa.gov.uk\\"},\\"startTime\\":{\\"S\\":\\"2022-01-01T10:00:40.561Z\\"},\\"endTime\\":{\\"S\\":\\"2022-01-01T10:00:40.561Z\\"},\\"id\\":{\\"S\\":\\"6e4bd304-446e-4678-8289-dasdasjkl\\"},\\"testStationName\\":{\\"S\\":\\"Rowe, Wunsch and Wisoky\\"},\\"activityType\\":{\\"S\\":\\"visit\\"},\\"activityDay\\":{\\"S\\":\\"2022-01-01\\"},\\"testerName\\":{\\"S\\":\\"namey mcname\\"}},\\"OldImage\\":{\\"testerStaffId\\":{\\"S\\":\\"132\\"},\\"testStationPNumber\\":{\\"S\\":\\"87-1369564\\"},\\"testerEmail\\":{\\"S\\":\\"tester@dvsa.gov.uk1111\\"},\\"testStationType\\":{\\"S\\":\\"gvts\\"},\\"testStationEmail\\":{\\"S\\":\\"teststationname@dvsa.gov.uk\\"},\\"startTime\\":{\\"S\\":\\"2022-01-01T10:00:40.561Z\\"},\\"endTime\\":{\\"S\\":\\"2022-01-01T10:00:40.561Z\\"},\\"id\\":{\\"S\\":\\"6e4bd304-446e-4678-8289-dasdasjkl\\"},\\"testStationName\\":{\\"S\\":\\"Rowe, Wunsch and Wisoky\\"},\\"activityType\\":{\\"S\\":\\"visit\\"},\\"activityDay\\":{\\"S\\":\\"2022-01-01\\"},\\"testerName\\":{\\"S\\":\\"231232132\\"}},\\"SequenceNumber\\":\\"1234\\",\\"SizeBytes\\":704,\\"StreamViewType\\":\\"NEW_AND_OLD_IMAGES\\"},\\"eventSourceARN\\":\\"arn:aws::eu--1::/cvs---//:32:37.491\\"}",\n "Timestamp" : "2024-03-27T14:27:25.926Z",\n "SignatureVersion" : "1",\n "Signature" : "+/+/+3//+//2f3y0TI+/+//---"\n}';

describe("Retro Gen Function", () => {
beforeAll(() => {
Expand Down Expand Up @@ -64,21 +50,4 @@ describe("Retro Gen Function", () => {
}
});
});

context("Inner services fail", () => {
afterEach(() => {
sandbox.restore();
});

it("Should throw an error (generateRetroReport fails)", async () => {
sandbox.stub(RetroGenerationService.prototype, "generateRetroReport").throws(new Error("Oh no!"));
mockProcessRecord.mockReturnValueOnce("All good");
try {
await retroGen({ Records: [{ body: mockPayload }] });
expect.fail();
} catch (e) {
expect(e.message).to.deep.equal("Oh no!");
}
});
});
});

0 comments on commit 47554f6

Please sign in to comment.