Spaces:
No application file
No application file
File size: 2,857 Bytes
d2897cd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
<?php
namespace Mautic\UserBundle\Tests\Security\SAML\User;
use LightSaml\Model\Assertion\Assertion;
use LightSaml\Model\Assertion\Attribute;
use LightSaml\Model\Assertion\AttributeStatement;
use LightSaml\Model\Protocol\Response;
use Mautic\UserBundle\Security\SAML\User\UserMapper;
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;
class UserMapperTest extends TestCase
{
private UserMapper $mapper;
/**
* @var Response|MockObject
*/
private MockObject $response;
protected function setUp(): void
{
$this->mapper = new UserMapper(
[
'email' => 'EmailAddress',
'firstname' => 'FirstName',
'lastname' => 'LastName',
'username' => null,
]
);
$emailAttribute = $this->createMock(Attribute::class);
$emailAttribute->method('getFirstAttributeValue')
->willReturn('[email protected]');
$firstnameAttribute = $this->createMock(Attribute::class);
$firstnameAttribute->method('getFirstAttributeValue')
->willReturn('Joe');
$lastnameAttribute = $this->createMock(Attribute::class);
$lastnameAttribute->method('getFirstAttributeValue')
->willReturn('Smith');
$defaultAttribute = $this->createMock(Attribute::class);
$defaultAttribute->method('getFirstAttributeValue')
->willReturn('default');
$statement = $this->createMock(AttributeStatement::class);
$statement->method('getFirstAttributeByName')
->willReturnCallback(
fn ($attributeName) => match ($attributeName) {
'EmailAddress' => $emailAttribute,
'FirstName' => $firstnameAttribute,
'LastName' => $lastnameAttribute,
default => $defaultAttribute,
}
);
$assertion = $this->createMock(Assertion::class);
$assertion->method('getAllAttributeStatements')
->willReturn([$statement]);
$this->response = $this->createMock(Response::class);
$this->response->method('getAllAssertions')
->willReturn([$assertion]);
}
public function testUserEntityIsPopulatedFromAssertions(): void
{
$user = $this->mapper->getUser($this->response);
$this->assertEquals('[email protected]', $user->getEmail());
$this->assertEquals('[email protected]', $user->getUserIdentifier());
$this->assertEquals('Joe', $user->getFirstName());
$this->assertEquals('Smith', $user->getLastName());
}
public function testUsernameIsReturned(): void
{
$username = $this->mapper->getUsername($this->response);
$this->assertEquals('[email protected]', $username);
}
}
|