diff --git a/app/Services/Helpers/TemporaryPasswordService.php b/app/Services/Helpers/TemporaryPasswordService.php index 90a65b8c8..c9ccfa5df 100644 --- a/app/Services/Helpers/TemporaryPasswordService.php +++ b/app/Services/Helpers/TemporaryPasswordService.php @@ -9,19 +9,14 @@ namespace Pterodactyl\Services\Helpers; +use Ramsey\Uuid\Uuid; use Illuminate\Contracts\Hashing\Hasher; use Illuminate\Database\ConnectionInterface; -use Illuminate\Contracts\Config\Repository as ConfigRepository; class TemporaryPasswordService { const HMAC_ALGO = 'sha256'; - /** - * @var \Illuminate\Contracts\Config\Repository - */ - protected $config; - /** * @var \Illuminate\Database\ConnectionInterface */ @@ -35,16 +30,11 @@ class TemporaryPasswordService /** * TemporaryPasswordService constructor. * - * @param \Illuminate\Contracts\Config\Repository $config * @param \Illuminate\Database\ConnectionInterface $connection * @param \Illuminate\Contracts\Hashing\Hasher $hasher */ - public function __construct( - ConfigRepository $config, - ConnectionInterface $connection, - Hasher $hasher - ) { - $this->config = $config; + public function __construct(ConnectionInterface $connection, Hasher $hasher) + { $this->connection = $connection; $this->hasher = $hasher; } @@ -57,7 +47,7 @@ class TemporaryPasswordService */ public function handle($email) { - $token = hash_hmac(self::HMAC_ALGO, str_random(40), $this->config->get('app.key')); + $token = hash_hmac(self::HMAC_ALGO, Uuid::uuid4()->toString(), config('app.key')); $this->connection->table('password_resets')->insert([ 'email' => $email, diff --git a/phpunit.xml b/phpunit.xml index 26b662c91..0ceb3db26 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -10,8 +10,8 @@ processIsolation="false" stopOnFailure="false"> - - ./tests/Feature + + ./tests/Integration ./tests/Unit diff --git a/tests/Unit/Services/Helpers/TemporaryPasswordServiceTest.php b/tests/Unit/Services/Helpers/TemporaryPasswordServiceTest.php index f0bcf253e..2d8b6dbe5 100644 --- a/tests/Unit/Services/Helpers/TemporaryPasswordServiceTest.php +++ b/tests/Unit/Services/Helpers/TemporaryPasswordServiceTest.php @@ -1,30 +1,17 @@ . - * - * This software is licensed under the terms of the MIT license. - * https://opensource.org/licenses/MIT - */ namespace Tests\Unit\Services\Helpers; use Mockery as m; use Tests\TestCase; -use phpmock\phpunit\PHPMock; +use Tests\Traits\MocksUuids; use Illuminate\Contracts\Hashing\Hasher; -use Illuminate\Contracts\Config\Repository; use Illuminate\Database\ConnectionInterface; use Pterodactyl\Services\Helpers\TemporaryPasswordService; class TemporaryPasswordServiceTest extends TestCase { - use PHPMock; - - /** - * @var \Illuminate\Contracts\Config\Repository|\Mockery\Mock - */ - protected $config; + use MocksUuids; /** * @var \Illuminate\Database\ConnectionInterface|\Mockery\Mock @@ -48,11 +35,10 @@ class TemporaryPasswordServiceTest extends TestCase { parent::setUp(); - $this->config = m::mock(Repository::class); $this->connection = m::mock(ConnectionInterface::class); $this->hasher = m::mock(Hasher::class); - $this->service = new TemporaryPasswordService($this->config, $this->connection, $this->hasher); + $this->service = new TemporaryPasswordService($this->connection, $this->hasher); } /** @@ -60,11 +46,7 @@ class TemporaryPasswordServiceTest extends TestCase */ public function testTemporaryPasswordIsStored() { - $this->getFunctionMock('\\Pterodactyl\\Services\\Helpers', 'str_random') - ->expects($this->once())->with(40)->willReturn('random_string'); - - $this->config->shouldReceive('get')->with('app.key')->once()->andReturn('123456'); - $token = hash_hmac(TemporaryPasswordService::HMAC_ALGO, 'random_string', '123456'); + $token = hash_hmac(TemporaryPasswordService::HMAC_ALGO, $this->getKnownUuid(), config('app.key')); $this->hasher->shouldReceive('make')->with($token)->once()->andReturn('hashed_token'); $this->connection->shouldReceive('table')->with('password_resets')->once()->andReturnSelf();