@fiado/type-kit 3.488.0 → 3.489.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_test_/unit/retailCustomer/upsertCustomerFromKycRequest.test.ts +51 -0
- package/bin/retailCustomer/dtos/requests/UpsertCustomerFromKycRequest.d.ts +5 -0
- package/bin/retailCustomer/dtos/requests/UpsertCustomerFromKycRequest.js +13 -0
- package/bin/retailCustomer/enums/KycMethodEnum.d.ts +5 -0
- package/bin/retailCustomer/enums/KycMethodEnum.js +9 -0
- package/bin/retailCustomer/index.d.ts +1 -0
- package/bin/retailCustomer/index.js +1 -0
- package/package.json +1 -1
- package/src/retailCustomer/dtos/requests/UpsertCustomerFromKycRequest.ts +13 -0
- package/src/retailCustomer/enums/KycMethodEnum.ts +5 -0
- package/src/retailCustomer/index.ts +1 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
import { plainToInstance } from 'class-transformer';
|
|
3
|
+
import { validateSync } from 'class-validator';
|
|
4
|
+
import { UpsertCustomerFromKycRequest } from '../../../src/retailCustomer/dtos/requests/UpsertCustomerFromKycRequest';
|
|
5
|
+
import { KycMethodEnum } from '../../../src/retailCustomer/enums/KycMethodEnum';
|
|
6
|
+
import { KycModalityEnum } from '../../../src/retailCustomer/enums/KycModalityEnum';
|
|
7
|
+
import { RetailKycStatusEnum } from '../../../src/retailCustomer/enums/RetailKycStatusEnum';
|
|
8
|
+
|
|
9
|
+
/** Valida como lo hace `retail-customer-business`: con `@Expose` y `excludeExtraneousValues`. */
|
|
10
|
+
function toDto(payload: Record<string, unknown>): UpsertCustomerFromKycRequest {
|
|
11
|
+
return plainToInstance(UpsertCustomerFromKycRequest, payload, { excludeExtraneousValues: true });
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const base = {
|
|
15
|
+
originStoreId: 'store-1',
|
|
16
|
+
names: 'Ana',
|
|
17
|
+
paternalLastName: 'Pérez',
|
|
18
|
+
phone: '5512345678',
|
|
19
|
+
curp: 'PEGA900101MDFRRN09',
|
|
20
|
+
fiadoDirectoryId: 'dir-1',
|
|
21
|
+
fiadoPeopleId: 'people-1',
|
|
22
|
+
kycStatus: Object.values(RetailKycStatusEnum)[0],
|
|
23
|
+
kycModality: KycModalityEnum.STORE_DEVICE,
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
describe('UpsertCustomerFromKycRequest — método de KYC', () => {
|
|
27
|
+
it('KycMethodEnum expone FULL_KYC y FACEMATCH', () => {
|
|
28
|
+
expect(Object.values(KycMethodEnum)).toEqual(['FULL_KYC', 'FACEMATCH']);
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
it('acepta el payload sin kycMethod ni biometricVerificationId', () => {
|
|
32
|
+
expect(validateSync(toDto(base)).map((e) => e.property)).toEqual([]);
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
it('conserva kycMethod y biometricVerificationId del alta por facematch', () => {
|
|
36
|
+
const dto = toDto({ ...base, kycMethod: KycMethodEnum.FACEMATCH, biometricVerificationId: 'bv-1' });
|
|
37
|
+
expect(validateSync(dto)).toEqual([]);
|
|
38
|
+
expect(dto.kycMethod).toBe(KycMethodEnum.FACEMATCH);
|
|
39
|
+
expect(dto.biometricVerificationId).toBe('bv-1');
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
it('rechaza un kycMethod fuera del catálogo', () => {
|
|
43
|
+
expect(validateSync(toDto({ ...base, kycMethod: 'SELFIE' })).map((e) => e.property)).toEqual(['kycMethod']);
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
it('rechaza un biometricVerificationId que no es string', () => {
|
|
47
|
+
expect(validateSync(toDto({ ...base, biometricVerificationId: 42 })).map((e) => e.property)).toEqual([
|
|
48
|
+
'biometricVerificationId',
|
|
49
|
+
]);
|
|
50
|
+
});
|
|
51
|
+
});
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { RetailAddress } from '../RetailAddress';
|
|
2
|
+
import { KycMethodEnum } from '../../enums/KycMethodEnum';
|
|
2
3
|
import { KycModalityEnum } from '../../enums/KycModalityEnum';
|
|
3
4
|
import { RetailKycStatusEnum } from '../../enums/RetailKycStatusEnum';
|
|
4
5
|
/**
|
|
@@ -47,6 +48,10 @@ export declare class UpsertCustomerFromKycRequest {
|
|
|
47
48
|
hasActiveMxAccount?: boolean;
|
|
48
49
|
kycStatus: RetailKycStatusEnum;
|
|
49
50
|
kycModality: KycModalityEnum;
|
|
51
|
+
/** Método con el que se verificó la identidad. Ausente = no pisa el valor guardado. */
|
|
52
|
+
kycMethod?: KycMethodEnum;
|
|
53
|
+
/** Verificación biométrica de `biometrics-business` que respaldó el alta por facematch. */
|
|
54
|
+
biometricVerificationId?: string;
|
|
50
55
|
/**
|
|
51
56
|
* Domicilio del INE (paso 02e), ya normalizado contra `places-business`. Se persiste embebido en la
|
|
52
57
|
* MISMA TX del upsert.
|
|
@@ -14,6 +14,7 @@ const class_transformer_1 = require("class-transformer");
|
|
|
14
14
|
const class_validator_1 = require("class-validator");
|
|
15
15
|
const regex_1 = require("../../../helpers/constans/regex");
|
|
16
16
|
const RetailAddress_1 = require("../RetailAddress");
|
|
17
|
+
const KycMethodEnum_1 = require("../../enums/KycMethodEnum");
|
|
17
18
|
const KycModalityEnum_1 = require("../../enums/KycModalityEnum");
|
|
18
19
|
const RetailKycStatusEnum_1 = require("../../enums/RetailKycStatusEnum");
|
|
19
20
|
/**
|
|
@@ -141,6 +142,18 @@ __decorate([
|
|
|
141
142
|
(0, class_validator_1.IsEnum)(KycModalityEnum_1.KycModalityEnum),
|
|
142
143
|
__metadata("design:type", String)
|
|
143
144
|
], UpsertCustomerFromKycRequest.prototype, "kycModality", void 0);
|
|
145
|
+
__decorate([
|
|
146
|
+
(0, class_transformer_1.Expose)(),
|
|
147
|
+
(0, class_validator_1.IsOptional)(),
|
|
148
|
+
(0, class_validator_1.IsEnum)(KycMethodEnum_1.KycMethodEnum),
|
|
149
|
+
__metadata("design:type", String)
|
|
150
|
+
], UpsertCustomerFromKycRequest.prototype, "kycMethod", void 0);
|
|
151
|
+
__decorate([
|
|
152
|
+
(0, class_transformer_1.Expose)(),
|
|
153
|
+
(0, class_validator_1.IsOptional)(),
|
|
154
|
+
(0, class_validator_1.IsString)(),
|
|
155
|
+
__metadata("design:type", String)
|
|
156
|
+
], UpsertCustomerFromKycRequest.prototype, "biometricVerificationId", void 0);
|
|
144
157
|
__decorate([
|
|
145
158
|
(0, class_transformer_1.Expose)(),
|
|
146
159
|
(0, class_validator_1.IsOptional)(),
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.KycMethodEnum = void 0;
|
|
4
|
+
/** Cómo se verificó la identidad del cliente: KYC completo o solo selfie contra la cuenta existente. */
|
|
5
|
+
var KycMethodEnum;
|
|
6
|
+
(function (KycMethodEnum) {
|
|
7
|
+
KycMethodEnum["FULL_KYC"] = "FULL_KYC";
|
|
8
|
+
KycMethodEnum["FACEMATCH"] = "FACEMATCH";
|
|
9
|
+
})(KycMethodEnum || (exports.KycMethodEnum = KycMethodEnum = {}));
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export * from './enums/AccountStatusEnum';
|
|
2
2
|
export * from './enums/RetailKycStatusEnum';
|
|
3
3
|
export * from './enums/KycModalityEnum';
|
|
4
|
+
export * from './enums/KycMethodEnum';
|
|
4
5
|
export * from './enums/KycReviewResultEnum';
|
|
5
6
|
export * from './enums/RetailCustomerStatusEnum';
|
|
6
7
|
export * from './enums/WelcomeBonusStatusEnum';
|
|
@@ -18,6 +18,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
18
18
|
__exportStar(require("./enums/AccountStatusEnum"), exports);
|
|
19
19
|
__exportStar(require("./enums/RetailKycStatusEnum"), exports);
|
|
20
20
|
__exportStar(require("./enums/KycModalityEnum"), exports);
|
|
21
|
+
__exportStar(require("./enums/KycMethodEnum"), exports);
|
|
21
22
|
__exportStar(require("./enums/KycReviewResultEnum"), exports);
|
|
22
23
|
__exportStar(require("./enums/RetailCustomerStatusEnum"), exports);
|
|
23
24
|
__exportStar(require("./enums/WelcomeBonusStatusEnum"), exports);
|
package/package.json
CHANGED
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
} from 'class-validator';
|
|
13
13
|
import { regexCurp, regexIso8601Date, regexPhoneMx } from '../../../helpers/constans/regex';
|
|
14
14
|
import { RetailAddress } from '../RetailAddress';
|
|
15
|
+
import { KycMethodEnum } from '../../enums/KycMethodEnum';
|
|
15
16
|
import { KycModalityEnum } from '../../enums/KycModalityEnum';
|
|
16
17
|
import { RetailKycStatusEnum } from '../../enums/RetailKycStatusEnum';
|
|
17
18
|
|
|
@@ -140,6 +141,18 @@ export class UpsertCustomerFromKycRequest {
|
|
|
140
141
|
@IsEnum(KycModalityEnum)
|
|
141
142
|
kycModality!: KycModalityEnum;
|
|
142
143
|
|
|
144
|
+
/** Método con el que se verificó la identidad. Ausente = no pisa el valor guardado. */
|
|
145
|
+
@Expose()
|
|
146
|
+
@IsOptional()
|
|
147
|
+
@IsEnum(KycMethodEnum)
|
|
148
|
+
kycMethod?: KycMethodEnum;
|
|
149
|
+
|
|
150
|
+
/** Verificación biométrica de `biometrics-business` que respaldó el alta por facematch. */
|
|
151
|
+
@Expose()
|
|
152
|
+
@IsOptional()
|
|
153
|
+
@IsString()
|
|
154
|
+
biometricVerificationId?: string;
|
|
155
|
+
|
|
143
156
|
/**
|
|
144
157
|
* Domicilio del INE (paso 02e), ya normalizado contra `places-business`. Se persiste embebido en la
|
|
145
158
|
* MISMA TX del upsert.
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
export * from './enums/AccountStatusEnum';
|
|
3
3
|
export * from './enums/RetailKycStatusEnum';
|
|
4
4
|
export * from './enums/KycModalityEnum';
|
|
5
|
+
export * from './enums/KycMethodEnum';
|
|
5
6
|
export * from './enums/KycReviewResultEnum';
|
|
6
7
|
export * from './enums/RetailCustomerStatusEnum';
|
|
7
8
|
export * from './enums/WelcomeBonusStatusEnum';
|