Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -230,6 +230,8 @@ You may provide the following as envelopes:

<a name="changelog"></a>
## Changelog
* `1.5.3`
* Added optional `deepfake` and `deepfake_confidence` fields for document event
* `1.5.2`
* Fixed validation of `second_user_merchant_id` field for the "Transfer" event
* `1.5.1`
Expand Down
34 changes: 30 additions & 4 deletions src/Envelopes/Builder.php
Original file line number Diff line number Diff line change
Expand Up @@ -2050,6 +2050,8 @@ public static function postBackEvent(
* @param string|null $translatedExtractedText
* @param string|null $translatedFrom
* @param string|null $translatedTo
* @param string|null $deepfake
* @param string|null $deepfakeConfidence
*
* @return Builder
*/
Expand Down Expand Up @@ -2105,7 +2107,9 @@ public static function documentEvent(
$textLanguageDetails = null,
$translatedExtractedText = null,
$translatedFrom = null,
$translatedTo = null
$translatedTo = null,
$deepfake = null,
$deepfakeConfidence = null
) {
$sequenceId = $sequenceId ?? '';
$builder = new self(self::EVENT_DOCUMENT, $sequenceId);
Expand Down Expand Up @@ -2152,7 +2156,9 @@ public static function documentEvent(
$textLanguageDetails,
$translatedExtractedText,
$translatedFrom,
$translatedTo
$translatedTo,
$deepfake,
$deepfakeConfidence
)
->addUserData(
$email,
Expand Down Expand Up @@ -5148,6 +5154,8 @@ public function addKycSubmitData(
* @param string|null $translatedExtractedText
* @param string|null $translatedFrom
* @param string|null $translatedTo
* @param string|null $deepfake
* @param string|null $deepfakeConfidence
* @return Builder
*/
public function addDocumentEventData(
Expand Down Expand Up @@ -5189,7 +5197,9 @@ public function addDocumentEventData(
$textLanguageDetails = null,
$translatedExtractedText = null,
$translatedFrom = null,
$translatedTo = null
$translatedTo = null,
$deepfake = null,
$deepfakeConfidence = null
) {
if (!is_string($eventId)) {
throw new \InvalidArgumentException('Event ID must be string');
Expand Down Expand Up @@ -5248,7 +5258,7 @@ public function addDocumentEventData(
}
if ($amount !== null) {
if (!is_float($amount)) {
throw new \InvalidArgumentException('Amount must be must be float');
throw new \InvalidArgumentException('Amount must be float');
}
if ($amount < 0) {
throw new \InvalidArgumentException('Amount cannot be negative');
Expand Down Expand Up @@ -5333,6 +5343,20 @@ public function addDocumentEventData(
if ($translatedTo !== null && !is_string($translatedTo)) {
throw new \InvalidArgumentException('Translated To must be string');
}
if ($deepfake !== null && !is_bool($deepfake)) {
throw new \InvalidArgumentException('Deepfake enabled flag must be boolean');
}
if ($deepfakeConfidence !== null) {
if (!is_int($deepfakeConfidence) && !is_float($deepfakeConfidence)) {
throw new \InvalidArgumentException('Deepfake confidence must be number');
}
if ($deepfakeConfidence < 0) {
throw new \InvalidArgumentException('Deepfake confidence cannot be negative');
}
if ($deepfakeConfidence > 1) {
throw new \InvalidArgumentException('Deepfake confidence cannot be greater than 1');
}
}

$this->replace('event_id', $eventId);
$this->replace('event_timestamp', $eventTimestamp);
Expand Down Expand Up @@ -5373,6 +5397,8 @@ public function addDocumentEventData(
$this->replace('translated_extracted_text', $translatedExtractedText);
$this->replace('translated_from', $translatedFrom);
$this->replace('translated_to', $translatedTo);
$this->replace('deepfake', $deepfake);
$this->replaceZeroAllowed('deepfake_confidence', $deepfakeConfidence);

return $this;
}
Expand Down
6 changes: 5 additions & 1 deletion src/Envelopes/ValidatorV1.php
Original file line number Diff line number Diff line change
Expand Up @@ -271,7 +271,9 @@ class ValidatorV1
'text_language_details' => 'array_string',
'translated_extracted_text' => 'string(225)',
'translated_from' => 'string(225)',
'translated_to' => 'string(225)'
'translated_to' => 'string(225)',
'deepfake' => 'bool',
'deepfake_confidence' => 'float'
);

private static $fieldWithZeroAllowed = array(
Expand Down Expand Up @@ -997,6 +999,8 @@ class ValidatorV1
"translated_extracted_text",
"translated_from",
"translated_to",
"deepfake",
"deepfake_confidence",
)
),
);
Expand Down
133 changes: 130 additions & 3 deletions tests/Covery/BuildDocumentEventTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -63,10 +63,12 @@ public function testBuild()
['en'],
'testTranslatedExtractedText',
'testTranslatedFrom',
'testTranslatedTo'
'testTranslatedTo',
false,
0.12
)->build();

self::assertCount(51, $result);
self::assertCount(53, $result);
self::assertSame(Builder::EVENT_DOCUMENT, $result->getType());
self::assertSame('tempSequenceId', $result->getSequenceId());
self::assertSame('tempEventId', $result['event_id']);
Expand Down Expand Up @@ -119,7 +121,8 @@ public function testBuild()
self::assertSame(['en'], $result['text_language_details']);
self::assertSame("testTranslatedExtractedText", $result['translated_extracted_text']);
self::assertSame("testTranslatedFrom", $result['translated_from']);
self::assertSame("testTranslatedTo", $result['translated_to']);
self::assertSame(false, $result['deepfake']);
self::assertSame(0.12, $result['deepfake_confidence']);

$validator->validate($result);

Expand Down Expand Up @@ -258,4 +261,128 @@ public function testEventExpectInvalidArgumentExceptionForNegativeAmountConverte
-34.5
)->build();
}

public function testEventExpectInvalidArgumentExceptionForNegativeDeepfakeConfidence()
{
$this->expectException(\InvalidArgumentException::class);
$this->expectExceptionMessage("Deepfake confidence cannot be negative");
Builder::documentEvent(
'tempEventId',
123456,
'tempUserId',
\Covery\Client\DocumentType::INTERNATIONAL_PASSPORT,
'tempSequenceId',
'tempGroupId',
'tempDocumentCountry',
'tempDocumentNumber',
'tempFileName',
'tempEmail',
'tempFirstName',
'tempLastName',
'tempFullname',
123456,
18,
'tempGender',
'tempNationality',
'tempCountry',
'tempCity',
'tempZip',
'tempAddress',
123456,
123456,
'tempAuthority',
'testRecordNumber',
'testPersonalNumber',
'testDescription',
10.4,
'testPaymentMethod',
23.6,
34.5,
'testCurrency',
'testMrzDocumentType',
'testMrzCountry',
'testMrzLastname',
'testMrzFirstname',
'testMrzFullname',
'testMrzDocumentNumber',
'testMrzNationality',
'testMrzPersonalNumber',
123456,
'testMrzGender',
123456,
'testMrzRecordNumber',
false,
'tempMrzAuthority',
123456,
'testExtractedText',
['en'],
'testTranslatedExtractedText',
'testTranslatedFrom',
'testTranslatedTo',
false,
-0.12
)->build();
}

public function testEventExpectInvalidArgumentExceptionForGreaterThanOneDeepfakeConfidence()
{
$this->expectException(\InvalidArgumentException::class);
$this->expectExceptionMessage("Deepfake confidence cannot be greater than 1");
Builder::documentEvent(
'tempEventId',
123456,
'tempUserId',
\Covery\Client\DocumentType::INTERNATIONAL_PASSPORT,
'tempSequenceId',
'tempGroupId',
'tempDocumentCountry',
'tempDocumentNumber',
'tempFileName',
'tempEmail',
'tempFirstName',
'tempLastName',
'tempFullname',
123456,
18,
'tempGender',
'tempNationality',
'tempCountry',
'tempCity',
'tempZip',
'tempAddress',
123456,
123456,
'tempAuthority',
'testRecordNumber',
'testPersonalNumber',
'testDescription',
10.4,
'testPaymentMethod',
23.6,
34.5,
'testCurrency',
'testMrzDocumentType',
'testMrzCountry',
'testMrzLastname',
'testMrzFirstname',
'testMrzFullname',
'testMrzDocumentNumber',
'testMrzNationality',
'testMrzPersonalNumber',
123456,
'testMrzGender',
123456,
'testMrzRecordNumber',
false,
'tempMrzAuthority',
123456,
'testExtractedText',
['en'],
'testTranslatedExtractedText',
'testTranslatedFrom',
'testTranslatedTo',
false,
1.12
)->build();
}
}