3 namespace Wallabag\CoreBundle\Tests\Command
;
5 use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase
;
6 use Wallabag\CoreBundle\ParamConverter\UsernameRssTokenConverter
;
7 use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter
;
8 use Symfony\Component\HttpFoundation\Request
;
9 use Wallabag\CoreBundle\Entity\User
;
11 class UsernameRssTokenConverterTest
extends KernelTestCase
13 public function testSupportsWithNoRegistry()
15 $params = new ParamConverter(array());
16 $converter = new UsernameRssTokenConverter();
18 $this->assertFalse($converter->supports($params));
21 public function testSupportsWithNoRegistryManagers()
23 $registry = $this->getMockBuilder('Doctrine\Common\Persistence\ManagerRegistry')
24 ->disableOriginalConstructor()
27 $registry->expects($this->once())
28 ->method('getManagers')
29 ->will($this->returnValue(array()));
31 $params = new ParamConverter(array());
32 $converter = new UsernameRssTokenConverter($registry);
34 $this->assertFalse($converter->supports($params));
37 public function testSupportsWithNoConfigurationClass()
39 $registry = $this->getMockBuilder('Doctrine\Common\Persistence\ManagerRegistry')
40 ->disableOriginalConstructor()
43 $registry->expects($this->once())
44 ->method('getManagers')
45 ->will($this->returnValue(array('default' => null)));
47 $params = new ParamConverter(array());
48 $converter = new UsernameRssTokenConverter($registry);
50 $this->assertFalse($converter->supports($params));
53 public function testSupportsWithNotTheGoodClass()
55 $meta = $this->getMockBuilder('Doctrine\Common\Persistence\Mapping\ClassMetadata')
56 ->disableOriginalConstructor()
59 $meta->expects($this->once())
61 ->will($this->returnValue('nothingrelated'));
63 $em = $this->getMockBuilder('Doctrine\Common\Persistence\ObjectManager')
64 ->disableOriginalConstructor()
67 $em->expects($this->once())
68 ->method('getClassMetadata')
70 ->will($this->returnValue($meta));
72 $registry = $this->getMockBuilder('Doctrine\Common\Persistence\ManagerRegistry')
73 ->disableOriginalConstructor()
76 $registry->expects($this->once())
77 ->method('getManagers')
78 ->will($this->returnValue(array('default' => null)));
80 $registry->expects($this->once())
81 ->method('getManagerForClass')
83 ->will($this->returnValue($em));
85 $params = new ParamConverter(array('class' => 'superclass'));
86 $converter = new UsernameRssTokenConverter($registry);
88 $this->assertFalse($converter->supports($params));
91 public function testSupportsWithGoodClass()
93 $meta = $this->getMockBuilder('Doctrine\Common\Persistence\Mapping\ClassMetadata')
94 ->disableOriginalConstructor()
97 $meta->expects($this->once())
99 ->will($this->returnValue('Wallabag\CoreBundle\Entity\User'));
101 $em = $this->getMockBuilder('Doctrine\Common\Persistence\ObjectManager')
102 ->disableOriginalConstructor()
105 $em->expects($this->once())
106 ->method('getClassMetadata')
107 ->with('WallabagCoreBundle:User')
108 ->will($this->returnValue($meta));
110 $registry = $this->getMockBuilder('Doctrine\Common\Persistence\ManagerRegistry')
111 ->disableOriginalConstructor()
114 $registry->expects($this->once())
115 ->method('getManagers')
116 ->will($this->returnValue(array('default' => null)));
118 $registry->expects($this->once())
119 ->method('getManagerForClass')
120 ->with('WallabagCoreBundle:User')
121 ->will($this->returnValue($em));
123 $params = new ParamConverter(array('class' => 'WallabagCoreBundle:User'));
124 $converter = new UsernameRssTokenConverter($registry);
126 $this->assertTrue($converter->supports($params));
130 * @expectedException InvalidArgumentException
131 * @expectedExceptionMessage Route attribute is missing
133 public function testApplyEmptyRequest()
135 $params = new ParamConverter(array());
136 $converter = new UsernameRssTokenConverter();
138 $converter->apply(new Request(), $params);
142 * @expectedException Symfony\Component\HttpKernel\Exception\NotFoundHttpException
143 * @expectedExceptionMessage User not found
145 public function testApplyUserNotFound()
147 $repo = $this->getMockBuilder('Wallabag\CoreBundle\Repository\UserRepository')
148 ->disableOriginalConstructor()
151 $repo->expects($this->once())
152 ->method('findOneByUsernameAndRsstoken')
153 ->with('test', 'test')
154 ->will($this->returnValue(null));
156 $em = $this->getMockBuilder('Doctrine\Common\Persistence\ObjectManager')
157 ->disableOriginalConstructor()
160 $em->expects($this->once())
161 ->method('getRepository')
162 ->with('WallabagCoreBundle:User')
163 ->will($this->returnValue($repo));
165 $registry = $this->getMockBuilder('Doctrine\Common\Persistence\ManagerRegistry')
166 ->disableOriginalConstructor()
169 $registry->expects($this->once())
170 ->method('getManagerForClass')
171 ->with('WallabagCoreBundle:User')
172 ->will($this->returnValue($em));
174 $params = new ParamConverter(array('class' => 'WallabagCoreBundle:User'));
175 $converter = new UsernameRssTokenConverter($registry);
176 $request = new Request(array(), array(), array('username' => 'test', 'token' => 'test'));
178 $converter->apply($request, $params);
181 public function testApplyUserFound()
185 $repo = $this->getMockBuilder('Wallabag\CoreBundle\Repository\UserRepository')
186 ->disableOriginalConstructor()
189 $repo->expects($this->once())
190 ->method('findOneByUsernameAndRsstoken')
191 ->with('test', 'test')
192 ->will($this->returnValue($user));
194 $em = $this->getMockBuilder('Doctrine\Common\Persistence\ObjectManager')
195 ->disableOriginalConstructor()
198 $em->expects($this->once())
199 ->method('getRepository')
200 ->with('WallabagCoreBundle:User')
201 ->will($this->returnValue($repo));
203 $registry = $this->getMockBuilder('Doctrine\Common\Persistence\ManagerRegistry')
204 ->disableOriginalConstructor()
207 $registry->expects($this->once())
208 ->method('getManagerForClass')
209 ->with('WallabagCoreBundle:User')
210 ->will($this->returnValue($em));
212 $params = new ParamConverter(array('class' => 'WallabagCoreBundle:User', 'name' => 'user'));
213 $converter = new UsernameRssTokenConverter($registry);
214 $request = new Request(array(), array(), array('username' => 'test', 'token' => 'test'));
216 $converter->apply($request, $params);
218 $this->assertEquals($user, $request->attributes
->get('user'));