From 5c8627c0bea390eb41c69ee96eca7fccb6b9b760 Mon Sep 17 00:00:00 2001 From: mehmet-yoti Date: Tue, 20 Aug 2024 11:13:00 +0300 Subject: [PATCH] SDK-2438 added advanced ca and added related tests --- .../Advanced/SandboxExactMatchingStrategy.php | 27 ++++ .../SandboxExactMatchingStrategyBuilder.php | 18 +++ .../Advanced/SandboxSearchProfileSources.php | 52 ++++++++ .../SandboxSearchProfileSourcesBuilder.php | 32 +++++ .../Advanced/SandboxCaMatchingStrategy.php | 31 +++++ .../Contracts/Advanced/SandboxCaSources.php | 31 +++++ .../SandboxWatchlistAdvancedCaConfig.php | 102 +++++++++++++++ ...andboxWatchlistAdvancedCaConfigBuilder.php | 81 ++++++++++++ .../Check/SandboxWatchlistAdvancedCaCheck.php | 37 ++++++ ...SandboxWatchlistAdvancedCaCheckBuilder.php | 34 +++++ ...oxYotiAccountWatchlistAdvancedCaConfig.php | 19 +++ ...ccountWatchlistAdvancedCaConfigBuilder.php | 23 ++++ .../Check/SandboxLivenessCheckBuilderTest.php | 117 ++++++++++++++++++ .../SandboxWatchlistAdvancedCaCheckTest.php | 34 +++++ ...tiAccountWatchlistAdvancedCaConfigTest.php | 49 ++++++++ 15 files changed, 687 insertions(+) create mode 100644 src/DocScan/Request/Check/Advanced/SandboxExactMatchingStrategy.php create mode 100644 src/DocScan/Request/Check/Advanced/SandboxExactMatchingStrategyBuilder.php create mode 100644 src/DocScan/Request/Check/Advanced/SandboxSearchProfileSources.php create mode 100644 src/DocScan/Request/Check/Advanced/SandboxSearchProfileSourcesBuilder.php create mode 100644 src/DocScan/Request/Check/Contracts/Advanced/SandboxCaMatchingStrategy.php create mode 100644 src/DocScan/Request/Check/Contracts/Advanced/SandboxCaSources.php create mode 100644 src/DocScan/Request/Check/Contracts/SandboxWatchlistAdvancedCaConfig.php create mode 100644 src/DocScan/Request/Check/Contracts/SandboxWatchlistAdvancedCaConfigBuilder.php create mode 100644 src/DocScan/Request/Check/SandboxWatchlistAdvancedCaCheck.php create mode 100644 src/DocScan/Request/Check/SandboxWatchlistAdvancedCaCheckBuilder.php create mode 100644 src/DocScan/Request/Check/SandboxYotiAccountWatchlistAdvancedCaConfig.php create mode 100644 src/DocScan/Request/Check/SandboxYotiAccountWatchlistAdvancedCaConfigBuilder.php create mode 100644 tests/DocScan/Request/Check/SandboxLivenessCheckBuilderTest.php create mode 100644 tests/DocScan/Request/Check/SandboxWatchlistAdvancedCaCheckTest.php create mode 100644 tests/DocScan/Request/Check/SandboxYotiAccountWatchlistAdvancedCaConfigTest.php diff --git a/src/DocScan/Request/Check/Advanced/SandboxExactMatchingStrategy.php b/src/DocScan/Request/Check/Advanced/SandboxExactMatchingStrategy.php new file mode 100644 index 0000000..acbeed6 --- /dev/null +++ b/src/DocScan/Request/Check/Advanced/SandboxExactMatchingStrategy.php @@ -0,0 +1,27 @@ +searchProfile = $searchProfile; + } + + /** + * @return string + */ + public function getSearchProfile(): string + { + return $this->searchProfile; + } + + /** + * @return string + */ + public function getType(): string + { + return SandboxConstants::PROFILE; + } + + /** + * @return stdClass + */ + public function jsonSerialize(): stdClass + { + $json = parent::jsonSerialize(); + $json->search_profile = $this->getSearchProfile(); + + return $json; + } +} diff --git a/src/DocScan/Request/Check/Advanced/SandboxSearchProfileSourcesBuilder.php b/src/DocScan/Request/Check/Advanced/SandboxSearchProfileSourcesBuilder.php new file mode 100644 index 0000000..3624c20 --- /dev/null +++ b/src/DocScan/Request/Check/Advanced/SandboxSearchProfileSourcesBuilder.php @@ -0,0 +1,32 @@ +searchProfile = $searchProfile; + + return $this; + } + + /** + * @return SandboxSearchProfileSources + */ + public function build(): SandboxSearchProfileSources + { + return new SandboxSearchProfileSources($this->searchProfile); + } +} diff --git a/src/DocScan/Request/Check/Contracts/Advanced/SandboxCaMatchingStrategy.php b/src/DocScan/Request/Check/Contracts/Advanced/SandboxCaMatchingStrategy.php new file mode 100644 index 0000000..8e97089 --- /dev/null +++ b/src/DocScan/Request/Check/Contracts/Advanced/SandboxCaMatchingStrategy.php @@ -0,0 +1,31 @@ + $this->getType(), + ]); + } +} diff --git a/src/DocScan/Request/Check/Contracts/Advanced/SandboxCaSources.php b/src/DocScan/Request/Check/Contracts/Advanced/SandboxCaSources.php new file mode 100644 index 0000000..26a9f38 --- /dev/null +++ b/src/DocScan/Request/Check/Contracts/Advanced/SandboxCaSources.php @@ -0,0 +1,31 @@ + $this->getType(), + ]); + } +} diff --git a/src/DocScan/Request/Check/Contracts/SandboxWatchlistAdvancedCaConfig.php b/src/DocScan/Request/Check/Contracts/SandboxWatchlistAdvancedCaConfig.php new file mode 100644 index 0000000..6eebb86 --- /dev/null +++ b/src/DocScan/Request/Check/Contracts/SandboxWatchlistAdvancedCaConfig.php @@ -0,0 +1,102 @@ +removeDeceased = $removeDeceased; + $this->shareUrl = $shareUrl; + $this->sources = $sources; + $this->matchingStrategy = $matchingStrategy; + } + + /** + * @return bool + */ + public function getRemoveDeceased(): bool + { + return $this->removeDeceased; + } + + /** + * @return bool + */ + public function getShareUrl(): bool + { + return $this->shareUrl; + } + + /** + * @return SandboxCaSources + */ + public function getSources(): SandboxCaSources + { + return $this->sources; + } + + /** + * @return SandboxCaMatchingStrategy + */ + public function getMatchingStrategy(): SandboxCaMatchingStrategy + { + return $this->matchingStrategy; + } + + /** + * @return stdClass + */ + public function jsonSerialize(): stdClass + { + return (object)[ + 'remove_deceased' => $this->getRemoveDeceased(), + 'share_url' => $this->getShareUrl(), + 'sources' => $this->getSources(), + 'matching_strategy' => $this->getMatchingStrategy(), + 'type' => $this->getType(), + ]; + } +} diff --git a/src/DocScan/Request/Check/Contracts/SandboxWatchlistAdvancedCaConfigBuilder.php b/src/DocScan/Request/Check/Contracts/SandboxWatchlistAdvancedCaConfigBuilder.php new file mode 100644 index 0000000..b332f92 --- /dev/null +++ b/src/DocScan/Request/Check/Contracts/SandboxWatchlistAdvancedCaConfigBuilder.php @@ -0,0 +1,81 @@ +removeDeceased = $removeDeceased; + + return $this; + } + + /** + * @param bool $shareUrl + * @return $this + */ + public function withShareUrl(bool $shareUrl): SandboxWatchlistAdvancedCaConfigBuilder + { + $this->shareUrl = $shareUrl; + + return $this; + } + + /** + * @param SandboxCaSources $sources + * @return $this + */ + public function withSources(SandboxCaSources $sources): SandboxWatchlistAdvancedCaConfigBuilder + { + $this->sources = $sources; + + return $this; + } + + /** + * @param SandboxCaMatchingStrategy $matchingStrategy + * @return $this + */ + public function withMatchingStrategy( + SandboxCaMatchingStrategy $matchingStrategy + ): SandboxWatchlistAdvancedCaConfigBuilder { + $this->matchingStrategy = $matchingStrategy; + + return $this; + } +} diff --git a/src/DocScan/Request/Check/SandboxWatchlistAdvancedCaCheck.php b/src/DocScan/Request/Check/SandboxWatchlistAdvancedCaCheck.php new file mode 100644 index 0000000..28c5094 --- /dev/null +++ b/src/DocScan/Request/Check/SandboxWatchlistAdvancedCaCheck.php @@ -0,0 +1,37 @@ +config = $config; + } + + /** + * @return string + */ + public function getType(): string + { + return SandboxConstants::WATCHLIST_ADVANCED_CA; + } + + /** + * @return SandboxCheckConfigInterface|null + */ + public function getConfig(): ?SandboxCheckConfigInterface + { + return $this->config; + } +} diff --git a/src/DocScan/Request/Check/SandboxWatchlistAdvancedCaCheckBuilder.php b/src/DocScan/Request/Check/SandboxWatchlistAdvancedCaCheckBuilder.php new file mode 100644 index 0000000..33b49f0 --- /dev/null +++ b/src/DocScan/Request/Check/SandboxWatchlistAdvancedCaCheckBuilder.php @@ -0,0 +1,34 @@ +config = $config; + + return $this; + } + + /** + * @return SandboxWatchlistAdvancedCaCheck + */ + public function build(): SandboxWatchlistAdvancedCaCheck + { + return new SandboxWatchlistAdvancedCaCheck($this->config); + } +} diff --git a/src/DocScan/Request/Check/SandboxYotiAccountWatchlistAdvancedCaConfig.php b/src/DocScan/Request/Check/SandboxYotiAccountWatchlistAdvancedCaConfig.php new file mode 100644 index 0000000..d0976ac --- /dev/null +++ b/src/DocScan/Request/Check/SandboxYotiAccountWatchlistAdvancedCaConfig.php @@ -0,0 +1,19 @@ +removeDeceased, + $this->shareUrl, + $this->sources, + $this->matchingStrategy + ); + } +} diff --git a/tests/DocScan/Request/Check/SandboxLivenessCheckBuilderTest.php b/tests/DocScan/Request/Check/SandboxLivenessCheckBuilderTest.php new file mode 100644 index 0000000..8fd60c9 --- /dev/null +++ b/tests/DocScan/Request/Check/SandboxLivenessCheckBuilderTest.php @@ -0,0 +1,117 @@ +forLivenessType(self::SOME_LIVENESS_TYPE) + ->withMaxRetries(self::SOME_MAX_RETRIES) + ->build(); + + $this->assertInstanceOf(SandboxLivenessCheck::class, $result); + } + + /** + * @test + * @covers \Yoti\Sandbox\DocScan\Request\Check\SandboxLivenessCheck::jsonSerialize + * @covers ::forLivenessType + * @covers ::withMaxRetries + * @covers \Yoti\Sandbox\DocScan\Request\Check\SandboxLivenessCheck::__construct + */ + public function shouldBuildWithCustomLivenessType() + { + $result = (new SandboxLivenessCheckBuilder()) + ->forLivenessType(self::SOME_LIVENESS_TYPE) + ->withMaxRetries(self::SOME_MAX_RETRIES) + ->build(); + + $expected = [ + 'type' => 'LIVENESS', + 'config' => [ + 'liveness_type' => self::SOME_LIVENESS_TYPE, + 'max_retries' => self::SOME_MAX_RETRIES, + ] + ]; + + $this->assertJsonStringEqualsJsonString(json_encode($expected), json_encode($result)); + } + + /** + * @test + * @covers \Yoti\Sandbox\DocScan\Request\Check\SandboxLivenessCheck::jsonSerialize + * @covers ::forZoomLiveness + * @covers ::withMaxRetries + * @covers \Yoti\Sandbox\DocScan\Request\Check\SandboxLivenessCheck::__construct + * @covers \Yoti\Sandbox\DocScan\Request\Check\SandboxLivenessCheck::getType + * @covers \Yoti\Sandbox\DocScan\Request\Check\SandboxLivenessCheck::getConfig + */ + public function shouldBuildWithZoomLivenessType() + { + $result = (new SandboxLivenessCheckBuilder()) + ->forZoomLiveness() + ->withMaxRetries(self::SOME_MAX_RETRIES) + ->build(); + + $expected = [ + 'type' => 'LIVENESS', + 'config' => [ + 'liveness_type' => 'ZOOM', + 'max_retries' => self::SOME_MAX_RETRIES, + ] + ]; + + $this->assertJsonStringEqualsJsonString(json_encode($expected), json_encode($result)); + } + + /** + * @test + * @covers \Yoti\Sandbox\DocScan\Request\Check\SandboxLivenessCheck::jsonSerialize + * @covers ::forStaticLiveness + * @covers ::withManualCheck + * @covers ::withoutManualCheck + * @covers ::withMaxRetries + * @covers \Yoti\Sandbox\DocScan\Request\Check\SandboxLivenessCheck::__construct + * @covers \Yoti\Sandbox\DocScan\Request\Check\SandboxLivenessCheck::getType + * @covers \Yoti\Sandbox\DocScan\Request\Check\SandboxLivenessCheck::getConfig + */ + public function shouldBuildWithStaticLivenessType() + { + $result = (new SandboxLivenessCheckBuilder()) + ->forStaticLiveness() + ->withMaxRetries(self::SOME_MAX_RETRIES) + ->withoutManualCheck() + ->build(); + + $expected = [ + 'type' => 'LIVENESS', + 'config' => [ + 'liveness_type' => 'STATIC', + 'max_retries' => self::SOME_MAX_RETRIES, + 'manual_check' => self::NEVER, + ] + ]; + + $this->assertJsonStringEqualsJsonString(json_encode($expected), json_encode($result)); + } +} diff --git a/tests/DocScan/Request/Check/SandboxWatchlistAdvancedCaCheckTest.php b/tests/DocScan/Request/Check/SandboxWatchlistAdvancedCaCheckTest.php new file mode 100644 index 0000000..e3194b3 --- /dev/null +++ b/tests/DocScan/Request/Check/SandboxWatchlistAdvancedCaCheckTest.php @@ -0,0 +1,34 @@ +createMock(SandboxWatchlistAdvancedCaConfig::class); + $check = (new SandboxWatchlistAdvancedCaCheckBuilder()) + ->withConfig($configMock) + ->build(); + + Assert::assertEquals(Constants::WATCHLIST_ADVANCED_CA, $check->getType()); + Assert::assertInstanceOf(SandboxWatchlistAdvancedCaConfig::class, $check->getConfig()); + } +} diff --git a/tests/DocScan/Request/Check/SandboxYotiAccountWatchlistAdvancedCaConfigTest.php b/tests/DocScan/Request/Check/SandboxYotiAccountWatchlistAdvancedCaConfigTest.php new file mode 100644 index 0000000..12a01b0 --- /dev/null +++ b/tests/DocScan/Request/Check/SandboxYotiAccountWatchlistAdvancedCaConfigTest.php @@ -0,0 +1,49 @@ +withRemoveDeceased(self::SOME_REMOVE_DECEASED) + ->withShareUrl(self::SOME_SHARE_URL) + ->withSources($profileSource) + ->withMatchingStrategy($exactMatchingStrategy) + ->build(); + + Assert::assertNotNull($result); + Assert::assertEquals(self::SOME_REMOVE_DECEASED, $result->getRemoveDeceased()); + Assert::assertEquals(self::SOME_SHARE_URL, $result->getShareUrl()); + Assert::assertEquals($profileSource, $result->getSources()); + Assert::assertEquals($exactMatchingStrategy, $result->getMatchingStrategy()); + Assert::assertEquals('WITH_YOTI_ACCOUNT', $result->getType()); + } +}