opf-validator-beta 0.0.55 → 0.0.56
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.
|
@@ -1,11 +1,4 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Validações para CreateConsent
|
|
3
|
-
* Segue as regras especificadas no Open Finance Brasil
|
|
4
|
-
*/
|
|
5
1
|
import { ValidationResult } from "../../utils/openFinanceErrors";
|
|
6
2
|
import { CreateConsentPayload } from "../interfaces/createConsent";
|
|
7
|
-
/**
|
|
8
|
-
* Valida o payload de criação de consentimento
|
|
9
|
-
*/
|
|
10
3
|
export declare function validateCreateConsent(payload: CreateConsentPayload): ValidationResult;
|
|
11
4
|
//# sourceMappingURL=createConsent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createConsent.d.ts","sourceRoot":"","sources":["../../../src/consent/validators/createConsent.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"createConsent.d.ts","sourceRoot":"","sources":["../../../src/consent/validators/createConsent.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,gBAAgB,EAGjB,MAAM,+BAA+B,CAAC;AAQvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,oBAAoB,GAAG,gBAAgB,CA+DrF"}
|
|
@@ -1,91 +1,80 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Validações para CreateConsent
|
|
4
|
-
* Segue as regras especificadas no Open Finance Brasil
|
|
5
|
-
*/
|
|
6
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
3
|
exports.validateCreateConsent = validateCreateConsent;
|
|
8
4
|
const openFinanceErrors_1 = require("../../utils/openFinanceErrors");
|
|
9
5
|
const types_consent_1 = require("../../utils/types/types.consent");
|
|
10
6
|
const validationHelpers_1 = require("../../utils/validationHelpers");
|
|
11
|
-
/**
|
|
12
|
-
* Valida o payload de criação de consentimento
|
|
13
|
-
*/
|
|
14
7
|
function validateCreateConsent(payload) {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
return { isValid: false, statusCode: (0, openFinanceErrors_1.getStatusCode)(errors), errors };
|
|
8
|
+
// 1. Validação: data deve existir
|
|
9
|
+
if (!payload?.data) {
|
|
10
|
+
const error = [openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO("data")];
|
|
11
|
+
return { isValid: false, statusCode: (0, openFinanceErrors_1.getStatusCode)(error), errors: error };
|
|
20
12
|
}
|
|
21
13
|
const data = payload.data;
|
|
22
|
-
// Validação: expirationDateTime (
|
|
14
|
+
// 2. Validação: expirationDateTime (Regulatory)
|
|
23
15
|
if (data.expirationDateTime) {
|
|
24
16
|
const expirationErrors = (0, validationHelpers_1.validateExpirationDate)(data.expirationDateTime);
|
|
25
|
-
|
|
17
|
+
if (expirationErrors.length > 0) {
|
|
18
|
+
return { isValid: false, statusCode: (0, openFinanceErrors_1.getStatusCode)(expirationErrors), errors: expirationErrors };
|
|
19
|
+
}
|
|
26
20
|
}
|
|
27
|
-
// Validação: permissions é obrigatório
|
|
21
|
+
// 3. Validação: permissions é obrigatório
|
|
28
22
|
if (!data.permissions) {
|
|
29
|
-
|
|
23
|
+
const error = [openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO("permissions")];
|
|
24
|
+
return { isValid: false, statusCode: (0, openFinanceErrors_1.getStatusCode)(error), errors: error };
|
|
30
25
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
// Regras de negócio específicas para permissões
|
|
35
|
-
// Só executar se não houver permissões inválidas (evita ruído de erro duplicado)
|
|
36
|
-
const invalidPermissions = permissionErrors.some(e => e.code === "PARAMETRO_INVALIDO");
|
|
37
|
-
if (!invalidPermissions) {
|
|
38
|
-
const ruleErrors = (0, validationHelpers_1.validatePermissionRules)(data.permissions);
|
|
39
|
-
errors.push(...ruleErrors);
|
|
40
|
-
}
|
|
26
|
+
const permissionErrors = validatePermissions(data.permissions);
|
|
27
|
+
if (permissionErrors.length > 0) {
|
|
28
|
+
return { isValid: false, statusCode: (0, openFinanceErrors_1.getStatusCode)(permissionErrors), errors: permissionErrors };
|
|
41
29
|
}
|
|
42
|
-
//
|
|
30
|
+
// 4. Regras de Negócio (O "Gabarito" que compara as linhas de erro)
|
|
31
|
+
const ruleErrors = (0, validationHelpers_1.validatePermissionRules)(data.permissions);
|
|
32
|
+
if (ruleErrors.length > 0) {
|
|
33
|
+
return { isValid: false, statusCode: (0, openFinanceErrors_1.getStatusCode)(ruleErrors), errors: ruleErrors };
|
|
34
|
+
}
|
|
35
|
+
// 5. Validação: loggedUser ou businessEntity (pelo menos um obrigatório)
|
|
43
36
|
if (!data.loggedUser && !data.businessEntity) {
|
|
44
|
-
|
|
37
|
+
const error = [openFinanceErrors_1.CommonErrors.PARAMETRO_NAO_INFORMADO("loggedUser or businessEntity")];
|
|
38
|
+
return { isValid: false, statusCode: (0, openFinanceErrors_1.getStatusCode)(error), errors: error };
|
|
45
39
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
40
|
+
if (data.loggedUser) {
|
|
41
|
+
const loggedUserErrors = (0, validationHelpers_1.validateLoggedUser)(data.loggedUser);
|
|
42
|
+
if (loggedUserErrors.length > 0) {
|
|
43
|
+
return { isValid: false, statusCode: (0, openFinanceErrors_1.getStatusCode)(loggedUserErrors), errors: loggedUserErrors };
|
|
50
44
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
45
|
+
}
|
|
46
|
+
if (data.businessEntity) {
|
|
47
|
+
const businessEntityErrors = (0, validationHelpers_1.validateBusinessEntity)(data.businessEntity);
|
|
48
|
+
if (businessEntityErrors.length > 0) {
|
|
49
|
+
return { isValid: false, statusCode: (0, openFinanceErrors_1.getStatusCode)(businessEntityErrors), errors: businessEntityErrors };
|
|
54
50
|
}
|
|
55
51
|
}
|
|
56
|
-
// Validação: isLinked
|
|
52
|
+
// 6. Validação: isLinked
|
|
57
53
|
if (data.isLinked !== undefined && typeof data.isLinked !== "boolean") {
|
|
58
|
-
|
|
54
|
+
const error = [openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("isLinked", "Deve ser um valor booleano")];
|
|
55
|
+
return { isValid: false, statusCode: (0, openFinanceErrors_1.getStatusCode)(error), errors: error };
|
|
59
56
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
statusCode: (0, openFinanceErrors_1.getStatusCode)(errors),
|
|
63
|
-
errors,
|
|
64
|
-
};
|
|
57
|
+
// SUCESSO ABSOLUTO
|
|
58
|
+
return { isValid: true, statusCode: 201, errors: [] };
|
|
65
59
|
}
|
|
66
60
|
/**
|
|
67
|
-
* Valida permissions array
|
|
61
|
+
* Valida permissions array (Sintaxe e Duplicidade)
|
|
68
62
|
*/
|
|
69
63
|
function validatePermissions(permissions) {
|
|
70
|
-
const errors = [];
|
|
71
64
|
if (!Array.isArray(permissions)) {
|
|
72
|
-
|
|
73
|
-
return errors;
|
|
65
|
+
return [openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("permissions", "Deve ser um array de strings")];
|
|
74
66
|
}
|
|
75
67
|
if (permissions.length === 0) {
|
|
76
|
-
|
|
77
|
-
return errors;
|
|
68
|
+
return [openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("permissions", "Array não pode estar vazio")];
|
|
78
69
|
}
|
|
79
|
-
// Validar duplicidade
|
|
80
70
|
const uniquePermissions = new Set(permissions);
|
|
81
71
|
if (uniquePermissions.size !== permissions.length) {
|
|
82
|
-
|
|
72
|
+
return [openFinanceErrors_1.CommonErrors.SEM_PERMISSOES_FUNCIONAIS_RESTANTES("permissions contém permissões duplicadas")];
|
|
83
73
|
}
|
|
84
|
-
// Validar permissões conhecidas
|
|
85
74
|
const invalidPermissions = permissions.filter((permission) => !types_consent_1.VALID_PERMISSIONS.includes(permission));
|
|
86
75
|
if (invalidPermissions.length > 0) {
|
|
87
|
-
|
|
76
|
+
return [openFinanceErrors_1.CommonErrors.PARAMETRO_INVALIDO("permissions", `Inválidas: ${invalidPermissions.join(", ")}`)];
|
|
88
77
|
}
|
|
89
|
-
return
|
|
78
|
+
return [];
|
|
90
79
|
}
|
|
91
80
|
//# sourceMappingURL=createConsent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createConsent.js","sourceRoot":"","sources":["../../../src/consent/validators/createConsent.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"createConsent.js","sourceRoot":"","sources":["../../../src/consent/validators/createConsent.ts"],"names":[],"mappings":"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"}
|