. */ namespace SP\Tests\Repositories; use Defuse\Crypto\Exception\EnvironmentIsBrokenException; use DI\DependencyException; use DI\NotFoundException; use SP\Core\Context\ContextException; use SP\Core\Exceptions\ConstraintException; use SP\Core\Exceptions\QueryException; use SP\Core\Exceptions\SPException; use SP\Repositories\User\UserPassRecoverRepository; use SP\Tests\DatabaseTestCase; use SP\Util\PasswordUtil; use function SP\Tests\setupContext; /** * Class UserPassRecoverRepositoryTest * * @package SP\Tests\Repositories */ class UserPassRecoverRepositoryTest extends DatabaseTestCase { /** * @var UserPassRecoverRepository */ private static $repository; /** * @throws DependencyException * @throws NotFoundException * @throws ContextException */ public static function setUpBeforeClass(): void { $dic = setupContext(); self::$loadFixtures = true; // Inicializar el repositorio self::$repository = $dic->get(UserPassRecoverRepository::class); } /** * @throws EnvironmentIsBrokenException * @throws ConstraintException * @throws QueryException */ public function testAdd() { $this->assertEquals(3, self::$repository->add(2, PasswordUtil::generateRandomBytes())); $this->expectException(ConstraintException::class); self::$repository->add(10, PasswordUtil::generateRandomBytes()); } /** * @throws ConstraintException * @throws QueryException */ public function testGetAttemptsByUserId() { $this->assertEquals(2, self::$repository->getAttemptsByUserId(2, 1529275206)); $this->assertEquals(0, self::$repository->getAttemptsByUserId(3, 1529275206)); $this->assertEquals(0, self::$repository->getAttemptsByUserId(10, 1529275206)); } /** * @throws ConstraintException * @throws QueryException * @throws EnvironmentIsBrokenException */ public function testGetUserIdForHash() { $result = self::$repository->getUserIdForHash(pack('H*', '3038366162313036303866363838346566383031396134353237333561633066'), 1529275200); $this->assertEquals(1, $result->getNumRows()); $this->assertEquals(2, $result->getData()->userId); $result = self::$repository->getUserIdForHash(PasswordUtil::generateRandomBytes(), 1529275206); $this->assertEquals(0, $result->getNumRows()); } /** * @throws SPException */ public function testToggleUsedByHash() { $result = self::$repository->toggleUsedByHash(pack('H*', '3038366162313036303866363838346566383031396134353237333561633066'), 1529275200); $this->assertEquals(1, $result); $result = self::$repository->toggleUsedByHash(pack('H*', '3038366162313036303866363838346566383031396134353237333561633066'), 1529275200); $this->assertEquals(0, $result); $result = self::$repository->toggleUsedByHash(pack('H*', '3532383335346130663366626661376161626538303831373231653065633631'), 1529275331); $this->assertEquals(0, $result); } }