diff options
author | Nicolas Lœuillet <nicolas@loeuillet.org> | 2016-01-02 12:46:52 +0100 |
---|---|---|
committer | Nicolas Lœuillet <nicolas@loeuillet.org> | 2016-01-02 12:46:52 +0100 |
commit | dad1c546a521159ca65a5a7649651d37728f0e55 (patch) | |
tree | f1d59eb83b45adb83bb21726374133a399d3c740 /src/Wallabag/ApiBundle | |
parent | 5432f6150939af6e7d2e8bf0faea0576491aaed0 (diff) | |
parent | 6be9750155fa731d75898b4973a126a090345c2d (diff) | |
download | wallabag-dad1c546a521159ca65a5a7649651d37728f0e55.tar.gz wallabag-dad1c546a521159ca65a5a7649651d37728f0e55.tar.zst wallabag-dad1c546a521159ca65a5a7649651d37728f0e55.zip |
Merge pull request #1545 from wallabag/v2-user-tag
v2 – Remove user reference in tag
Diffstat (limited to 'src/Wallabag/ApiBundle')
3 files changed, 29 insertions, 13 deletions
diff --git a/src/Wallabag/ApiBundle/Controller/WallabagRestController.php b/src/Wallabag/ApiBundle/Controller/WallabagRestController.php index 74bfe4dc..459c4172 100644 --- a/src/Wallabag/ApiBundle/Controller/WallabagRestController.php +++ b/src/Wallabag/ApiBundle/Controller/WallabagRestController.php | |||
@@ -27,7 +27,7 @@ class WallabagRestController extends FOSRestController | |||
27 | ->findOneByLabel($label); | 27 | ->findOneByLabel($label); |
28 | 28 | ||
29 | if (is_null($tagEntity)) { | 29 | if (is_null($tagEntity)) { |
30 | $tagEntity = new Tag($this->getUser()); | 30 | $tagEntity = new Tag(); |
31 | $tagEntity->setLabel($label); | 31 | $tagEntity->setLabel($label); |
32 | } | 32 | } |
33 | 33 | ||
@@ -74,8 +74,7 @@ class WallabagRestController extends FOSRestController | |||
74 | $perPage = (int) $request->query->get('perPage', 30); | 74 | $perPage = (int) $request->query->get('perPage', 30); |
75 | $tags = $request->query->get('tags', []); | 75 | $tags = $request->query->get('tags', []); |
76 | 76 | ||
77 | $pager = $this | 77 | $pager = $this->getDoctrine() |
78 | ->getDoctrine() | ||
79 | ->getRepository('WallabagCoreBundle:Entry') | 78 | ->getRepository('WallabagCoreBundle:Entry') |
80 | ->findEntries($this->getUser()->getId(), $isArchived, $isStarred, $sort, $order); | 79 | ->findEntries($this->getUser()->getId(), $isArchived, $isStarred, $sort, $order); |
81 | 80 | ||
@@ -175,8 +174,8 @@ class WallabagRestController extends FOSRestController | |||
175 | $this->validateUserAccess($entry->getUser()->getId()); | 174 | $this->validateUserAccess($entry->getUser()->getId()); |
176 | 175 | ||
177 | $title = $request->request->get('title'); | 176 | $title = $request->request->get('title'); |
178 | $isArchived = $request->request->get('is_archived'); | 177 | $isArchived = $request->request->get('archive'); |
179 | $isStarred = $request->request->get('is_starred'); | 178 | $isStarred = $request->request->get('star'); |
180 | 179 | ||
181 | if (!is_null($title)) { | 180 | if (!is_null($title)) { |
182 | $entry->setTitle($title); | 181 | $entry->setTitle($title); |
@@ -311,7 +310,12 @@ class WallabagRestController extends FOSRestController | |||
311 | public function getTagsAction() | 310 | public function getTagsAction() |
312 | { | 311 | { |
313 | $this->validateAuthentication(); | 312 | $this->validateAuthentication(); |
314 | $json = $this->get('serializer')->serialize($this->getUser()->getTags(), 'json'); | 313 | |
314 | $tags = $this->getDoctrine() | ||
315 | ->getRepository('WallabagCoreBundle:Tag') | ||
316 | ->findAllTags($this->getUser()->getId()); | ||
317 | |||
318 | $json = $this->get('serializer')->serialize($tags, 'json'); | ||
315 | 319 | ||
316 | return $this->renderJsonResponse($json); | 320 | return $this->renderJsonResponse($json); |
317 | } | 321 | } |
@@ -328,11 +332,10 @@ class WallabagRestController extends FOSRestController | |||
328 | public function deleteTagAction(Tag $tag) | 332 | public function deleteTagAction(Tag $tag) |
329 | { | 333 | { |
330 | $this->validateAuthentication(); | 334 | $this->validateAuthentication(); |
331 | $this->validateUserAccess($tag->getUser()->getId()); | ||
332 | 335 | ||
333 | $em = $this->getDoctrine()->getManager(); | 336 | $this->getDoctrine() |
334 | $em->remove($tag); | 337 | ->getRepository('WallabagCoreBundle:Entry') |
335 | $em->flush(); | 338 | ->removeTag($this->getUser()->getId(), $tag); |
336 | 339 | ||
337 | $json = $this->get('serializer')->serialize($tag, 'json'); | 340 | $json = $this->get('serializer')->serialize($tag, 'json'); |
338 | 341 | ||
diff --git a/src/Wallabag/ApiBundle/Tests/Controller/WallabagRestControllerTest.php b/src/Wallabag/ApiBundle/Tests/Controller/WallabagRestControllerTest.php index bdd36e0c..22894a77 100644 --- a/src/Wallabag/ApiBundle/Tests/Controller/WallabagRestControllerTest.php +++ b/src/Wallabag/ApiBundle/Tests/Controller/WallabagRestControllerTest.php | |||
@@ -208,7 +208,7 @@ class WallabagRestControllerTest extends WallabagApiTestCase | |||
208 | 208 | ||
209 | $tags = array(); | 209 | $tags = array(); |
210 | foreach ($entry->getTags() as $tag) { | 210 | foreach ($entry->getTags() as $tag) { |
211 | $tags[] = array('id' => $tag->getId(), 'label' => $tag->getLabel()); | 211 | $tags[] = array('id' => $tag->getId(), 'label' => $tag->getLabel(), 'slug' => $tag->getSlug()); |
212 | } | 212 | } |
213 | 213 | ||
214 | $this->client->request('GET', '/api/entries/'.$entry->getId().'/tags'); | 214 | $this->client->request('GET', '/api/entries/'.$entry->getId().'/tags'); |
@@ -309,5 +309,13 @@ class WallabagRestControllerTest extends WallabagApiTestCase | |||
309 | 309 | ||
310 | $this->assertArrayHasKey('label', $content); | 310 | $this->assertArrayHasKey('label', $content); |
311 | $this->assertEquals($tag['label'], $content['label']); | 311 | $this->assertEquals($tag['label'], $content['label']); |
312 | $this->assertEquals($tag['slug'], $content['slug']); | ||
313 | |||
314 | $entries = $entry = $this->client->getContainer() | ||
315 | ->get('doctrine.orm.entity_manager') | ||
316 | ->getRepository('WallabagCoreBundle:Entry') | ||
317 | ->findAllByTagId($this->user->getId(), $tag['id']); | ||
318 | |||
319 | $this->assertCount(0, $entries); | ||
312 | } | 320 | } |
313 | } | 321 | } |
diff --git a/src/Wallabag/ApiBundle/Tests/WallabagApiTestCase.php b/src/Wallabag/ApiBundle/Tests/WallabagApiTestCase.php index 8a57fea2..a415c749 100644 --- a/src/Wallabag/ApiBundle/Tests/WallabagApiTestCase.php +++ b/src/Wallabag/ApiBundle/Tests/WallabagApiTestCase.php | |||
@@ -12,6 +12,11 @@ abstract class WallabagApiTestCase extends WebTestCase | |||
12 | */ | 12 | */ |
13 | protected $client = null; | 13 | protected $client = null; |
14 | 14 | ||
15 | /** | ||
16 | * @var \FOS\UserBundle\Model\UserInterface | ||
17 | */ | ||
18 | protected $user; | ||
19 | |||
15 | public function setUp() | 20 | public function setUp() |
16 | { | 21 | { |
17 | $this->client = $this->createAuthorizedClient(); | 22 | $this->client = $this->createAuthorizedClient(); |
@@ -31,8 +36,8 @@ abstract class WallabagApiTestCase extends WebTestCase | |||
31 | $loginManager = $container->get('fos_user.security.login_manager'); | 36 | $loginManager = $container->get('fos_user.security.login_manager'); |
32 | $firewallName = $container->getParameter('fos_user.firewall_name'); | 37 | $firewallName = $container->getParameter('fos_user.firewall_name'); |
33 | 38 | ||
34 | $user = $userManager->findUserBy(array('username' => 'admin')); | 39 | $this->user = $userManager->findUserBy(array('username' => 'admin')); |
35 | $loginManager->loginUser($firewallName, $user); | 40 | $loginManager->loginUser($firewallName, $this->user); |
36 | 41 | ||
37 | // save the login token into the session and put it in a cookie | 42 | // save the login token into the session and put it in a cookie |
38 | $container->get('session')->set('_security_'.$firewallName, serialize($container->get('security.token_storage')->getToken())); | 43 | $container->get('session')->set('_security_'.$firewallName, serialize($container->get('security.token_storage')->getToken())); |