class TagRestControllerTest extends WallabagApiTestCase
{
+ private $otherUserTagLabel = 'bob';
+
public function testGetUserTags()
{
$this->client->request('GET', '/api/tags.json');
- $this->assertEquals(200, $this->client->getResponse()->getStatusCode());
+ $this->assertSame(200, $this->client->getResponse()->getStatusCode());
$content = json_decode($this->client->getResponse()->getContent(), true);
$this->assertArrayHasKey('id', $content[0]);
$this->assertArrayHasKey('label', $content[0]);
+ $tagLabels = array_map(function ($i) {
+ return $i['label'];
+ }, $content);
+
+ $this->assertNotContains($this->otherUserTagLabel, $tagLabels, 'There is a possible tag leak');
+
return end($content);
}
public function testDeleteUserTag()
{
+ $em = $this->client->getContainer()->get('doctrine.orm.entity_manager');
+ $entry = $this->client->getContainer()
+ ->get('doctrine.orm.entity_manager')
+ ->getRepository('WallabagCoreBundle:Entry')
+ ->findOneWithTags($this->user->getId());
+
+ $entry = $entry[0];
+
$tagLabel = 'tagtest';
$tag = new Tag();
$tag->setLabel($tagLabel);
-
- $em = $this->client->getContainer()->get('doctrine.orm.entity_manager');
$em->persist($tag);
+
+ $entry->addTag($tag);
+
+ $em->persist($entry);
$em->flush();
$em->clear();
- $this->client->request('DELETE', '/api/tags/'.$tag->getId().'.json');
+ $this->client->request('DELETE', '/api/tags/' . $tag->getId() . '.json');
- $this->assertEquals(200, $this->client->getResponse()->getStatusCode());
+ $this->assertSame(200, $this->client->getResponse()->getStatusCode());
$content = json_decode($this->client->getResponse()->getContent(), true);
$this->assertArrayHasKey('label', $content);
- $this->assertEquals($tag->getLabel(), $content['label']);
- $this->assertEquals($tag->getSlug(), $content['slug']);
+ $this->assertSame($tag->getLabel(), $content['label']);
+ $this->assertSame($tag->getSlug(), $content['slug']);
$entries = $em->getRepository('WallabagCoreBundle:Entry')
->findAllByTagId($this->user->getId(), $tag->getId());
$tag = $em->getRepository('WallabagCoreBundle:Tag')->findOneByLabel($tagLabel);
- $this->assertNull($tag, $tagLabel.' was removed because it begun an orphan tag');
+ $this->assertNull($tag, $tagLabel . ' was removed because it begun an orphan tag');
+ }
+
+ public function testDeleteOtherUserTag()
+ {
+ $em = $this->client->getContainer()->get('doctrine.orm.entity_manager');
+ $tag = $em->getRepository('WallabagCoreBundle:Tag')->findOneByLabel($this->otherUserTagLabel);
+
+ $this->client->request('DELETE', '/api/tags/' . $tag->getId() . '.json');
+
+ $this->assertSame(404, $this->client->getResponse()->getStatusCode());
}
public function dataForDeletingTagByLabel()
$em->flush();
if ($useQueryString) {
- $this->client->request('DELETE', '/api/tag/label.json?tag='.$tag->getLabel());
+ $this->client->request('DELETE', '/api/tag/label.json?tag=' . $tag->getLabel());
} else {
$this->client->request('DELETE', '/api/tag/label.json', ['tag' => $tag->getLabel()]);
}
- $this->assertEquals(200, $this->client->getResponse()->getStatusCode());
+ $this->assertSame(200, $this->client->getResponse()->getStatusCode());
$content = json_decode($this->client->getResponse()->getContent(), true);
$this->assertArrayHasKey('label', $content);
- $this->assertEquals($tag->getLabel(), $content['label']);
- $this->assertEquals($tag->getSlug(), $content['slug']);
+ $this->assertSame($tag->getLabel(), $content['label']);
+ $this->assertSame($tag->getSlug(), $content['slug']);
$entries = $this->client->getContainer()
->get('doctrine.orm.entity_manager')
{
$this->client->request('DELETE', '/api/tag/label.json', ['tag' => 'does not exist']);
- $this->assertEquals(404, $this->client->getResponse()->getStatusCode());
+ $this->assertSame(404, $this->client->getResponse()->getStatusCode());
+ }
+
+ public function testDeleteTagByLabelOtherUser()
+ {
+ $this->client->request('DELETE', '/api/tag/label.json', ['tag' => $this->otherUserTagLabel]);
+
+ $this->assertSame(404, $this->client->getResponse()->getStatusCode());
}
/**
$em->flush();
if ($useQueryString) {
- $this->client->request('DELETE', '/api/tags/label.json?tags='.$tag->getLabel().','.$tag2->getLabel());
+ $this->client->request('DELETE', '/api/tags/label.json?tags=' . $tag->getLabel() . ',' . $tag2->getLabel());
} else {
- $this->client->request('DELETE', '/api/tags/label.json', ['tags' => $tag->getLabel().','.$tag2->getLabel()]);
+ $this->client->request('DELETE', '/api/tags/label.json', ['tags' => $tag->getLabel() . ',' . $tag2->getLabel()]);
}
- $this->assertEquals(200, $this->client->getResponse()->getStatusCode());
+ $this->assertSame(200, $this->client->getResponse()->getStatusCode());
$content = json_decode($this->client->getResponse()->getContent(), true);
$this->assertCount(2, $content);
$this->assertArrayHasKey('label', $content[0]);
- $this->assertEquals($tag->getLabel(), $content[0]['label']);
- $this->assertEquals($tag->getSlug(), $content[0]['slug']);
+ $this->assertSame($tag->getLabel(), $content[0]['label']);
+ $this->assertSame($tag->getSlug(), $content[0]['slug']);
$this->assertArrayHasKey('label', $content[1]);
- $this->assertEquals($tag2->getLabel(), $content[1]['label']);
- $this->assertEquals($tag2->getSlug(), $content[1]['slug']);
+ $this->assertSame($tag2->getLabel(), $content[1]['label']);
+ $this->assertSame($tag2->getSlug(), $content[1]['slug']);
$entries = $this->client->getContainer()
->get('doctrine.orm.entity_manager')
{
$this->client->request('DELETE', '/api/tags/label.json', ['tags' => 'does not exist']);
- $this->assertEquals(404, $this->client->getResponse()->getStatusCode());
+ $this->assertSame(404, $this->client->getResponse()->getStatusCode());
+ }
+
+ public function testDeleteTagsByLabelOtherUser()
+ {
+ $this->client->request('DELETE', '/api/tags/label.json', ['tags' => $this->otherUserTagLabel]);
+
+ $this->assertSame(404, $this->client->getResponse()->getStatusCode());
}
}