Skip to content

Commit d611e92

Browse files
LuborRodRodion Liuborets
andauthored
SDK-2099 Add builder method for creating sessionwith identity profile (#278)
Co-authored-by: Rodion Liuborets <[email protected]>
1 parent b7e6ea3 commit d611e92

File tree

3 files changed

+109
-2
lines changed

3 files changed

+109
-2
lines changed

src/DocScan/Session/Create/SessionSpecification.php

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,11 @@ class SessionSpecification implements JsonSerializable
7373
*/
7474
private $subject;
7575

76+
/**
77+
* @var object|null
78+
*/
79+
private $identityProfileRequirements;
80+
7681
/**
7782
* @param int|null $clientSessionTokenTtl
7883
* @param string|null $sessionDeadline
@@ -86,6 +91,7 @@ class SessionSpecification implements JsonSerializable
8691
* @param bool|null $blockBiometricConsent
8792
* @param IbvOptions|null $ibvOptions
8893
* @param object|null $subject
94+
* @param object|null $identityProfileRequirements
8995
*/
9096
public function __construct(
9197
?int $clientSessionTokenTtl,
@@ -99,7 +105,8 @@ public function __construct(
99105
array $requiredDocuments = [],
100106
?bool $blockBiometricConsent = null,
101107
?IbvOptions $ibvOptions = null,
102-
$subject = null
108+
$subject = null,
109+
$identityProfileRequirements = null
103110
) {
104111
$this->clientSessionTokenTtl = $clientSessionTokenTtl;
105112
$this->sessionDeadline = $sessionDeadline;
@@ -113,6 +120,7 @@ public function __construct(
113120
$this->blockBiometricConsent = $blockBiometricConsent;
114121
$this->ibvOptions = $ibvOptions;
115122
$this->subject = $subject;
123+
$this->identityProfileRequirements = $identityProfileRequirements;
116124
}
117125

118126
/**
@@ -133,6 +141,7 @@ public function jsonSerialize(): stdClass
133141
'block_biometric_consent' => $this->getBlockBiometricConsent(),
134142
'ibv_options' => $this->getIbvOptions(),
135143
'subject' => $this->getSubject(),
144+
'identity_profile_requirements' => $this->getIdentityProfileRequirements(),
136145
]);
137146
}
138147

@@ -236,4 +245,12 @@ public function getSubject()
236245
{
237246
return $this->subject;
238247
}
248+
249+
/**
250+
* @return object|null
251+
*/
252+
public function getIdentityProfileRequirements()
253+
{
254+
return $this->identityProfileRequirements;
255+
}
239256
}

src/DocScan/Session/Create/SessionSpecificationBuilder.php

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,11 @@ class SessionSpecificationBuilder
7272
*/
7373
private $subject;
7474

75+
/**
76+
* @var object|null
77+
*/
78+
private $identityProfileRequirements;
79+
7580
/**
7681
* @param int $clientSessionTokenTtl
7782
* @return $this
@@ -225,6 +230,19 @@ public function withSubject($subject): self
225230
return $this;
226231
}
227232

233+
/**
234+
* Sets the Identity Profile Requirements for the session
235+
*
236+
* @param object $identityProfileRequirements
237+
*
238+
* @return $this
239+
*/
240+
public function withIdentityProfileRequirements($identityProfileRequirements): self
241+
{
242+
$this->identityProfileRequirements = $identityProfileRequirements;
243+
return $this;
244+
}
245+
228246
/**
229247
* @return SessionSpecification
230248
*/
@@ -242,7 +260,8 @@ public function build(): SessionSpecification
242260
$this->requiredDocuments,
243261
$this->blockBiometricConsent,
244262
$this->ibvOptions,
245-
$this->subject
263+
$this->subject,
264+
$this->identityProfileRequirements
246265
);
247266
}
248267
}

tests/DocScan/Session/Create/SessionSpecificationBuilderTest.php

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,11 @@ class SessionSpecificationBuilderTest extends TestCase
5757
*/
5858
private $subject;
5959

60+
/**
61+
* @var object
62+
*/
63+
private $identityProfileRequirements;
64+
6065
public function setup(): void
6166
{
6267
$this->sdkConfigMock = $this->createMock(SdkConfig::class);
@@ -75,7 +80,16 @@ public function setup(): void
7580
$this->requiredDocumentMock->method('jsonSerialize')->willReturn((object)['requiredDocument']);
7681

7782
$this->ibvOptionsMock = $this->createMock(IbvOptions::class);
83+
7884
$this->subject = (object)[1 => 'some'];
85+
86+
$this->identityProfileRequirements = (object)[
87+
'trust_framework' => 'UK_TFIDA',
88+
'scheme' => [
89+
'type' => 'DBS',
90+
'objective' => 'STANDARD'
91+
]
92+
];
7993
}
8094

8195
/**
@@ -380,4 +394,61 @@ public function shouldReturnCorrectJsonStringWithSubject()
380394
json_encode($sessionSpecification)
381395
);
382396
}
397+
398+
/**
399+
* @test
400+
* @covers \Yoti\DocScan\Session\Create\SessionSpecification::getIdentityProfileRequirements
401+
* @covers \Yoti\DocScan\Session\Create\SessionSpecification::__construct
402+
* @covers \Yoti\DocScan\Session\Create\SessionSpecificationBuilder::withIdentityProfileRequirements
403+
* @covers \Yoti\DocScan\Session\Create\SessionSpecificationBuilder::build
404+
*/
405+
public function shouldBuildWithIdentityProfileRequirements()
406+
{
407+
$sessionSpecificationResult = (new SessionSpecificationBuilder())
408+
->withIdentityProfileRequirements($this->identityProfileRequirements)
409+
->build();
410+
411+
$this->assertEquals(
412+
$this->identityProfileRequirements,
413+
$sessionSpecificationResult->getIdentityProfileRequirements()
414+
);
415+
}
416+
417+
/**
418+
* @test
419+
* @covers \Yoti\DocScan\Session\Create\SessionSpecification::getIdentityProfileRequirements
420+
* @covers \Yoti\DocScan\Session\Create\SessionSpecification::__construct
421+
* @covers \Yoti\DocScan\Session\Create\SessionSpecificationBuilder::withIdentityProfileRequirements
422+
* @covers \Yoti\DocScan\Session\Create\SessionSpecificationBuilder::build
423+
*/
424+
public function shouldNotImplicitlySetAValueForIdentityProfileRequirements()
425+
{
426+
$sessionSpecificationResult = (new SessionSpecificationBuilder())
427+
->build();
428+
429+
$this->assertNull($sessionSpecificationResult->getIdentityProfileRequirements());
430+
}
431+
432+
/**
433+
* @test
434+
* @covers \Yoti\DocScan\Session\Create\SessionSpecification::jsonSerialize
435+
* @covers \Yoti\DocScan\Session\Create\SessionSpecificationBuilder::withIdentityProfileRequirements
436+
* @covers \Yoti\DocScan\Session\Create\SessionSpecificationBuilder::build
437+
*/
438+
public function shouldReturnCorrectJsonStringWithIdentityProfileRequirements()
439+
{
440+
$sessionSpecification = (new SessionSpecificationBuilder())
441+
->withIdentityProfileRequirements($this->identityProfileRequirements)
442+
->build();
443+
444+
$this->assertJsonStringEqualsJsonString(
445+
json_encode([
446+
'requested_checks' => [],
447+
'requested_tasks' => [],
448+
'required_documents' => [],
449+
'identity_profile_requirements' => $this->identityProfileRequirements,
450+
]),
451+
json_encode($sessionSpecification)
452+
);
453+
}
383454
}

0 commit comments

Comments
 (0)