Skip to content

Commit 1d5548f

Browse files
committed
Send soggettoPagatore field to the attiva pagopa proxy endpoint
1 parent 676b28c commit 1d5548f

File tree

3 files changed

+61
-12
lines changed

3 files changed

+61
-12
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
"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",
3535
"generate:proxy:bonus-models": "rimraf generated/bonus && shx mkdir -p generated/bonus && gen-api-models --api-spec api_bonus.yaml --out-dir generated/bonus",
3636
"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",
37-
"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",
37+
"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",
3838
"generate:test-certs": "./scripts/generate-test-certs.sh certs",
3939
"postversion": "git push && git push --tags",
4040
"dist:modules": "modclean -r -n default:safe && yarn install --production",

src/controllers/__tests__/pagoPAProxyController.test.ts

Lines changed: 42 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,14 @@ import {
44
ResponseErrorInternal,
55
ResponseSuccessJson
66
} from "italia-ts-commons/lib/responses";
7+
import { FiscalCode, NonEmptyString } from "italia-ts-commons/lib/strings";
8+
import { EmailAddress } from "../../../generated/backend/EmailAddress";
9+
import { SpidLevelEnum } from "../../../generated/backend/SpidLevel";
710
import mockReq from "../../__mocks__/request";
811
import PagoPAClientFactory from "../../services/pagoPAClientFactory";
912
import PagoPAProxyService from "../../services/pagoPAProxyService";
13+
import { SessionToken, WalletToken } from "../../types/token";
14+
import { User } from "../../types/user";
1015
import PagoPAProxyController from "../pagoPAProxyController";
1116

1217
const aRptId = "123456";
@@ -152,12 +157,35 @@ describe("PagoPAProxyController#getPaymentInfo", () => {
152157
});
153158

154159
describe("PagoPAProxyController#activatePayment", () => {
160+
const aTimestamp = 1518010929530;
161+
const aFiscalNumber = "GRBGPP87L04L741X" as FiscalCode;
162+
const anEmailAddress = "garibaldi@example.com" as EmailAddress;
163+
const aValidSpidLevel = SpidLevelEnum["https://www.spid.gov.it/SpidL2"];
164+
165+
const mockedUser: User = {
166+
created_at: aTimestamp,
167+
family_name: "Garibaldi",
168+
fiscal_code: aFiscalNumber,
169+
name: "Giuseppe Maria",
170+
session_token: "123hexToken" as SessionToken,
171+
spid_email: anEmailAddress,
172+
spid_level: aValidSpidLevel,
173+
spid_mobile_phone: "3222222222222" as NonEmptyString,
174+
wallet_token: "123hexToken" as WalletToken
175+
};
176+
const expectedSoggettoPagatore = {
177+
anagrafica: `${mockedUser.name} ${mockedUser.family_name}`,
178+
fiscal_code: mockedUser.fiscal_code,
179+
tipo: "F"
180+
};
181+
155182
beforeEach(() => {
156183
jest.clearAllMocks();
157184
});
158185

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

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

178206
expect(mockActivatePayment).toHaveBeenCalledWith(
179-
paymentActivationsPostRequest,
207+
{
208+
...paymentActivationsPostRequest,
209+
soggettoPagatore: expectedSoggettoPagatore
210+
},
180211
false
181212
);
182213

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

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

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

209241
expect(mockActivatePayment).toHaveBeenCalledWith(
210-
paymentActivationsPostRequest,
242+
{
243+
...paymentActivationsPostRequest,
244+
soggettoPagatore: expectedSoggettoPagatore
245+
},
211246
true
212247
);
213248
expect(response).toEqual({
@@ -219,6 +254,7 @@ describe("PagoPAProxyController#activatePayment", () => {
219254

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

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

239275
expect(mockActivatePayment).toHaveBeenCalledWith(
240-
paymentActivationsPostRequest,
276+
{
277+
...paymentActivationsPostRequest,
278+
soggettoPagatore: expectedSoggettoPagatore
279+
},
241280
false
242281
);
243282
expect(response).toEqual(aResponseErrorInternal);

src/controllers/pagoPAProxyController.ts

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import { PaymentActivationsPostResponse } from "../../generated/backend/PaymentA
1414
import { PaymentRequestsGetResponse } from "../../generated/backend/PaymentRequestsGetResponse";
1515
import { PaymentActivationsPostRequest } from "../../generated/pagopa-proxy/PaymentActivationsPostRequest";
1616

17+
import { withUserFromRequest } from "../types/user";
1718
import { withValidatedOrInternalError } from "../utils/responses";
1819

1920
const parsePagopaTestParam = (testParam: unknown) =>
@@ -50,14 +51,23 @@ export default class PagoPAProxyController {
5051
| IResponseErrorNotFound
5152
| IResponseSuccessJson<PaymentActivationsPostResponse>
5253
> =>
53-
withValidatedOrInternalError(
54-
PaymentActivationsPostRequest.decode(req.body),
55-
paymentActivationsPostRequest => {
56-
return this.pagoPAProxyService.activatePayment(
57-
paymentActivationsPostRequest,
58-
parsePagopaTestParam(req.query.test)
59-
);
60-
}
54+
withUserFromRequest(req, async user =>
55+
withValidatedOrInternalError(
56+
PaymentActivationsPostRequest.decode({
57+
...req.body,
58+
soggettoPagatore: {
59+
anagrafica: `${user.name} ${user.family_name}`,
60+
fiscal_code: user.fiscal_code,
61+
tipo: "F"
62+
}
63+
}),
64+
paymentActivationsPostRequest => {
65+
return this.pagoPAProxyService.activatePayment(
66+
paymentActivationsPostRequest,
67+
parsePagopaTestParam(req.query.test)
68+
);
69+
}
70+
)
6171
);
6272

6373
public readonly getActivationStatus = async (

0 commit comments

Comments
 (0)