Skip to content

Commit

Permalink
Send soggettoPagatore field to the attiva pagopa proxy endpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
BurnedMarshal committed Jul 6, 2020
1 parent 676b28c commit 1d5548f
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 12 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
"generate:api:io": "rimraf generated/io-api && shx mkdir -p generated/io-api && gen-api-models --api-spec https://raw.githubusercontent.com/pagopa/io-functions-app/master/openapi/index.yaml --no-strict --out-dir generated/io-api --request-types --response-decoders",
"generate:proxy:bonus-models": "rimraf generated/bonus && shx mkdir -p generated/bonus && gen-api-models --api-spec api_bonus.yaml --out-dir generated/bonus",
"generate:api:io-bonus": "rimraf generated/io-bonus-api && shx mkdir -p generated/io-bonus-api && gen-api-models --api-spec https://raw.githubusercontent.com/pagopa/io-functions-bonus/master/openapi/index.yaml --no-strict --out-dir generated/io-bonus-api --request-types --response-decoders",
"generate:api:pagopaproxy": "rimraf generated/pagopa-proxy && shx mkdir -p generated/pagopa-proxy && gen-api-models --api-spec https://raw.githubusercontent.com/pagopa/io-pagopa-proxy/v0.8.6/api_pagopa.yaml --no-strict --out-dir generated/pagopa-proxy --request-types --response-decoders",
"generate:api:pagopaproxy": "rimraf generated/pagopa-proxy && shx mkdir -p generated/pagopa-proxy && gen-api-models --api-spec https://raw.githubusercontent.com/pagopa/io-pagopa-proxy/attiva-soggetto-pagatore/api_pagopa.yaml --no-strict --out-dir generated/pagopa-proxy --request-types --response-decoders",
"generate:test-certs": "./scripts/generate-test-certs.sh certs",
"postversion": "git push && git push --tags",
"dist:modules": "modclean -r -n default:safe && yarn install --production",
Expand Down
45 changes: 42 additions & 3 deletions src/controllers/__tests__/pagoPAProxyController.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,14 @@ import {
ResponseErrorInternal,
ResponseSuccessJson
} from "italia-ts-commons/lib/responses";
import { FiscalCode, NonEmptyString } from "italia-ts-commons/lib/strings";
import { EmailAddress } from "../../../generated/backend/EmailAddress";
import { SpidLevelEnum } from "../../../generated/backend/SpidLevel";
import mockReq from "../../__mocks__/request";
import PagoPAClientFactory from "../../services/pagoPAClientFactory";
import PagoPAProxyService from "../../services/pagoPAProxyService";
import { SessionToken, WalletToken } from "../../types/token";
import { User } from "../../types/user";
import PagoPAProxyController from "../pagoPAProxyController";

const aRptId = "123456";
Expand Down Expand Up @@ -152,12 +157,35 @@ describe("PagoPAProxyController#getPaymentInfo", () => {
});

describe("PagoPAProxyController#activatePayment", () => {
const aTimestamp = 1518010929530;
const aFiscalNumber = "GRBGPP87L04L741X" as FiscalCode;
const anEmailAddress = "[email protected]" as EmailAddress;
const aValidSpidLevel = SpidLevelEnum["https://www.spid.gov.it/SpidL2"];

const mockedUser: User = {
created_at: aTimestamp,
family_name: "Garibaldi",
fiscal_code: aFiscalNumber,
name: "Giuseppe Maria",
session_token: "123hexToken" as SessionToken,
spid_email: anEmailAddress,
spid_level: aValidSpidLevel,
spid_mobile_phone: "3222222222222" as NonEmptyString,
wallet_token: "123hexToken" as WalletToken
};
const expectedSoggettoPagatore = {
anagrafica: `${mockedUser.name} ${mockedUser.family_name}`,
fiscal_code: mockedUser.fiscal_code,
tipo: "F"
};

beforeEach(() => {
jest.clearAllMocks();
});

it("calls the activatePayment on the PagoPAProxyService with valid values", async () => {
const req = mockReq();
req.user = mockedUser;

mockActivatePayment.mockReturnValue(
Promise.resolve(ResponseSuccessJson(proxyPaymentActivationsPostResponse))
Expand All @@ -176,7 +204,10 @@ describe("PagoPAProxyController#activatePayment", () => {
const response = await controller.activatePayment(req);

expect(mockActivatePayment).toHaveBeenCalledWith(
paymentActivationsPostRequest,
{
...paymentActivationsPostRequest,
soggettoPagatore: expectedSoggettoPagatore
},
false
);

Expand All @@ -189,6 +220,7 @@ describe("PagoPAProxyController#activatePayment", () => {

it("[TEST env] calls the activatePayment on the PagoPAProxyService with valid values", async () => {
const req = mockReq();
req.user = mockedUser;

mockActivatePayment.mockReturnValue(
Promise.resolve(ResponseSuccessJson(proxyPaymentActivationsPostResponse))
Expand All @@ -207,7 +239,10 @@ describe("PagoPAProxyController#activatePayment", () => {
const response = await controller.activatePayment(req);

expect(mockActivatePayment).toHaveBeenCalledWith(
paymentActivationsPostRequest,
{
...paymentActivationsPostRequest,
soggettoPagatore: expectedSoggettoPagatore
},
true
);
expect(response).toEqual({
Expand All @@ -219,6 +254,7 @@ describe("PagoPAProxyController#activatePayment", () => {

it("fails if the call to activatePayment fails", async () => {
const req = mockReq();
req.user = mockedUser;

mockActivatePayment.mockReturnValue(
Promise.resolve(ResponseErrorInternal(internalErrorMessage))
Expand All @@ -237,7 +273,10 @@ describe("PagoPAProxyController#activatePayment", () => {
const response = await controller.activatePayment(req);

expect(mockActivatePayment).toHaveBeenCalledWith(
paymentActivationsPostRequest,
{
...paymentActivationsPostRequest,
soggettoPagatore: expectedSoggettoPagatore
},
false
);
expect(response).toEqual(aResponseErrorInternal);
Expand Down
26 changes: 18 additions & 8 deletions src/controllers/pagoPAProxyController.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import { PaymentActivationsPostResponse } from "../../generated/backend/PaymentA
import { PaymentRequestsGetResponse } from "../../generated/backend/PaymentRequestsGetResponse";
import { PaymentActivationsPostRequest } from "../../generated/pagopa-proxy/PaymentActivationsPostRequest";

import { withUserFromRequest } from "../types/user";
import { withValidatedOrInternalError } from "../utils/responses";

const parsePagopaTestParam = (testParam: unknown) =>
Expand Down Expand Up @@ -50,14 +51,23 @@ export default class PagoPAProxyController {
| IResponseErrorNotFound
| IResponseSuccessJson<PaymentActivationsPostResponse>
> =>
withValidatedOrInternalError(
PaymentActivationsPostRequest.decode(req.body),
paymentActivationsPostRequest => {
return this.pagoPAProxyService.activatePayment(
paymentActivationsPostRequest,
parsePagopaTestParam(req.query.test)
);
}
withUserFromRequest(req, async user =>
withValidatedOrInternalError(
PaymentActivationsPostRequest.decode({
...req.body,
soggettoPagatore: {
anagrafica: `${user.name} ${user.family_name}`,
fiscal_code: user.fiscal_code,
tipo: "F"
}
}),
paymentActivationsPostRequest => {
return this.pagoPAProxyService.activatePayment(
paymentActivationsPostRequest,
parsePagopaTestParam(req.query.test)
);
}
)
);

public readonly getActivationStatus = async (
Expand Down

0 comments on commit 1d5548f

Please sign in to comment.