wallabag/tests/ParamConverter/UsernameFeedTokenConverterTest.php

223 lines
6.8 KiB
PHP
Raw Permalink Normal View History

2015-03-28 21:43:49 +01:00
<?php
2024-02-19 01:30:12 +01:00
namespace Tests\Wallabag\ParamConverter;
2015-03-28 21:43:49 +01:00
use Doctrine\Persistence\ManagerRegistry;
use Doctrine\Persistence\Mapping\ClassMetadata;
use Doctrine\Persistence\ObjectManager;
2017-12-16 22:17:42 +01:00
use PHPUnit\Framework\TestCase;
2015-03-28 21:43:49 +01:00
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
use Symfony\Component\HttpFoundation\Request;
2022-08-28 16:59:43 +02:00
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
2024-02-19 01:30:12 +01:00
use Wallabag\Entity\User;
use Wallabag\ParamConverter\UsernameFeedTokenConverter;
use Wallabag\Repository\UserRepository;
2015-03-28 21:43:49 +01:00
class UsernameFeedTokenConverterTest extends TestCase
2015-03-28 21:43:49 +01:00
{
public function testSupportsWithNoRegistry()
{
$params = new ParamConverter([]);
$converter = new UsernameFeedTokenConverter();
2015-03-28 21:43:49 +01:00
$this->assertFalse($converter->supports($params));
}
public function testSupportsWithNoRegistryManagers()
{
2022-09-01 20:54:56 +02:00
$registry = $this->getMockBuilder(ManagerRegistry::class)
2015-03-28 21:43:49 +01:00
->disableOriginalConstructor()
->getMock();
$registry->expects($this->once())
->method('getManagers')
2019-05-10 15:49:39 +02:00
->willReturn([]);
2015-03-28 21:43:49 +01:00
$params = new ParamConverter([]);
$converter = new UsernameFeedTokenConverter($registry);
2015-03-28 21:43:49 +01:00
$this->assertFalse($converter->supports($params));
}
public function testSupportsWithNoConfigurationClass()
{
2022-09-01 20:54:56 +02:00
$registry = $this->getMockBuilder(ManagerRegistry::class)
2015-03-28 21:43:49 +01:00
->disableOriginalConstructor()
->getMock();
$registry->expects($this->once())
->method('getManagers')
2019-05-10 15:49:39 +02:00
->willReturn(['default' => null]);
2015-03-28 21:43:49 +01:00
$params = new ParamConverter([]);
$converter = new UsernameFeedTokenConverter($registry);
2015-03-28 21:43:49 +01:00
$this->assertFalse($converter->supports($params));
}
public function testSupportsWithNotTheGoodClass()
{
2022-09-01 20:54:56 +02:00
$meta = $this->getMockBuilder(ClassMetadata::class)
2015-03-28 21:43:49 +01:00
->disableOriginalConstructor()
->getMock();
$meta->expects($this->once())
->method('getName')
2019-05-10 15:49:39 +02:00
->willReturn('nothingrelated');
2015-03-28 21:43:49 +01:00
2022-09-01 20:54:56 +02:00
$em = $this->getMockBuilder(ObjectManager::class)
2015-03-28 21:43:49 +01:00
->disableOriginalConstructor()
->getMock();
$em->expects($this->once())
->method('getClassMetadata')
->with('superclass')
2019-05-10 15:49:39 +02:00
->willReturn($meta);
2015-03-28 21:43:49 +01:00
2022-09-01 20:54:56 +02:00
$registry = $this->getMockBuilder(ManagerRegistry::class)
2015-03-28 21:43:49 +01:00
->disableOriginalConstructor()
->getMock();
$registry->expects($this->once())
->method('getManagers')
2019-05-10 15:49:39 +02:00
->willReturn(['default' => null]);
2015-03-28 21:43:49 +01:00
$registry->expects($this->once())
->method('getManagerForClass')
->with('superclass')
2019-05-10 15:49:39 +02:00
->willReturn($em);
2015-03-28 21:43:49 +01:00
$params = new ParamConverter(['class' => 'superclass']);
$converter = new UsernameFeedTokenConverter($registry);
2015-03-28 21:43:49 +01:00
$this->assertFalse($converter->supports($params));
}
public function testSupportsWithGoodClass()
{
2022-09-01 20:54:56 +02:00
$meta = $this->getMockBuilder(ClassMetadata::class)
2015-03-28 21:43:49 +01:00
->disableOriginalConstructor()
->getMock();
$meta->expects($this->once())
->method('getName')
2022-09-01 20:54:56 +02:00
->willReturn(User::class);
2015-03-28 21:43:49 +01:00
2022-09-01 20:54:56 +02:00
$em = $this->getMockBuilder(ObjectManager::class)
2015-03-28 21:43:49 +01:00
->disableOriginalConstructor()
->getMock();
$em->expects($this->once())
->method('getClassMetadata')
2022-08-25 22:25:41 +02:00
->with(User::class)
2019-05-10 15:49:39 +02:00
->willReturn($meta);
2015-03-28 21:43:49 +01:00
2022-09-01 20:54:56 +02:00
$registry = $this->getMockBuilder(ManagerRegistry::class)
2015-03-28 21:43:49 +01:00
->disableOriginalConstructor()
->getMock();
$registry->expects($this->once())
->method('getManagers')
2019-05-10 15:49:39 +02:00
->willReturn(['default' => null]);
2015-03-28 21:43:49 +01:00
$registry->expects($this->once())
->method('getManagerForClass')
2022-08-25 22:25:41 +02:00
->with(User::class)
2019-05-10 15:49:39 +02:00
->willReturn($em);
2015-03-28 21:43:49 +01:00
2022-08-25 22:25:41 +02:00
$params = new ParamConverter(['class' => User::class]);
$converter = new UsernameFeedTokenConverter($registry);
2015-03-28 21:43:49 +01:00
$this->assertTrue($converter->supports($params));
}
public function testApplyEmptyRequest()
{
$params = new ParamConverter([]);
$converter = new UsernameFeedTokenConverter();
2015-03-28 21:43:49 +01:00
$res = $converter->apply(new Request(), $params);
$this->assertFalse($res);
2015-03-28 21:43:49 +01:00
}
public function testApplyUserNotFound()
{
2022-08-28 16:59:43 +02:00
$this->expectException(NotFoundHttpException::class);
2020-06-15 13:37:50 +02:00
$this->expectExceptionMessage('User not found');
2022-09-01 20:54:56 +02:00
$repo = $this->getMockBuilder(UserRepository::class)
2015-03-28 21:43:49 +01:00
->disableOriginalConstructor()
->getMock();
$repo->expects($this->once())
->method('findOneByUsernameAndFeedToken')
2015-03-28 21:43:49 +01:00
->with('test', 'test')
2019-05-10 15:49:39 +02:00
->willReturn(null);
2015-03-28 21:43:49 +01:00
2022-09-01 20:54:56 +02:00
$em = $this->getMockBuilder(ObjectManager::class)
2015-03-28 21:43:49 +01:00
->disableOriginalConstructor()
->getMock();
$em->expects($this->once())
->method('getRepository')
2022-08-25 22:25:41 +02:00
->with(User::class)
2019-05-10 15:49:39 +02:00
->willReturn($repo);
2015-03-28 21:43:49 +01:00
2022-09-01 20:54:56 +02:00
$registry = $this->getMockBuilder(ManagerRegistry::class)
2015-03-28 21:43:49 +01:00
->disableOriginalConstructor()
->getMock();
$registry->expects($this->once())
->method('getManagerForClass')
2022-08-25 22:25:41 +02:00
->with(User::class)
2019-05-10 15:49:39 +02:00
->willReturn($em);
2015-03-28 21:43:49 +01:00
2022-08-25 22:25:41 +02:00
$params = new ParamConverter(['class' => User::class]);
$converter = new UsernameFeedTokenConverter($registry);
$request = new Request([], [], ['username' => 'test', 'token' => 'test']);
2015-03-28 21:43:49 +01:00
$converter->apply($request, $params);
}
public function testApplyUserFound()
{
$user = new User();
2022-09-01 20:54:56 +02:00
$repo = $this->getMockBuilder(UserRepository::class)
2015-03-28 21:43:49 +01:00
->disableOriginalConstructor()
->getMock();
$repo->expects($this->once())
->method('findOneByUsernameAndFeedtoken')
2015-03-28 21:43:49 +01:00
->with('test', 'test')
2019-05-10 15:49:39 +02:00
->willReturn($user);
2015-03-28 21:43:49 +01:00
2022-09-01 20:54:56 +02:00
$em = $this->getMockBuilder(ObjectManager::class)
2015-03-28 21:43:49 +01:00
->disableOriginalConstructor()
->getMock();
$em->expects($this->once())
->method('getRepository')
2022-08-25 22:25:41 +02:00
->with(User::class)
2019-05-10 15:49:39 +02:00
->willReturn($repo);
2015-03-28 21:43:49 +01:00
2022-09-01 20:54:56 +02:00
$registry = $this->getMockBuilder(ManagerRegistry::class)
2015-03-28 21:43:49 +01:00
->disableOriginalConstructor()
->getMock();
$registry->expects($this->once())
->method('getManagerForClass')
2022-08-25 22:25:41 +02:00
->with(User::class)
2019-05-10 15:49:39 +02:00
->willReturn($em);
2015-03-28 21:43:49 +01:00
2022-08-25 22:25:41 +02:00
$params = new ParamConverter(['class' => User::class, 'name' => 'user']);
$converter = new UsernameFeedTokenConverter($registry);
$request = new Request([], [], ['username' => 'test', 'token' => 'test']);
2015-03-28 21:43:49 +01:00
$converter->apply($request, $params);
2017-07-01 09:52:38 +02:00
$this->assertSame($user, $request->attributes->get('user'));
2015-03-28 21:43:49 +01:00
}
}