3 namespace Wallabag\CoreBundle\Tests\Command
;
5 use Wallabag\CoreBundle\ParamConverter\UsernameRssTokenConverter
;
6 use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter
;
7 use Symfony\Component\HttpFoundation\Request
;
8 use Wallabag\UserBundle\Entity\User
;
10 class UsernameRssTokenConverterTest
extends \PHPUnit_Framework_TestCase
12 public function testSupportsWithNoRegistry()
14 $params = new ParamConverter(array());
15 $converter = new UsernameRssTokenConverter();
17 $this->assertFalse($converter->supports($params));
20 public function testSupportsWithNoRegistryManagers()
22 $registry = $this->getMockBuilder('Doctrine\Common\Persistence\ManagerRegistry')
23 ->disableOriginalConstructor()
26 $registry->expects($this->once())
27 ->method('getManagers')
28 ->will($this->returnValue(array()));
30 $params = new ParamConverter(array());
31 $converter = new UsernameRssTokenConverter($registry);
33 $this->assertFalse($converter->supports($params));
36 public function testSupportsWithNoConfigurationClass()
38 $registry = $this->getMockBuilder('Doctrine\Common\Persistence\ManagerRegistry')
39 ->disableOriginalConstructor()
42 $registry->expects($this->once())
43 ->method('getManagers')
44 ->will($this->returnValue(array('default' => null)));
46 $params = new ParamConverter(array());
47 $converter = new UsernameRssTokenConverter($registry);
49 $this->assertFalse($converter->supports($params));
52 public function testSupportsWithNotTheGoodClass()
54 $meta = $this->getMockBuilder('Doctrine\Common\Persistence\Mapping\ClassMetadata')
55 ->disableOriginalConstructor()
58 $meta->expects($this->once())
60 ->will($this->returnValue('nothingrelated'));
62 $em = $this->getMockBuilder('Doctrine\Common\Persistence\ObjectManager')
63 ->disableOriginalConstructor()
66 $em->expects($this->once())
67 ->method('getClassMetadata')
69 ->will($this->returnValue($meta));
71 $registry = $this->getMockBuilder('Doctrine\Common\Persistence\ManagerRegistry')
72 ->disableOriginalConstructor()
75 $registry->expects($this->once())
76 ->method('getManagers')
77 ->will($this->returnValue(array('default' => null)));
79 $registry->expects($this->once())
80 ->method('getManagerForClass')
82 ->will($this->returnValue($em));
84 $params = new ParamConverter(array('class' => 'superclass'));
85 $converter = new UsernameRssTokenConverter($registry);
87 $this->assertFalse($converter->supports($params));
90 public function testSupportsWithGoodClass()
92 $meta = $this->getMockBuilder('Doctrine\Common\Persistence\Mapping\ClassMetadata')
93 ->disableOriginalConstructor()
96 $meta->expects($this->once())
98 ->will($this->returnValue('Wallabag\UserBundle\Entity\User'));
100 $em = $this->getMockBuilder('Doctrine\Common\Persistence\ObjectManager')
101 ->disableOriginalConstructor()
104 $em->expects($this->once())
105 ->method('getClassMetadata')
106 ->with('WallabagUserBundle:User')
107 ->will($this->returnValue($meta));
109 $registry = $this->getMockBuilder('Doctrine\Common\Persistence\ManagerRegistry')
110 ->disableOriginalConstructor()
113 $registry->expects($this->once())
114 ->method('getManagers')
115 ->will($this->returnValue(array('default' => null)));
117 $registry->expects($this->once())
118 ->method('getManagerForClass')
119 ->with('WallabagUserBundle:User')
120 ->will($this->returnValue($em));
122 $params = new ParamConverter(array('class' => 'WallabagUserBundle:User'));
123 $converter = new UsernameRssTokenConverter($registry);
125 $this->assertTrue($converter->supports($params));
129 * @expectedException InvalidArgumentException
130 * @expectedExceptionMessage Route attribute is missing
132 public function testApplyEmptyRequest()
134 $params = new ParamConverter(array());
135 $converter = new UsernameRssTokenConverter();
137 $converter->apply(new Request(), $params);
141 * @expectedException Symfony\Component\HttpKernel\Exception\NotFoundHttpException
142 * @expectedExceptionMessage User not found
144 public function testApplyUserNotFound()
146 $repo = $this->getMockBuilder('Wallabag\UserBundle\Repository\UserRepository')
147 ->disableOriginalConstructor()
150 $repo->expects($this->once())
151 ->method('findOneByUsernameAndRsstoken')
152 ->with('test', 'test')
153 ->will($this->returnValue(null));
155 $em = $this->getMockBuilder('Doctrine\Common\Persistence\ObjectManager')
156 ->disableOriginalConstructor()
159 $em->expects($this->once())
160 ->method('getRepository')
161 ->with('WallabagUserBundle:User')
162 ->will($this->returnValue($repo));
164 $registry = $this->getMockBuilder('Doctrine\Common\Persistence\ManagerRegistry')
165 ->disableOriginalConstructor()
168 $registry->expects($this->once())
169 ->method('getManagerForClass')
170 ->with('WallabagUserBundle:User')
171 ->will($this->returnValue($em));
173 $params = new ParamConverter(array('class' => 'WallabagUserBundle:User'));
174 $converter = new UsernameRssTokenConverter($registry);
175 $request = new Request(array(), array(), array('username' => 'test', 'token' => 'test'));
177 $converter->apply($request, $params);
180 public function testApplyUserFound()
184 $repo = $this->getMockBuilder('Wallabag\UserBundle\Repository\UserRepository')
185 ->disableOriginalConstructor()
188 $repo->expects($this->once())
189 ->method('findOneByUsernameAndRsstoken')
190 ->with('test', 'test')
191 ->will($this->returnValue($user));
193 $em = $this->getMockBuilder('Doctrine\Common\Persistence\ObjectManager')
194 ->disableOriginalConstructor()
197 $em->expects($this->once())
198 ->method('getRepository')
199 ->with('WallabagUserBundle:User')
200 ->will($this->returnValue($repo));
202 $registry = $this->getMockBuilder('Doctrine\Common\Persistence\ManagerRegistry')
203 ->disableOriginalConstructor()
206 $registry->expects($this->once())
207 ->method('getManagerForClass')
208 ->with('WallabagUserBundle:User')
209 ->will($this->returnValue($em));
211 $params = new ParamConverter(array('class' => 'WallabagUserBundle:User', 'name' => 'user'));
212 $converter = new UsernameRssTokenConverter($registry);
213 $request = new Request(array(), array(), array('username' => 'test', 'token' => 'test'));
215 $converter->apply($request, $params);
217 $this->assertEquals($user, $request->attributes
->get('user'));