. */ namespace SPT\Core\Crypt; use PHPUnit\Framework\Attributes\Group; use PHPUnit\Framework\MockObject\Exception; use PHPUnit\Framework\MockObject\MockObject; use SP\Core\Crypt\Session; use SP\Domain\Core\Context\SessionContextInterface; use SP\Domain\Core\Crypt\VaultInterface; use SP\Domain\Core\Exceptions\CryptException; use SPT\UnitaryTestCase; /** * Class SessionTest * */ #[Group('unitary')] class SessionTest extends UnitaryTestCase { private SessionContextInterface|MockObject $sessionContext; /** * @throws Exception * @throws CryptException */ public function testGetSessionKey() { $sidStartTime = self::$faker->unixTime; $key = session_id() . $sidStartTime; $vault = $this->createMock(VaultInterface::class); $vault->expects(self::once()) ->method('getData') ->with($key) ->willReturn('data'); $this->sessionContext ->expects(self::once()) ->method('getVault') ->willReturn($vault); $this->sessionContext ->expects(self::once()) ->method('getSidStartTime') ->willReturn($sidStartTime); self::assertEquals('data', Session::getSessionKey($this->sessionContext)); } /** * @throws Exception * @throws CryptException */ public function testReKey() { $sidStartTime = self::$faker->unixTime; $key = session_id() . $sidStartTime; $vault = $this->createMock(VaultInterface::class); $vault->expects(self::once()) ->method('reKey') ->with(self::anything(), $key); $this->sessionContext ->expects(self::once()) ->method('getVault') ->willReturn($vault); $this->sessionContext ->expects(self::once()) ->method('getSidStartTime') ->willReturn($sidStartTime); $this->sessionContext ->expects(self::once()) ->method('setSidStartTime') ->with(self::anything()); $this->sessionContext ->expects(self::once()) ->method('setVault'); Session::reKey($this->sessionContext); } /** * @throws CryptException */ public function testSaveSessionKey() { $this->sessionContext ->expects(self::once()) ->method('getSidStartTime') ->willReturn(self::$faker->unixTime); $this->sessionContext ->expects(self::once()) ->method('setVault'); Session::saveSessionKey(self::$faker->name, $this->sessionContext); } protected function setUp(): void { parent::setUp(); $this->sessionContext = $this->createMock(SessionContextInterface::class); } }