Skip to content

Commit 6336e79

Browse files
author
Rodion Liuborets
committed
SDK-2116: Add Third Party Identity Fraud Check Result To IDV
1 parent 3876e7c commit 6336e79

File tree

4 files changed

+56
-1
lines changed

4 files changed

+56
-1
lines changed

src/DocScan/Constants.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ class Constants
1010
public const SUPPLEMENTARY_DOCUMENT_TEXT_DATA_CHECK = 'SUPPLEMENTARY_DOCUMENT_TEXT_DATA_CHECK';
1111
public const ID_DOCUMENT_FACE_MATCH = 'ID_DOCUMENT_FACE_MATCH';
1212
public const THIRD_PARTY_IDENTITY = 'THIRD_PARTY_IDENTITY';
13+
public const THIRD_PARTY_IDENTITY_FRAUD_1 = "THIRD_PARTY_IDENTITY_FRAUD_1";
1314
public const LIVENESS = 'LIVENESS';
1415
public const WATCHLIST_SCREENING = 'WATCHLIST_SCREENING';
1516
public const WATCHLIST_ADVANCED_CA = 'WATCHLIST_ADVANCED_CA';

src/DocScan/Session/Retrieve/GetSessionResult.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,14 @@ public function getLivenessChecks(): array
233233
return $this->filterCheckByType(LivenessCheckResponse::class);
234234
}
235235

236+
/**
237+
* @return ThirdPartyIdentityFraudOneCheckResponse[]
238+
*/
239+
public function getThirdPartyIdentityFraudOneChecks(): array
240+
{
241+
return $this->filterCheckByType(ThirdPartyIdentityFraudOneCheckResponse::class);
242+
}
243+
236244
/**
237245
* @param array<string, mixed> $check
238246
* @return CheckResponse
@@ -259,6 +267,8 @@ private function createCheckFromArray(array $check): CheckResponse
259267
return new WatchlistScreeningCheckResponse($check);
260268
case Constants::WATCHLIST_ADVANCED_CA:
261269
return new WatchlistAdvancedCaCheckResponse($check);
270+
case Constants::THIRD_PARTY_IDENTITY_FRAUD_1:
271+
return new ThirdPartyIdentityFraudOneCheckResponse($check);
262272
default:
263273
return new CheckResponse($check);
264274
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?php
2+
3+
namespace Yoti\DocScan\Session\Retrieve;
4+
5+
use Yoti\DocScan\Session\Retrieve\Contracts\ProfileCheckResponse;
6+
7+
/**
8+
* Represents a check with a third party fraud prevention organisation
9+
*
10+
* Yoti recommends that you inform your users that their data might be checked against a third party data source
11+
* as part of the fraud check.
12+
*/
13+
class ThirdPartyIdentityFraudOneCheckResponse extends ProfileCheckResponse
14+
{
15+
}

tests/DocScan/Session/Retrieve/GetSessionResultTest.php

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
use Yoti\DocScan\Session\Retrieve\CheckResponse;
99
use Yoti\DocScan\Session\Retrieve\GetSessionResult;
1010
use Yoti\DocScan\Session\Retrieve\IdentityProfileResponse;
11+
use Yoti\DocScan\Session\Retrieve\ThirdPartyIdentityFraudOneCheckResponse;
1112
use Yoti\Test\TestCase;
1213
use Yoti\Util\DateTime;
1314

@@ -21,6 +22,7 @@ class GetSessionResultTest extends TestCase
2122
private const ID_DOCUMENT_TEXT_DATA_CHECK = 'ID_DOCUMENT_TEXT_DATA_CHECK';
2223
private const ID_DOCUMENT_COMPARISON = 'ID_DOCUMENT_COMPARISON';
2324
private const THIRD_PARTY_IDENTITY = 'THIRD_PARTY_IDENTITY';
25+
private const THIRD_PARTY_IDENTITY_FRAUD_1 = "THIRD_PARTY_IDENTITY_FRAUD_1";
2426
private const WATCHLIST_SCREENING = 'WATCHLIST_SCREENING';
2527
private const WATCHLIST_ADVANCED_CA = 'WATCHLIST_ADVANCED_CA';
2628
private const SUPPLEMENTARY_DOCUMENT_TEXT_DATA_CHECK = 'SUPPLEMENTARY_DOCUMENT_TEXT_DATA_CHECK';
@@ -122,6 +124,7 @@ public function shouldParseUnknownCheck()
122124
* @covers ::getSupplementaryDocumentTextDataChecks
123125
* @covers ::getLivenessChecks
124126
* @covers ::getWatchlistAdvancedCaChecks
127+
* @covers ::getThirdPartyIdentityFraudOneChecks
125128
* @covers ::createCheckFromArray
126129
* @covers ::filterCheckByType
127130
*/
@@ -138,12 +141,13 @@ public function shouldFilterChecks(): void
138141
['type' => self::SUPPLEMENTARY_DOCUMENT_TEXT_DATA_CHECK],
139142
['type' => self::LIVENESS],
140143
['type' => self::WATCHLIST_ADVANCED_CA],
144+
['type' => self::THIRD_PARTY_IDENTITY_FRAUD_1],
141145
],
142146
];
143147

144148
$result = new GetSessionResult($input);
145149

146-
$this->assertCount(9, $result->getChecks());
150+
$this->assertCount(10, $result->getChecks());
147151
$this->assertCount(1, $result->getAuthenticityChecks());
148152
$this->assertCount(1, $result->getFaceMatchChecks());
149153
$this->assertCount(1, $result->getTextDataChecks());
@@ -154,6 +158,7 @@ public function shouldFilterChecks(): void
154158
$this->assertCount(1, $result->getSupplementaryDocumentTextDataChecks());
155159
$this->assertCount(1, $result->getLivenessChecks());
156160
$this->assertCount(1, $result->getWatchlistAdvancedCaChecks());
161+
$this->assertCount(1, $result->getThirdPartyIdentityFraudOneChecks());
157162

158163
$this->assertEquals(
159164
self::ID_DOCUMENT_AUTHENTICITY,
@@ -195,5 +200,29 @@ public function shouldFilterChecks(): void
195200
self::LIVENESS,
196201
$result->getLivenessChecks()[0]->getType()
197202
);
203+
204+
$this->assertInstanceOf(
205+
ThirdPartyIdentityFraudOneCheckResponse::class,
206+
$result->getThirdPartyIdentityFraudOneChecks()[0]
207+
);
208+
}
209+
210+
/**
211+
* @test
212+
* @covers ::getThirdPartyIdentityFraudOneChecks
213+
* @covers ::createCheckFromArray
214+
* @covers ::filterCheckByType
215+
*/
216+
public function thirdPartyIdentityFraudOneChecksShouldReturnEmptyCollectionWhenNoneOfTypeArePresent()
217+
{
218+
$input = [
219+
'checks' => [
220+
['type' => self::ID_DOCUMENT_AUTHENTICITY],
221+
],
222+
];
223+
224+
$result = new GetSessionResult($input);
225+
226+
$this->assertCount(0, $result->getThirdPartyIdentityFraudOneChecks());
198227
}
199228
}

0 commit comments

Comments
 (0)