repository = m::mock(DatabaseRepositoryInterface::class); } /** * Test a successful middleware instance. */ public function testSuccessfulMiddleware() { $model = factory(Server::class)->make(); $database = factory(Database::class)->make([ 'server_id' => $model->id, ]); $this->setRequestAttribute('server', $model); $this->request->shouldReceive('input')->with('database')->once()->andReturn($database->id); $this->repository->shouldReceive('find')->with($database->id)->once()->andReturn($database); $this->getMiddleware()->handle($this->request, $this->getClosureAssertions()); $this->assertRequestHasAttribute('database'); $this->assertRequestAttributeEquals($database, 'database'); } /** * Test that an exception is thrown if no database record is found. * * @expectedException \Symfony\Component\HttpKernel\Exception\NotFoundHttpException */ public function testExceptionIsThrownIfNoDatabaseRecordFound() { $model = factory(Server::class)->make(); $database = factory(Database::class)->make(); $this->setRequestAttribute('server', $model); $this->request->shouldReceive('input')->with('database')->once()->andReturn($database->id); $this->repository->shouldReceive('find')->with($database->id)->once()->andReturnNull(); $this->getMiddleware()->handle($this->request, $this->getClosureAssertions()); } /** * Test that an exception is found if the database server does not match the * request server. * * @expectedException \Symfony\Component\HttpKernel\Exception\NotFoundHttpException */ public function testExceptionIsThrownIfDatabaseServerDoesNotMatchCurrent() { $model = factory(Server::class)->make(); $database = factory(Database::class)->make(); $this->setRequestAttribute('server', $model); $this->request->shouldReceive('input')->with('database')->once()->andReturn($database->id); $this->repository->shouldReceive('find')->with($database->id)->once()->andReturn($database); $this->getMiddleware()->handle($this->request, $this->getClosureAssertions()); } /** * Return an instance of the middleware using mocked dependencies. * * @return \Pterodactyl\Http\Middleware\Server\DatabaseBelongsToServer */ private function getMiddleware(): DatabaseBelongsToServer { return new DatabaseBelongsToServer($this->repository); } }