);
}
+ public function testGetEntriesWithFullOptions()
+ {
+ $this->client->request('GET', '/api/entries', [
+ 'archive' => 1,
+ 'starred' => 1,
+ 'sort' => 'updated',
+ 'order' => 'asc',
+ 'page' => 1,
+ 'perPage' => 2,
+ 'tags' => 'foo',
+ 'since' => 1443274283,
+ ]);
+
+ $this->assertEquals(200, $this->client->getResponse()->getStatusCode());
+
+ $content = json_decode($this->client->getResponse()->getContent(), true);
+
+ $this->assertGreaterThanOrEqual(1, count($content));
+ $this->assertArrayHasKey('items', $content['_embedded']);
+ $this->assertGreaterThanOrEqual(0, $content['total']);
+ $this->assertEquals(1, $content['page']);
+ $this->assertEquals(2, $content['limit']);
+ $this->assertGreaterThanOrEqual(1, $content['pages']);
+
+ $this->assertArrayHasKey('_links', $content);
+ $this->assertArrayHasKey('self', $content['_links']);
+ $this->assertArrayHasKey('first', $content['_links']);
+ $this->assertArrayHasKey('last', $content['_links']);
+
+ foreach (['self', 'first', 'last'] as $link) {
+ $this->assertArrayHasKey('href', $content['_links'][$link]);
+ $this->assertContains('archive=1', $content['_links'][$link]['href']);
+ $this->assertContains('starred=1', $content['_links'][$link]['href']);
+ $this->assertContains('sort=updated', $content['_links'][$link]['href']);
+ $this->assertContains('order=asc', $content['_links'][$link]['href']);
+ $this->assertContains('tags=foo', $content['_links'][$link]['href']);
+ $this->assertContains('since=1443274283', $content['_links'][$link]['href']);
+ }
+
+ $this->assertTrue(
+ $this->client->getResponse()->headers->contains(
+ 'Content-Type',
+ 'application/json'
+ )
+ );
+ }
+
public function testGetStarredEntries()
{
- $this->client->request('GET', '/api/entries', ['star' => 1, 'sort' => 'updated']);
+ $this->client->request('GET', '/api/entries', ['starred' => 1, 'sort' => 'updated']);
$this->assertEquals(200, $this->client->getResponse()->getStatusCode());
$this->assertEquals(1, $content['page']);
$this->assertGreaterThanOrEqual(1, $content['pages']);
+ $this->assertArrayHasKey('_links', $content);
+ $this->assertArrayHasKey('self', $content['_links']);
+ $this->assertArrayHasKey('first', $content['_links']);
+ $this->assertArrayHasKey('last', $content['_links']);
+
+ foreach (['self', 'first', 'last'] as $link) {
+ $this->assertArrayHasKey('href', $content['_links'][$link]);
+ $this->assertContains('starred=1', $content['_links'][$link]['href']);
+ $this->assertContains('sort=updated', $content['_links'][$link]['href']);
+ }
+
$this->assertTrue(
$this->client->getResponse()->headers->contains(
'Content-Type',
$this->assertEquals(1, $content['page']);
$this->assertGreaterThanOrEqual(1, $content['pages']);
+ $this->assertArrayHasKey('_links', $content);
+ $this->assertArrayHasKey('self', $content['_links']);
+ $this->assertArrayHasKey('first', $content['_links']);
+ $this->assertArrayHasKey('last', $content['_links']);
+
+ foreach (['self', 'first', 'last'] as $link) {
+ $this->assertArrayHasKey('href', $content['_links'][$link]);
+ $this->assertContains('archive=1', $content['_links'][$link]['href']);
+ }
+
$this->assertTrue(
$this->client->getResponse()->headers->contains(
'Content-Type',
$this->assertEquals(1, $content['page']);
$this->assertGreaterThanOrEqual(1, $content['pages']);
+ $this->assertArrayHasKey('_links', $content);
+ $this->assertArrayHasKey('self', $content['_links']);
+ $this->assertArrayHasKey('first', $content['_links']);
+ $this->assertArrayHasKey('last', $content['_links']);
+
+ foreach (['self', 'first', 'last'] as $link) {
+ $this->assertArrayHasKey('href', $content['_links'][$link]);
+ $this->assertContains('tags='.urlencode('foo,bar'), $content['_links'][$link]['href']);
+ }
+
$this->assertTrue(
$this->client->getResponse()->headers->contains(
'Content-Type',
public function testGetDatedEntries()
{
- $this->client->request('GET', '/api/entries', ['since' => 1]);
+ $this->client->request('GET', '/api/entries', ['since' => 1443274283]);
$this->assertEquals(200, $this->client->getResponse()->getStatusCode());
$this->assertEquals(1, $content['page']);
$this->assertGreaterThanOrEqual(1, $content['pages']);
+ $this->assertArrayHasKey('_links', $content);
+ $this->assertArrayHasKey('self', $content['_links']);
+ $this->assertArrayHasKey('first', $content['_links']);
+ $this->assertArrayHasKey('last', $content['_links']);
+
+ foreach (['self', 'first', 'last'] as $link) {
+ $this->assertArrayHasKey('href', $content['_links'][$link]);
+ $this->assertContains('since=1443274283', $content['_links'][$link]['href']);
+ }
+
$this->assertTrue(
$this->client->getResponse()->headers->contains(
'Content-Type',
$this->assertEquals(1, $content['page']);
$this->assertEquals(1, $content['pages']);
+ $this->assertArrayHasKey('_links', $content);
+ $this->assertArrayHasKey('self', $content['_links']);
+ $this->assertArrayHasKey('first', $content['_links']);
+ $this->assertArrayHasKey('last', $content['_links']);
+
+ foreach (['self', 'first', 'last'] as $link) {
+ $this->assertArrayHasKey('href', $content['_links'][$link]);
+ $this->assertContains('since='.($future->getTimestamp() + 1000), $content['_links'][$link]['href']);
+ }
+
$this->assertTrue(
$this->client->getResponse()->headers->contains(
'Content-Type',
*/
public function testDeleteUserTag($tag)
{
+ $tagName = $tag['label'];
+
$this->client->request('DELETE', '/api/tags/'.$tag['id'].'.json');
$this->assertEquals(200, $this->client->getResponse()->getStatusCode());
->findAllByTagId($this->user->getId(), $tag['id']);
$this->assertCount(0, $entries);
+
+ $tag = $this->client->getContainer()
+ ->get('doctrine.orm.entity_manager')
+ ->getRepository('WallabagCoreBundle:Tag')
+ ->findOneByLabel($tagName);
+
+ $this->assertNull($tag, $tagName.' was removed because it begun an orphan tag');
}
public function testDeleteTagByLabel()
$this->assertEquals(true, $content['is_starred']);
}
+
+ public function testGetEntriesExists()
+ {
+ $this->client->request('GET', '/api/entries/exists?url=http://0.0.0.0/entry2');
+
+ $this->assertEquals(200, $this->client->getResponse()->getStatusCode());
+
+ $content = json_decode($this->client->getResponse()->getContent(), true);
+
+ $this->assertEquals(true, $content['exists']);
+ }
+
+ public function testGetEntriesExistsWithManyUrls()
+ {
+ $url1 = 'http://0.0.0.0/entry2';
+ $url2 = 'http://0.0.0.0/entry10';
+ $this->client->request('GET', '/api/entries/exists?urls[]='.$url1.'&urls[]='.$url2);
+
+ $this->assertEquals(200, $this->client->getResponse()->getStatusCode());
+
+ $content = json_decode($this->client->getResponse()->getContent(), true);
+
+ $this->assertArrayHasKey($url1, $content);
+ $this->assertArrayHasKey($url2, $content);
+ $this->assertEquals(true, $content[$url1]);
+ $this->assertEquals(false, $content[$url2]);
+ }
+
+ public function testGetEntriesExistsWhichDoesNotExists()
+ {
+ $this->client->request('GET', '/api/entries/exists?url=http://google.com/entry2');
+
+ $this->assertEquals(200, $this->client->getResponse()->getStatusCode());
+
+ $content = json_decode($this->client->getResponse()->getContent(), true);
+
+ $this->assertEquals(false, $content['exists']);
+ }
+
+ public function testGetEntriesExistsWithNoUrl()
+ {
+ $this->client->request('GET', '/api/entries/exists?url=');
+
+ $this->assertEquals(403, $this->client->getResponse()->getStatusCode());
+ }
}