From d507f4a275cef233b0b566c34bd7baa3205cf10c Mon Sep 17 00:00:00 2001 From: laurent Date: Wed, 22 May 2024 08:16:11 +0100 Subject: [PATCH 1/7] Removed extraneous query params "appId" in requests made by digital_identity_service --- src/digital_identity_service/index.js | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/digital_identity_service/index.js b/src/digital_identity_service/index.js index 51fe41ae2..74bd8fa6f 100644 --- a/src/digital_identity_service/index.js +++ b/src/digital_identity_service/index.js @@ -68,7 +68,6 @@ class DigitalIdentityService { .withHeader('X-Yoti-Auth-Id', this.sdkId) .withPemString(this.pem.toString()) .withEndpoint('/v2/sessions') - .withQueryParam('appId', this.sdkId) .withMethod('POST') .withPayload(payload); @@ -107,7 +106,6 @@ class DigitalIdentityService { .withHeader('X-Yoti-Auth-Id', this.sdkId) .withPemString(this.pem.toString()) .withEndpoint(`/v2/sessions/${sessionId}`) - .withQueryParam('appId', this.sdkId) .withMethod('GET'); const request = requestBuilder.build(); @@ -148,7 +146,6 @@ class DigitalIdentityService { .withHeader('X-Yoti-Auth-Id', this.sdkId) .withPemString(this.pem.toString()) .withEndpoint(`/v2/sessions/${sessionId}/qr-codes`) - .withQueryParam('appId', this.sdkId) .withMethod('POST') .withPayload(payload); @@ -187,7 +184,6 @@ class DigitalIdentityService { .withHeader('X-Yoti-Auth-Id', this.sdkId) .withPemString(this.pem.toString()) .withEndpoint(`/v2/qr-codes/${qrCodeId}`) - .withQueryParam('appId', this.sdkId) .withMethod('GET'); const request = requestBuilder.build(); @@ -225,7 +221,6 @@ class DigitalIdentityService { .withHeader('X-Yoti-Auth-Id', this.sdkId) .withPemString(this.pem.toString()) .withEndpoint(`/v2/receipts/${receiptIdUrl}`) - .withQueryParam('appId', this.sdkId) .withMethod('GET') .build(); @@ -250,7 +245,6 @@ class DigitalIdentityService { .withHeader('X-Yoti-Auth-Id', this.sdkId) .withPemString(this.pem.toString()) .withEndpoint(`/v2/wrapped-item-keys/${receiptItemKeyId}`) - .withQueryParam('appId', this.sdkId) .withMethod('GET') .build(); From 4cccee3958aea93f9dcd4070f9ca6ef488fd2f7e Mon Sep 17 00:00:00 2001 From: laurent-yoti Date: Wed, 22 May 2024 09:43:30 +0100 Subject: [PATCH 2/7] SDK-2453 include requirements_not_met_details in scheme compliance (#472) * Created class IdentityProfileRequirementsNotMetDetailResponse to parse/expose the RequirementsNotMetDetail object. Updated IdentityProfileFailureReasonResponse to use IdentityProfileRequirementsNotMetDetailResponse Modified IdentityProfileReportSchemesComplianceResponse to include conditionally requirementsNotMetDetails, as a list of IdentityProfileRequirementsNotMetDetailResponse * Fixes for JSDoc/Typescript --- ...dentity.profile.failure.reason.response.js | 41 ++---------- ...file.report.schemes.compliance.response.js | 26 +++++--- ...le.requirements.not.met.detail.response.js | 49 +++++++++++++++ ...report.schemes.compliance.response.spec.js | 62 +++++++++++++++++-- ...equirement.not.met.detail.response.spec.js | 57 +++++++++++++++++ .../identity.profile.response.spec.js | 3 + ...ntity.profile.failure.reason.response.d.ts | 31 ++-------- ...le.report.schemes.compliance.response.d.ts | 14 ++--- ....requirements.not.met.detail.response.d.ts | 19 ++++++ 9 files changed, 220 insertions(+), 82 deletions(-) create mode 100644 src/idv_service/session/retrieve/identity.profile.requirements.not.met.detail.response.js create mode 100644 tests/idv_service/session/retrieve/identity.profile.requirement.not.met.detail.response.spec.js create mode 100644 types/src/idv_service/session/retrieve/identity.profile.requirements.not.met.detail.response.d.ts diff --git a/src/idv_service/session/retrieve/identity.profile.failure.reason.response.js b/src/idv_service/session/retrieve/identity.profile.failure.reason.response.js index 90c113ccb..520bc57d8 100644 --- a/src/idv_service/session/retrieve/identity.profile.failure.reason.response.js +++ b/src/idv_service/session/retrieve/identity.profile.failure.reason.response.js @@ -1,23 +1,15 @@ 'use strict'; const Validation = require('../../../yoti_common/validation'); - -/** - * @typedef {Object} RequirementsNotMetDetail - * @property {string} [failureType] - * @property {string} [documentType] - * @property {string} [documentCountryIsoCode] - * @property {string} [auditId] - * @property {string} [details] - */ +const IdentityProfileRequirementsNotMetDetailResponse = require('./identity.profile.requirements.not.met.detail.response'); class IdentityProfileFailureReasonResponse { constructor(failureReason) { Validation.isString(failureReason.reason_code, 'reason code'); - /** @private */ + /** @private @type {string} */ this.reasonCode = failureReason.reason_code; - /** @private */ + /** @private @type {IdentityProfileRequirementsNotMetDetailResponse[]} */ this.requirementsNotMetDetails = []; // eslint-disable-next-line camelcase @@ -25,37 +17,16 @@ class IdentityProfileFailureReasonResponse { if (requirementsNotMetDetails) { Validation.isArray(requirementsNotMetDetails, 'requirements not met details'); - this.requirementsNotMetDetails = requirementsNotMetDetails.map((detail) => { - const { - failure_type: failureType, - document_type: documentType, - document_country_iso_code: documentCountryIsoCode, - audit_id: auditId, - details, - } = detail; - - return ({ - failureType, - documentType, - documentCountryIsoCode, - auditId, - details, - }); - }); + this.requirementsNotMetDetails = requirementsNotMetDetails + // eslint-disable-next-line max-len + .map((requirementsNotMetDetail) => new IdentityProfileRequirementsNotMetDetailResponse(requirementsNotMetDetail)); } - /** @private */ } - /** - * @returns {string} - */ getReasonCode() { return this.reasonCode; } - /** - * @returns {RequirementsNotMetDetail[]} - */ getRequirementsNotMetDetails() { return this.requirementsNotMetDetails; } diff --git a/src/idv_service/session/retrieve/identity.profile.report.schemes.compliance.response.js b/src/idv_service/session/retrieve/identity.profile.report.schemes.compliance.response.js index f7d8f2782..67b4934f7 100644 --- a/src/idv_service/session/retrieve/identity.profile.report.schemes.compliance.response.js +++ b/src/idv_service/session/retrieve/identity.profile.report.schemes.compliance.response.js @@ -1,6 +1,7 @@ 'use strict'; const Validation = require('../../../yoti_common/validation'); +const IdentityProfileRequirementsNotMetDetailResponse = require('./identity.profile.requirements.not.met.detail.response'); class IdentityProfileReportSchemesComplianceResponse { constructor(schemesCompliance) { @@ -9,13 +10,24 @@ class IdentityProfileReportSchemesComplianceResponse { this.scheme = schemesCompliance.scheme; Validation.isBoolean(schemesCompliance.requirements_met, 'requirements_met'); - /** @private */ + /** @private @type {boolean} */ this.requirementsMet = schemesCompliance.requirements_met; if (schemesCompliance.requirements_not_met_info) { Validation.isString(schemesCompliance.requirements_not_met_info, 'requirements_not_met_info'); - /** @private */ + /** @private @type {string|undefined} */ this.requirementsNotMetInfo = schemesCompliance.requirements_not_met_info; + + /** @private @type {IdentityProfileRequirementsNotMetDetailResponse[]|undefined} */ + this.requirementsNotMetDetails = []; + + if (schemesCompliance.requirements_not_met_details) { + Validation.isArray(schemesCompliance.requirements_not_met_details, 'requirements not met details'); + + this.requirementsNotMetDetails = schemesCompliance.requirements_not_met_details + // eslint-disable-next-line max-len + .map((requirementsNotMetDetail) => new IdentityProfileRequirementsNotMetDetailResponse(requirementsNotMetDetail)); + } } } @@ -26,19 +38,17 @@ class IdentityProfileReportSchemesComplianceResponse { return this.scheme; } - /** - * @returns {boolean} - */ isRequirementsMet() { return this.requirementsMet; } - /** - * @returns {string} - */ getRequirementsNotMetInfo() { return this.requirementsNotMetInfo; } + + getRequirementsNotMetDetails() { + return this.requirementsNotMetDetails; + } } module.exports = IdentityProfileReportSchemesComplianceResponse; diff --git a/src/idv_service/session/retrieve/identity.profile.requirements.not.met.detail.response.js b/src/idv_service/session/retrieve/identity.profile.requirements.not.met.detail.response.js new file mode 100644 index 000000000..06b96af97 --- /dev/null +++ b/src/idv_service/session/retrieve/identity.profile.requirements.not.met.detail.response.js @@ -0,0 +1,49 @@ +'use strict'; + +const Validation = require('../../../yoti_common/validation'); + +class IdentityProfileRequirementsNotMetDetailResponse { + constructor(requirementsNotMetDetail) { + Validation.isString(requirementsNotMetDetail.failure_type, 'failure_type'); + /** @private @type {string} */ + this.failureType = requirementsNotMetDetail.failure_type; + + Validation.isString(requirementsNotMetDetail.document_type, 'document_type'); + /** @private @type {string} */ + this.documentType = requirementsNotMetDetail.document_type; + + Validation.isString(requirementsNotMetDetail.document_country_iso_code, 'document_country_iso_code'); + /** @private @type {string} */ + this.documentCountryIsoCode = requirementsNotMetDetail.document_country_iso_code; + + Validation.isString(requirementsNotMetDetail.audit_id, 'audit_id', true); + /** @private @type {string|undefined} */ + this.auditId = requirementsNotMetDetail.audit_id; + + Validation.isString(requirementsNotMetDetail.details, 'details'); + /** @private @type {string} */ + this.details = requirementsNotMetDetail.details; + } + + getFailureType() { + return this.failureType; + } + + getDocumentType() { + return this.documentType; + } + + getDocumentCountryIsoCode() { + return this.documentCountryIsoCode; + } + + getAuditId() { + return this.auditId; + } + + getDetails() { + return this.details; + } +} + +module.exports = IdentityProfileRequirementsNotMetDetailResponse; diff --git a/tests/idv_service/session/retrieve/identity.profile.report.schemes.compliance.response.spec.js b/tests/idv_service/session/retrieve/identity.profile.report.schemes.compliance.response.spec.js index e14fefef9..a29a2503f 100644 --- a/tests/idv_service/session/retrieve/identity.profile.report.schemes.compliance.response.spec.js +++ b/tests/idv_service/session/retrieve/identity.profile.report.schemes.compliance.response.spec.js @@ -1,4 +1,5 @@ const IdentityProfileReportSchemesComplianceResponse = require('../../../../src/idv_service/session/retrieve/identity.profile.report.schemes.compliance.response'); +const IdentityProfileRequirementsNotMetDetailResponse = require('../../../../src/idv_service/session/retrieve/identity.profile.requirements.not.met.detail.response'); describe('IdentityProfileReportSchemesComplianceResponse', () => { let identityProfileReportSchemesComplianceResponse; @@ -11,7 +12,6 @@ describe('IdentityProfileReportSchemesComplianceResponse', () => { objective: 'STANDARD', }, requirements_met: true, - requirements_not_met_info: 'some string here', }); }); @@ -30,9 +30,63 @@ describe('IdentityProfileReportSchemesComplianceResponse', () => { }); }); - describe('#getRequirementsNotMetInfo', () => { - it('Should return requirements_not_met_info string', () => { - expect(identityProfileReportSchemesComplianceResponse.getRequirementsNotMetInfo()).toBe('some string here'); + describe('with requirements not met', () => { + beforeAll(() => { + identityProfileReportSchemesComplianceResponse = new + IdentityProfileReportSchemesComplianceResponse({ + scheme: { + type: 'DBS', + objective: 'STANDARD', + }, + requirements_met: false, + requirements_not_met_info: 'some string here', + requirements_not_met_details: [ + { + failure_type: 'ID_DOCUMENT_EXTRACTION', + document_type: 'PASSPORT', + document_country_iso_code: 'GBR', + audit_id: 'audit-123', + details: 'something not right', + }, + { + failure_type: 'ID_DOCUMENT_AUTHENTICITY', + document_type: 'PASSPORT', + document_country_iso_code: 'GBR', + audit_id: 'audit-456', + details: 'something still not right', + }, + ], + }); + }); + describe('#getRequirementsNotMetInfo', () => { + it('Should return requirements_not_met_info string', () => { + expect(identityProfileReportSchemesComplianceResponse.getRequirementsNotMetInfo()).toBe('some string here'); + }); + }); + + describe('#getRequirementsNotMetDetails', () => { + it('Should return the list of RequirementsNotMetDetail', () => { + // eslint-disable-next-line max-len + const requirementsNotMetDetails = identityProfileReportSchemesComplianceResponse.getRequirementsNotMetDetails(); + expect(requirementsNotMetDetails).toHaveLength(2); + const [firstDetail, secondDetail] = requirementsNotMetDetails; + expect(firstDetail).toBeInstanceOf(IdentityProfileRequirementsNotMetDetailResponse); + expect(firstDetail).toEqual(expect.objectContaining({ + failureType: 'ID_DOCUMENT_EXTRACTION', + documentType: 'PASSPORT', + documentCountryIsoCode: 'GBR', + auditId: 'audit-123', + details: 'something not right', + })); + expect(firstDetail).toBeInstanceOf(IdentityProfileRequirementsNotMetDetailResponse); + expect(secondDetail).toEqual(expect.objectContaining({ + failureType: 'ID_DOCUMENT_AUTHENTICITY', + documentType: 'PASSPORT', + documentCountryIsoCode: 'GBR', + auditId: 'audit-456', + details: 'something still not right', + })); + }); }); }); }); diff --git a/tests/idv_service/session/retrieve/identity.profile.requirement.not.met.detail.response.spec.js b/tests/idv_service/session/retrieve/identity.profile.requirement.not.met.detail.response.spec.js new file mode 100644 index 000000000..87b7d7919 --- /dev/null +++ b/tests/idv_service/session/retrieve/identity.profile.requirement.not.met.detail.response.spec.js @@ -0,0 +1,57 @@ +const IdentityProfileRequirementsNotMetDetailResponse = require('../../../../src/idv_service/session/retrieve/identity.profile.requirements.not.met.detail.response'); + +describe('IdentityProfileRequirementsNotMetDetailResponse', () => { + let requirementsNotMetDetailResponse; + + beforeEach(() => { + requirementsNotMetDetailResponse = new IdentityProfileRequirementsNotMetDetailResponse({ + failure_type: 'ID_DOCUMENT_EXTRACTION', + document_type: 'PASSPORT', + document_country_iso_code: 'GBR', + audit_id: 'audit-123', + details: 'something not right', + }); + }); + + describe('#getFailureType', () => { + it('Should return the failure type', () => { + expect(requirementsNotMetDetailResponse.getFailureType()).toBe('ID_DOCUMENT_EXTRACTION'); + }); + }); + + describe('#getDocumentType', () => { + it('Should return the document type', () => { + expect(requirementsNotMetDetailResponse.getDocumentType()).toBe('PASSPORT'); + }); + }); + + describe('#getDocumentCountryIsoCode', () => { + it('Should return the document country iso code', () => { + expect(requirementsNotMetDetailResponse.getDocumentCountryIsoCode()).toBe('GBR'); + }); + }); + + describe('#getAuditId', () => { + it('Should return the audit ID', () => { + expect(requirementsNotMetDetailResponse.getAuditId()).toBe('audit-123'); + }); + }); + + describe('#getDetails', () => { + it('Should return the details', () => { + expect(requirementsNotMetDetailResponse.getDetails()).toBe('something not right'); + }); + }); + + describe('default instance object', () => { + it('Should return an object with all the fields', () => { + expect(requirementsNotMetDetailResponse).toEqual(expect.objectContaining({ + failureType: 'ID_DOCUMENT_EXTRACTION', + documentType: 'PASSPORT', + documentCountryIsoCode: 'GBR', + auditId: 'audit-123', + details: 'something not right', + })); + }); + }); +}); diff --git a/tests/idv_service/session/retrieve/identity.profile.response.spec.js b/tests/idv_service/session/retrieve/identity.profile.response.spec.js index 8f7f059f2..850dc6a7b 100644 --- a/tests/idv_service/session/retrieve/identity.profile.response.spec.js +++ b/tests/idv_service/session/retrieve/identity.profile.response.spec.js @@ -1,6 +1,7 @@ const IdentityProfileResponse = require('../../../../src/idv_service/session/retrieve/identity.profile.response'); const IdentityProfileReportResponse = require('../../../../src/idv_service/session/retrieve/identity.profile.report.response'); const IdentityProfileFailureReasonResponse = require('../../../../src/idv_service/session/retrieve/identity.profile.failure.reason.response'); +const IdentityProfileRequirementsNotMetDetailResponse = require('../../../../src/idv_service/session/retrieve/identity.profile.requirements.not.met.detail.response'); describe('IdentityProfileResponse', () => { let identityProfileResponse; @@ -71,6 +72,7 @@ describe('IdentityProfileResponse', () => { expect(failureReason.getReasonCode()).toBe('MANDATORY_DOCUMENT_NOT_PROVIDED'); expect(failureReason.getRequirementsNotMetDetails()).toHaveLength(2); const [firstDetail, secondDetail] = failureReason.getRequirementsNotMetDetails(); + expect(firstDetail).toBeInstanceOf(IdentityProfileRequirementsNotMetDetailResponse); expect(firstDetail).toEqual(expect.objectContaining({ failureType: 'ID_DOCUMENT_EXTRACTION', documentType: 'PASSPORT', @@ -78,6 +80,7 @@ describe('IdentityProfileResponse', () => { auditId: 'audit-123', details: 'something not right', })); + expect(firstDetail).toBeInstanceOf(IdentityProfileRequirementsNotMetDetailResponse); expect(secondDetail).toEqual(expect.objectContaining({ failureType: 'ID_DOCUMENT_AUTHENTICITY', documentType: 'PASSPORT', diff --git a/types/src/idv_service/session/retrieve/identity.profile.failure.reason.response.d.ts b/types/src/idv_service/session/retrieve/identity.profile.failure.reason.response.d.ts index e635efa88..8d7e56144 100644 --- a/types/src/idv_service/session/retrieve/identity.profile.failure.reason.response.d.ts +++ b/types/src/idv_service/session/retrieve/identity.profile.failure.reason.response.d.ts @@ -1,34 +1,11 @@ export = IdentityProfileFailureReasonResponse; -/** - * @typedef {Object} RequirementsNotMetDetail - * @property {string} [failureType] - * @property {string} [documentType] - * @property {string} [documentCountryIsoCode] - * @property {string} [auditId] - * @property {string} [details] - */ declare class IdentityProfileFailureReasonResponse { constructor(failureReason: any); - /** @private */ + /** @private @type {string} */ private reasonCode; - /** @private */ + /** @private @type {IdentityProfileRequirementsNotMetDetailResponse[]} */ private requirementsNotMetDetails; - /** - * @returns {string} - */ getReasonCode(): string; - /** - * @returns {RequirementsNotMetDetail[]} - */ - getRequirementsNotMetDetails(): RequirementsNotMetDetail[]; + getRequirementsNotMetDetails(): IdentityProfileRequirementsNotMetDetailResponse[]; } -declare namespace IdentityProfileFailureReasonResponse { - export { RequirementsNotMetDetail }; -} -type RequirementsNotMetDetail = { - failureType?: string; - documentType?: string; - documentCountryIsoCode?: string; - auditId?: string; - details?: string; -}; +import IdentityProfileRequirementsNotMetDetailResponse = require("./identity.profile.requirements.not.met.detail.response"); diff --git a/types/src/idv_service/session/retrieve/identity.profile.report.schemes.compliance.response.d.ts b/types/src/idv_service/session/retrieve/identity.profile.report.schemes.compliance.response.d.ts index d63c600ed..538c70b48 100644 --- a/types/src/idv_service/session/retrieve/identity.profile.report.schemes.compliance.response.d.ts +++ b/types/src/idv_service/session/retrieve/identity.profile.report.schemes.compliance.response.d.ts @@ -3,20 +3,18 @@ declare class IdentityProfileReportSchemesComplianceResponse { constructor(schemesCompliance: any); /** @private */ private scheme; - /** @private */ + /** @private @type {boolean} */ private requirementsMet; - /** @private */ + /** @private @type {string|undefined} */ private requirementsNotMetInfo; + /** @private @type {IdentityProfileRequirementsNotMetDetailResponse[]|undefined} */ + private requirementsNotMetDetails; /** * @returns {object} */ getScheme(): object; - /** - * @returns {boolean} - */ isRequirementsMet(): boolean; - /** - * @returns {string} - */ getRequirementsNotMetInfo(): string; + getRequirementsNotMetDetails(): IdentityProfileRequirementsNotMetDetailResponse[]; } +import IdentityProfileRequirementsNotMetDetailResponse = require("./identity.profile.requirements.not.met.detail.response"); diff --git a/types/src/idv_service/session/retrieve/identity.profile.requirements.not.met.detail.response.d.ts b/types/src/idv_service/session/retrieve/identity.profile.requirements.not.met.detail.response.d.ts new file mode 100644 index 000000000..e015f1370 --- /dev/null +++ b/types/src/idv_service/session/retrieve/identity.profile.requirements.not.met.detail.response.d.ts @@ -0,0 +1,19 @@ +export = IdentityProfileRequirementsNotMetDetailResponse; +declare class IdentityProfileRequirementsNotMetDetailResponse { + constructor(requirementsNotMetDetail: any); + /** @private @type {string} */ + private failureType; + /** @private @type {string} */ + private documentType; + /** @private @type {string} */ + private documentCountryIsoCode; + /** @private @type {string|undefined} */ + private auditId; + /** @private @type {string} */ + private details; + getFailureType(): string; + getDocumentType(): string; + getDocumentCountryIsoCode(): string; + getAuditId(): string; + getDetails(): string; +} From ff510503b87772cd6ed4d73b67a5683ce4560f11 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 22 May 2024 09:45:29 +0100 Subject: [PATCH 3/7] Bump protobufjs from 7.2.6 to 7.3.0 (#470) Bumps [protobufjs](https://github.com/protobufjs/protobuf.js) from 7.2.6 to 7.3.0. - [Release notes](https://github.com/protobufjs/protobuf.js/releases) - [Changelog](https://github.com/protobufjs/protobuf.js/blob/master/CHANGELOG.md) - [Commits](https://github.com/protobufjs/protobuf.js/compare/protobufjs-v7.2.6...protobufjs-v7.3.0) --- updated-dependencies: - dependency-name: protobufjs dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index ff333ba0f..7858c1208 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "form-data": "4.0.0", "node-forge": "1.3.1", - "protobufjs": "7.2.6", + "protobufjs": "7.3.0", "superagent": "9.0.2", "uuid": "9.0.1" }, @@ -5366,9 +5366,9 @@ } }, "node_modules/protobufjs": { - "version": "7.2.6", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.6.tgz", - "integrity": "sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.3.0.tgz", + "integrity": "sha512-YWD03n3shzV9ImZRX3ccbjqLxj7NokGN0V/ESiBV5xWqrommYHYiihuIyavq03pWSGqlyvYUFmfoMKd+1rPA/g==", "hasInstallScript": true, "dependencies": { "@protobufjs/aspromise": "^1.1.2", @@ -10382,9 +10382,9 @@ "dev": true }, "protobufjs": { - "version": "7.2.6", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.6.tgz", - "integrity": "sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.3.0.tgz", + "integrity": "sha512-YWD03n3shzV9ImZRX3ccbjqLxj7NokGN0V/ESiBV5xWqrommYHYiihuIyavq03pWSGqlyvYUFmfoMKd+1rPA/g==", "requires": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", diff --git a/package.json b/package.json index 87b17a198..4bce0f386 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "dependencies": { "form-data": "4.0.0", "node-forge": "1.3.1", - "protobufjs": "7.2.6", + "protobufjs": "7.3.0", "superagent": "9.0.2", "uuid": "9.0.1" }, From ae0ff82af2da550e7e4c0279370b4b968dca5535 Mon Sep 17 00:00:00 2001 From: laurent Date: Tue, 4 Jun 2024 08:48:36 +0100 Subject: [PATCH 4/7] SDK-2453 revert parsing of requirements_not_met_details in scheme compliance, keeps IdentityProfileRequirementsNotMetDetailResponse class --- ...file.report.schemes.compliance.response.js | 16 ----- ...report.schemes.compliance.response.spec.js | 62 ++----------------- ...le.report.schemes.compliance.response.d.ts | 4 -- 3 files changed, 4 insertions(+), 78 deletions(-) diff --git a/src/idv_service/session/retrieve/identity.profile.report.schemes.compliance.response.js b/src/idv_service/session/retrieve/identity.profile.report.schemes.compliance.response.js index 67b4934f7..4d871f85e 100644 --- a/src/idv_service/session/retrieve/identity.profile.report.schemes.compliance.response.js +++ b/src/idv_service/session/retrieve/identity.profile.report.schemes.compliance.response.js @@ -1,7 +1,6 @@ 'use strict'; const Validation = require('../../../yoti_common/validation'); -const IdentityProfileRequirementsNotMetDetailResponse = require('./identity.profile.requirements.not.met.detail.response'); class IdentityProfileReportSchemesComplianceResponse { constructor(schemesCompliance) { @@ -17,17 +16,6 @@ class IdentityProfileReportSchemesComplianceResponse { Validation.isString(schemesCompliance.requirements_not_met_info, 'requirements_not_met_info'); /** @private @type {string|undefined} */ this.requirementsNotMetInfo = schemesCompliance.requirements_not_met_info; - - /** @private @type {IdentityProfileRequirementsNotMetDetailResponse[]|undefined} */ - this.requirementsNotMetDetails = []; - - if (schemesCompliance.requirements_not_met_details) { - Validation.isArray(schemesCompliance.requirements_not_met_details, 'requirements not met details'); - - this.requirementsNotMetDetails = schemesCompliance.requirements_not_met_details - // eslint-disable-next-line max-len - .map((requirementsNotMetDetail) => new IdentityProfileRequirementsNotMetDetailResponse(requirementsNotMetDetail)); - } } } @@ -45,10 +33,6 @@ class IdentityProfileReportSchemesComplianceResponse { getRequirementsNotMetInfo() { return this.requirementsNotMetInfo; } - - getRequirementsNotMetDetails() { - return this.requirementsNotMetDetails; - } } module.exports = IdentityProfileReportSchemesComplianceResponse; diff --git a/tests/idv_service/session/retrieve/identity.profile.report.schemes.compliance.response.spec.js b/tests/idv_service/session/retrieve/identity.profile.report.schemes.compliance.response.spec.js index a29a2503f..e14fefef9 100644 --- a/tests/idv_service/session/retrieve/identity.profile.report.schemes.compliance.response.spec.js +++ b/tests/idv_service/session/retrieve/identity.profile.report.schemes.compliance.response.spec.js @@ -1,5 +1,4 @@ const IdentityProfileReportSchemesComplianceResponse = require('../../../../src/idv_service/session/retrieve/identity.profile.report.schemes.compliance.response'); -const IdentityProfileRequirementsNotMetDetailResponse = require('../../../../src/idv_service/session/retrieve/identity.profile.requirements.not.met.detail.response'); describe('IdentityProfileReportSchemesComplianceResponse', () => { let identityProfileReportSchemesComplianceResponse; @@ -12,6 +11,7 @@ describe('IdentityProfileReportSchemesComplianceResponse', () => { objective: 'STANDARD', }, requirements_met: true, + requirements_not_met_info: 'some string here', }); }); @@ -30,63 +30,9 @@ describe('IdentityProfileReportSchemesComplianceResponse', () => { }); }); - describe('with requirements not met', () => { - beforeAll(() => { - identityProfileReportSchemesComplianceResponse = new - IdentityProfileReportSchemesComplianceResponse({ - scheme: { - type: 'DBS', - objective: 'STANDARD', - }, - requirements_met: false, - requirements_not_met_info: 'some string here', - requirements_not_met_details: [ - { - failure_type: 'ID_DOCUMENT_EXTRACTION', - document_type: 'PASSPORT', - document_country_iso_code: 'GBR', - audit_id: 'audit-123', - details: 'something not right', - }, - { - failure_type: 'ID_DOCUMENT_AUTHENTICITY', - document_type: 'PASSPORT', - document_country_iso_code: 'GBR', - audit_id: 'audit-456', - details: 'something still not right', - }, - ], - }); - }); - describe('#getRequirementsNotMetInfo', () => { - it('Should return requirements_not_met_info string', () => { - expect(identityProfileReportSchemesComplianceResponse.getRequirementsNotMetInfo()).toBe('some string here'); - }); - }); - - describe('#getRequirementsNotMetDetails', () => { - it('Should return the list of RequirementsNotMetDetail', () => { - // eslint-disable-next-line max-len - const requirementsNotMetDetails = identityProfileReportSchemesComplianceResponse.getRequirementsNotMetDetails(); - expect(requirementsNotMetDetails).toHaveLength(2); - const [firstDetail, secondDetail] = requirementsNotMetDetails; - expect(firstDetail).toBeInstanceOf(IdentityProfileRequirementsNotMetDetailResponse); - expect(firstDetail).toEqual(expect.objectContaining({ - failureType: 'ID_DOCUMENT_EXTRACTION', - documentType: 'PASSPORT', - documentCountryIsoCode: 'GBR', - auditId: 'audit-123', - details: 'something not right', - })); - expect(firstDetail).toBeInstanceOf(IdentityProfileRequirementsNotMetDetailResponse); - expect(secondDetail).toEqual(expect.objectContaining({ - failureType: 'ID_DOCUMENT_AUTHENTICITY', - documentType: 'PASSPORT', - documentCountryIsoCode: 'GBR', - auditId: 'audit-456', - details: 'something still not right', - })); - }); + describe('#getRequirementsNotMetInfo', () => { + it('Should return requirements_not_met_info string', () => { + expect(identityProfileReportSchemesComplianceResponse.getRequirementsNotMetInfo()).toBe('some string here'); }); }); }); diff --git a/types/src/idv_service/session/retrieve/identity.profile.report.schemes.compliance.response.d.ts b/types/src/idv_service/session/retrieve/identity.profile.report.schemes.compliance.response.d.ts index 538c70b48..efac4284b 100644 --- a/types/src/idv_service/session/retrieve/identity.profile.report.schemes.compliance.response.d.ts +++ b/types/src/idv_service/session/retrieve/identity.profile.report.schemes.compliance.response.d.ts @@ -7,14 +7,10 @@ declare class IdentityProfileReportSchemesComplianceResponse { private requirementsMet; /** @private @type {string|undefined} */ private requirementsNotMetInfo; - /** @private @type {IdentityProfileRequirementsNotMetDetailResponse[]|undefined} */ - private requirementsNotMetDetails; /** * @returns {object} */ getScheme(): object; isRequirementsMet(): boolean; getRequirementsNotMetInfo(): string; - getRequirementsNotMetDetails(): IdentityProfileRequirementsNotMetDetailResponse[]; } -import IdentityProfileRequirementsNotMetDetailResponse = require("./identity.profile.requirements.not.met.detail.response"); From ca41d9ee3eb386d6241c3ea9c7bfc3e0e7a1739d Mon Sep 17 00:00:00 2001 From: laurent-yoti Date: Mon, 24 Jun 2024 11:36:25 +0100 Subject: [PATCH 5/7] SDK-2465 support advanced identity profile in IDV (#478) * Added all files to create and retrieve Advanced Identity Profile * Added unit-tests for idv_service/session/create/identity_profile/advanced * Added unit-tests for idv_service/session/retrieve/identity_profile/advanced * Added idv_service/session/retrieve/get.session.result * Updated session.specification.builder and session.specification * Export of AdvancedIdentityProfile builders from idv_service, then from top level. * Updated examples /examples/idv-identity-checks to use advanced identity profile (to be reviewed) * Fixed create advanced.identity.profile.scheme * Removed logs * Added in IDV retrieve/identity.profile.scheme.response Removed label * Move single identity profile to folder * Added/cleaned-up JSDoc and remove @type (as not compatible for both JS and TS completion) * Eslint in examples (temporary) * Updated example for adding Advanced identity profile check in the IDV flow. --- examples/idv-identity-checks/README.md | 2 +- examples/idv-identity-checks/index.js | 1 + .../src/controllers/index.controller.js | 62 +------- .../src/controllers/index.js | 2 + .../src/controllers/session.controller.js | 128 +++++++++++++++++ .../static/images/logo.png | Bin 0 -> 2988 bytes .../static/images/logo.svg | 1 - .../static/images/logo@2x.png | Bin 0 -> 5609 bytes examples/idv-identity-checks/static/style.css | 67 ++++++++- .../idv-identity-checks/views/pages/index.ejs | 21 ++- .../views/pages/layout/header.ejs | 19 ++- .../partials/advanced-identity-profile.ejs | 107 ++++++++++++++ .../views/pages/partials/identity-profile.ejs | 59 +++++--- .../views/pages/session.ejs | 3 + .../views/pages/success.ejs | 31 ++++ index.js | 9 ++ src/idv_service/index.js | 8 ++ .../advanced.identity.profile.builder.js | 42 ++++++ .../advanced/advanced.identity.profile.js | 28 ++++ ...d.identity.profile.requirements.builder.js | 31 ++++ .../advanced.identity.profile.requirements.js | 16 +++ ...dvanced.identity.profile.scheme.builder.js | 56 ++++++++ ....identity.profile.scheme.config.builder.js | 26 ++++ ...advanced.identity.profile.scheme.config.js | 24 ++++ .../advanced.identity.profile.scheme.js | 39 +++++ .../create/session.specification.builder.js | 10 +- .../session/create/session.specification.js | 16 ++- .../session/retrieve/get.session.result.js | 17 ++- ...file.report.schemes.compliance.response.js | 38 ----- ...vanced.identity.profile.report.response.js | 34 +++++ ...ofile.report.scheme.compliance.response.js | 44 ++++++ .../advanced.identity.profile.response.js | 60 ++++++++ ...vanced.identity.profile.scheme.response.js | 42 ++++++ ...entity.profile.trust.framework.response.js | 34 +++++ ...dentity.profile.failure.reason.response.js | 12 +- .../identity.profile.report.response.js | 10 +- ...file.report.schemes.compliance.response.js | 43 ++++++ ...le.requirements.not.met.detail.response.js | 31 ++-- .../identity.profile.response.js | 14 +- .../identity.profile.scheme.response.js | 31 ++++ .../advanced.identity.profile.builder.test.js | 87 ++++++++++++ ...ntity.profile.requirements.builder.test.js | 57 ++++++++ ...ed.identity.profile.scheme.builder.test.js | 99 +++++++++++++ ...tity.profile.scheme.config.builder.test.js | 45 ++++++ .../session.specification.builder.test.js | 61 ++++++++ .../retrieve/get.session.result.spec.js | 82 ++++++++++- ...d.identity.profile.report.response.spec.js | 118 +++++++++++++++ ...ity.profile.report.scheme.response.spec.js | 74 ++++++++++ ...advanced.identity.profile.response.spec.js | 134 ++++++++++++++++++ ...d.identity.profile.scheme.response.spec.js | 31 ++++ ...y.profile.trust.framework.response.spec.js | 67 +++++++++ .../identity.profile.report.response.spec.js | 6 +- ...report.schemes.compliance.response.spec.js | 7 +- ...equirement.not.met.detail.response.spec.js | 2 +- .../identity.profile.response.spec.js | 8 +- .../identity.profile.scheme.response.spec.js | 24 ++++ types/index.d.ts | 6 +- types/src/idv_service/index.d.ts | 6 +- .../advanced.identity.profile.builder.d.ts | 23 +++ .../advanced/advanced.identity.profile.d.ts | 17 +++ ...identity.profile.requirements.builder.d.ts | 16 +++ ...dvanced.identity.profile.requirements.d.ts | 9 ++ ...anced.identity.profile.scheme.builder.d.ts | 33 +++++ ...vanced.identity.profile.scheme.config.d.ts | 12 ++ .../advanced.identity.profile.scheme.d.ts | 21 +++ .../create/session.specification.builder.d.ts | 2 + .../session/create/session.specification.d.ts | 11 +- .../session/retrieve/get.session.result.d.ts | 9 +- ...le.report.schemes.compliance.response.d.ts | 16 --- ...nced.identity.profile.report.response.d.ts | 18 +++ ...ile.report.scheme.compliance.response.d.ts | 24 ++++ .../advanced.identity.profile.response.d.ts | 30 ++++ ...nced.identity.profile.scheme.response.d.ts | 22 +++ ...tity.profile.trust.framework.response.d.ts | 17 +++ ...ntity.profile.failure.reason.response.d.ts | 10 +- .../identity.profile.report.response.d.ts | 8 +- ...le.report.schemes.compliance.response.d.ts | 23 +++ ....requirements.not.met.detail.response.d.ts | 27 +++- .../identity.profile.response.d.ts | 16 +-- .../identity.profile.scheme.response.d.ts | 16 +++ 80 files changed, 2301 insertions(+), 211 deletions(-) create mode 100644 examples/idv-identity-checks/src/controllers/session.controller.js create mode 100644 examples/idv-identity-checks/static/images/logo.png delete mode 100644 examples/idv-identity-checks/static/images/logo.svg create mode 100644 examples/idv-identity-checks/static/images/logo@2x.png create mode 100644 examples/idv-identity-checks/views/pages/partials/advanced-identity-profile.ejs create mode 100644 examples/idv-identity-checks/views/pages/session.ejs create mode 100644 src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.builder.js create mode 100644 src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.js create mode 100644 src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.requirements.builder.js create mode 100644 src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.requirements.js create mode 100644 src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.scheme.builder.js create mode 100644 src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.scheme.config.builder.js create mode 100644 src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.scheme.config.js create mode 100644 src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.scheme.js delete mode 100644 src/idv_service/session/retrieve/identity.profile.report.schemes.compliance.response.js create mode 100644 src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.report.response.js create mode 100644 src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.report.scheme.compliance.response.js create mode 100644 src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.response.js create mode 100644 src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.scheme.response.js create mode 100644 src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.trust.framework.response.js rename src/idv_service/session/retrieve/{ => identity_profile}/identity.profile.failure.reason.response.js (79%) rename src/idv_service/session/retrieve/{ => identity_profile}/identity.profile.report.response.js (80%) create mode 100644 src/idv_service/session/retrieve/identity_profile/identity.profile.report.schemes.compliance.response.js rename src/idv_service/session/retrieve/{ => identity_profile}/identity.profile.requirements.not.met.detail.response.js (69%) rename src/idv_service/session/retrieve/{ => identity_profile}/identity.profile.response.js (78%) create mode 100644 src/idv_service/session/retrieve/identity_profile/identity.profile.scheme.response.js create mode 100644 tests/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.builder.test.js create mode 100644 tests/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.requirements.builder.test.js create mode 100644 tests/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.scheme.builder.test.js create mode 100644 tests/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.scheme.config.builder.test.js create mode 100644 tests/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.report.response.spec.js create mode 100644 tests/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.report.scheme.response.spec.js create mode 100644 tests/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.response.spec.js create mode 100644 tests/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.scheme.response.spec.js create mode 100644 tests/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.trust.framework.response.spec.js rename tests/idv_service/session/retrieve/{ => identity_profile}/identity.profile.report.response.spec.js (80%) rename tests/idv_service/session/retrieve/{ => identity_profile}/identity.profile.report.schemes.compliance.response.spec.js (70%) rename tests/idv_service/session/retrieve/{ => identity_profile}/identity.profile.requirement.not.met.detail.response.spec.js (93%) rename tests/idv_service/session/retrieve/{ => identity_profile}/identity.profile.response.spec.js (86%) create mode 100644 tests/idv_service/session/retrieve/identity_profile/identity.profile.scheme.response.spec.js create mode 100644 types/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.builder.d.ts create mode 100644 types/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.d.ts create mode 100644 types/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.requirements.builder.d.ts create mode 100644 types/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.requirements.d.ts create mode 100644 types/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.scheme.builder.d.ts create mode 100644 types/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.scheme.config.d.ts create mode 100644 types/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.scheme.d.ts delete mode 100644 types/src/idv_service/session/retrieve/identity.profile.report.schemes.compliance.response.d.ts create mode 100644 types/src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.report.response.d.ts create mode 100644 types/src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.report.scheme.compliance.response.d.ts create mode 100644 types/src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.response.d.ts create mode 100644 types/src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.scheme.response.d.ts create mode 100644 types/src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.trust.framework.response.d.ts rename types/src/idv_service/session/retrieve/{ => identity_profile}/identity.profile.failure.reason.response.d.ts (66%) rename types/src/idv_service/session/retrieve/{ => identity_profile}/identity.profile.report.response.d.ts (76%) create mode 100644 types/src/idv_service/session/retrieve/identity_profile/identity.profile.report.schemes.compliance.response.d.ts rename types/src/idv_service/session/retrieve/{ => identity_profile}/identity.profile.requirements.not.met.detail.response.d.ts (50%) rename types/src/idv_service/session/retrieve/{ => identity_profile}/identity.profile.response.d.ts (54%) create mode 100644 types/src/idv_service/session/retrieve/identity_profile/identity.profile.scheme.response.d.ts diff --git a/examples/idv-identity-checks/README.md b/examples/idv-identity-checks/README.md index 6ed41fe67..6ab68daa9 100644 --- a/examples/idv-identity-checks/README.md +++ b/examples/idv-identity-checks/README.md @@ -7,5 +7,5 @@ 1. Start the server `npm start` 1. Visit `https://localhost:3003` -* _The [default controller](./src/controllers/index.controller.js) demonstrates how to create an IDV session_ +* _The [default controller](./src/controllers/session.controller.js) demonstrates how to create an IDV session_ * _The [success controller](./src/controllers/success.controller.js) demonstrates how to retrieve an IDV session_ diff --git a/examples/idv-identity-checks/index.js b/examples/idv-identity-checks/index.js index e577d6e1b..07f700a28 100644 --- a/examples/idv-identity-checks/index.js +++ b/examples/idv-identity-checks/index.js @@ -24,6 +24,7 @@ app.use(session({ const router = express.Router(); router.get('/', controllers.indexController); +router.post('/session', controllers.sessionController); router.get('/success', controllers.successController); router.get('/media', controllers.mediaController); router.get('/error', controllers.errorController); diff --git a/examples/idv-identity-checks/src/controllers/index.controller.js b/examples/idv-identity-checks/src/controllers/index.controller.js index 3edec87bb..039fc6466 100644 --- a/examples/idv-identity-checks/src/controllers/index.controller.js +++ b/examples/idv-identity-checks/src/controllers/index.controller.js @@ -1,60 +1,4 @@ -const { - IDVClient, - SessionSpecificationBuilder, - SdkConfigBuilder, -} = require('yoti'); -const config = require('../../config'); - -/** - * Create an IDV session. - */ -async function createSession() { - const idvClient = new IDVClient(config.YOTI_CLIENT_SDK_ID, config.YOTI_PEM); - - const subject = { - subject_id: 'subject_id_string', - }; - - const identityProfileRequirements = { - trust_framework: 'UK_TFIDA', - scheme: { - type: 'DBS', - objective: 'BASIC', - }, - }; - - const sessionSpec = new SessionSpecificationBuilder() - .withClientSessionTokenTtl(600) // 10 minutes - .withResourcesTtl(90000) // session TTL(10 minutes) + 24 hours(minimum required) - .withUserTrackingId('some-user-tracking-id') - .withSubject(subject) - .withIdentityProfileRequirements(identityProfileRequirements) - .withSdkConfig( - new SdkConfigBuilder() - .withPrimaryColour('#2d9fff') - .withLocale('en-GB') - .withPresetIssuingCountry('GBR') - .withSuccessUrl(`${config.YOTI_APP_BASE_URL}/success`) - .withErrorUrl(`${config.YOTI_APP_BASE_URL}/error`) - .withAllowHandoff(true) - .build() - ) - .build(); - - return idvClient.createSession(sessionSpec); -} - -module.exports = async (req, res) => { - try { - const session = await createSession(); - - req.session.IDV_SESSION_ID = session.getSessionId(); - req.session.IDV_SESSION_TOKEN = session.getClientSessionToken(); - - res.render('pages/index', { - iframeUrl: `${config.YOTI_IDV_IFRAME_URL}?sessionID=${req.session.IDV_SESSION_ID}&sessionToken=${req.session.IDV_SESSION_TOKEN}`, - }); - } catch (error) { - res.render('pages/error', { error }); - } +module.exports = (req, res) => { + res.render('pages/index', { + }); }; diff --git a/examples/idv-identity-checks/src/controllers/index.js b/examples/idv-identity-checks/src/controllers/index.js index f24dd6937..fa962c859 100644 --- a/examples/idv-identity-checks/src/controllers/index.js +++ b/examples/idv-identity-checks/src/controllers/index.js @@ -1,10 +1,12 @@ const indexController = require('./index.controller'); +const sessionController = require('./session.controller'); const successController = require('./success.controller'); const mediaController = require('./media.controller'); const errorController = require('./error.controller'); module.exports = { indexController, + sessionController, successController, mediaController, errorController, diff --git a/examples/idv-identity-checks/src/controllers/session.controller.js b/examples/idv-identity-checks/src/controllers/session.controller.js new file mode 100644 index 000000000..0b80a4627 --- /dev/null +++ b/examples/idv-identity-checks/src/controllers/session.controller.js @@ -0,0 +1,128 @@ +const { + IDVClient, + SessionSpecificationBuilder, + SdkConfigBuilder, + AdvancedIdentityProfileBuilder, + AdvancedIdentityProfileRequirementsBuilder, + AdvancedIdentityProfileSchemeBuilder, +} = require('yoti'); +const config = require('../../config'); + +const identityProfileRequirementsDescriptors = { + RTW: { + trust_framework: 'UK_TFIDA', + scheme: { + type: 'RTW', + }, + }, + RTR: { + trust_framework: 'UK_TFIDA', + scheme: { + type: 'RTR', + }, + }, + DBS_BASIC: { + trust_framework: 'UK_TFIDA', + scheme: { + type: 'DBS', + objective: 'BASIC', + }, + }, + DBS_BASIC_RTW: { + trust_framework: 'UK_TFIDA', + scheme: { + type: 'DBS_RTW', + objective: 'BASIC', + }, + }, +}; + +/** + * Create an IDV session. + */ +async function createSession(scheme) { + const idvClient = new IDVClient(config.YOTI_CLIENT_SDK_ID, config.YOTI_PEM); + + const sessionSpecificationBuilder = new SessionSpecificationBuilder(); + + const subject = { + subject_id: 'some_subject_id_string', + }; + + if (scheme === 'MTF_BASE') { + const advancedIdentityProfileSchemeDBS = new AdvancedIdentityProfileSchemeBuilder() + .withType('DBS') + .withObjective('BASIC') + .withLabel('label-for-DBS-BASIC') + .build(); + + const advancedIdentityProfileSchemeRTW = new AdvancedIdentityProfileSchemeBuilder() + .withType('RTW') + .withLabel('label-for-RTW') + .build(); + + const advancedIdentityProfileUKTFIDA = new AdvancedIdentityProfileBuilder() + .withTrustFramework('UK_TFIDA') + .withScheme(advancedIdentityProfileSchemeDBS) + .withScheme(advancedIdentityProfileSchemeRTW) + .build(); + + const advancedIdentityProfileSchemeAL1 = new AdvancedIdentityProfileSchemeBuilder() + .withType('IDENTITY') + .withObjective('AL_L1') + .withLabel('label-for-IDENTITY-AL-L1') + .build(); + + const advancedIdentityProfileYotiGlobal = new AdvancedIdentityProfileBuilder() + .withTrustFramework('YOTI_GLOBAL') + .withScheme(advancedIdentityProfileSchemeAL1) + .build(); + + const advancedIdentityProfileRequirements = new AdvancedIdentityProfileRequirementsBuilder() + .withProfile(advancedIdentityProfileUKTFIDA) + .withProfile(advancedIdentityProfileYotiGlobal) + .build(); + + sessionSpecificationBuilder + .withAdvancedIdentityProfileRequirements(advancedIdentityProfileRequirements); + } else { + const identityProfileRequirements = identityProfileRequirementsDescriptors[scheme]; + sessionSpecificationBuilder + .withIdentityProfileRequirements(identityProfileRequirements); + } + + const sessionSpec = sessionSpecificationBuilder + .withClientSessionTokenTtl(600) // 10 minutes + .withResourcesTtl(90000) // session TTL(10 minutes) + 24 hours(minimum required) + .withUserTrackingId('some-user-tracking-id') + .withSubject(subject) + .withSdkConfig( + new SdkConfigBuilder() + .withPrimaryColour('#2d9fff') + .withLocale('en-GB') + .withPresetIssuingCountry('GBR') + .withSuccessUrl(`${config.YOTI_APP_BASE_URL}/success`) + .withErrorUrl(`${config.YOTI_APP_BASE_URL}/error`) + .withAllowHandoff(true) + .withAllowsCameraAndUpload() + .build() + ) + .build(); + + return idvClient.createSession(sessionSpec); +} + +module.exports = async (req, res) => { + const { scheme } = req.body; + try { + const session = await createSession(scheme); + + req.session.IDV_SESSION_ID = session.getSessionId(); + req.session.IDV_SESSION_TOKEN = session.getClientSessionToken(); + res.render('pages/session', { + iframeUrl: `${config.YOTI_IDV_IFRAME_URL}?sessionID=${req.session.IDV_SESSION_ID}&sessionToken=${req.session.IDV_SESSION_TOKEN}`, + }); + } catch (error) { + res.render('pages/error', { error }); + } +}; diff --git a/examples/idv-identity-checks/static/images/logo.png b/examples/idv-identity-checks/static/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..c60227fabf339e9540e5daac4d2d25e121137752 GIT binary patch literal 2988 zcmV;d3sdxoP)Px=W=TXrRCodHTYGR+)fxZo?%mzIkYEDgl?2c#&jJBdpehy$GAM{5Z>ZDhIR0T< zrqk);pUyZ_ZKvZnw&RQ)|DY&n)lw083ql|vQW+vbK|*+g3C}zrktF-L{eI`>ZtmV} z$nIuCHZwUhH@o-lIp6ut_dDP7+&Csoou;FwC4~f>Nx?-A6G{R-U?kB-(CobEdU9GV zhrICZDzqkf|atnLVsfw< zJE-K})_NScO(0!)+XF^dO5ZkjD>G&LJ>sny*@SF(#9pl*#xss%=(NqTA*$j_Eao=! zxXmv#&57E2G>z7v(@vYe#bG{U27^NJ2mA>5gGlju5R5X!B)@@R0DfNpDJkB_en9$I zo2F^XX;)QMqp7K>1rXuEQTrYA%)x*+RS3%{t8lDD_+2J40>=4bxc9#axP-R95y4^8 z;G6YFz!%#jQG-E&a(8arvK2-9OVp0_ie}88`!viQ+}6|tv9PEZ+ji_!AinoO16D3w zDuDE91qf+XR90f+=B+3@S*}2FIwcGgfLfYp#_ei2>aPKpkHS^H9f1euATWM8^pswa z0SSs^eDxwge+!v-zKM1tV3V@sJ@9=m^U9}yp{_V+N2Rj_!Y3NBe#2+jSF~RV-|cpz z_{#(MRD{M*SS4c-7|=8q4t#YGo40O<-|vUV*5byEs<3hFd!pa;!Fi7q$Lcnhw>@58v8RR6$kxjrnwD3UE<^` zOQC)73j8x)MX>k4a1HTfK<}Mrm?<)^97*%12;M=PZ#o`_q+=W}JerTli)zwWPt7#% z68aex7!(N2$NafZ$p&zssJKM!R%(pP<-o4OLiK#klP!R-|2IdD;-mHdQRNI12>OEi zh7H9F%a@=}AHz(M&h6U`0@`O%@@N5qAW-^k-qm0;7h zZJ>jvro!cg<60S9#cv?^lUD$Dx*<$ah~Uu25F9v8geL%mz~C)S-c7hSzGRpg3R@ho z@A2OQ_Y7zah78d?LRV-exQhy1IIG&wdo{u%Y=_v2;-g2tFrpyY>_+^TqFMX5ZiadKDg?G*LaX{>jT7 zj0xk%;mMiP@#7WltMoiYE2?Zgc z5)cBj{qtQ|y>=aHYiq+aVn|*dRxDl|283cjz&LmQ0xB0nu|HIPgwH8ZUTl7U0R3dwE?cq? zIeoJ&W<>q0{*cb4?y@5v@Ii1JYT;la)=gT6z~CAw^z@8$JUwSNva(uA927GBO1}6CnyR)M%^OXd zLPNeY+fJ1dOFWG=FQ=KQ3%HJem@MI=yR;62!G#hKuQ+v&TQXuxqsicJcWN|f42eyl z@ldO(Mhb6nw3?b)16Ym~5OjB%pc^S2kAwJK7?Kb$jJ3<+ZM)EZA89>w^qHBx)mYm7 z#>OT|7LP^h+U_%!P-<`9G=c|$k%821euqOyBx60`iW@^UGoY={L5Y}vjOhrT|nav){$ z+)~;fD4DyIYr0G8axmyq@^f=VJ0#+2cJ$PiHS0c*y3>xR&fl?xXyDS;9U9$vjBHK)^O&SKf(=h0V6DE3w- zukftjuo0`@U5A^uZW*}=3w=_b@)xX-f}R8hca9(IB)jy!%faC4sS(Umj-Mz~r+aQm z{8&<_GhegzeeBx32S1uJ8DmC`L}u^aAP7A7;Cafa(`QszY$S=|93-y@7W@>!Jjvj@ z5fGF^Qh=ct5#h5$Un}A1DJhSz{zVPpRZ)2v|N3}6)-g<05u5Rnf=kXYLMMQt5s*{3 z;OGSij9W^Q-L56nXV3v#uUMoJ5JC6J%#_l}B8(g{Tt!7@jzU1_*jW$bnLCp^kH_5% zglGekJ8{_lhhBtl^2?H6FmH)vcJ}1}>vgxsCs;GMn<+46!9gj1m^G?sm&Ni*KdE8; zY~^z7lM}=eF+&V-36v%@!{{+|WuT-7bwqDLp4GX}x_a^+1ykoklrN*=lV6~(Ng5%z+jCfe0pylj_%`67Z* zV3Vw0z>y%L%_gim&;M7>?0*|JM?!suSG2;~2yQ&hG*6jgwq`u>I3_64>5LEz9eAvcZJXBC+WsuM8C-H(z6GQ zBtoi{&tMY8Y}Vn3J(}u_buqFs_^}oI=rnm$VSC&eJS3bZRe=24TG$hYjeCpsfs($l-MB=CRu-jS!@!@-~c0000yoti_logos_RGB \ No newline at end of file diff --git a/examples/idv-identity-checks/static/images/logo@2x.png b/examples/idv-identity-checks/static/images/logo@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9f29784d1a3686538107fd44229678dbca9119be GIT binary patch literal 5609 zcmVPx~qe(O+IO{fBm{`nU}JlXu>r@}X6&&uGc~CxPbCji z$vpTa?|IK#UQ)@!B$Jv{C85e=Yz78q@G=-1n?VQxS`b>%u5N9ued)gW{v#w>;-1?r z^`h;ZsxDpK( ze1&Nh73GJsM%##D5|^J*2N9-#Cx&!>2N0;tic%iTsH3j!SPCd$?ATYY25v?H1q?Il zsB1fx0ty&A_SLI_n^8ak!;CuW+K#1w0>+Mg^=jZ|6i~o0qmH_^V=173v14Do8n_t+ z6fn%Fqps~(3MgRg*jKLxZbkv~kPx#c*LZDcWSAzWCTU_~ns%3$AzsB#=)@Z9H@f|C zcMlB=4$|JL-4q`ehbRE^FaV=E{GFSgnW6EC3F_|d6#;}jJ?61e)`m|>@4HKSYAJcs z%ZL&(iLBB7nhE&2#obL>&mGdx#-=JMMWkm|lE?9aVYe(3{iKa{lGc3H@H(H=QHSU7 zhtlhzybuv!jJe0@!M%EN4G+=m{5;u{5=F#rOf*8U!&F+^I}qjCLOs2GG&wm%$BrH$ z8)BI>EqEsBMOgXp=m>Q_?xK;gQF6Q8G&(XyE|-fYCMQitqzyHbHrY=!+)9@II{-!w z>GA30O#?_$9Hd)XTIF*)lV)KmY!Al7#1l$V=_FSw2DcB}uOJ3mdVzN{nOeg0T zZEd5z{sD42hpD8vka9A!C?*Eru&j@B@LG%cxjAsYY3k^BOt)^=kkd5;jxoNv8`A$R zZg3R-Jt;g{bbB6A@hhZ*bLh4da1eYj__vOtdl5=KJ4V_#z_*Etjt>CM$v+ypcV1jK z?RR2!#6}cWU@$1UAkLis_;*5#@_H9jSY5tyg>Q6|+1W)l|K>hniYi z=-TIB(eUsv&CJd$RU5j$ys~V1m@E&@6UAo`6+BP+{-2UJ&W?TtFaCwDqdTLfumEFt zbd*}#+NtSbGr7mcu-x-0D3-`NIW+~*YJh6)+@*M1Jf$Wl2esy-8{*odM=b&vOPpe< zE&j{PO^1d@i5E8BskuW(o;yqlHk)5SG6(AE>7|;QTETf{X6DGN%a^YDwz=kG)T_-- z5P28K(su{z1`JqPyc0(z@ zTlat-cXiVgQ($e>ZFYVmy9Q27+Y6dVmIv-1KWiG-Ba!uV`nwppt>$9ad z0*!(5H8eF--TenNH9ZqPQ22IaeugYVEo5o>jI0CoWSJO%NhVBS^leuiFH;~az`$oY zprV75OifSHC!bstrcM@j)>`J~=Bf7HJ^JFS>%^8Qe}yGF4|A{p`q+m0YHI5s_TBJT zZRoGFXf@>`OUJ1ZM<{Z&IzYPm<4ptCU5UHjro zp%}mUS7#_aB{d++(V){w?XV7A{^Oqju<7M0Wd}BhZ25V)boPzYl%A0$wTQ9xiAA$7 zzrGGJs!vv(;rVEopcA3Ll$VxJD#j5PA4k#AQ8YO*MGX9o&MtC~PrxwXzrWmoHa#kQ z68iOjCjIq)B0ZLu#mcQ}S}d$uS=Hcd!2YuJjqk@dQ22597(YJdL*3`RXP&Grm+|F* zg~+H_tmG+rnaGxgXV>P3(v$PyyD2fMbyJ=T3otlwLV7wAPp1Rb)pWnUUWiouwKgiO zn6s}#>+Pl6kmX-|{wO6TCP4m|6W;|TxCP=`L*qmEDPRVa)VEr$*>t{R90l6v(qxK;eMRdzvgG9i%`0hCC%Fh@#~Bh7M)jlT}4p zLI&x}!_$C+#eZ1GS~^}FIiFv=ra^?$+pZ!>fH5$1ybo`7HBo92aJDw5Bm-KHg&|>! zl&}DU#~vRaPwc>Z?#N-GLyWn{Xko!v-{AXM7a4_aQd4`EN{R}=JsctlgJt=v$9JIs zL<Y1Jj&;P_Zhu+?k!>kzrDHSmH#ff*Uv@JfbKNN^c6$BQ6LjYF*Xhs! zd`SZ+%w3Z0b~<|GkoYw;J*0bZe*Wig{~M-YSj}W?72vRReNWc*>*UQljBt|j09sSG ztd{~|1;$dRD$C1>eF5zqotShtO?3{Q7vtk@y85SU0vK<+afXt>eYlLl^vkmUh0iVu zIbAx5o-`Z<5TvH0(EI1!rX1)y{!-hp)oEbRNwu}L@Yu__8;gqU5Bca4HbQv$K=By1Hp#!08thtnB9HW+8)O0TmzwgyW+Y zEiwijTRx>Drpif!gD%v+d~(GB<0>;FT} zT<81m{g6sw>TN~{$_y-7Mx09)HQfC{c3DoxCM=#UBMC3JmUy6)$pM70ijS zC9)FDI)_Md-R^q@BE}#Zn8^Gta3L z0aGAiqSSJaAday3QC3z$hY#(i`Gbs)8=SX4-HSuA9xhZ@qbjqQRk_xENM8#~%o!vDaAFkoX){ zKA`?vD+R*$hW+#;0hXo=_!de^iYW_nJ1gkxE$r*afhpGEa8Ln$v9YlM=oC*|V{SAG zi`TqNOaqt`;LT4RZ9ibMY$;7Um_Gg~Df)O7eZ#{0l|<)Ubqy0;^$UH@zh z0eRTJaA4manukL9_18DVq8~Gzej&mb zJ@{3UB!omIE6s@BydLT#93?hrWS4v!TG? z4qBlXJa=$EVc#a9bKI(_38dfR9xF`0NlA7n!|%YKP`qe;3i#=#H!{Z}1Hn}uT1u8aX%!@vNHX)HeCwv7rq)L2yGHX~KI&FqW}j7#FFN1w$~ zQU0q+$SJU4I>zdeBtooWAA#^Br>8>aFrS31pt7H$5IO~KY_o1qpd&(;g(+BAzE*b( z{{y>1$KddiNEL1=9(oO1@r(<4Ew;*1z%ZsyaA!B3WBBx+?f8ce9VGY66n+2QEgBga z^|`w8@Z^bC5SHPf^dQ19mTSb^nn89ADaQaHSY(UjCY=oQMEGN*7CYt?3sXR~0><)t z4B^41;TTI}Vsm8)ywzqAuzYV3?ny%&R7eUw&(T`6lZg{mvSt&#Mok`{s{)e2;#Hklhn7i z&>VA{qgbONGYBw&^wIYm3d!KGjCFia+HvlC(ZvL&!OOx2#)B&^a?uP_Yc z=Y_zkFsI1ClGJF4Y1D(2hqrFmiggl^(lh3f=F!{2U?e(ax((0R!)x{SzEY5{*y{Sz%e9^H%Yijc^)Bx$X(9Lutg4S56INXpLok zo1KmJToraMdtpJISHJ)P1;@w*$3S8OGb_)PYoAkHeFH+%XM!ZV{P7tih3i7Ll#743 zD%PJE-l+i;F$q}ry$b+Q9K(=CL7tR}WD?QFSMtX88jd_!vTtMC&WDD6s>1cu`OoS^?z<5G% zj?(3ob37G!9}lC#YtcDf59mcou*8b;e=_w{h$BC zE=q2C`S>x!cO5`l&V{LMTdRS~|V@$`9zmrAy|M6r#?>%a`ddcWxs!P&xhW&;N#Y zSL_NH9PGerZfT|SpIpFp36I3?Pd;6F_7HlINWY0aGZeRYmOP<8qkyrBqP&E4@182U zhkUz_kp|SC1~m9{qcmXt6C>RQOjB`t8p)zd-?G)eGj$D>)x+b@e`>Wb+<- ztOLjjrxo>hWu^MNRYr>A&^iIr^^XoI1OqH z;#9Pa^d#s$j+e*_Gp#C-p@7`{5}EclXDg8B?NFxAy!INMK6w%Wh8rikc*;(br~0Sl z*?o3%(rTObN&&;<#U>{wiJZG1y#KDqZWytptwPaGBF~{;khl6rZH z$MEy^IlWIB0t{aSFj#r!jWjusa29)rb0+qX6mSU6L90h0{wbxH^o$D9E6MWlnMK?3>hwEtorCa=r2GO>B=m92#)I(&R;2e|`5mu3*{WBbneEPc&KQzrP#oK#Dx^S>zHul!z%p`kZwPFWdPyc|}ube|V zX0TshAl566h}CWB;0(LOo_6f8(=&H3?&U3(t8NS^^q6>>|IvSdtj58MB2EjS4M#+; z&YUtSpXQ2RmcP~rMiOs2V6f!CSxml_YJzu;TtSN;hYhC#=HMpi z!`AEqxJM=j9pblC>KmFwCJ{4W=p`pf&pkk1TZmHsEH$qFhLi#d7$GEQVqyZq(9QS7 zV?gK%6d|N~c&geMVKzKtQMD=xgp2|T7$GC2s%Se=KmlVry-hWikWoMZBV?ph6>TR9 zC}3=-x2eVwG72bQgp8D`qU}Th1&r85 zGE%CFwi5+RLqd3=zH4ZhVxptvd%eJ?CnTjg2+SbsWY~Y^|zik&xM6WfW*xV5=0&B&sM1C<^#eAj+fDZ+uUvV?_Z)0iyp0%kz - +
+

Identity check example

+
+
+
+ + +
+
+ +
+
+
+
<%- include('layout/footer'); -%> diff --git a/examples/idv-identity-checks/views/pages/layout/header.ejs b/examples/idv-identity-checks/views/pages/layout/header.ejs index 63357876c..fc2edd77d 100644 --- a/examples/idv-identity-checks/views/pages/layout/header.ejs +++ b/examples/idv-identity-checks/views/pages/layout/header.ejs @@ -9,10 +9,15 @@ - - + +
+
+ + Yoti + +
+
diff --git a/examples/idv-identity-checks/views/pages/partials/advanced-identity-profile.ejs b/examples/idv-identity-checks/views/pages/partials/advanced-identity-profile.ejs new file mode 100644 index 000000000..cda11c350 --- /dev/null +++ b/examples/idv-identity-checks/views/pages/partials/advanced-identity-profile.ejs @@ -0,0 +1,107 @@ + + + + + + + + + + + <% if (advancedIdentityProfile.getFailureReason()) { %> + + + + + <% } %> + <% if (advancedIdentityProfile.getIdentityProfileReport()) { %> + + + + + + + + + <% } %> + +
Subject ID + <%= advancedIdentityProfile.getSubjectId(); %> +
Result + <%= advancedIdentityProfile.getResult(); %> +
Error details: + + + + + + + + + + + +
Error code<%= advancedIdentityProfile.getFailureReason().getReasonCode(); %>
Additional details
<%= JSON.stringify(advancedIdentityProfile.getFailureReason().getRequirementsNotMetDetails(), null, 2); %>
+
Identity Profile Report + + + <% if (advancedIdentityProfile.getIdentityProfileReport().getCompliance().length > 0) { %> + + + + <% } %> + +
+ <% advancedIdentityProfile.getIdentityProfileReport().getCompliance().forEach(function(compliance) { %> + + <% if (compliance.getTrustFramework()) { %> + + + + + <% } %> + <% if (compliance.getSchemesCompliance().length > 0) { %> + + + + + <% } %> +
Trust framework<%= compliance.getTrustFramework() %>
Compliance per scheme + <% compliance.getSchemesCompliance().forEach(function(compliancePerScheme) { %> + + + <% if (compliancePerScheme.getScheme().getType()) { %> + + + + + <% } %> + <% if (compliancePerScheme.getScheme().getObjective()) { %> + + + + + <% } %> + <% if (compliancePerScheme.getScheme().getLabel()) { %> + + + + + <% } %> + + + + + <% if (compliancePerScheme.getRequirementsNotMetInfo()) { %> + + + + + <% } %> + +
Type<%= compliancePerScheme.getScheme().getType() %>
Objective<%= compliancePerScheme.getScheme().getObjective() %>
Label<%= compliancePerScheme.getScheme().getLabel() %>
Requirements met?<%= compliancePerScheme.getRequirementsMet() %>
Requirements not met info<%= compliancePerScheme.getRequirementsNotMetInfo() %>
+ <% }) %> +
+ <% }) %> +
+
Identity Assertion Media<%= advancedIdentityProfile.getIdentityProfileReport().getMedia().getId(); %>
diff --git a/examples/idv-identity-checks/views/pages/partials/identity-profile.ejs b/examples/idv-identity-checks/views/pages/partials/identity-profile.ejs index 89f2b85eb..9c1daa9b8 100644 --- a/examples/idv-identity-checks/views/pages/partials/identity-profile.ejs +++ b/examples/idv-identity-checks/views/pages/partials/identity-profile.ejs @@ -31,7 +31,7 @@ <% } %> - <% if (identityProfile.getIdentityProfileReport()) { %>> + <% if (identityProfile.getIdentityProfileReport()) { %> Identity Profile Report @@ -41,28 +41,49 @@ Trust framework <%= identityProfile.getIdentityProfileReport().getTrustFramework(); %> - - Scheme - <% const scheme = identityProfile.getIdentityProfileReport().getSchemesCompliance()[0].getScheme(); - const schemeString = scheme.type + '-' + scheme.objective %> - <%= schemeString; %> - - - Requirements met - <%= identityProfile.getIdentityProfileReport().getSchemesCompliance()[0].isRequirementsMet(); %> - - - Requirements met info - <%= identityProfile.getIdentityProfileReport().getSchemesCompliance()[0].getRequirementsNotMetInfo(); %> - - - Identity assertion media - <%= identityProfile.getIdentityProfileReport().getMedia().getId(); %> - + <% if (identityProfile.getIdentityProfileReport().getSchemesCompliance().length > 0) { %> + + Compliance per scheme + + <% identityProfile.getIdentityProfileReport().getSchemesCompliance().forEach(function(compliancePerScheme) { %> + + + <% if (compliancePerScheme.getScheme().getType()) { %> + + + + + <% } %> + <% if (compliancePerScheme.getScheme().getObjective()) { %> + + + + + <% } %> + + + + + <% if (compliancePerScheme.getRequirementsNotMetInfo()) { %> + + + + + <% } %> + +
Type<%= compliancePerScheme.getScheme().getType() %>
Objective<%= compliancePerScheme.getScheme().getObjective() %>
Requirements met?<%= compliancePerScheme.isRequirementsMet() %>
Requirements not met info<%= compliancePerScheme.getRequirementsNotMetInfo() %>
+ <% }) %> + + + <% } %> + + Identity Assertion Media + <%= identityProfile.getIdentityProfileReport().getMedia().getId(); %> + <% } %> diff --git a/examples/idv-identity-checks/views/pages/session.ejs b/examples/idv-identity-checks/views/pages/session.ejs new file mode 100644 index 000000000..bf728fd60 --- /dev/null +++ b/examples/idv-identity-checks/views/pages/session.ejs @@ -0,0 +1,3 @@ +<%- include('layout/header'); -%> + +<%- include('layout/footer'); -%> diff --git a/examples/idv-identity-checks/views/pages/success.ejs b/examples/idv-identity-checks/views/pages/success.ejs index 6175a9fac..d2dc76dd1 100644 --- a/examples/idv-identity-checks/views/pages/success.ejs +++ b/examples/idv-identity-checks/views/pages/success.ejs @@ -79,6 +79,37 @@ <% } %> + <% if (sessionResult.getAdvancedIdentityProfile()) { %> +
+
+

Advanced identity profile

+ +
+ +
+
+

+ +

+
+ +
+
+ <% const advancedIdentityProfile = sessionResult.getAdvancedIdentityProfile()%> + <%- include('partials/advanced-identity-profile', { advancedIdentityProfile }); %> +
+
+
+ +
+
+
+ <% } %> + <% if (sessionResult.getChecks().length > 0) { %>
diff --git a/index.js b/index.js index f01dfc977..1c9613ea3 100644 --- a/index.js +++ b/index.js @@ -54,6 +54,11 @@ const { CreateFaceCaptureResourcePayloadBuilder, UploadFaceCaptureImagePayloadBuilder, IDVService, + AdvancedIdentityProfileSchemeConfigBuilder, + AdvancedIdentityProfileBuilder, + AdvancedIdentityProfileSchemeBuilder, + AdvancedIdentityProfileRequirementsBuilder, + } = require('./src/idv_service'); const YotiCommon = require('./src/yoti_common'); @@ -115,4 +120,8 @@ module.exports = { RequestedTypeListSourcesBuilder, CreateFaceCaptureResourcePayloadBuilder, UploadFaceCaptureImagePayloadBuilder, + AdvancedIdentityProfileSchemeConfigBuilder, + AdvancedIdentityProfileBuilder, + AdvancedIdentityProfileSchemeBuilder, + AdvancedIdentityProfileRequirementsBuilder, }; diff --git a/src/idv_service/index.js b/src/idv_service/index.js index 55d57aa69..7a24f3835 100644 --- a/src/idv_service/index.js +++ b/src/idv_service/index.js @@ -29,6 +29,10 @@ const RequestedTypeListSourcesBuilder = require('./session/create/check/requeste const RequestedSearchProfileSourcesBuilder = require('./session/create/check/requested.search.profile.sources.builder'); const CreateFaceCaptureResourcePayloadBuilder = require('./session/create/face_capture/create.face.capture.resource.payload.builder'); const UploadFaceCaptureImagePayloadBuilder = require('./session/create/face_capture/upload.face.capture.image.payload.builder'); +const AdvancedIdentityProfileBuilder = require('./session/create/identity_profile/advanced/advanced.identity.profile.builder'); +const AdvancedIdentityProfileRequirementsBuilder = require('./session/create/identity_profile/advanced/advanced.identity.profile.requirements.builder'); +const AdvancedIdentityProfileSchemeBuilder = require('./session/create/identity_profile/advanced/advanced.identity.profile.scheme.builder'); +const AdvancedIdentityProfileSchemeConfigBuilder = require('./session/create/identity_profile/advanced/advanced.identity.profile.scheme.config'); module.exports = { IDVService, @@ -60,4 +64,8 @@ module.exports = { RequestedTypeListSourcesBuilder, CreateFaceCaptureResourcePayloadBuilder, UploadFaceCaptureImagePayloadBuilder, + AdvancedIdentityProfileBuilder, + AdvancedIdentityProfileSchemeBuilder, + AdvancedIdentityProfileRequirementsBuilder, + AdvancedIdentityProfileSchemeConfigBuilder, }; diff --git a/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.builder.js b/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.builder.js new file mode 100644 index 000000000..02b50c86c --- /dev/null +++ b/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.builder.js @@ -0,0 +1,42 @@ +'use strict'; + +const Validation = require('../../../../../yoti_common/validation'); +const AdvancedIdentityProfileScheme = require('./advanced.identity.profile.scheme'); +const AdvancedIdentityProfile = require('./advanced.identity.profile'); + +class AdvancedIdentityProfileBuilder { + constructor() { + /** @private {AdvancedIdentityProfileScheme[]} */ + this.schemes = []; + } + + /** + * @param {string} trustFramework + * @returns {AdvancedIdentityProfileBuilder} + */ + withTrustFramework(trustFramework) { + Validation.isString(trustFramework, 'trustFramework'); + /** @private {string} */ + this.trustFramework = trustFramework; + return this; + } + + /** + * @param {AdvancedIdentityProfileScheme} scheme + * @returns {AdvancedIdentityProfileBuilder} + */ + withScheme(scheme) { + Validation.instanceOf(scheme, AdvancedIdentityProfileScheme, 'scheme'); + this.schemes.push(scheme); + return this; + } + + /** + * @returns {AdvancedIdentityProfile} + */ + build() { + return new AdvancedIdentityProfile(this.trustFramework, this.schemes); + } +} + +module.exports = AdvancedIdentityProfileBuilder; diff --git a/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.js b/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.js new file mode 100644 index 000000000..1ae6a9802 --- /dev/null +++ b/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.js @@ -0,0 +1,28 @@ +'use strict'; + +const Validation = require('../../../../../yoti_common/validation'); +const AdvancedIdentityProfileScheme = require('./advanced.identity.profile.scheme'); + +class AdvancedIdentityProfile { + /** + * @param {string} trustFramework + * @param {AdvancedIdentityProfileScheme[]} schemes + */ + constructor(trustFramework, schemes) { + Validation.isString(trustFramework, 'trustFramework'); + /** @private {string} */ + this.trustFramework = trustFramework; + Validation.isArrayOfType(schemes, AdvancedIdentityProfileScheme, 'schemes'); + /** @private {AdvancedIdentityProfileScheme[]} */ + this.schemes = schemes; + } + + toJSON() { + return { + trust_framework: this.trustFramework, + schemes: this.schemes, + }; + } +} + +module.exports = AdvancedIdentityProfile; diff --git a/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.requirements.builder.js b/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.requirements.builder.js new file mode 100644 index 000000000..c51e27594 --- /dev/null +++ b/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.requirements.builder.js @@ -0,0 +1,31 @@ +'use strict'; + +const Validation = require('../../../../../yoti_common/validation'); +const AdvancedIdentityProfile = require('./advanced.identity.profile'); +const AdvancedIdentityProfileRequirements = require('./advanced.identity.profile.requirements'); + +class AdvancedIdentityProfileRequirementsBuilder { + constructor() { + /** @private {AdvancedIdentityProfile[]} */ + this.profiles = []; + } + + /** + * @param {AdvancedIdentityProfile} profile + * @returns {AdvancedIdentityProfileRequirementsBuilder} + */ + withProfile(profile) { + Validation.instanceOf(profile, AdvancedIdentityProfile, 'profile'); + this.profiles.push(profile); + return this; + } + + /** + * @returns {AdvancedIdentityProfileRequirements} + */ + build() { + return new AdvancedIdentityProfileRequirements(this.profiles); + } +} + +module.exports = AdvancedIdentityProfileRequirementsBuilder; diff --git a/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.requirements.js b/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.requirements.js new file mode 100644 index 000000000..09fea9057 --- /dev/null +++ b/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.requirements.js @@ -0,0 +1,16 @@ +'use strict'; + +const Validation = require('../../../../../yoti_common/validation'); +const AdvancedIdentityProfile = require('./advanced.identity.profile'); + +class AdvancedIdentityProfileRequirements { + /** + * @param {AdvancedIdentityProfile[]} profiles + */ + constructor(profiles) { + Validation.isArrayOfType(profiles, AdvancedIdentityProfile, 'profiles'); + this.profiles = profiles; + } +} + +module.exports = AdvancedIdentityProfileRequirements; diff --git a/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.scheme.builder.js b/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.scheme.builder.js new file mode 100644 index 000000000..9c0c85e25 --- /dev/null +++ b/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.scheme.builder.js @@ -0,0 +1,56 @@ +'use strict'; + +const Validation = require('../../../../../yoti_common/validation'); +const AdvancedIdentityProfileSchemeConfig = require('./advanced.identity.profile.scheme.config'); +const AdvancedIdentityProfileScheme = require('./advanced.identity.profile.scheme'); + +class AdvancedIdentityProfileSchemeBuilder { + /** + * @param {string} type + * @returns {AdvancedIdentityProfileSchemeBuilder} + */ + withType(type) { + Validation.isString(type, 'type'); + this.type = type; + return this; + } + + /** + * @param {string} objective + * @returns {AdvancedIdentityProfileSchemeBuilder} + */ + withObjective(objective) { + Validation.isString(objective, 'objective'); + this.objective = objective; + return this; + } + + /** + * @param {string} label + * @returns {AdvancedIdentityProfileSchemeBuilder} + */ + withLabel(label) { + Validation.isString(label, 'label'); + this.label = label; + return this; + } + + /** + * @param {AdvancedIdentityProfileSchemeConfig} config + * @returns {AdvancedIdentityProfileSchemeBuilder} + */ + withConfig(config) { + Validation.instanceOf(config, AdvancedIdentityProfileSchemeConfig, 'config'); + this.config = config; + return this; + } + + /** + * @returns {AdvancedIdentityProfileScheme} + */ + build() { + return new AdvancedIdentityProfileScheme(this.type, this.objective, this.label, this.config); + } +} + +module.exports = AdvancedIdentityProfileSchemeBuilder; diff --git a/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.scheme.config.builder.js b/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.scheme.config.builder.js new file mode 100644 index 000000000..0d15c06fa --- /dev/null +++ b/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.scheme.config.builder.js @@ -0,0 +1,26 @@ +'use strict'; + +const Validation = require('../../../../../yoti_common/validation'); +const DocumentFilter = require('../../filters/document.filter'); +const AdvancedIdentityProfileSchemeConfig = require('./advanced.identity.profile.scheme.config'); + +class AdvancedIdentityProfileSchemeConfigBuilder { + /** + * @param {DocumentFilter} filter + * @returns {AdvancedIdentityProfileSchemeConfigBuilder} + */ + withFilter(filter) { + Validation.instanceOf(filter, DocumentFilter, 'filter'); + this.filter = filter; + return this; + } + + /** + * @returns {AdvancedIdentityProfileSchemeConfig} + */ + build() { + return new AdvancedIdentityProfileSchemeConfig(this.filter); + } +} + +module.exports = AdvancedIdentityProfileSchemeConfigBuilder; diff --git a/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.scheme.config.js b/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.scheme.config.js new file mode 100644 index 000000000..bf765d5dd --- /dev/null +++ b/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.scheme.config.js @@ -0,0 +1,24 @@ +'use strict'; + +const Validation = require('../../../../../yoti_common/validation'); +const DocumentFilter = require('../../filters/document.filter'); + +class AdvancedIdentityProfileSchemeConfig { + /** + * @param {DocumentFilter} filter + */ + constructor(filter) { + if (filter) { + Validation.instanceOf(filter, DocumentFilter, 'filter'); + this.filter = filter; + } + } + + toJSON() { + return { + filter: this.filter, + }; + } +} + +module.exports = AdvancedIdentityProfileSchemeConfig; diff --git a/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.scheme.js b/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.scheme.js new file mode 100644 index 000000000..a112bb2f1 --- /dev/null +++ b/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.scheme.js @@ -0,0 +1,39 @@ +'use strict'; + +const Validation = require('../../../../../yoti_common/validation'); +const AdvancedIdentityProfileSchemeConfig = require('./advanced.identity.profile.scheme.config'); + +class AdvancedIdentityProfileScheme { + /** + * @param {string} type + * @param {string} objective + * @param {string} label + * @param {AdvancedIdentityProfileSchemeConfig} [config] + */ + constructor(type, objective, label, config) { + Validation.isString(type, 'type'); + this.type = type; + + Validation.isString(objective, 'objective', true); + if (objective) this.objective = objective; + + Validation.isString(label, 'label'); + this.label = label; + + if (config) { + Validation.instanceOf(config, AdvancedIdentityProfileSchemeConfig, 'config'); + this.config = config; + } + } + + toJSON() { + return { + type: this.type, + objective: this.objective, + label: this.label, + config: this.config, + }; + } +} + +module.exports = AdvancedIdentityProfileScheme; diff --git a/src/idv_service/session/create/session.specification.builder.js b/src/idv_service/session/create/session.specification.builder.js index 79becf0c9..df9228a40 100644 --- a/src/idv_service/session/create/session.specification.builder.js +++ b/src/idv_service/session/create/session.specification.builder.js @@ -7,6 +7,7 @@ const RequestedCheck = require('./check/requested.check'); const SdkConfig = require('./sdk.config'); const RequiredDocument = require('./filters/required.document'); const Validation = require('../../../yoti_common/validation'); +const AdvancedIdentityProfileRequirements = require('./identity_profile/advanced/advanced.identity.profile.requirements'); /** * Builder to assist the creation of {@link SessionSpecification}. @@ -169,6 +170,12 @@ class SessionSpecificationBuilder { return this; } + withAdvancedIdentityProfileRequirements(advancedIdentityProfileRequirements) { + Validation.instanceOf(advancedIdentityProfileRequirements, AdvancedIdentityProfileRequirements, 'advancedIdentityProfileRequirements'); + this.advancedIdentityProfileRequirements = advancedIdentityProfileRequirements; + return this; + } + /** * Builds the {@link SessionSpecification} based on the values supplied to the builder * @@ -187,7 +194,8 @@ class SessionSpecificationBuilder { this.blockBiometricConsent, this.sessionDeadline, this.identityProfileRequirements, - this.subject + this.subject, + this.advancedIdentityProfileRequirements ); } } diff --git a/src/idv_service/session/create/session.specification.js b/src/idv_service/session/create/session.specification.js index b332c453e..475954afa 100644 --- a/src/idv_service/session/create/session.specification.js +++ b/src/idv_service/session/create/session.specification.js @@ -6,6 +6,7 @@ const SdkConfig = require('./sdk.config'); const RequestedTask = require('./task/requested.task'); const RequestedCheck = require('./check/requested.check'); const RequiredDocument = require('./filters/required.document'); +const AdvancedIdentityProfileRequirements = require('./identity_profile/advanced/advanced.identity.profile.requirements'); /** * Definition for the IDV Session to be created @@ -34,9 +35,10 @@ class SessionSpecification { * Sets whether or not to block the collection of biometric consent * @param {Date} sessionDeadline * The deadline that the session needs to be completed by - * @param {object} identityProfileRequirements - * @param {object} subject + * @param {object} [identityProfileRequirements] + * @param {object} [subject] * Information about the subject of the session + * @param {AdvancedIdentityProfileRequirements} [advancedIdentityProfileRequirements] */ constructor( clientSessionTokenTtl, @@ -50,7 +52,8 @@ class SessionSpecification { blockBiometricConsent, sessionDeadline, identityProfileRequirements, - subject + subject, + advancedIdentityProfileRequirements ) { Validation.isInteger(clientSessionTokenTtl, 'clientSessionTokenTtl', true); /** @private */ @@ -88,6 +91,12 @@ class SessionSpecification { this.identityProfileRequirements = identityProfileRequirements; } + if (advancedIdentityProfileRequirements) { + Validation.instanceOf(advancedIdentityProfileRequirements, AdvancedIdentityProfileRequirements, 'advancedIdentityProfileRequirements'); + /** @private */ + this.advancedIdentityProfileRequirements = advancedIdentityProfileRequirements; + } + if (subject) { Validation.isPlainObject(subject, 'subject'); /** @private */ @@ -130,6 +139,7 @@ class SessionSpecification { block_biometric_consent: this.blockBiometricConsent, identity_profile_requirements: this.identityProfileRequirements, subject: this.subject, + advanced_identity_profile_requirements: this.advancedIdentityProfileRequirements, }; } } diff --git a/src/idv_service/session/retrieve/get.session.result.js b/src/idv_service/session/retrieve/get.session.result.js index ddef7e0fd..f9c704eca 100644 --- a/src/idv_service/session/retrieve/get.session.result.js +++ b/src/idv_service/session/retrieve/get.session.result.js @@ -14,7 +14,8 @@ const WatchlistScreeningCheckResponse = require('./watchlist.screening.check.res const WatchlistAdvancedCaCheckResponse = require('./watchlist.advanced.ca.check.response'); const ThirdPartyIdentityFraud1CheckResponse = require('./third.party.identity.fraud.1.check.response'); const FaceComparisonCheckResponse = require('./face.comparison.check.response'); -const IdentityProfileResponse = require('./identity.profile.response'); +const IdentityProfileResponse = require('./identity_profile/identity.profile.response'); +const AdvancedIdentityProfileResponse = require('./identity_profile/advanced/advanced.identity.profile.response'); const IDVConstants = require('../../idv.constants'); const { YotiDate } = require('../../../data_type/date'); @@ -94,6 +95,13 @@ class GetSessionResult { /** @private */ this.identityProfile = new IdentityProfileResponse(response.identity_profile); } + + if (response.advanced_identity_profile) { + Validation.isPlainObject(response.advanced_identity_profile, 'advanced_identity_profile'); + /** @private */ + // eslint-disable-next-line max-len + this.advancedIdentityProfile = new AdvancedIdentityProfileResponse(response.advanced_identity_profile); + } } /** @@ -251,6 +259,13 @@ class GetSessionResult { getIdentityProfile() { return this.identityProfile; } + + /** + * @returns {AdvancedIdentityProfileResponse} + */ + getAdvancedIdentityProfile() { + return this.advancedIdentityProfile; + } } module.exports = GetSessionResult; diff --git a/src/idv_service/session/retrieve/identity.profile.report.schemes.compliance.response.js b/src/idv_service/session/retrieve/identity.profile.report.schemes.compliance.response.js deleted file mode 100644 index 4d871f85e..000000000 --- a/src/idv_service/session/retrieve/identity.profile.report.schemes.compliance.response.js +++ /dev/null @@ -1,38 +0,0 @@ -'use strict'; - -const Validation = require('../../../yoti_common/validation'); - -class IdentityProfileReportSchemesComplianceResponse { - constructor(schemesCompliance) { - Validation.isPlainObject(schemesCompliance.scheme, 'scheme'); - /** @private */ - this.scheme = schemesCompliance.scheme; - - Validation.isBoolean(schemesCompliance.requirements_met, 'requirements_met'); - /** @private @type {boolean} */ - this.requirementsMet = schemesCompliance.requirements_met; - - if (schemesCompliance.requirements_not_met_info) { - Validation.isString(schemesCompliance.requirements_not_met_info, 'requirements_not_met_info'); - /** @private @type {string|undefined} */ - this.requirementsNotMetInfo = schemesCompliance.requirements_not_met_info; - } - } - - /** - * @returns {object} - */ - getScheme() { - return this.scheme; - } - - isRequirementsMet() { - return this.requirementsMet; - } - - getRequirementsNotMetInfo() { - return this.requirementsNotMetInfo; - } -} - -module.exports = IdentityProfileReportSchemesComplianceResponse; diff --git a/src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.report.response.js b/src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.report.response.js new file mode 100644 index 000000000..2b0eae118 --- /dev/null +++ b/src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.report.response.js @@ -0,0 +1,34 @@ +'use strict'; + +const Validation = require('../../../../../yoti_common/validation'); +const MediaResponse = require('../../media.response'); +const AdvancedIdentityProfileTrustFrameworkResponse = require('./advanced.identity.profile.trust.framework.response'); + +class AdvancedIdentityProfileReportResponse { + constructor(report) { + Validation.isArray(report.compliance, 'compliance'); + /** @private {AdvancedIdentityProfileTrustFrameworkResponse[]} */ + this.compliance = report.compliance + .map((compliance) => new AdvancedIdentityProfileTrustFrameworkResponse(compliance)); + + Validation.isPlainObject(report.media, 'media'); + /** @private {MediaResponse} */ + this.media = new MediaResponse(report.media); + } + + /** + * @returns {AdvancedIdentityProfileTrustFrameworkResponse[]} + */ + getCompliance() { + return this.compliance; + } + + /** + * @returns {MediaResponse} + */ + getMedia() { + return this.media; + } +} + +module.exports = AdvancedIdentityProfileReportResponse; diff --git a/src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.report.scheme.compliance.response.js b/src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.report.scheme.compliance.response.js new file mode 100644 index 000000000..fcf03bf4c --- /dev/null +++ b/src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.report.scheme.compliance.response.js @@ -0,0 +1,44 @@ +'use strict'; + +const Validation = require('../../../../../yoti_common/validation'); +const AdvancedIdentityProfileSchemeResponse = require('./advanced.identity.profile.scheme.response'); + +class AdvancedIdentityProfileSchemeComplianceResponse { + constructor(schemesCompliance) { + Validation.isPlainObject(schemesCompliance.scheme, 'scheme'); + /** @private {AdvancedIdentityProfileSchemeResponse} */ + this.scheme = new AdvancedIdentityProfileSchemeResponse(schemesCompliance.scheme); + + Validation.isBoolean(schemesCompliance.requirements_met, 'requirements_met'); + /** @private {boolean} */ + this.requirementsMet = schemesCompliance.requirements_met; + + Validation.isString(schemesCompliance.requirements_not_met_info, 'requirements_not_met_info', true); + /** @private {string|undefined} */ + this.requirementsNotMetInfo = schemesCompliance.requirements_not_met_info; + } + + /** + * @returns {AdvancedIdentityProfileSchemeResponse} + */ + getScheme() { + return this.scheme; + } + + /** + * @returns {boolean} + */ + getRequirementsMet() { + return this.requirementsMet; + } + + /** + * + * @returns {string|undefined} + */ + getRequirementsNotMetInfo() { + return this.requirementsNotMetInfo; + } +} + +module.exports = AdvancedIdentityProfileSchemeComplianceResponse; diff --git a/src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.response.js b/src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.response.js new file mode 100644 index 000000000..241d79450 --- /dev/null +++ b/src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.response.js @@ -0,0 +1,60 @@ +'use strict'; + +const Validation = require('../../../../../yoti_common/validation'); +const AdvancedIdentityProfileReportResponse = require('./advanced.identity.profile.report.response'); +const IdentityProfileFailureReasonResponse = require('../identity.profile.failure.reason.response'); + +class AdvancedIdentityProfileResponse { + constructor(response) { + Validation.isString(response.subject_id, 'subject_id'); + /** @private {string} */ + this.subjectId = response.subject_id; + + Validation.isString(response.result, 'result'); + /** @private {string} */ + this.result = response.result; + + if (response.failure_reason) { + Validation.isPlainObject(response.failure_reason, 'failure_reason'); + /** @private {IdentityProfileFailureReasonResponse} */ + this.failureReason = new IdentityProfileFailureReasonResponse(response.failure_reason); + } + + if (response.identity_profile_report) { + Validation.isPlainObject(response.identity_profile_report, 'identity_profile_report'); + /** @private {AdvancedIdentityProfileReportResponse} */ + // eslint-disable-next-line max-len + this.identityProfileReport = new AdvancedIdentityProfileReportResponse(response.identity_profile_report); + } + } + + /** + * @returns {string} + */ + getSubjectId() { + return this.subjectId; + } + + /** + * @returns {string} + */ + getResult() { + return this.result; + } + + /** + * @returns {IdentityProfileFailureReasonResponse|undefined} + */ + getFailureReason() { + return this.failureReason; + } + + /** + * @returns {AdvancedIdentityProfileReportResponse|undefined} + */ + getIdentityProfileReport() { + return this.identityProfileReport; + } +} + +module.exports = AdvancedIdentityProfileResponse; diff --git a/src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.scheme.response.js b/src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.scheme.response.js new file mode 100644 index 000000000..0f7793362 --- /dev/null +++ b/src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.scheme.response.js @@ -0,0 +1,42 @@ +'use strict'; + +const Validation = require('../../../../../yoti_common/validation'); + +class AdvancedIdentityProfileSchemeResponse { + constructor(scheme) { + Validation.isString(scheme.type, 'type'); + /** @private {string} */ + this.type = scheme.type; + + Validation.isString(scheme.objective, 'objective', true); + /** @private {string} */ + this.objective = scheme.objective; + + Validation.isString(scheme.label, 'label'); + /** @private {string} */ + this.label = scheme.label; + } + + /** + * @returns {string} + */ + getType() { + return this.type; + } + + /** + * @returns {string} + */ + getObjective() { + return this.objective; + } + + /** + * @returns {string} + */ + getLabel() { + return this.label; + } +} + +module.exports = AdvancedIdentityProfileSchemeResponse; diff --git a/src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.trust.framework.response.js b/src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.trust.framework.response.js new file mode 100644 index 000000000..5a25c663a --- /dev/null +++ b/src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.trust.framework.response.js @@ -0,0 +1,34 @@ +'use strict'; + +const Validation = require('../../../../../yoti_common/validation'); +const AdvancedIdentityProfileSchemeComplianceResponse = require('./advanced.identity.profile.report.scheme.compliance.response'); + +class AdvancedIdentityProfileTrustFrameworkResponse { + constructor(trustFrameworkCompliance) { + Validation.isString(trustFrameworkCompliance.trust_framework, 'trust_framework'); + /** @private {string} */ + this.trustFramework = trustFrameworkCompliance.trust_framework; + + Validation.isArray(trustFrameworkCompliance.schemes_compliance, 'schemes_compliance'); + /** @private {AdvancedIdentityProfileSchemeComplianceResponse[]} */ + this.schemesCompliance = trustFrameworkCompliance.schemes_compliance + // eslint-disable-next-line max-len + .map((schemeCompliance) => new AdvancedIdentityProfileSchemeComplianceResponse(schemeCompliance)); + } + + /** + * @returns {string} + */ + getTrustFramework() { + return this.trustFramework; + } + + /** + * @returns {AdvancedIdentityProfileSchemeComplianceResponse[]} + */ + getSchemesCompliance() { + return this.schemesCompliance; + } +} + +module.exports = AdvancedIdentityProfileTrustFrameworkResponse; diff --git a/src/idv_service/session/retrieve/identity.profile.failure.reason.response.js b/src/idv_service/session/retrieve/identity_profile/identity.profile.failure.reason.response.js similarity index 79% rename from src/idv_service/session/retrieve/identity.profile.failure.reason.response.js rename to src/idv_service/session/retrieve/identity_profile/identity.profile.failure.reason.response.js index 520bc57d8..043de6ae2 100644 --- a/src/idv_service/session/retrieve/identity.profile.failure.reason.response.js +++ b/src/idv_service/session/retrieve/identity_profile/identity.profile.failure.reason.response.js @@ -1,15 +1,15 @@ 'use strict'; -const Validation = require('../../../yoti_common/validation'); +const Validation = require('../../../../yoti_common/validation'); const IdentityProfileRequirementsNotMetDetailResponse = require('./identity.profile.requirements.not.met.detail.response'); class IdentityProfileFailureReasonResponse { constructor(failureReason) { Validation.isString(failureReason.reason_code, 'reason code'); - /** @private @type {string} */ + /** @private {string} */ this.reasonCode = failureReason.reason_code; - /** @private @type {IdentityProfileRequirementsNotMetDetailResponse[]} */ + /** @private {IdentityProfileRequirementsNotMetDetailResponse[]} */ this.requirementsNotMetDetails = []; // eslint-disable-next-line camelcase @@ -23,10 +23,16 @@ class IdentityProfileFailureReasonResponse { } } + /** + * @returns {string} + */ getReasonCode() { return this.reasonCode; } + /** + * @returns {IdentityProfileRequirementsNotMetDetailResponse[]} + */ getRequirementsNotMetDetails() { return this.requirementsNotMetDetails; } diff --git a/src/idv_service/session/retrieve/identity.profile.report.response.js b/src/idv_service/session/retrieve/identity_profile/identity.profile.report.response.js similarity index 80% rename from src/idv_service/session/retrieve/identity.profile.report.response.js rename to src/idv_service/session/retrieve/identity_profile/identity.profile.report.response.js index 1ea801b6e..cba02cc81 100644 --- a/src/idv_service/session/retrieve/identity.profile.report.response.js +++ b/src/idv_service/session/retrieve/identity_profile/identity.profile.report.response.js @@ -1,23 +1,23 @@ 'use strict'; const IdentityProfileReportSchemesComplianceResponse = require('./identity.profile.report.schemes.compliance.response'); -const Validation = require('../../../yoti_common/validation'); -const MediaResponse = require('./media.response'); +const Validation = require('../../../../yoti_common/validation'); +const MediaResponse = require('../media.response'); class IdentityProfileReportResponse { constructor(report) { Validation.isString(report.trust_framework, 'trust_framework'); - /** @private */ + /** @private {string} */ this.trustFramework = report.trust_framework; Validation.isArray(report.schemes_compliance, 'schemes_compliance'); - /** @private */ + /** @private {IdentityProfileReportSchemesComplianceResponse[]} */ this.schemesCompliance = report.schemes_compliance // eslint-disable-next-line max-len .map((schemeCompliance) => new IdentityProfileReportSchemesComplianceResponse(schemeCompliance)); Validation.isPlainObject(report.media, 'media'); - /** @private */ + /** @private {MediaResponse} */ this.media = new MediaResponse(report.media); } diff --git a/src/idv_service/session/retrieve/identity_profile/identity.profile.report.schemes.compliance.response.js b/src/idv_service/session/retrieve/identity_profile/identity.profile.report.schemes.compliance.response.js new file mode 100644 index 000000000..b1e05e7ee --- /dev/null +++ b/src/idv_service/session/retrieve/identity_profile/identity.profile.report.schemes.compliance.response.js @@ -0,0 +1,43 @@ +'use strict'; + +const Validation = require('../../../../yoti_common/validation'); +const IdentityProfileSchemeResponse = require('./identity.profile.scheme.response'); + +class IdentityProfileReportSchemesComplianceResponse { + constructor(schemesCompliance) { + Validation.isPlainObject(schemesCompliance.scheme, 'scheme'); + /** @private {IdentityProfileSchemeResponse} */ + this.scheme = new IdentityProfileSchemeResponse(schemesCompliance.scheme); + + Validation.isBoolean(schemesCompliance.requirements_met, 'requirements_met'); + /** @private {boolean} */ + this.requirementsMet = schemesCompliance.requirements_met; + + Validation.isString(schemesCompliance.requirements_not_met_info, 'requirements_not_met_info', true); + /** @private {string|undefined} */ + this.requirementsNotMetInfo = schemesCompliance.requirements_not_met_info; + } + + /** + * @returns {IdentityProfileSchemeResponse} + */ + getScheme() { + return this.scheme; + } + + /** + * @returns {boolean} + */ + isRequirementsMet() { + return this.requirementsMet; + } + + /** + * @returns {string|undefined} + */ + getRequirementsNotMetInfo() { + return this.requirementsNotMetInfo; + } +} + +module.exports = IdentityProfileReportSchemesComplianceResponse; diff --git a/src/idv_service/session/retrieve/identity.profile.requirements.not.met.detail.response.js b/src/idv_service/session/retrieve/identity_profile/identity.profile.requirements.not.met.detail.response.js similarity index 69% rename from src/idv_service/session/retrieve/identity.profile.requirements.not.met.detail.response.js rename to src/idv_service/session/retrieve/identity_profile/identity.profile.requirements.not.met.detail.response.js index 06b96af97..ee530b1d3 100644 --- a/src/idv_service/session/retrieve/identity.profile.requirements.not.met.detail.response.js +++ b/src/idv_service/session/retrieve/identity_profile/identity.profile.requirements.not.met.detail.response.js @@ -1,46 +1,61 @@ 'use strict'; -const Validation = require('../../../yoti_common/validation'); +const Validation = require('../../../../yoti_common/validation'); class IdentityProfileRequirementsNotMetDetailResponse { constructor(requirementsNotMetDetail) { Validation.isString(requirementsNotMetDetail.failure_type, 'failure_type'); - /** @private @type {string} */ + /** @private {string} */ this.failureType = requirementsNotMetDetail.failure_type; - Validation.isString(requirementsNotMetDetail.document_type, 'document_type'); - /** @private @type {string} */ + Validation.isString(requirementsNotMetDetail.document_type, 'document_type', true); + /** @private {string|undefined} */ this.documentType = requirementsNotMetDetail.document_type; - Validation.isString(requirementsNotMetDetail.document_country_iso_code, 'document_country_iso_code'); - /** @private @type {string} */ + Validation.isString(requirementsNotMetDetail.document_country_iso_code, 'document_country_iso_code', true); + /** @private {string|undefined} */ this.documentCountryIsoCode = requirementsNotMetDetail.document_country_iso_code; Validation.isString(requirementsNotMetDetail.audit_id, 'audit_id', true); - /** @private @type {string|undefined} */ + /** @private {string|undefined} */ this.auditId = requirementsNotMetDetail.audit_id; Validation.isString(requirementsNotMetDetail.details, 'details'); - /** @private @type {string} */ + /** @private {string} */ this.details = requirementsNotMetDetail.details; } + /** + * @returns {string} + */ getFailureType() { return this.failureType; } + /** + * @returns {string} + */ getDocumentType() { return this.documentType; } + /** + * @returns {string} + */ getDocumentCountryIsoCode() { return this.documentCountryIsoCode; } + /** + * @returns {string|undefined} + */ getAuditId() { return this.auditId; } + /** + * @returns {string} + */ getDetails() { return this.details; } diff --git a/src/idv_service/session/retrieve/identity.profile.response.js b/src/idv_service/session/retrieve/identity_profile/identity.profile.response.js similarity index 78% rename from src/idv_service/session/retrieve/identity.profile.response.js rename to src/idv_service/session/retrieve/identity_profile/identity.profile.response.js index b961f01ad..e87f5f364 100644 --- a/src/idv_service/session/retrieve/identity.profile.response.js +++ b/src/idv_service/session/retrieve/identity_profile/identity.profile.response.js @@ -1,28 +1,28 @@ 'use strict'; -const Validation = require('../../../yoti_common/validation'); +const Validation = require('../../../../yoti_common/validation'); const IdentityProfileReportResponse = require('./identity.profile.report.response'); const IdentityProfileFailureReasonResponse = require('./identity.profile.failure.reason.response'); class IdentityProfileResponse { constructor(identityProfile) { Validation.isString(identityProfile.subject_id, 'subject_id', true); - /** @private */ + /** @private {string|undefined} */ this.subjectId = identityProfile.subject_id; Validation.isString(identityProfile.result, 'result'); - /** @private */ + /** @private {string} */ this.result = identityProfile.result; if (identityProfile.failure_reason) { Validation.isPlainObject(identityProfile.failure_reason, 'failure_reason'); - /** @private */ + /** @private {IdentityProfileFailureReasonResponse|undefined} */ this.failureReason = new IdentityProfileFailureReasonResponse(identityProfile.failure_reason); } if (identityProfile.identity_profile_report) { Validation.isPlainObject(identityProfile.identity_profile_report, 'identity_profile_report'); - /** @private */ + /** @private {IdentityProfileReportResponse|undefined} */ this.identityProfileReport = new IdentityProfileReportResponse( identityProfile.identity_profile_report ); @@ -44,14 +44,14 @@ class IdentityProfileResponse { } /** - * @returns {IdentityProfileFailureReasonResponse} + * @returns {IdentityProfileFailureReasonResponse|undefined} */ getFailureReason() { return this.failureReason; } /** - * @returns {IdentityProfileReportResponse} + * @returns {IdentityProfileReportResponse|undefined} */ getIdentityProfileReport() { return this.identityProfileReport; diff --git a/src/idv_service/session/retrieve/identity_profile/identity.profile.scheme.response.js b/src/idv_service/session/retrieve/identity_profile/identity.profile.scheme.response.js new file mode 100644 index 000000000..8fbf96aba --- /dev/null +++ b/src/idv_service/session/retrieve/identity_profile/identity.profile.scheme.response.js @@ -0,0 +1,31 @@ +'use strict'; + +const Validation = require('../../../../yoti_common/validation'); + +class IdentityProfileSchemeResponse { + constructor(scheme) { + Validation.isString(scheme.type, 'type'); + /** @private {string} */ + this.type = scheme.type; + + Validation.isString(scheme.objective, 'objective', true); + /** @private {string} */ + this.objective = scheme.objective; + } + + /** + * @returns {string} + */ + getType() { + return this.type; + } + + /** + * @returns {string|undefined} + */ + getObjective() { + return this.objective; + } +} + +module.exports = IdentityProfileSchemeResponse; diff --git a/tests/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.builder.test.js b/tests/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.builder.test.js new file mode 100644 index 000000000..5c3750d12 --- /dev/null +++ b/tests/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.builder.test.js @@ -0,0 +1,87 @@ +const AdvancedIdentityProfile = require('../../../../../../src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile'); +const AdvancedIdentityProfileBuilder = require('../../../../../../src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.builder'); +const AdvancedIdentityProfileSchemeBuilder = require('../../../../../../src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.scheme.builder'); +const AdvancedIdentityProfileSchemeConfigBuilder = require('../../../../../../src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.scheme.config.builder'); +const OrthogonalRestrictionsFilterBuilder = require('../../../../../../src/idv_service/session/create/filters/orthogonal/orthogonal.restrictions.filter.builder'); + +function getScheme(type, objective, label, filterDocumentType = null) { + const builder = new AdvancedIdentityProfileSchemeBuilder() + .withType(type) + .withLabel(label); + if (objective) builder.withObjective(objective); + + if (filterDocumentType) { + const documentFilter = new OrthogonalRestrictionsFilterBuilder() + .withWhitelistedDocumentTypes([filterDocumentType]) + .withAllowNonLatinDocuments(true) + .build(); + const advancedIdentityProfileSchemeConfig = new AdvancedIdentityProfileSchemeConfigBuilder() + .withFilter(documentFilter) + .build(); + + builder.withConfig(advancedIdentityProfileSchemeConfig); + } + + return builder.build(); +} + +describe('AdvancedIdentityProfileSchemeBuilder', () => { + it('should build AdvancedIdentityProfileScheme (1 scheme)', () => { + const scheme = getScheme('DBS', 'STANDARD', 'dbs-standard'); + const advancedIdentityProfile = new AdvancedIdentityProfileBuilder() + .withTrustFramework('UK_TFIDA') + .withScheme(scheme) + .build(); + + expect(advancedIdentityProfile).toBeInstanceOf(AdvancedIdentityProfile); + + const expectedJson = JSON.stringify({ + trust_framework: 'UK_TFIDA', + schemes: [ + JSON.parse(JSON.stringify(scheme)), + ], + }); + + expect(JSON.stringify(advancedIdentityProfile)).toBe(expectedJson); + }); + + it('should build AdvancedIdentityProfileScheme (2 schemes)', () => { + const scheme1 = getScheme('DBS', 'STANDARD', 'dbs-standard'); + const scheme2 = getScheme('RTW', null, 'some-rtw', 'PASSPORT'); + const advancedIdentityProfile = new AdvancedIdentityProfileBuilder() + .withTrustFramework('UK_TFIDA') + .withScheme(scheme1) + .withScheme(scheme2) + .build(); + + expect(advancedIdentityProfile).toBeInstanceOf(AdvancedIdentityProfile); + + const expectedJson = JSON.stringify({ + trust_framework: 'UK_TFIDA', + schemes: [ + JSON.parse(JSON.stringify(scheme1)), + JSON.parse(JSON.stringify(scheme2)), + ], + }); + + expect(JSON.stringify(advancedIdentityProfile)).toBe(expectedJson); + }); + + describe('#withTrustFramework', () => { + it('should error when called with incorrect argument type', () => { + expect(() => { + new AdvancedIdentityProfileBuilder() + .withTrustFramework(123); + }).toThrowError(TypeError); + }); + }); + + describe('#withTrustFramework', () => { + it('should error when called with incorrect argument type', () => { + expect(() => { + new AdvancedIdentityProfileBuilder() + .withScheme({ not: 'a-scheme' }); + }).toThrowError(TypeError); + }); + }); +}); diff --git a/tests/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.requirements.builder.test.js b/tests/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.requirements.builder.test.js new file mode 100644 index 000000000..0b5d4a06a --- /dev/null +++ b/tests/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.requirements.builder.test.js @@ -0,0 +1,57 @@ +const AdvancedIdentityProfileRequirements = require('../../../../../../src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.requirements'); +const AdvancedIdentityProfileRequirementsBuilder = require('../../../../../../src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.requirements.builder'); +const AdvancedIdentityProfile = require('../../../../../../src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile'); +const AdvancedIdentityProfileScheme = require('../../../../../../src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.scheme'); + +const profile1 = new AdvancedIdentityProfile('UK_TFIDA', [ + new AdvancedIdentityProfileScheme('DBS', 'STANDARD', 'dbs-standard'), + new AdvancedIdentityProfileScheme('RTW', 'BASIC', 'rtw-basic'), +]); +const profile2 = new AdvancedIdentityProfile('YOTI_GLOBAL', [ + new AdvancedIdentityProfileScheme('IDENTITY', 'AL_L1', 'identity-AL-L1'), + new AdvancedIdentityProfileScheme('IDENTITY', 'AL_M1', 'identity-AL-M1'), +]); + +describe('AdvancedIdentityProfileSchemeBuilder', () => { + it('should build AdvancedIdentityProfileScheme (1 profile)', () => { + const advancedIdentityProfileRequirements = new AdvancedIdentityProfileRequirementsBuilder() + .withProfile(profile1) + .build(); + + expect(advancedIdentityProfileRequirements).toBeInstanceOf(AdvancedIdentityProfileRequirements); + + const expectedJson = JSON.stringify({ + profiles: [ + JSON.parse(JSON.stringify(profile1)), + ], + }); + + expect(JSON.stringify(advancedIdentityProfileRequirements)).toBe(expectedJson); + }); + it('should build AdvancedIdentityProfileScheme (2 profiles)', () => { + const advancedIdentityProfileRequirements = new AdvancedIdentityProfileRequirementsBuilder() + .withProfile(profile1) + .withProfile(profile2) + .build(); + + expect(advancedIdentityProfileRequirements).toBeInstanceOf(AdvancedIdentityProfileRequirements); + + const expectedJson = JSON.stringify({ + profiles: [ + JSON.parse(JSON.stringify(profile1)), + JSON.parse(JSON.stringify(profile2)), + ], + }); + + expect(JSON.stringify(advancedIdentityProfileRequirements)).toBe(expectedJson); + }); + + describe('#withProfile', () => { + it('should error when called with incorrect argument type', () => { + expect(() => { + new AdvancedIdentityProfileRequirementsBuilder() + .withProfile({ not: 'a-profile' }); + }).toThrowError(TypeError); + }); + }); +}); diff --git a/tests/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.scheme.builder.test.js b/tests/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.scheme.builder.test.js new file mode 100644 index 000000000..8386ef50b --- /dev/null +++ b/tests/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.scheme.builder.test.js @@ -0,0 +1,99 @@ +const AdvancedIdentityProfileSchemeBuilder = require('../../../../../../src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.scheme.builder'); +const AdvancedIdentityProfileScheme = require('../../../../../../src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.scheme'); +const AdvancedIdentityProfileSchemeConfigBuilder = require('../../../../../../src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.scheme.config.builder'); +const OrthogonalRestrictionsFilterBuilder = require('../../../../../../src/idv_service/session/create/filters/orthogonal/orthogonal.restrictions.filter.builder'); + +describe('AdvancedIdentityProfileSchemeBuilder', () => { + it('should build AdvancedIdentityProfileScheme (without config)', () => { + const advancedIdentityProfileScheme = new AdvancedIdentityProfileSchemeBuilder() + .withType('DBS') + .withObjective('STANDARD') + .withLabel('dbs-standard') + .build(); + + expect(advancedIdentityProfileScheme).toBeInstanceOf(AdvancedIdentityProfileScheme); + + const expectedJson = JSON.stringify({ + type: 'DBS', + objective: 'STANDARD', + label: 'dbs-standard', + }); + + expect(JSON.stringify(advancedIdentityProfileScheme)).toBe(expectedJson); + }); + it('should build AdvancedIdentityProfileScheme (without config, nor objective, nor label)', () => { + const advancedIdentityProfileScheme = new AdvancedIdentityProfileSchemeBuilder() + .withType('RTW') + .withLabel('some-rtw') + .build(); + + expect(advancedIdentityProfileScheme).toBeInstanceOf(AdvancedIdentityProfileScheme); + + const expectedJson = JSON.stringify({ + type: 'RTW', + label: 'some-rtw', + }); + + expect(JSON.stringify(advancedIdentityProfileScheme)).toBe(expectedJson); + }); + it('should build AdvancedIdentityProfileScheme (with config)', () => { + const documentFilter = new OrthogonalRestrictionsFilterBuilder() + .withWhitelistedDocumentTypes(['DRIVING_LICENCE']) + .withAllowNonLatinDocuments(true) + .build(); + + const advancedIdentityProfileSchemeConfig = new AdvancedIdentityProfileSchemeConfigBuilder() + .withFilter(documentFilter) + .build(); + + const advancedIdentityProfileScheme = new AdvancedIdentityProfileSchemeBuilder() + .withType('DBS') + .withObjective('STANDARD') + .withLabel('dbs-standard') + .withConfig(advancedIdentityProfileSchemeConfig) + .build(); + + expect(advancedIdentityProfileScheme).toBeInstanceOf(AdvancedIdentityProfileScheme); + + const expectedJson = JSON.stringify({ + type: 'DBS', + objective: 'STANDARD', + label: 'dbs-standard', + config: JSON.parse(JSON.stringify(advancedIdentityProfileSchemeConfig)), + }); + + expect(JSON.stringify(advancedIdentityProfileScheme)).toBe(expectedJson); + }); + describe('#withType', () => { + it('should error when called with incorrect argument type', () => { + expect(() => { + new AdvancedIdentityProfileSchemeBuilder() + .withType(123); + }).toThrowError(TypeError); + }); + }); + describe('#withLabel', () => { + it('should error when called with incorrect argument type', () => { + expect(() => { + new AdvancedIdentityProfileSchemeBuilder() + .withLabel(123); + }).toThrowError(TypeError); + }); + }); + describe('#withObjective', () => { + it('should error when called with incorrect argument type', () => { + expect(() => { + new AdvancedIdentityProfileSchemeBuilder() + .withObjective(123); + }).toThrowError(TypeError); + }); + }); + describe('#withConfig', () => { + it('should error when called with incorrect argument type', () => { + expect(() => { + new AdvancedIdentityProfileSchemeBuilder() + .withConfig(123); + }).toThrowError(TypeError); + }); + }); +}); diff --git a/tests/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.scheme.config.builder.test.js b/tests/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.scheme.config.builder.test.js new file mode 100644 index 000000000..09e071e5d --- /dev/null +++ b/tests/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.scheme.config.builder.test.js @@ -0,0 +1,45 @@ +const AdvancedIdentityProfileSchemeConfigBuilder = require('../../../../../../src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.scheme.config.builder'); +const AdvancedIdentityProfileSchemeConfig = require('../../../../../../src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.scheme.config'); +const OrthogonalRestrictionsFilterBuilder = require('../../../../../../src/idv_service/session/create/filters/orthogonal/orthogonal.restrictions.filter.builder'); + +describe('AdvancedIdentityProfileSchemeConfigBuilder', () => { + it('should build AdvancedIdentityProfileSchemeConfig (no filter)', () => { + const advancedIdentityProfileSchemeConfig = new AdvancedIdentityProfileSchemeConfigBuilder() + .build(); + + expect(advancedIdentityProfileSchemeConfig).toBeInstanceOf(AdvancedIdentityProfileSchemeConfig); + + const expectedJson = JSON.stringify({}); + + expect(JSON.stringify(advancedIdentityProfileSchemeConfig)).toBe(expectedJson); + }); + + describe('#withFilter()', () => { + it('should build AdvancedIdentityProfileSchemeConfig', () => { + const documentFilter = new OrthogonalRestrictionsFilterBuilder() + .withWhitelistedDocumentTypes(['DRIVING_LICENCE']) + .withAllowNonLatinDocuments(true) + .build(); + + const advancedIdentityProfileSchemeConfig = new AdvancedIdentityProfileSchemeConfigBuilder() + .withFilter(documentFilter) + .build(); + + expect(advancedIdentityProfileSchemeConfig) + .toBeInstanceOf(AdvancedIdentityProfileSchemeConfig); + + const expectedJson = JSON.stringify({ + filter: JSON.parse(JSON.stringify(documentFilter)), + }); + + expect(JSON.stringify(advancedIdentityProfileSchemeConfig)).toBe(expectedJson); + }); + it('should error when argument is not a filter', () => { + expect(() => { + new AdvancedIdentityProfileSchemeConfigBuilder() + .withFilter({ fake: 'filter' }) + .build(); + }).toThrowError(TypeError); + }); + }); +}); diff --git a/tests/idv_service/session/create/session.specification.builder.test.js b/tests/idv_service/session/create/session.specification.builder.test.js index 01d44971b..0fd6e6ef9 100644 --- a/tests/idv_service/session/create/session.specification.builder.test.js +++ b/tests/idv_service/session/create/session.specification.builder.test.js @@ -14,6 +14,9 @@ const { DocumentRestrictionsFilterBuilder, RequestedCustomAccountWatchlistAdvancedCaConfigBuilder, } = require('../../../..'); +const AdvancedIdentityProfile = require('../../../../src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile'); +const AdvancedIdentityProfileScheme = require('../../../../src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.scheme'); +const AdvancedIdentityProfileRequirements = require('../../../../src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.requirements'); describe('SessionSpecificationBuilder', () => { it('should build SessionSpecification', () => { @@ -213,6 +216,64 @@ describe('SessionSpecificationBuilder', () => { expect(JSON.stringify(sessionSpec)).toBe(expectedJson); }); + it('should build SessionSpecification with withAdvancedIdentityProfileRequirements', () => { + const advancedIdentityProfileRequirements = new AdvancedIdentityProfileRequirements([ + new AdvancedIdentityProfile('UK_TFIDA', [ + new AdvancedIdentityProfileScheme('DBS', 'STANDARD', 'dbs-standard'), + new AdvancedIdentityProfileScheme('RTW', undefined, 'some-rtw'), + ]), + new AdvancedIdentityProfile('YOTI_GLOBAL', [ + new AdvancedIdentityProfileScheme('IDENTITY', 'AL_L1', 'identity-AL-L1'), + new AdvancedIdentityProfileScheme('IDENTITY', 'AL_M1', 'identity-AL-M1'), + ]), + ]); + + const sessionSpec = new SessionSpecificationBuilder() + .withAdvancedIdentityProfileRequirements(advancedIdentityProfileRequirements) + .build(); + + const expectedJson = JSON.stringify({ + requested_checks: [], + requested_tasks: [], + required_documents: [], + advanced_identity_profile_requirements: { + profiles: [ + { + trust_framework: 'UK_TFIDA', + schemes: [ + { + type: 'DBS', + objective: 'STANDARD', + label: 'dbs-standard', + }, + { + type: 'RTW', + label: 'some-rtw', + }, + ], + }, + { + trust_framework: 'YOTI_GLOBAL', + schemes: [ + { + type: 'IDENTITY', + objective: 'AL_L1', + label: 'identity-AL-L1', + }, + { + type: 'IDENTITY', + objective: 'AL_M1', + label: 'identity-AL-M1', + }, + ], + }, + ], + }, + }); + + expect(JSON.stringify(sessionSpec)).toBe(expectedJson); + }); + it('should build SessionSpecification with subject', () => { const subjectDescriptor = { subject_id: 'some_subject_id_string', diff --git a/tests/idv_service/session/retrieve/get.session.result.spec.js b/tests/idv_service/session/retrieve/get.session.result.spec.js index 0a190a17c..cb53b3e11 100644 --- a/tests/idv_service/session/retrieve/get.session.result.spec.js +++ b/tests/idv_service/session/retrieve/get.session.result.spec.js @@ -12,7 +12,8 @@ const WatchlistScreeningCheckResponse = require('../../../../src/idv_service/ses const WatchlistAdvancedCaCheckResponse = require('../../../../src/idv_service/session/retrieve/watchlist.advanced.ca.check.response'); const ThirdPartyIdentityFraud1CheckResponse = require('../../../../src/idv_service/session/retrieve/third.party.identity.fraud.1.check.response'); const FaceComparisonCheckResponse = require('../../../../src/idv_service/session/retrieve/face.comparison.check.response'); -const IdentityProfileResponse = require('../../../../src/idv_service/session/retrieve/identity.profile.response'); +const IdentityProfileResponse = require('../../../../src/idv_service/session/retrieve/identity_profile/identity.profile.response'); +const AdvancedIdentityProfileResponse = require('../../../../src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.response'); const { YotiDate } = require('../../../..'); const ID_DOCUMENT_AUTHENTICITY = 'ID_DOCUMENT_AUTHENTICITY'; @@ -105,6 +106,77 @@ describe('GetSessionResult', () => { }, }, }, + advanced_identity_profile: { + subject_id: 'some-subject', + result: 'DONE', + failure_reason: { + reason_code: 'MANDATORY_DOCUMENT_NOT_PROVIDED', + requirements_not_met_details: [ + { + failure_type: 'ID_DOCUMENT_EXTRACTION', + document_type: 'PASSPORT', + document_country_iso_code: 'GBR', + audit_id: 'audit-123', + details: 'something not right', + }, + { + failure_type: 'ID_DOCUMENT_AUTHENTICITY', + document_type: 'PASSPORT', + document_country_iso_code: 'GBR', + audit_id: 'audit-456', + details: 'something still not right', + }, + ], + }, + identity_profile_report: { + compliance: [ + { + trust_framework: 'UK_TFIDA', + schemes_compliance: [ + { + requirements_met: true, + scheme: { + type: 'DBS', + objective: 'STANDARD', + label: 'dbs-standard', + }, + }, + { + requirements_met: false, + requirements_not_met_info: 'HORRIBLE_FAILURE', + scheme: { + type: 'RTW', + label: 'some-RTW', + }, + }, + ], + }, + { + trust_framework: 'YOTI_GLOBAL', + schemes_compliance: [ + { + requirements_met: true, + scheme: { + type: 'IDENTITY', + objective: 'AL_M1', + label: 'identity-AL-M1', + }, + }, + { + requirements_met: false, + requirements_not_met_info: 'HORRIBLE_FAILURE', + scheme: { + type: 'IDENTITY', + objective: 'AL_L1', + label: 'identity-AL-L1', + }, + }, + ], + }, + ], + media: {}, + }, + }, }); }); @@ -315,4 +387,12 @@ describe('GetSessionResult', () => { expect(identityProfile).toBeInstanceOf(IdentityProfileResponse); }); }); + + describe('#getAdvancedIdentityProfile', () => { + it('should return instance of AdvancedIdentityProfileResponse', () => { + const advancedIdentityProfile = session.getAdvancedIdentityProfile(); + + expect(advancedIdentityProfile).toBeInstanceOf(AdvancedIdentityProfileResponse); + }); + }); }); diff --git a/tests/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.report.response.spec.js b/tests/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.report.response.spec.js new file mode 100644 index 000000000..c69a1e238 --- /dev/null +++ b/tests/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.report.response.spec.js @@ -0,0 +1,118 @@ +const AdvancedIdentityProfileTrustFrameworkResponse = require('../../../../../../src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.trust.framework.response'); +const AdvancedIdentityProfileReportResponse = require('../../../../../../src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.report.response'); +const MediaResponse = require('../../../../../../src/idv_service/session/retrieve/media.response'); + +describe('AdvancedIdentityProfileTrustFrameworkComplianceResponse', () => { + let advancedIdentityProfileReportResponse; + + beforeEach(() => { + const response = { + compliance: [ + { + trust_framework: 'UK_TFIDA', + schemes_compliance: [ + { + requirements_met: true, + scheme: { + type: 'DBS', + objective: 'STANDARD', + label: 'dbs-standard', + }, + }, + { + requirements_met: false, + requirements_not_met_info: 'HORRIBLE_FAILURE', + scheme: { + type: 'RTW', + label: 'some-RTW', + }, + }, + ], + }, + { + trust_framework: 'YOTI_GLOBAL', + schemes_compliance: [ + { + requirements_met: true, + scheme: { + type: 'IDENTITY', + objective: 'AL_M1', + label: 'identity-AL-M1', + }, + }, + { + requirements_met: false, + requirements_not_met_info: 'HORRIBLE_FAILURE', + scheme: { + type: 'IDENTITY', + objective: 'AL_L1', + label: 'identity-AL-L1', + }, + }, + ], + }, + ], + media: {}, + }; + + // eslint-disable-next-line max-len + advancedIdentityProfileReportResponse = new AdvancedIdentityProfileReportResponse(response); + }); + + describe('#getCompliance', () => { + it('should return compliance', () => { + const compliance = advancedIdentityProfileReportResponse.getCompliance(); + expect(compliance).toHaveLength(2); + expect(compliance[0]).toBeInstanceOf(AdvancedIdentityProfileTrustFrameworkResponse); + expect(compliance[0].getTrustFramework()).toBe('UK_TFIDA'); + expect(compliance[0].getSchemesCompliance()).toHaveLength(2); + expect(compliance[0].getSchemesCompliance()).toEqual(expect.arrayContaining([ + expect.objectContaining({ + requirementsMet: true, + scheme: { + type: 'DBS', + objective: 'STANDARD', + label: 'dbs-standard', + }, + }), + expect.objectContaining({ + requirementsMet: false, + requirementsNotMetInfo: 'HORRIBLE_FAILURE', + scheme: { + type: 'RTW', + label: 'some-RTW', + }, + }), + ])); + + expect(compliance[1]).toBeInstanceOf(AdvancedIdentityProfileTrustFrameworkResponse); + expect(compliance[1].getTrustFramework()).toBe('YOTI_GLOBAL'); + expect(compliance[1].getSchemesCompliance()).toHaveLength(2); + expect(compliance[1].getSchemesCompliance()).toEqual(expect.arrayContaining([ + expect.objectContaining({ + requirementsMet: true, + scheme: { + type: 'IDENTITY', + objective: 'AL_M1', + label: 'identity-AL-M1', + }, + }), + expect.objectContaining({ + requirementsMet: false, + requirementsNotMetInfo: 'HORRIBLE_FAILURE', + scheme: { + type: 'IDENTITY', + objective: 'AL_L1', + label: 'identity-AL-L1', + }, + }), + ])); + }); + }); + + describe('#getMedia', () => { + it('should return media', () => { + expect(advancedIdentityProfileReportResponse.getMedia()).toBeInstanceOf(MediaResponse); + }); + }); +}); diff --git a/tests/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.report.scheme.response.spec.js b/tests/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.report.scheme.response.spec.js new file mode 100644 index 000000000..16c7bdb8b --- /dev/null +++ b/tests/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.report.scheme.response.spec.js @@ -0,0 +1,74 @@ +const AdvancedIdentityProfileSchemeResponse = require('../../../../../../src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.scheme.response'); +const AdvancedIdentityProfileReportSchemeComplianceResponse = require('../../../../../../src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.report.scheme.compliance.response'); + +const schemeResponse = { + type: 'DBS', + objective: 'STANDARD', + label: 'dbs-standard', +}; + +describe('AdvancedIdentityProfileReportSchemeComplianceResponse', () => { + let advancedIdentityProfileReportSchemeComplianceResponse; + + describe('with requirements met', () => { + beforeEach(() => { + const responseWithMetRequirements = { + requirements_met: true, + scheme: schemeResponse, + }; + // eslint-disable-next-line max-len + advancedIdentityProfileReportSchemeComplianceResponse = new AdvancedIdentityProfileReportSchemeComplianceResponse(responseWithMetRequirements); + }); + + describe('#getScheme', () => { + it('should return scheme', () => { + const scheme = advancedIdentityProfileReportSchemeComplianceResponse.getScheme(); + expect(scheme).toBeInstanceOf(AdvancedIdentityProfileSchemeResponse); + expect(scheme.getType()).toBe('DBS'); + expect(scheme.getObjective()).toBe('STANDARD'); + expect(scheme.getLabel()).toBe('dbs-standard'); + }); + }); + + describe('#getRequirementsMet', () => { + it('should return requirements_met', () => { + // eslint-disable-next-line max-len + expect(advancedIdentityProfileReportSchemeComplianceResponse.getRequirementsMet()).toBe(true); + }); + }); + }); + describe('with requirements not met', () => { + beforeEach(() => { + const responseWithNotMetRequirements = { + requirements_met: false, + requirements_not_met_info: 'SOMETHING_FAILED', + scheme: schemeResponse, + }; + // eslint-disable-next-line max-len + advancedIdentityProfileReportSchemeComplianceResponse = new AdvancedIdentityProfileReportSchemeComplianceResponse(responseWithNotMetRequirements); + }); + + describe('#getScheme', () => { + it('should return scheme', () => { + const scheme = advancedIdentityProfileReportSchemeComplianceResponse.getScheme(); + expect(scheme).toBeInstanceOf(AdvancedIdentityProfileSchemeResponse); + expect(scheme.getType()).toBe('DBS'); + expect(scheme.getObjective()).toBe('STANDARD'); + expect(scheme.getLabel()).toBe('dbs-standard'); + }); + }); + + describe('#getRequirementsMet', () => { + it('should return requirements_met', () => { + // eslint-disable-next-line max-len + expect(advancedIdentityProfileReportSchemeComplianceResponse.getRequirementsMet()).toBe(false); + }); + }); + describe('#getRequirementsMet', () => { + it('should return requirements_met', () => { + // eslint-disable-next-line max-len + expect(advancedIdentityProfileReportSchemeComplianceResponse.getRequirementsNotMetInfo()).toBe('SOMETHING_FAILED'); + }); + }); + }); +}); diff --git a/tests/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.response.spec.js b/tests/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.response.spec.js new file mode 100644 index 000000000..1452494bd --- /dev/null +++ b/tests/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.response.spec.js @@ -0,0 +1,134 @@ +const IdentityProfileFailureReasonResponse = require('../../../../../../src/idv_service/session/retrieve/identity_profile/identity.profile.failure.reason.response'); +const IdentityProfileRequirementsNotMetDetailResponse = require('../../../../../../src/idv_service/session/retrieve/identity_profile/identity.profile.requirements.not.met.detail.response'); +const AdvancedIdentityProfileReportResponse = require('../../../../../../src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.report.response'); +const AdvancedIdentityProfileResponse = require('../../../../../../src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.response'); + +const reportResponse = { + compliance: [ + { + trust_framework: 'UK_TFIDA', + schemes_compliance: [ + { + requirements_met: true, + scheme: { + type: 'DBS', + objective: 'STANDARD', + label: 'dbs-standard', + }, + }, + { + requirements_met: false, + requirements_not_met_info: 'HORRIBLE_FAILURE', + scheme: { + type: 'RTW', + label: 'some-RTW', + }, + }, + ], + }, + { + trust_framework: 'YOTI_GLOBAL', + schemes_compliance: [ + { + requirements_met: true, + scheme: { + type: 'IDENTITY', + objective: 'AL_M1', + label: 'identity-AL-M1', + }, + }, + { + requirements_met: false, + requirements_not_met_info: 'HORRIBLE_FAILURE', + scheme: { + type: 'IDENTITY', + objective: 'AL_L1', + label: 'identity-AL-L1', + }, + }, + ], + }, + ], + media: {}, +}; + +describe('AdvancedIdentityProfileResponse', () => { + let advancedIdentityProfileResponse; + + beforeEach(() => { + const response = { + subject_id: 'some-subject', + result: 'DONE', + failure_reason: { + reason_code: 'MANDATORY_DOCUMENT_NOT_PROVIDED', + requirements_not_met_details: [ + { + failure_type: 'ID_DOCUMENT_EXTRACTION', + document_type: 'PASSPORT', + document_country_iso_code: 'GBR', + audit_id: 'audit-123', + details: 'something not right', + }, + { + failure_type: 'ID_DOCUMENT_AUTHENTICITY', + document_type: 'PASSPORT', + document_country_iso_code: 'GBR', + audit_id: 'audit-456', + details: 'something still not right', + }, + ], + }, + identity_profile_report: reportResponse, + }; + + advancedIdentityProfileResponse = new AdvancedIdentityProfileResponse(response); + }); + + describe('#getSubjectId', () => { + it('Should return ID', () => { + expect(advancedIdentityProfileResponse.getSubjectId()).toBe('some-subject'); + }); + }); + + describe('#getResult', () => { + it('Should return result string', () => { + expect(advancedIdentityProfileResponse.getResult()).toBe('DONE'); + }); + }); + + describe('#getFailureReason', () => { + it('Should return failureReason object', () => { + const failureReason = advancedIdentityProfileResponse.getFailureReason(); + expect(failureReason) + .toBeInstanceOf(IdentityProfileFailureReasonResponse); + + expect(failureReason.getReasonCode()).toBe('MANDATORY_DOCUMENT_NOT_PROVIDED'); + expect(failureReason.getRequirementsNotMetDetails()).toHaveLength(2); + const [firstDetail, secondDetail] = failureReason.getRequirementsNotMetDetails(); + expect(firstDetail).toBeInstanceOf(IdentityProfileRequirementsNotMetDetailResponse); + expect(firstDetail).toEqual(expect.objectContaining({ + failureType: 'ID_DOCUMENT_EXTRACTION', + documentType: 'PASSPORT', + documentCountryIsoCode: 'GBR', + auditId: 'audit-123', + details: 'something not right', + })); + expect(firstDetail).toBeInstanceOf(IdentityProfileRequirementsNotMetDetailResponse); + expect(secondDetail).toEqual(expect.objectContaining({ + failureType: 'ID_DOCUMENT_AUTHENTICITY', + documentType: 'PASSPORT', + documentCountryIsoCode: 'GBR', + auditId: 'audit-456', + details: 'something still not right', + })); + }); + }); + + describe('#getIdentityProfileReport', () => { + it('Should return instance of IdentityProfileReport', () => { + const report = advancedIdentityProfileResponse.getIdentityProfileReport(); + expect(report).toBeInstanceOf(AdvancedIdentityProfileReportResponse); + expect(report.getCompliance()).toHaveLength(2); + }); + }); +}); diff --git a/tests/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.scheme.response.spec.js b/tests/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.scheme.response.spec.js new file mode 100644 index 000000000..9e80c8f9a --- /dev/null +++ b/tests/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.scheme.response.spec.js @@ -0,0 +1,31 @@ +const AdvancedIdentityProfileSchemeResponse = require('../../../../../../src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.scheme.response'); + +describe('AdvancedIdentityProfileSchemeResponse', () => { + let advancedIdentityProfileSchemeResponse; + + beforeEach(() => { + advancedIdentityProfileSchemeResponse = new AdvancedIdentityProfileSchemeResponse({ + type: 'DBS', + objective: 'STANDARD', + label: 'dbs-standard', + }); + }); + + describe('#getType', () => { + it('should return type', () => { + expect(advancedIdentityProfileSchemeResponse.getType()).toBe('DBS'); + }); + }); + + describe('#getObjective', () => { + it('should return objective', () => { + expect(advancedIdentityProfileSchemeResponse.getObjective()).toBe('STANDARD'); + }); + }); + + describe('#getLabel', () => { + it('should return label', () => { + expect(advancedIdentityProfileSchemeResponse.getLabel()).toBe('dbs-standard'); + }); + }); +}); diff --git a/tests/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.trust.framework.response.spec.js b/tests/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.trust.framework.response.spec.js new file mode 100644 index 000000000..d46afb42e --- /dev/null +++ b/tests/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.trust.framework.response.spec.js @@ -0,0 +1,67 @@ +const AdvancedIdentityProfileSchemeComplianceResponse = require('../../../../../../src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.report.scheme.compliance.response'); +const AdvancedIdentityProfileTrustFrameworkResponse = require('../../../../../../src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.trust.framework.response'); + +describe('AdvancedIdentityProfileTrustFrameworkResponse', () => { + let advancedIdentityProfileTrustFrameworkResponse; + + beforeEach(() => { + const response = { + trust_framework: 'UK_TFIDA', + schemes_compliance: [ + { + requirements_met: true, + scheme: { + type: 'DBS', + objective: 'STANDARD', + label: 'dbs-standard', + }, + }, + { + requirements_met: false, + requirements_not_met_info: 'HORRIBLE_FAILURE', + scheme: { + type: 'RTW', + label: 'some-rtw', + }, + }, + ], + }; + + // eslint-disable-next-line max-len + advancedIdentityProfileTrustFrameworkResponse = new AdvancedIdentityProfileTrustFrameworkResponse(response); + }); + + describe('#getTrustFramework', () => { + it('should return trust_framework', () => { + // eslint-disable-next-line max-len + const trustFramework = advancedIdentityProfileTrustFrameworkResponse.getTrustFramework(); + expect(trustFramework).toBe('UK_TFIDA'); + }); + }); + + describe('#getSchemesCompliance', () => { + it('should return schemes_compliance', () => { + // eslint-disable-next-line max-len + const schemesCompliance = advancedIdentityProfileTrustFrameworkResponse.getSchemesCompliance(); + expect(schemesCompliance).toHaveLength(2); + expect(schemesCompliance[0]).toBeInstanceOf(AdvancedIdentityProfileSchemeComplianceResponse); + expect(schemesCompliance[0]).toEqual(expect.objectContaining({ + requirementsMet: true, + scheme: { + label: 'dbs-standard', + objective: 'STANDARD', + type: 'DBS', + }, + })); + expect(schemesCompliance[1]).toBeInstanceOf(AdvancedIdentityProfileSchemeComplianceResponse); + expect(schemesCompliance[1]).toEqual(expect.objectContaining({ + requirementsMet: false, + requirementsNotMetInfo: 'HORRIBLE_FAILURE', + scheme: { + type: 'RTW', + label: 'some-rtw', + }, + })); + }); + }); +}); diff --git a/tests/idv_service/session/retrieve/identity.profile.report.response.spec.js b/tests/idv_service/session/retrieve/identity_profile/identity.profile.report.response.spec.js similarity index 80% rename from tests/idv_service/session/retrieve/identity.profile.report.response.spec.js rename to tests/idv_service/session/retrieve/identity_profile/identity.profile.report.response.spec.js index 79b6eba90..da508a01f 100644 --- a/tests/idv_service/session/retrieve/identity.profile.report.response.spec.js +++ b/tests/idv_service/session/retrieve/identity_profile/identity.profile.report.response.spec.js @@ -1,6 +1,6 @@ -const IdentityProfileReportResponse = require('../../../../src/idv_service/session/retrieve/identity.profile.report.response'); -const IdentityProfileReportSchemesComplianceResponse = require('../../../../src/idv_service/session/retrieve/identity.profile.report.schemes.compliance.response'); -const MediaResponse = require('../../../../src/idv_service/session/retrieve/media.response'); +const IdentityProfileReportResponse = require('../../../../../src/idv_service/session/retrieve/identity_profile/identity.profile.report.response'); +const IdentityProfileReportSchemesComplianceResponse = require('../../../../../src/idv_service/session/retrieve/identity_profile/identity.profile.report.schemes.compliance.response'); +const MediaResponse = require('../../../../../src/idv_service/session/retrieve/media.response'); describe('IdentityProfileResponseReport', () => { let identityProfileReportResponse; diff --git a/tests/idv_service/session/retrieve/identity.profile.report.schemes.compliance.response.spec.js b/tests/idv_service/session/retrieve/identity_profile/identity.profile.report.schemes.compliance.response.spec.js similarity index 70% rename from tests/idv_service/session/retrieve/identity.profile.report.schemes.compliance.response.spec.js rename to tests/idv_service/session/retrieve/identity_profile/identity.profile.report.schemes.compliance.response.spec.js index e14fefef9..e7a844965 100644 --- a/tests/idv_service/session/retrieve/identity.profile.report.schemes.compliance.response.spec.js +++ b/tests/idv_service/session/retrieve/identity_profile/identity.profile.report.schemes.compliance.response.spec.js @@ -1,4 +1,5 @@ -const IdentityProfileReportSchemesComplianceResponse = require('../../../../src/idv_service/session/retrieve/identity.profile.report.schemes.compliance.response'); +const IdentityProfileReportSchemesComplianceResponse = require('../../../../../src/idv_service/session/retrieve/identity_profile/identity.profile.report.schemes.compliance.response'); +const IdentityProfileSchemeResponse = require('../../../../../src/idv_service/session/retrieve/identity_profile/identity.profile.scheme.response'); describe('IdentityProfileReportSchemesComplianceResponse', () => { let identityProfileReportSchemesComplianceResponse; @@ -17,7 +18,9 @@ describe('IdentityProfileReportSchemesComplianceResponse', () => { describe('#getScheme', () => { it('Should return scheme object', () => { - expect(identityProfileReportSchemesComplianceResponse.getScheme()).toMatchObject({ + const scheme = identityProfileReportSchemesComplianceResponse.getScheme(); + expect(scheme).toBeInstanceOf(IdentityProfileSchemeResponse); + expect(scheme).toMatchObject({ type: 'DBS', objective: 'STANDARD', }); diff --git a/tests/idv_service/session/retrieve/identity.profile.requirement.not.met.detail.response.spec.js b/tests/idv_service/session/retrieve/identity_profile/identity.profile.requirement.not.met.detail.response.spec.js similarity index 93% rename from tests/idv_service/session/retrieve/identity.profile.requirement.not.met.detail.response.spec.js rename to tests/idv_service/session/retrieve/identity_profile/identity.profile.requirement.not.met.detail.response.spec.js index 87b7d7919..75d3ed492 100644 --- a/tests/idv_service/session/retrieve/identity.profile.requirement.not.met.detail.response.spec.js +++ b/tests/idv_service/session/retrieve/identity_profile/identity.profile.requirement.not.met.detail.response.spec.js @@ -1,4 +1,4 @@ -const IdentityProfileRequirementsNotMetDetailResponse = require('../../../../src/idv_service/session/retrieve/identity.profile.requirements.not.met.detail.response'); +const IdentityProfileRequirementsNotMetDetailResponse = require('../../../../../src/idv_service/session/retrieve/identity_profile/identity.profile.requirements.not.met.detail.response'); describe('IdentityProfileRequirementsNotMetDetailResponse', () => { let requirementsNotMetDetailResponse; diff --git a/tests/idv_service/session/retrieve/identity.profile.response.spec.js b/tests/idv_service/session/retrieve/identity_profile/identity.profile.response.spec.js similarity index 86% rename from tests/idv_service/session/retrieve/identity.profile.response.spec.js rename to tests/idv_service/session/retrieve/identity_profile/identity.profile.response.spec.js index 850dc6a7b..4171a2e0c 100644 --- a/tests/idv_service/session/retrieve/identity.profile.response.spec.js +++ b/tests/idv_service/session/retrieve/identity_profile/identity.profile.response.spec.js @@ -1,7 +1,7 @@ -const IdentityProfileResponse = require('../../../../src/idv_service/session/retrieve/identity.profile.response'); -const IdentityProfileReportResponse = require('../../../../src/idv_service/session/retrieve/identity.profile.report.response'); -const IdentityProfileFailureReasonResponse = require('../../../../src/idv_service/session/retrieve/identity.profile.failure.reason.response'); -const IdentityProfileRequirementsNotMetDetailResponse = require('../../../../src/idv_service/session/retrieve/identity.profile.requirements.not.met.detail.response'); +const IdentityProfileResponse = require('../../../../../src/idv_service/session/retrieve/identity_profile/identity.profile.response'); +const IdentityProfileReportResponse = require('../../../../../src/idv_service/session/retrieve/identity_profile/identity.profile.report.response'); +const IdentityProfileFailureReasonResponse = require('../../../../../src/idv_service/session/retrieve/identity_profile/identity.profile.failure.reason.response'); +const IdentityProfileRequirementsNotMetDetailResponse = require('../../../../../src/idv_service/session/retrieve/identity_profile/identity.profile.requirements.not.met.detail.response'); describe('IdentityProfileResponse', () => { let identityProfileResponse; diff --git a/tests/idv_service/session/retrieve/identity_profile/identity.profile.scheme.response.spec.js b/tests/idv_service/session/retrieve/identity_profile/identity.profile.scheme.response.spec.js new file mode 100644 index 000000000..af0c9a00f --- /dev/null +++ b/tests/idv_service/session/retrieve/identity_profile/identity.profile.scheme.response.spec.js @@ -0,0 +1,24 @@ +const IdentityProfileSchemeResponse = require('../../../../../src/idv_service/session/retrieve/identity_profile/identity.profile.scheme.response'); + +describe('IdentityProfileSchemeResponse', () => { + let identityProfileSchemeResponse; + + beforeEach(() => { + identityProfileSchemeResponse = new IdentityProfileSchemeResponse({ + type: 'DBS', + objective: 'STANDARD', + }); + }); + + describe('#getType', () => { + it('should return type', () => { + expect(identityProfileSchemeResponse.getType()).toBe('DBS'); + }); + }); + + describe('#getObjective', () => { + it('should return objective', () => { + expect(identityProfileSchemeResponse.getObjective()).toBe('STANDARD'); + }); + }); +}); diff --git a/types/index.d.ts b/types/index.d.ts index 0b9dfa54d..36bf13b03 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -50,10 +50,14 @@ import { RequestedSearchProfileSourcesBuilder } from "./src/idv_service"; import { RequestedTypeListSourcesBuilder } from "./src/idv_service"; import { CreateFaceCaptureResourcePayloadBuilder } from "./src/idv_service"; import { UploadFaceCaptureImagePayloadBuilder } from "./src/idv_service"; +import { AdvancedIdentityProfileSchemeConfigBuilder } from "./src/idv_service"; +import { AdvancedIdentityProfileBuilder } from "./src/idv_service"; +import { AdvancedIdentityProfileSchemeBuilder } from "./src/idv_service"; +import { AdvancedIdentityProfileRequirementsBuilder } from "./src/idv_service"; export declare namespace internals { export { IDVService }; export { YotiCommon }; export { YotiRequest }; export { IDVError }; } -export { YotiClient as Client, IDVClient, DigitalIdentityClient, IDVConstants, AmlAddress, AmlProfile, DigitalIdentityBuilders, DynamicScenarioBuilder, DynamicPolicyBuilder, WantedAttributeBuilder, ExtensionBuilder, LocationConstraintExtensionBuilder, ThirdPartyAttributeExtensionBuilder, TransactionalFlowExtensionBuilder, WantedAnchorBuilder, ConstraintsBuilder, SourceConstraintBuilder, RequestBuilder, Payload, YotiDate, constants, SessionSpecificationBuilder, NotificationConfigBuilder, SdkConfigBuilder, RequestedDocumentAuthenticityCheckBuilder, RequestedIdDocumentComparisonCheckBuilder, RequestedThirdPartyIdentityCheckBuilder, RequestedWatchlistScreeningCheckBuilder, RequestedWatchlistAdvancedCaCheckBuilder, RequestedFaceMatchCheckBuilder, RequestedFaceComparisonCheckBuilder, RequestedLivenessCheckBuilder, RequestedTextExtractionTaskBuilder, RequestedSupplementaryDocTextExtractionTaskBuilder, RequiredIdDocumentBuilder, RequiredSupplementaryDocumentBuilder, DocumentRestrictionsFilterBuilder, DocumentRestrictionBuilder, OrthogonalRestrictionsFilterBuilder, ProofOfAddressObjectiveBuilder, RequestedCustomAccountWatchlistAdvancedCaConfigBuilder, RequestedYotiAccountWatchlistAdvancedCaConfigBuilder, RequestedExactMatchingStrategyBuilder, RequestedFuzzyMatchingStrategyBuilder, RequestedSearchProfileSourcesBuilder, RequestedTypeListSourcesBuilder, CreateFaceCaptureResourcePayloadBuilder, UploadFaceCaptureImagePayloadBuilder }; +export { YotiClient as Client, IDVClient, DigitalIdentityClient, IDVConstants, AmlAddress, AmlProfile, DigitalIdentityBuilders, DynamicScenarioBuilder, DynamicPolicyBuilder, WantedAttributeBuilder, ExtensionBuilder, LocationConstraintExtensionBuilder, ThirdPartyAttributeExtensionBuilder, TransactionalFlowExtensionBuilder, WantedAnchorBuilder, ConstraintsBuilder, SourceConstraintBuilder, RequestBuilder, Payload, YotiDate, constants, SessionSpecificationBuilder, NotificationConfigBuilder, SdkConfigBuilder, RequestedDocumentAuthenticityCheckBuilder, RequestedIdDocumentComparisonCheckBuilder, RequestedThirdPartyIdentityCheckBuilder, RequestedWatchlistScreeningCheckBuilder, RequestedWatchlistAdvancedCaCheckBuilder, RequestedFaceMatchCheckBuilder, RequestedFaceComparisonCheckBuilder, RequestedLivenessCheckBuilder, RequestedTextExtractionTaskBuilder, RequestedSupplementaryDocTextExtractionTaskBuilder, RequiredIdDocumentBuilder, RequiredSupplementaryDocumentBuilder, DocumentRestrictionsFilterBuilder, DocumentRestrictionBuilder, OrthogonalRestrictionsFilterBuilder, ProofOfAddressObjectiveBuilder, RequestedCustomAccountWatchlistAdvancedCaConfigBuilder, RequestedYotiAccountWatchlistAdvancedCaConfigBuilder, RequestedExactMatchingStrategyBuilder, RequestedFuzzyMatchingStrategyBuilder, RequestedSearchProfileSourcesBuilder, RequestedTypeListSourcesBuilder, CreateFaceCaptureResourcePayloadBuilder, UploadFaceCaptureImagePayloadBuilder, AdvancedIdentityProfileSchemeConfigBuilder, AdvancedIdentityProfileBuilder, AdvancedIdentityProfileSchemeBuilder, AdvancedIdentityProfileRequirementsBuilder }; diff --git a/types/src/idv_service/index.d.ts b/types/src/idv_service/index.d.ts index 137906650..57a80e2aa 100644 --- a/types/src/idv_service/index.d.ts +++ b/types/src/idv_service/index.d.ts @@ -27,4 +27,8 @@ import RequestedSearchProfileSourcesBuilder = require("./session/create/check/re import RequestedTypeListSourcesBuilder = require("./session/create/check/requested.type.list.sources.builder"); import CreateFaceCaptureResourcePayloadBuilder = require("./session/create/face_capture/create.face.capture.resource.payload.builder"); import UploadFaceCaptureImagePayloadBuilder = require("./session/create/face_capture/upload.face.capture.image.payload.builder"); -export { IDVService, IDVConstants, SessionSpecificationBuilder, NotificationConfigBuilder, SdkConfigBuilder, RequestedDocumentAuthenticityCheckBuilder, RequestedIdDocumentComparisonCheckBuilder, RequestedThirdPartyIdentityCheckBuilder, RequestedWatchlistScreeningCheckBuilder, RequestedWatchlistAdvancedCaCheckBuilder, RequestedFaceMatchCheckBuilder, RequestedFaceComparisonCheckBuilder, RequestedLivenessCheckBuilder, RequestedTextExtractionTaskBuilder, RequestedSupplementaryDocTextExtractionTaskBuilder, RequiredIdDocumentBuilder, RequiredSupplementaryDocumentBuilder, DocumentRestrictionsFilterBuilder, DocumentRestrictionBuilder, OrthogonalRestrictionsFilterBuilder, ProofOfAddressObjectiveBuilder, RequestedYotiAccountWatchlistAdvancedCaConfigBuilder, RequestedCustomAccountWatchlistAdvancedCaConfigBuilder, RequestedExactMatchingStrategyBuilder, RequestedFuzzyMatchingStrategyBuilder, RequestedSearchProfileSourcesBuilder, RequestedTypeListSourcesBuilder, CreateFaceCaptureResourcePayloadBuilder, UploadFaceCaptureImagePayloadBuilder }; +import AdvancedIdentityProfileBuilder = require("./session/create/identity_profile/advanced/advanced.identity.profile.builder"); +import AdvancedIdentityProfileSchemeBuilder = require("./session/create/identity_profile/advanced/advanced.identity.profile.scheme.builder"); +import AdvancedIdentityProfileRequirementsBuilder = require("./session/create/identity_profile/advanced/advanced.identity.profile.requirements.builder"); +import AdvancedIdentityProfileSchemeConfigBuilder = require("./session/create/identity_profile/advanced/advanced.identity.profile.scheme.config"); +export { IDVService, IDVConstants, SessionSpecificationBuilder, NotificationConfigBuilder, SdkConfigBuilder, RequestedDocumentAuthenticityCheckBuilder, RequestedIdDocumentComparisonCheckBuilder, RequestedThirdPartyIdentityCheckBuilder, RequestedWatchlistScreeningCheckBuilder, RequestedWatchlistAdvancedCaCheckBuilder, RequestedFaceMatchCheckBuilder, RequestedFaceComparisonCheckBuilder, RequestedLivenessCheckBuilder, RequestedTextExtractionTaskBuilder, RequestedSupplementaryDocTextExtractionTaskBuilder, RequiredIdDocumentBuilder, RequiredSupplementaryDocumentBuilder, DocumentRestrictionsFilterBuilder, DocumentRestrictionBuilder, OrthogonalRestrictionsFilterBuilder, ProofOfAddressObjectiveBuilder, RequestedYotiAccountWatchlistAdvancedCaConfigBuilder, RequestedCustomAccountWatchlistAdvancedCaConfigBuilder, RequestedExactMatchingStrategyBuilder, RequestedFuzzyMatchingStrategyBuilder, RequestedSearchProfileSourcesBuilder, RequestedTypeListSourcesBuilder, CreateFaceCaptureResourcePayloadBuilder, UploadFaceCaptureImagePayloadBuilder, AdvancedIdentityProfileBuilder, AdvancedIdentityProfileSchemeBuilder, AdvancedIdentityProfileRequirementsBuilder, AdvancedIdentityProfileSchemeConfigBuilder }; diff --git a/types/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.builder.d.ts b/types/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.builder.d.ts new file mode 100644 index 000000000..c67bed7ad --- /dev/null +++ b/types/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.builder.d.ts @@ -0,0 +1,23 @@ +export = AdvancedIdentityProfileBuilder; +declare class AdvancedIdentityProfileBuilder { + /** @private {AdvancedIdentityProfileScheme[]} */ + private schemes; + /** + * @param {string} trustFramework + * @returns {AdvancedIdentityProfileBuilder} + */ + withTrustFramework(trustFramework: string): AdvancedIdentityProfileBuilder; + /** @private {string} */ + private trustFramework; + /** + * @param {AdvancedIdentityProfileScheme} scheme + * @returns {AdvancedIdentityProfileBuilder} + */ + withScheme(scheme: AdvancedIdentityProfileScheme): AdvancedIdentityProfileBuilder; + /** + * @returns {AdvancedIdentityProfile} + */ + build(): AdvancedIdentityProfile; +} +import AdvancedIdentityProfileScheme = require("./advanced.identity.profile.scheme"); +import AdvancedIdentityProfile = require("./advanced.identity.profile"); diff --git a/types/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.d.ts b/types/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.d.ts new file mode 100644 index 000000000..04db2fb39 --- /dev/null +++ b/types/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.d.ts @@ -0,0 +1,17 @@ +export = AdvancedIdentityProfile; +declare class AdvancedIdentityProfile { + /** + * @param {string} trustFramework + * @param {AdvancedIdentityProfileScheme[]} schemes + */ + constructor(trustFramework: string, schemes: AdvancedIdentityProfileScheme[]); + /** @private {string} */ + private trustFramework; + /** @private {AdvancedIdentityProfileScheme[]} */ + private schemes; + toJSON(): { + trust_framework: string; + schemes: AdvancedIdentityProfileScheme[]; + }; +} +import AdvancedIdentityProfileScheme = require("./advanced.identity.profile.scheme"); diff --git a/types/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.requirements.builder.d.ts b/types/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.requirements.builder.d.ts new file mode 100644 index 000000000..9080f78ec --- /dev/null +++ b/types/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.requirements.builder.d.ts @@ -0,0 +1,16 @@ +export = AdvancedIdentityProfileRequirementsBuilder; +declare class AdvancedIdentityProfileRequirementsBuilder { + /** @private {AdvancedIdentityProfile[]} */ + private profiles; + /** + * @param {AdvancedIdentityProfile} profile + * @returns {AdvancedIdentityProfileRequirementsBuilder} + */ + withProfile(profile: AdvancedIdentityProfile): AdvancedIdentityProfileRequirementsBuilder; + /** + * @returns {AdvancedIdentityProfileRequirements} + */ + build(): AdvancedIdentityProfileRequirements; +} +import AdvancedIdentityProfile = require("./advanced.identity.profile"); +import AdvancedIdentityProfileRequirements = require("./advanced.identity.profile.requirements"); diff --git a/types/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.requirements.d.ts b/types/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.requirements.d.ts new file mode 100644 index 000000000..728bd05d8 --- /dev/null +++ b/types/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.requirements.d.ts @@ -0,0 +1,9 @@ +export = AdvancedIdentityProfileRequirements; +declare class AdvancedIdentityProfileRequirements { + /** + * @param {AdvancedIdentityProfile[]} profiles + */ + constructor(profiles: AdvancedIdentityProfile[]); + profiles: AdvancedIdentityProfile[]; +} +import AdvancedIdentityProfile = require("./advanced.identity.profile"); diff --git a/types/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.scheme.builder.d.ts b/types/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.scheme.builder.d.ts new file mode 100644 index 000000000..96c9b6345 --- /dev/null +++ b/types/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.scheme.builder.d.ts @@ -0,0 +1,33 @@ +export = AdvancedIdentityProfileSchemeBuilder; +declare class AdvancedIdentityProfileSchemeBuilder { + /** + * @param {string} type + * @returns {AdvancedIdentityProfileSchemeBuilder} + */ + withType(type: string): AdvancedIdentityProfileSchemeBuilder; + type: string; + /** + * @param {string} objective + * @returns {AdvancedIdentityProfileSchemeBuilder} + */ + withObjective(objective: string): AdvancedIdentityProfileSchemeBuilder; + objective: string; + /** + * @param {string} label + * @returns {AdvancedIdentityProfileSchemeBuilder} + */ + withLabel(label: string): AdvancedIdentityProfileSchemeBuilder; + label: string; + /** + * @param {AdvancedIdentityProfileSchemeConfig} config + * @returns {AdvancedIdentityProfileSchemeBuilder} + */ + withConfig(config: AdvancedIdentityProfileSchemeConfig): AdvancedIdentityProfileSchemeBuilder; + config: AdvancedIdentityProfileSchemeConfig; + /** + * @returns {AdvancedIdentityProfileScheme} + */ + build(): AdvancedIdentityProfileScheme; +} +import AdvancedIdentityProfileSchemeConfig = require("./advanced.identity.profile.scheme.config"); +import AdvancedIdentityProfileScheme = require("./advanced.identity.profile.scheme"); diff --git a/types/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.scheme.config.d.ts b/types/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.scheme.config.d.ts new file mode 100644 index 000000000..bb6ec5d7a --- /dev/null +++ b/types/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.scheme.config.d.ts @@ -0,0 +1,12 @@ +export = AdvancedIdentityProfileSchemeConfig; +declare class AdvancedIdentityProfileSchemeConfig { + /** + * @param {DocumentFilter} filter + */ + constructor(filter: DocumentFilter); + filter: DocumentFilter; + toJSON(): { + filter: DocumentFilter; + }; +} +import DocumentFilter = require("../../filters/document.filter"); diff --git a/types/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.scheme.d.ts b/types/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.scheme.d.ts new file mode 100644 index 000000000..48695565e --- /dev/null +++ b/types/src/idv_service/session/create/identity_profile/advanced/advanced.identity.profile.scheme.d.ts @@ -0,0 +1,21 @@ +export = AdvancedIdentityProfileScheme; +declare class AdvancedIdentityProfileScheme { + /** + * @param {string} type + * @param {string} objective + * @param {string} label + * @param {AdvancedIdentityProfileSchemeConfig} [config] + */ + constructor(type: string, objective: string, label: string, config?: AdvancedIdentityProfileSchemeConfig); + type: string; + objective: string; + label: string; + config: AdvancedIdentityProfileSchemeConfig; + toJSON(): { + type: string; + objective: string; + label: string; + config: AdvancedIdentityProfileSchemeConfig; + }; +} +import AdvancedIdentityProfileSchemeConfig = require("./advanced.identity.profile.scheme.config"); diff --git a/types/src/idv_service/session/create/session.specification.builder.d.ts b/types/src/idv_service/session/create/session.specification.builder.d.ts index 49d131e9d..b5c4526e6 100644 --- a/types/src/idv_service/session/create/session.specification.builder.d.ts +++ b/types/src/idv_service/session/create/session.specification.builder.d.ts @@ -106,6 +106,8 @@ declare class SessionSpecificationBuilder { subject: any; withIdentityProfileRequirements(identityProfileRequirements: any): this; identityProfileRequirements: any; + withAdvancedIdentityProfileRequirements(advancedIdentityProfileRequirements: any): this; + advancedIdentityProfileRequirements: any; /** * Builds the {@link SessionSpecification} based on the values supplied to the builder * diff --git a/types/src/idv_service/session/create/session.specification.d.ts b/types/src/idv_service/session/create/session.specification.d.ts index ce84f5566..83577333f 100644 --- a/types/src/idv_service/session/create/session.specification.d.ts +++ b/types/src/idv_service/session/create/session.specification.d.ts @@ -26,11 +26,12 @@ declare class SessionSpecification { * Sets whether or not to block the collection of biometric consent * @param {Date} sessionDeadline * The deadline that the session needs to be completed by - * @param {object} identityProfileRequirements - * @param {object} subject + * @param {object} [identityProfileRequirements] + * @param {object} [subject] * Information about the subject of the session + * @param {AdvancedIdentityProfileRequirements} [advancedIdentityProfileRequirements] */ - constructor(clientSessionTokenTtl: number, resourcesTtl: number, userTrackingId: string, notifications: NotificationConfig, requestedChecks: RequestedCheck[], requestedTasks: RequestedTask[], sdkConfig: SdkConfig, requiredDocuments: RequiredDocument[], blockBiometricConsent: boolean, sessionDeadline: Date, identityProfileRequirements: object, subject: object); + constructor(clientSessionTokenTtl: number, resourcesTtl: number, userTrackingId: string, notifications: NotificationConfig, requestedChecks: RequestedCheck[], requestedTasks: RequestedTask[], sdkConfig: SdkConfig, requiredDocuments: RequiredDocument[], blockBiometricConsent: boolean, sessionDeadline: Date, identityProfileRequirements?: object, subject?: object, advancedIdentityProfileRequirements?: AdvancedIdentityProfileRequirements); /** @private */ private clientSessionTokenTtl; /** @private */ @@ -46,6 +47,8 @@ declare class SessionSpecification { /** @private */ private identityProfileRequirements; /** @private */ + private advancedIdentityProfileRequirements; + /** @private */ private subject; /** @private */ private requestedChecks; @@ -71,6 +74,7 @@ declare class SessionSpecification { block_biometric_consent: boolean; identity_profile_requirements: any; subject: any; + advanced_identity_profile_requirements: AdvancedIdentityProfileRequirements; }; } import NotificationConfig = require("./notification.config"); @@ -78,3 +82,4 @@ import RequestedCheck = require("./check/requested.check"); import RequestedTask = require("./task/requested.task"); import SdkConfig = require("./sdk.config"); import RequiredDocument = require("./filters/required.document"); +import AdvancedIdentityProfileRequirements = require("./identity_profile/advanced/advanced.identity.profile.requirements"); diff --git a/types/src/idv_service/session/retrieve/get.session.result.d.ts b/types/src/idv_service/session/retrieve/get.session.result.d.ts index 3e77a54c1..f9a2b2b5b 100644 --- a/types/src/idv_service/session/retrieve/get.session.result.d.ts +++ b/types/src/idv_service/session/retrieve/get.session.result.d.ts @@ -19,6 +19,8 @@ declare class GetSessionResult { private biometricConsent; /** @private */ private identityProfile; + /** @private */ + private advancedIdentityProfile; /** * @returns {string} */ @@ -105,6 +107,10 @@ declare class GetSessionResult { * @returns {IdentityProfileResponse} */ getIdentityProfile(): IdentityProfileResponse; + /** + * @returns {AdvancedIdentityProfileResponse} + */ + getAdvancedIdentityProfile(): AdvancedIdentityProfileResponse; } import CheckResponse = require("./check.response"); import AuthenticityCheckResponse = require("./authenticity.check.response"); @@ -120,4 +126,5 @@ import ThirdPartyIdentityFraud1CheckResponse = require("./third.party.identity.f import FaceComparisonCheckResponse = require("./face.comparison.check.response"); import ResourceContainer = require("./resource.container"); import { YotiDate } from "../../../data_type/date"; -import IdentityProfileResponse = require("./identity.profile.response"); +import IdentityProfileResponse = require("./identity_profile/identity.profile.response"); +import AdvancedIdentityProfileResponse = require("./identity_profile/advanced/advanced.identity.profile.response"); diff --git a/types/src/idv_service/session/retrieve/identity.profile.report.schemes.compliance.response.d.ts b/types/src/idv_service/session/retrieve/identity.profile.report.schemes.compliance.response.d.ts deleted file mode 100644 index efac4284b..000000000 --- a/types/src/idv_service/session/retrieve/identity.profile.report.schemes.compliance.response.d.ts +++ /dev/null @@ -1,16 +0,0 @@ -export = IdentityProfileReportSchemesComplianceResponse; -declare class IdentityProfileReportSchemesComplianceResponse { - constructor(schemesCompliance: any); - /** @private */ - private scheme; - /** @private @type {boolean} */ - private requirementsMet; - /** @private @type {string|undefined} */ - private requirementsNotMetInfo; - /** - * @returns {object} - */ - getScheme(): object; - isRequirementsMet(): boolean; - getRequirementsNotMetInfo(): string; -} diff --git a/types/src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.report.response.d.ts b/types/src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.report.response.d.ts new file mode 100644 index 000000000..091105c3a --- /dev/null +++ b/types/src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.report.response.d.ts @@ -0,0 +1,18 @@ +export = AdvancedIdentityProfileReportResponse; +declare class AdvancedIdentityProfileReportResponse { + constructor(report: any); + /** @private {AdvancedIdentityProfileTrustFrameworkResponse[]} */ + private compliance; + /** @private {MediaResponse} */ + private media; + /** + * @returns {AdvancedIdentityProfileTrustFrameworkResponse[]} + */ + getCompliance(): AdvancedIdentityProfileTrustFrameworkResponse[]; + /** + * @returns {MediaResponse} + */ + getMedia(): MediaResponse; +} +import AdvancedIdentityProfileTrustFrameworkResponse = require("./advanced.identity.profile.trust.framework.response"); +import MediaResponse = require("../../media.response"); diff --git a/types/src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.report.scheme.compliance.response.d.ts b/types/src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.report.scheme.compliance.response.d.ts new file mode 100644 index 000000000..a58341866 --- /dev/null +++ b/types/src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.report.scheme.compliance.response.d.ts @@ -0,0 +1,24 @@ +export = AdvancedIdentityProfileSchemeComplianceResponse; +declare class AdvancedIdentityProfileSchemeComplianceResponse { + constructor(schemesCompliance: any); + /** @private {AdvancedIdentityProfileSchemeResponse} */ + private scheme; + /** @private {boolean} */ + private requirementsMet; + /** @private {string|undefined} */ + private requirementsNotMetInfo; + /** + * @returns {AdvancedIdentityProfileSchemeResponse} + */ + getScheme(): AdvancedIdentityProfileSchemeResponse; + /** + * @returns {boolean} + */ + getRequirementsMet(): boolean; + /** + * + * @returns {string|undefined} + */ + getRequirementsNotMetInfo(): string | undefined; +} +import AdvancedIdentityProfileSchemeResponse = require("./advanced.identity.profile.scheme.response"); diff --git a/types/src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.response.d.ts b/types/src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.response.d.ts new file mode 100644 index 000000000..a36549737 --- /dev/null +++ b/types/src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.response.d.ts @@ -0,0 +1,30 @@ +export = AdvancedIdentityProfileResponse; +declare class AdvancedIdentityProfileResponse { + constructor(response: any); + /** @private {string} */ + private subjectId; + /** @private {string} */ + private result; + /** @private {IdentityProfileFailureReasonResponse} */ + private failureReason; + /** @private {AdvancedIdentityProfileReportResponse} */ + private identityProfileReport; + /** + * @returns {string} + */ + getSubjectId(): string; + /** + * @returns {string} + */ + getResult(): string; + /** + * @returns {IdentityProfileFailureReasonResponse|undefined} + */ + getFailureReason(): IdentityProfileFailureReasonResponse | undefined; + /** + * @returns {AdvancedIdentityProfileReportResponse|undefined} + */ + getIdentityProfileReport(): AdvancedIdentityProfileReportResponse | undefined; +} +import IdentityProfileFailureReasonResponse = require("../identity.profile.failure.reason.response"); +import AdvancedIdentityProfileReportResponse = require("./advanced.identity.profile.report.response"); diff --git a/types/src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.scheme.response.d.ts b/types/src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.scheme.response.d.ts new file mode 100644 index 000000000..710a88e2b --- /dev/null +++ b/types/src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.scheme.response.d.ts @@ -0,0 +1,22 @@ +export = AdvancedIdentityProfileSchemeResponse; +declare class AdvancedIdentityProfileSchemeResponse { + constructor(scheme: any); + /** @private {string} */ + private type; + /** @private {string} */ + private objective; + /** @private {string} */ + private label; + /** + * @returns {string} + */ + getType(): string; + /** + * @returns {string} + */ + getObjective(): string; + /** + * @returns {string} + */ + getLabel(): string; +} diff --git a/types/src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.trust.framework.response.d.ts b/types/src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.trust.framework.response.d.ts new file mode 100644 index 000000000..27f7e4834 --- /dev/null +++ b/types/src/idv_service/session/retrieve/identity_profile/advanced/advanced.identity.profile.trust.framework.response.d.ts @@ -0,0 +1,17 @@ +export = AdvancedIdentityProfileTrustFrameworkResponse; +declare class AdvancedIdentityProfileTrustFrameworkResponse { + constructor(trustFrameworkCompliance: any); + /** @private {string} */ + private trustFramework; + /** @private {AdvancedIdentityProfileSchemeComplianceResponse[]} */ + private schemesCompliance; + /** + * @returns {string} + */ + getTrustFramework(): string; + /** + * @returns {AdvancedIdentityProfileSchemeComplianceResponse[]} + */ + getSchemesCompliance(): AdvancedIdentityProfileSchemeComplianceResponse[]; +} +import AdvancedIdentityProfileSchemeComplianceResponse = require("./advanced.identity.profile.report.scheme.compliance.response"); diff --git a/types/src/idv_service/session/retrieve/identity.profile.failure.reason.response.d.ts b/types/src/idv_service/session/retrieve/identity_profile/identity.profile.failure.reason.response.d.ts similarity index 66% rename from types/src/idv_service/session/retrieve/identity.profile.failure.reason.response.d.ts rename to types/src/idv_service/session/retrieve/identity_profile/identity.profile.failure.reason.response.d.ts index 8d7e56144..7cf471e2b 100644 --- a/types/src/idv_service/session/retrieve/identity.profile.failure.reason.response.d.ts +++ b/types/src/idv_service/session/retrieve/identity_profile/identity.profile.failure.reason.response.d.ts @@ -1,11 +1,17 @@ export = IdentityProfileFailureReasonResponse; declare class IdentityProfileFailureReasonResponse { constructor(failureReason: any); - /** @private @type {string} */ + /** @private {string} */ private reasonCode; - /** @private @type {IdentityProfileRequirementsNotMetDetailResponse[]} */ + /** @private {IdentityProfileRequirementsNotMetDetailResponse[]} */ private requirementsNotMetDetails; + /** + * @returns {string} + */ getReasonCode(): string; + /** + * @returns {IdentityProfileRequirementsNotMetDetailResponse[]} + */ getRequirementsNotMetDetails(): IdentityProfileRequirementsNotMetDetailResponse[]; } import IdentityProfileRequirementsNotMetDetailResponse = require("./identity.profile.requirements.not.met.detail.response"); diff --git a/types/src/idv_service/session/retrieve/identity.profile.report.response.d.ts b/types/src/idv_service/session/retrieve/identity_profile/identity.profile.report.response.d.ts similarity index 76% rename from types/src/idv_service/session/retrieve/identity.profile.report.response.d.ts rename to types/src/idv_service/session/retrieve/identity_profile/identity.profile.report.response.d.ts index 062844c77..441ddb540 100644 --- a/types/src/idv_service/session/retrieve/identity.profile.report.response.d.ts +++ b/types/src/idv_service/session/retrieve/identity_profile/identity.profile.report.response.d.ts @@ -1,11 +1,11 @@ export = IdentityProfileReportResponse; declare class IdentityProfileReportResponse { constructor(report: any); - /** @private */ + /** @private {string} */ private trustFramework; - /** @private */ + /** @private {IdentityProfileReportSchemesComplianceResponse[]} */ private schemesCompliance; - /** @private */ + /** @private {MediaResponse} */ private media; /** * @returns {string} @@ -21,4 +21,4 @@ declare class IdentityProfileReportResponse { getMedia(): MediaResponse; } import IdentityProfileReportSchemesComplianceResponse = require("./identity.profile.report.schemes.compliance.response"); -import MediaResponse = require("./media.response"); +import MediaResponse = require("../media.response"); diff --git a/types/src/idv_service/session/retrieve/identity_profile/identity.profile.report.schemes.compliance.response.d.ts b/types/src/idv_service/session/retrieve/identity_profile/identity.profile.report.schemes.compliance.response.d.ts new file mode 100644 index 000000000..09c31a6be --- /dev/null +++ b/types/src/idv_service/session/retrieve/identity_profile/identity.profile.report.schemes.compliance.response.d.ts @@ -0,0 +1,23 @@ +export = IdentityProfileReportSchemesComplianceResponse; +declare class IdentityProfileReportSchemesComplianceResponse { + constructor(schemesCompliance: any); + /** @private {IdentityProfileSchemeResponse} */ + private scheme; + /** @private {boolean} */ + private requirementsMet; + /** @private {string|undefined} */ + private requirementsNotMetInfo; + /** + * @returns {IdentityProfileSchemeResponse} + */ + getScheme(): IdentityProfileSchemeResponse; + /** + * @returns {boolean} + */ + isRequirementsMet(): boolean; + /** + * @returns {string|undefined} + */ + getRequirementsNotMetInfo(): string | undefined; +} +import IdentityProfileSchemeResponse = require("./identity.profile.scheme.response"); diff --git a/types/src/idv_service/session/retrieve/identity.profile.requirements.not.met.detail.response.d.ts b/types/src/idv_service/session/retrieve/identity_profile/identity.profile.requirements.not.met.detail.response.d.ts similarity index 50% rename from types/src/idv_service/session/retrieve/identity.profile.requirements.not.met.detail.response.d.ts rename to types/src/idv_service/session/retrieve/identity_profile/identity.profile.requirements.not.met.detail.response.d.ts index e015f1370..596526102 100644 --- a/types/src/idv_service/session/retrieve/identity.profile.requirements.not.met.detail.response.d.ts +++ b/types/src/idv_service/session/retrieve/identity_profile/identity.profile.requirements.not.met.detail.response.d.ts @@ -1,19 +1,34 @@ export = IdentityProfileRequirementsNotMetDetailResponse; declare class IdentityProfileRequirementsNotMetDetailResponse { constructor(requirementsNotMetDetail: any); - /** @private @type {string} */ + /** @private {string} */ private failureType; - /** @private @type {string} */ + /** @private {string|undefined} */ private documentType; - /** @private @type {string} */ + /** @private {string|undefined} */ private documentCountryIsoCode; - /** @private @type {string|undefined} */ + /** @private {string|undefined} */ private auditId; - /** @private @type {string} */ + /** @private {string} */ private details; + /** + * @returns {string} + */ getFailureType(): string; + /** + * @returns {string} + */ getDocumentType(): string; + /** + * @returns {string} + */ getDocumentCountryIsoCode(): string; - getAuditId(): string; + /** + * @returns {string|undefined} + */ + getAuditId(): string | undefined; + /** + * @returns {string} + */ getDetails(): string; } diff --git a/types/src/idv_service/session/retrieve/identity.profile.response.d.ts b/types/src/idv_service/session/retrieve/identity_profile/identity.profile.response.d.ts similarity index 54% rename from types/src/idv_service/session/retrieve/identity.profile.response.d.ts rename to types/src/idv_service/session/retrieve/identity_profile/identity.profile.response.d.ts index afa66d2af..c806a2ddc 100644 --- a/types/src/idv_service/session/retrieve/identity.profile.response.d.ts +++ b/types/src/idv_service/session/retrieve/identity_profile/identity.profile.response.d.ts @@ -1,13 +1,13 @@ export = IdentityProfileResponse; declare class IdentityProfileResponse { constructor(identityProfile: any); - /** @private */ + /** @private {string|undefined} */ private subjectId; - /** @private */ + /** @private {string} */ private result; - /** @private */ + /** @private {IdentityProfileFailureReasonResponse|undefined} */ private failureReason; - /** @private */ + /** @private {IdentityProfileReportResponse|undefined} */ private identityProfileReport; /** * @returns {string} @@ -18,13 +18,13 @@ declare class IdentityProfileResponse { */ getResult(): string; /** - * @returns {IdentityProfileFailureReasonResponse} + * @returns {IdentityProfileFailureReasonResponse|undefined} */ - getFailureReason(): IdentityProfileFailureReasonResponse; + getFailureReason(): IdentityProfileFailureReasonResponse | undefined; /** - * @returns {IdentityProfileReportResponse} + * @returns {IdentityProfileReportResponse|undefined} */ - getIdentityProfileReport(): IdentityProfileReportResponse; + getIdentityProfileReport(): IdentityProfileReportResponse | undefined; } import IdentityProfileFailureReasonResponse = require("./identity.profile.failure.reason.response"); import IdentityProfileReportResponse = require("./identity.profile.report.response"); diff --git a/types/src/idv_service/session/retrieve/identity_profile/identity.profile.scheme.response.d.ts b/types/src/idv_service/session/retrieve/identity_profile/identity.profile.scheme.response.d.ts new file mode 100644 index 000000000..7b9ee35e1 --- /dev/null +++ b/types/src/idv_service/session/retrieve/identity_profile/identity.profile.scheme.response.d.ts @@ -0,0 +1,16 @@ +export = IdentityProfileSchemeResponse; +declare class IdentityProfileSchemeResponse { + constructor(scheme: any); + /** @private {string} */ + private type; + /** @private {string} */ + private objective; + /** + * @returns {string} + */ + getType(): string; + /** + * @returns {string|undefined} + */ + getObjective(): string | undefined; +} From 978079ac411b6fe738cdfc64f831389d2af4ffb3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Jun 2024 11:39:11 +0100 Subject: [PATCH 6/7] Bump eslint-plugin-jest from 28.5.0 to 28.6.0 (#477) Bumps [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest) from 28.5.0 to 28.6.0. - [Release notes](https://github.com/jest-community/eslint-plugin-jest/releases) - [Changelog](https://github.com/jest-community/eslint-plugin-jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/jest-community/eslint-plugin-jest/compare/v28.5.0...v28.6.0) --- updated-dependencies: - dependency-name: eslint-plugin-jest dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7858c1208..25b09b2a6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,7 +21,7 @@ "eslint": "8.43.0", "eslint-config-airbnb-base": "15.0.0", "eslint-plugin-import": "2.29.1", - "eslint-plugin-jest": "28.5.0", + "eslint-plugin-jest": "28.6.0", "eslint-plugin-node": "11.1.0", "husky": "9.0.11", "jest": "29.5.0", @@ -2765,9 +2765,9 @@ } }, "node_modules/eslint-plugin-jest": { - "version": "28.5.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-28.5.0.tgz", - "integrity": "sha512-6np6DGdmNq/eBbA7HOUNV8fkfL86PYwBfwyb8n23FXgJNTR8+ot3smRHjza9LGsBBZRypK3qyF79vMjohIL8eQ==", + "version": "28.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-28.6.0.tgz", + "integrity": "sha512-YG28E1/MIKwnz+e2H7VwYPzHUYU4aMa19w0yGcwXnnmJH6EfgHahTJ2un3IyraUxNfnz/KUhJAFXNNwWPo12tg==", "dev": true, "dependencies": { "@typescript-eslint/utils": "^6.0.0 || ^7.0.0" @@ -8555,9 +8555,9 @@ } }, "eslint-plugin-jest": { - "version": "28.5.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-28.5.0.tgz", - "integrity": "sha512-6np6DGdmNq/eBbA7HOUNV8fkfL86PYwBfwyb8n23FXgJNTR8+ot3smRHjza9LGsBBZRypK3qyF79vMjohIL8eQ==", + "version": "28.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-28.6.0.tgz", + "integrity": "sha512-YG28E1/MIKwnz+e2H7VwYPzHUYU4aMa19w0yGcwXnnmJH6EfgHahTJ2un3IyraUxNfnz/KUhJAFXNNwWPo12tg==", "dev": true, "requires": { "@typescript-eslint/utils": "^6.0.0 || ^7.0.0" diff --git a/package.json b/package.json index 4bce0f386..177cbaab7 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "eslint": "8.43.0", "eslint-config-airbnb-base": "15.0.0", "eslint-plugin-import": "2.29.1", - "eslint-plugin-jest": "28.5.0", + "eslint-plugin-jest": "28.6.0", "eslint-plugin-node": "11.1.0", "husky": "9.0.11", "jest": "29.5.0", From 42e3cab31bfdaeeab6a990782e10dc2250a2bf49 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Jun 2024 10:40:18 +0000 Subject: [PATCH 7/7] Bump typescript from 5.3.3 to 5.5.2 Bumps [typescript](https://github.com/Microsoft/TypeScript) from 5.3.3 to 5.5.2. - [Release notes](https://github.com/Microsoft/TypeScript/releases) - [Changelog](https://github.com/microsoft/TypeScript/blob/main/azure-pipelines.release.yml) - [Commits](https://github.com/Microsoft/TypeScript/compare/v5.3.3...v5.5.2) --- updated-dependencies: - dependency-name: typescript dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 25b09b2a6..58ccebde1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26,7 +26,7 @@ "husky": "9.0.11", "jest": "29.5.0", "nock": "13.2.9", - "typescript": "5.3.3" + "typescript": "5.5.2" }, "engines": { "node": ">=14" @@ -6137,9 +6137,9 @@ } }, "node_modules/typescript": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", - "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.2.tgz", + "integrity": "sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -10926,9 +10926,9 @@ } }, "typescript": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", - "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.2.tgz", + "integrity": "sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==", "dev": true }, "unbox-primitive": { diff --git a/package.json b/package.json index 177cbaab7..1d2414524 100644 --- a/package.json +++ b/package.json @@ -50,6 +50,6 @@ "husky": "9.0.11", "jest": "29.5.0", "nock": "13.2.9", - "typescript": "5.3.3" + "typescript": "5.5.2" } }