Skip to content

Commit

Permalink
SDK-1829-third-party-identity-check
Browse files Browse the repository at this point in the history
  • Loading branch information
Rodion Liuborets committed Jun 9, 2021
1 parent 99d8310 commit e7dced3
Show file tree
Hide file tree
Showing 7 changed files with 176 additions and 3 deletions.
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "yoti/yoti-php-sdk-sandbox",
"description": "Yoti PHP SDK Sandbox",
"version": "1.5.0",
"version": "1.6.0",
"keywords": [
"yoti",
"sdk"
Expand Down
10 changes: 10 additions & 0 deletions src/DocScan/Request/Check/SandboxThirdPartyIdentityCheck.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?php

declare(strict_types=1);

namespace Yoti\Sandbox\DocScan\Request\Check;

class SandboxThirdPartyIdentityCheck extends SandboxDocumentCheck
{

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<?php

declare(strict_types=1);

namespace Yoti\Sandbox\DocScan\Request\Check;

class SandboxThirdPartyIdentityCheckBuilder extends SandboxDocumentCheckBuilder
{

/**
* @return SandboxThirdPartyIdentityCheck
*/
public function build(): SandboxCheck
{
$result = new SandboxCheckResult($this->buildReport());
return new SandboxThirdPartyIdentityCheck($result, $this->documentFilter);
}
}
12 changes: 11 additions & 1 deletion src/DocScan/Request/SandboxCheckReports.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
use Yoti\Sandbox\DocScan\Request\Check\SandboxIdDocumentComparisonCheck;
use Yoti\Sandbox\DocScan\Request\Check\SandboxLivenessCheck;
use Yoti\Sandbox\DocScan\Request\Check\SandboxSupplementaryDocumentTextDataCheck;
use Yoti\Sandbox\DocScan\Request\Check\SandboxThirdPartyIdentityCheck;
use Yoti\Util\Json;

class SandboxCheckReports implements \JsonSerializable
Expand All @@ -34,6 +35,11 @@ class SandboxCheckReports implements \JsonSerializable
*/
private $documentFaceMatchChecks;

/**
* @var SandboxThirdPartyIdentityCheck|null
*/
private $thirdPartyIdentityCheck;

/**
* @var SandboxSupplementaryDocumentTextDataCheck[]|null
*/
Expand All @@ -59,6 +65,7 @@ class SandboxCheckReports implements \JsonSerializable
* @param int|null $asyncReportDelay
* @param SandboxIdDocumentComparisonCheck[]|null $idDocumentComparisonChecks
* @param SandboxSupplementaryDocumentTextDataCheck[]|null $supplementaryDocumentTextDataChecks
* @param SandboxThirdPartyIdentityCheck|null $thirdPartyIdentityCheck
*/
public function __construct(
array $documentTextDataChecks,
Expand All @@ -67,7 +74,8 @@ public function __construct(
array $livenessChecks,
?int $asyncReportDelay,
?array $idDocumentComparisonChecks = null,
?array $supplementaryDocumentTextDataChecks = null
?array $supplementaryDocumentTextDataChecks = null,
SandboxThirdPartyIdentityCheck $thirdPartyIdentityCheck = null
) {
$this->documentTextDataChecks = $documentTextDataChecks;
$this->documentAuthenticityChecks = $documentAuthenticityChecks;
Expand All @@ -76,6 +84,7 @@ public function __construct(
$this->asyncReportDelay = $asyncReportDelay;
$this->idDocumentComparisonChecks = $idDocumentComparisonChecks;
$this->supplementaryDocumentTextDataChecks = $supplementaryDocumentTextDataChecks;
$this->thirdPartyIdentityCheck = $thirdPartyIdentityCheck;
}

/**
Expand All @@ -90,6 +99,7 @@ public function jsonSerialize(): \stdClass
'ID_DOCUMENT_COMPARISON' => $this->idDocumentComparisonChecks,
'SUPPLEMENTARY_DOCUMENT_TEXT_DATA_CHECK' => $this->supplementaryDocumentTextDataChecks,
'LIVENESS' => $this->livenessChecks,
'THIRD_PARTY_IDENTITY' => $this->thirdPartyIdentityCheck,
'async_report_delay' => $this->asyncReportDelay,
]);
}
Expand Down
19 changes: 18 additions & 1 deletion src/DocScan/Request/SandboxCheckReportsBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
use Yoti\Sandbox\DocScan\Request\Check\SandboxIdDocumentComparisonCheck;
use Yoti\Sandbox\DocScan\Request\Check\SandboxLivenessCheck;
use Yoti\Sandbox\DocScan\Request\Check\SandboxSupplementaryDocumentTextDataCheck;
use Yoti\Sandbox\DocScan\Request\Check\SandboxThirdPartyIdentityCheck;

class SandboxCheckReportsBuilder
{
Expand Down Expand Up @@ -43,6 +44,11 @@ class SandboxCheckReportsBuilder
*/
private $supplementaryDocumentTextDataChecks = [];

/**
* @var SandboxThirdPartyIdentityCheck
*/
private $thirdPartyIdentityCheck;

/**
* @var int
*/
Expand Down Expand Up @@ -98,6 +104,16 @@ public function withIdDocumentComparisonCheck(SandboxIdDocumentComparisonCheck $
return $this;
}

/**
* @param SandboxThirdPartyIdentityCheck $thirdPartyIdentityCheck
* @return $this
*/
public function withThirdPartyIdentityCheck(SandboxThirdPartyIdentityCheck $thirdPartyIdentityCheck): self
{
$this->thirdPartyIdentityCheck = $thirdPartyIdentityCheck;
return $this;
}

/**
* @param int $asyncReportDelay
* @return $this
Expand Down Expand Up @@ -131,7 +147,8 @@ public function build(): SandboxCheckReports
$this->livenessChecks,
$this->asyncReportDelay,
$this->idDocumentComparisonChecks,
$this->supplementaryDocumentTextDataChecks
$this->supplementaryDocumentTextDataChecks,
$this->thirdPartyIdentityCheck
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
<?php

declare(strict_types=1);

namespace Yoti\Sandbox\Test\DocScan\Request\Check;

use PHPUnit\Framework\MockObject\MockObject;
use Yoti\Sandbox\DocScan\Request\Check\Report\SandboxBreakdown;
use Yoti\Sandbox\DocScan\Request\Check\Report\SandboxRecommendation;
use Yoti\Sandbox\DocScan\Request\Check\SandboxThirdPartyIdentityCheck;
use Yoti\Sandbox\DocScan\Request\Check\SandboxThirdPartyIdentityCheckBuilder;
use Yoti\Sandbox\Test\TestCase;

class SandboxThirdPartyIdentityCheckBuilderTest extends TestCase
{
/**
* @var MockObject|SandboxRecommendation
*/
private $recommendationMock;

/**
* @var MockObject|SandboxBreakdown
*/
private $breakdownMock;

/**
* @before
*/
public function setUp(): void
{
$this->recommendationMock = $this->createMock(SandboxRecommendation::class);
$this->breakdownMock = $this->createMock(SandboxBreakdown::class);
}

/**
* @test
*/
public function shouldThrowExceptionWhenMissingRecommendation(): void
{
$this->expectException(\TypeError::class);
$this->expectExceptionMessage(SandboxRecommendation::class);

(new SandboxThirdPartyIdentityCheckBuilder())->build();
}

/**
* @test
*/
public function shouldBuildCorrectly(): void
{
$result = (new SandboxThirdPartyIdentityCheckBuilder())
->withRecommendation($this->recommendationMock)
->withBreakdown($this->breakdownMock)
->build();

$this->assertInstanceOf(SandboxThirdPartyIdentityCheck::class, $result);

$this->assertJsonStringEqualsJsonString(
json_encode([
'result' => [
'report' => [
'recommendation' => $this->recommendationMock,
'breakdown' => [
$this->breakdownMock
],
],
],
]),
json_encode($result)
);
}

/**
* @test
*/
public function shouldAllowOverwritingOfBreakdowns(): void
{
$breakdowns = [
$this->breakdownMock,
$this->breakdownMock,
$this->breakdownMock
];

$result = (new SandboxThirdPartyIdentityCheckBuilder())
->withRecommendation($this->recommendationMock)
->withBreakdowns($breakdowns)
->build();

$this->assertJsonStringEqualsJsonString(
json_encode([
'result' => [
'report' => [
'recommendation' => $this->recommendationMock,
'breakdown' => [
$this->breakdownMock,
$this->breakdownMock,
$this->breakdownMock,
],
],
],
]),
json_encode($result)
);
}
}
13 changes: 13 additions & 0 deletions tests/DocScan/Request/SandboxCheckReportsTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
use Yoti\Sandbox\DocScan\Request\Check\SandboxIdDocumentComparisonCheck;
use Yoti\Sandbox\DocScan\Request\Check\SandboxLivenessCheck;
use Yoti\Sandbox\DocScan\Request\Check\SandboxSupplementaryDocumentTextDataCheck;
use Yoti\Sandbox\DocScan\Request\Check\SandboxThirdPartyIdentityCheck;
use Yoti\Sandbox\DocScan\Request\SandboxCheckReports;
use Yoti\Sandbox\DocScan\Request\SandboxCheckReportsBuilder;
use Yoti\Sandbox\Test\TestCase;
Expand Down Expand Up @@ -46,6 +47,11 @@ class SandboxCheckReportsTest extends TestCase
*/
private $idDocumentComparisonCheckMock;

/**
* @var SandboxThirdPartyIdentityCheck
*/
private $thirdPartyIdentityCheckMock;

/**
* @var SandboxSupplementaryDocumentTextDataCheck
*/
Expand Down Expand Up @@ -78,6 +84,11 @@ public function setup(): void
->method('jsonSerialize')
->willReturn((object) [ 'type' => 'documentComparisonCheck' ]);

$this->thirdPartyIdentityCheckMock = $this->createMock(SandboxThirdPartyIdentityCheck::class);
$this->thirdPartyIdentityCheckMock
->method('jsonSerialize')
->willReturn((object) [ 'type' => 'thirdPartyIdentityCheck' ]);

$this->supplementaryDocumentTextDataCheckMock = $this->createMock(
SandboxSupplementaryDocumentTextDataCheck::class
);
Expand Down Expand Up @@ -109,6 +120,7 @@ public function shouldBuildCorrectly()
->withDocumentFaceMatchCheck($this->documentFaceMatchCheckMock)
->withAsyncReportDelay(self::SOME_ASYNC_REPORT_DELAY)
->withSupplementaryDocumentTextDataCheck($this->supplementaryDocumentTextDataCheckMock)
->withThirdPartyIdentityCheck($this->thirdPartyIdentityCheckMock)
->build();

$this->assertJsonStringEqualsJsonString(
Expand All @@ -119,6 +131,7 @@ public function shouldBuildCorrectly()
'ID_DOCUMENT_FACE_MATCH' => [$this->documentFaceMatchCheckMock],
'LIVENESS' => [$this->livenessCheckMock],
'SUPPLEMENTARY_DOCUMENT_TEXT_DATA_CHECK' => [$this->supplementaryDocumentTextDataCheckMock],
'THIRD_PARTY_IDENTITY' => $this->thirdPartyIdentityCheckMock,
'async_report_delay' => self::SOME_ASYNC_REPORT_DELAY
]),
json_encode($result)
Expand Down

0 comments on commit e7dced3

Please sign in to comment.