api/entries: add parameter detail to exclude or include content in response

detail=metadata will nullify the content field of entries in order to
make smaller responses.

detail=full keeps the former behavior, it sends the content of entries.
It's the default, for backward compatibility.

Fixes #2817

Signed-off-by: Kevin Decherf <kevin@kdecherf.com>
This commit is contained in:
Kevin Decherf
2019-05-12 00:00:00 +02:00
parent de1162b91a
commit 2c290747cb
3 changed files with 42 additions and 2 deletions

View File

@ -133,6 +133,27 @@ class EntryRestControllerTest extends WallabagApiTestCase
$this->assertSame(1, $content['page']);
$this->assertGreaterThanOrEqual(1, $content['pages']);
$this->assertNotNull($content['_embedded']['items'][0]['content']);
$this->assertSame('application/json', $this->client->getResponse()->headers->get('Content-Type'));
}
public function testGetEntriesDetailMetadata()
{
$this->client->request('GET', '/api/entries?detail=metadata');
$this->assertSame(200, $this->client->getResponse()->getStatusCode());
$content = json_decode($this->client->getResponse()->getContent(), true);
$this->assertGreaterThanOrEqual(1, \count($content));
$this->assertNotEmpty($content['_embedded']['items']);
$this->assertGreaterThanOrEqual(1, $content['total']);
$this->assertSame(1, $content['page']);
$this->assertGreaterThanOrEqual(1, $content['pages']);
$this->assertNull($content['_embedded']['items'][0]['content']);
$this->assertSame('application/json', $this->client->getResponse()->headers->get('Content-Type'));
}