Skip to content
This repository has been archived by the owner on Jan 15, 2025. It is now read-only.

[#IOCIT-341] Implement GetAssertionHandler #26

Merged
merged 20 commits into from
Mar 6, 2023
Merged
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
73 changes: 43 additions & 30 deletions ActivatePubKey/__tests__/handler.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import { AssertionTypeEnum } from "@pagopa/io-functions-commons/dist/generated/d
import { PubKeyStatusEnum } from "../../generated/definitions/internal/PubKeyStatus";
import { NonNegativeInteger } from "@pagopa/ts-commons/lib/numbers";
import { ActivatePubKeyHandler } from "../handler";
import { PopDocumentReader } from "../../utils/readers";
import { PublicKeyDocumentReader } from "../../utils/readers";
import { AssertionWriter, PopDocumentWriter } from "../../utils/writers";
import { ActivatePubKeyPayload } from "../../generated/definitions/internal/ActivatePubKeyPayload";
import {
Expand Down Expand Up @@ -69,14 +69,14 @@ const aPendingRetrievedPopDocumentWithMasterAlgo = {
assertionFileName: `${aFiscalCode}-${aValidSha512AssertionRef}`
};

const popDocumentReaderMock = jest.fn(
const publicKeyDocumentReaderMock = jest.fn(
(assertionRef: AssertionRef) =>
TE.of({
...aRetrievedPendingLollipopPubKeySha256,
assertionRef: assertionRef,
id: `${assertionRef}-000000`,
version: 0
}) as ReturnType<PopDocumentReader>
}) as ReturnType<PublicKeyDocumentReader>
);

const popDocumentWriterMock = jest.fn(
Expand Down Expand Up @@ -106,12 +106,12 @@ describe("activatePubKey handler", () => {
});

it("should success given valid informations when used algo DIFFERENT FROM master algo", async () => {
popDocumentReaderMock.mockImplementationOnce(() =>
publicKeyDocumentReaderMock.mockImplementationOnce(() =>
TE.right(aPendingRetrievedPopDocument)
);

const activatePubKeyHandler = ActivatePubKeyHandler(
popDocumentReaderMock,
publicKeyDocumentReaderMock,
popDocumentWriterMock,
assertionWriterMock
);
Expand All @@ -137,8 +137,8 @@ describe("activatePubKey handler", () => {
aValidActivatePubKeyPayload
);

expect(popDocumentReaderMock).toHaveBeenCalledTimes(1);
expect(popDocumentReaderMock).toHaveBeenCalledWith(
expect(publicKeyDocumentReaderMock).toHaveBeenCalledTimes(1);
expect(publicKeyDocumentReaderMock).toHaveBeenCalledWith(
aValidSha256AssertionRef
);
expect(assertionWriterMock).toHaveBeenCalledTimes(1);
Expand Down Expand Up @@ -177,12 +177,12 @@ describe("activatePubKey handler", () => {
});

it("should success given valid informations when used algo EQUALS TO master algo", async () => {
popDocumentReaderMock.mockImplementationOnce(() =>
publicKeyDocumentReaderMock.mockImplementationOnce(() =>
TE.right(aPendingRetrievedPopDocumentWithMasterAlgo)
);

const activatePubKeyHandler = ActivatePubKeyHandler(
popDocumentReaderMock,
publicKeyDocumentReaderMock,
popDocumentWriterMock,
assertionWriterMock
);
Expand All @@ -208,8 +208,8 @@ describe("activatePubKey handler", () => {
aValidActivatePubKeyPayload
);

expect(popDocumentReaderMock).toHaveBeenCalledTimes(1);
expect(popDocumentReaderMock).toHaveBeenCalledWith(
expect(publicKeyDocumentReaderMock).toHaveBeenCalledTimes(1);
expect(publicKeyDocumentReaderMock).toHaveBeenCalledWith(
aValidSha512AssertionRef
);
expect(assertionWriterMock).toHaveBeenCalledTimes(1);
Expand Down Expand Up @@ -245,12 +245,12 @@ describe("ActivatePubKey - Errors", () => {
});

it("should return 500 Error when assertionRef doen not exists", async () => {
popDocumentReaderMock.mockImplementationOnce(() =>
publicKeyDocumentReaderMock.mockImplementationOnce(() =>
TE.left({ kind: ErrorKind.NotFound })
);

const handler = ActivatePubKeyHandler(
popDocumentReaderMock,
publicKeyDocumentReaderMock,
popDocumentWriterMock,
assertionWriterMock
);
Expand All @@ -267,15 +267,15 @@ describe("ActivatePubKey - Errors", () => {
"Internal server error: Error while reading pop document: NotFound"
});

expect(popDocumentReaderMock).toHaveBeenCalledWith(
expect(publicKeyDocumentReaderMock).toHaveBeenCalledWith(
aValidSha256AssertionRef
);
expect(assertionWriterMock).not.toHaveBeenCalled();
expect(popDocumentWriterMock).not.toHaveBeenCalled();
});

it("should return 403 Forbidden Not Authorized when a pop document with status DIFFERENT FROM PENDING is found", async () => {
popDocumentReaderMock.mockImplementationOnce(assertionRef =>
publicKeyDocumentReaderMock.mockImplementationOnce(assertionRef =>
TE.of({
...aRetrievedValidLollipopPubKeySha256,
assertionRef: assertionRef,
Expand All @@ -286,7 +286,7 @@ describe("ActivatePubKey - Errors", () => {
);

const handler = ActivatePubKeyHandler(
popDocumentReaderMock,
publicKeyDocumentReaderMock,
popDocumentWriterMock,
assertionWriterMock
);
Expand All @@ -303,20 +303,24 @@ describe("ActivatePubKey - Errors", () => {
})
);

expect(popDocumentReaderMock).toHaveBeenCalledWith(
expect(publicKeyDocumentReaderMock).toHaveBeenCalledWith(
aValidSha256AssertionRef
);
expect(assertionWriterMock).not.toHaveBeenCalled();
expect(popDocumentWriterMock).not.toHaveBeenCalled();
});

it("should return 500 Internal Error when an error occurred reading document", async () => {
popDocumentReaderMock.mockImplementationOnce(() =>
TE.left({ kind: ErrorKind.Internal, detail: "an Error" })
publicKeyDocumentReaderMock.mockImplementationOnce(() =>
TE.left({
kind: ErrorKind.Internal,
detail: "an Error",
message: "a detail Error"
})
);

const handler = ActivatePubKeyHandler(
popDocumentReaderMock,
publicKeyDocumentReaderMock,
popDocumentWriterMock,
assertionWriterMock
);
Expand All @@ -333,7 +337,7 @@ describe("ActivatePubKey - Errors", () => {
"Internal server error: Error while reading pop document: Internal"
});

expect(popDocumentReaderMock).toHaveBeenCalledWith(
expect(publicKeyDocumentReaderMock).toHaveBeenCalledWith(
aValidSha256AssertionRef
);
expect(assertionWriterMock).not.toHaveBeenCalled();
Expand All @@ -342,11 +346,15 @@ describe("ActivatePubKey - Errors", () => {

it("should return 500 Internal Error when an error occurred writing assertion into storage", async () => {
assertionWriterMock.mockImplementationOnce(() =>
TE.left({ kind: ErrorKind.Internal, detail: "an Error on storage" })
TE.left({
kind: ErrorKind.Internal,
detail: "an Error on storage",
message: "a detail Error on storage"
})
);

const handler = ActivatePubKeyHandler(
popDocumentReaderMock,
publicKeyDocumentReaderMock,
popDocumentWriterMock,
assertionWriterMock
);
Expand All @@ -366,7 +374,7 @@ describe("ActivatePubKey - Errors", () => {
assertionFileName: `${aFiscalCode}-${aValidSha256AssertionRef}`
};

expect(popDocumentReaderMock).toHaveBeenCalledWith(
expect(publicKeyDocumentReaderMock).toHaveBeenCalledWith(
aValidSha256AssertionRef
);
expect(assertionWriterMock).toHaveBeenCalledWith(
Expand All @@ -378,11 +386,15 @@ describe("ActivatePubKey - Errors", () => {

it("should return 500 Internal Error when an error occurred storing master key", async () => {
popDocumentWriterMock.mockImplementationOnce(() =>
TE.left({ kind: ErrorKind.Internal, detail: "an Error on cosmos update" })
TE.left({
kind: ErrorKind.Internal,
detail: "an Error on cosmos update",
message: "a detail Error on cosmos update"
})
);

const handler = ActivatePubKeyHandler(
popDocumentReaderMock,
publicKeyDocumentReaderMock,
popDocumentWriterMock,
assertionWriterMock
);
Expand All @@ -402,7 +414,7 @@ describe("ActivatePubKey - Errors", () => {
assertionFileName: `${aFiscalCode}-${aValidSha256AssertionRef}`
};

expect(popDocumentReaderMock).toHaveBeenCalledWith(
expect(publicKeyDocumentReaderMock).toHaveBeenCalledWith(
aValidSha256AssertionRef
);
expect(assertionWriterMock).toHaveBeenCalledWith(
Expand All @@ -428,12 +440,13 @@ describe("ActivatePubKey - Errors", () => {
.mockImplementationOnce(() =>
TE.left({
kind: ErrorKind.Internal,
detail: "an Error on cosmos update"
detail: "an Error on cosmos update",
message: "a detail Error on cosmos update"
})
);

const handler = ActivatePubKeyHandler(
popDocumentReaderMock,
publicKeyDocumentReaderMock,
popDocumentWriterMock,
assertionWriterMock
);
Expand All @@ -453,7 +466,7 @@ describe("ActivatePubKey - Errors", () => {
assertionFileName: `${aFiscalCode}-${aValidSha256AssertionRef}`
};

expect(popDocumentReaderMock).toHaveBeenCalledWith(
expect(publicKeyDocumentReaderMock).toHaveBeenCalledWith(
aValidSha256AssertionRef
);
expect(assertionWriterMock).toHaveBeenCalledWith(
Expand Down
10 changes: 5 additions & 5 deletions ActivatePubKey/handler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ import { AssertionFileName } from "../generated/definitions/internal/AssertionFi
import { RetrievedLolliPopPubKeys } from "../model/lollipop_keys";

import { AssertionWriter, PopDocumentWriter } from "../utils/writers";
import { PopDocumentReader } from "../utils/readers";
import { PublicKeyDocumentReader } from "../utils/readers";
import {
isPendingLollipopPubKey,
isValidLollipopPubKey,
Expand Down Expand Up @@ -82,7 +82,7 @@ type ActivatePubKeyHandler = (
| IResponseErrorInternal
>;
export const ActivatePubKeyHandler = (
popDocumentReader: PopDocumentReader,
publicKeyDocumentReader: PublicKeyDocumentReader,
popDocumentWriter: PopDocumentWriter,
assertionWriter: AssertionWriter
): ActivatePubKeyHandler => (
Expand All @@ -91,7 +91,7 @@ export const ActivatePubKeyHandler = (
body
): ReturnType<ActivatePubKeyHandler> =>
pipe(
popDocumentReader(assertion_ref),
publicKeyDocumentReader(assertion_ref),
TE.mapLeft(error =>
logAndReturnResponse(
context,
Expand Down Expand Up @@ -204,12 +204,12 @@ export const ActivatePubKeyHandler = (
)();

export const ActivatePubKey = (
popDocumentReader: PopDocumentReader,
publicKeyDocumentReader: PublicKeyDocumentReader,
popDocumentWriter: PopDocumentWriter,
assertionWriter: AssertionWriter
): express.RequestHandler => {
const handler = ActivatePubKeyHandler(
popDocumentReader,
publicKeyDocumentReader,
popDocumentWriter,
assertionWriter
);
Expand Down
4 changes: 2 additions & 2 deletions ActivatePubKey/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import {
} from "../model/lollipop_keys";
import { cosmosdbInstance } from "../utils/cosmosdb";
import { getConfigOrThrow } from "../utils/config";
import { getPopDocumentReader } from "../utils/readers";
import { getPublicKeyDocumentReader } from "../utils/readers";
import { getAssertionWriter, getPopDocumentWriter } from "../utils/writers";
import { ActivatePubKey } from "./handler";

Expand All @@ -32,7 +32,7 @@ const assertionBlobService = createBlobService(
app.put(
"/api/v1/pubKeys/:assertion_ref",
ActivatePubKey(
getPopDocumentReader(lollipopKeysModel),
getPublicKeyDocumentReader(lollipopKeysModel),
getPopDocumentWriter(lollipopKeysModel),
getAssertionWriter(
assertionBlobService,
Expand Down
Loading