1
0
Fork 0
mirror of synced 2024-07-06 07:00:56 +12:00
appwrite/tests/unit/Utopia/ResponseTest.php

145 lines
4.7 KiB
PHP
Raw Normal View History

2020-12-30 23:54:11 +13:00
<?php
2022-08-01 22:22:04 +12:00
namespace Tests\Unit\Utopia;
2020-12-30 23:54:11 +13:00
2022-08-01 22:22:04 +12:00
use Exception;
2020-12-30 23:54:11 +13:00
use Appwrite\Utopia\Response;
2022-01-19 00:05:04 +13:00
use Appwrite\Utopia\Response\Filters\V11;
2020-12-30 23:54:11 +13:00
use PHPUnit\Framework\TestCase;
use Swoole\Http\Response as SwooleResponse;
2022-08-01 22:22:04 +12:00
use Utopia\Database\Document;
2020-12-30 23:54:11 +13:00
class ResponseTest extends TestCase
{
2022-08-01 22:22:04 +12:00
protected ?Response $response = null;
2020-12-30 23:54:11 +13:00
public function setUp(): void
{
2022-08-01 22:22:04 +12:00
$this->response = new Response(new SwooleResponse());
$this->response->setModel(new Single());
$this->response->setModel(new Lists());
$this->response->setModel(new Nested());
2020-12-30 23:54:11 +13:00
}
2022-08-01 22:22:04 +12:00
public function testSetFilter(): void
2020-12-30 23:54:11 +13:00
{
2022-08-01 22:22:04 +12:00
$this->assertEquals($this->response->hasFilter(), false);
$this->assertEquals($this->response->getFilter(), null);
2020-12-30 23:54:11 +13:00
2022-01-19 00:05:04 +13:00
$filter = new V11();
2022-08-01 22:22:04 +12:00
$this->response->setFilter($filter);
2022-05-24 02:54:50 +12:00
2022-08-01 22:22:04 +12:00
$this->assertEquals($this->response->hasFilter(), true);
$this->assertEquals($this->response->getFilter(), $filter);
}
public function testResponseModel(): void
{
$output = $this->response->output(new Document([
'string' => 'lorem ipsum',
'integer' => 123,
'boolean' => true,
'hidden' => 'secret',
]), 'single');
$this->assertArrayHasKey('string', $output);
$this->assertArrayHasKey('integer', $output);
$this->assertArrayHasKey('boolean', $output);
$this->assertArrayNotHasKey('hidden', $output);
}
public function testResponseModelRequired(): void
{
$output = $this->response->output(new Document([
'string' => 'lorem ipsum',
'integer' => 123,
'boolean' => true,
]), 'single');
$this->assertArrayHasKey('string', $output);
$this->assertArrayHasKey('integer', $output);
$this->assertArrayHasKey('boolean', $output);
$this->assertArrayHasKey('required', $output);
$this->assertEquals('default', $output['required']);
}
public function testResponseModelRequiredException(): void
{
$this->expectException(Exception::class);
$this->response->output(new Document([
'integer' => 123,
'boolean' => true,
]), 'single');
}
public function testResponseModelLists(): void
{
$output = $this->response->output(new Document([
'singles' => [
new Document([
'string' => 'lorem ipsum',
'integer' => 123,
'boolean' => true,
'hidden' => 'secret'
])
],
'hidden' => 'secret',
]), 'lists');
$this->assertArrayHasKey('singles', $output);
$this->assertArrayNotHasKey('hidden', $output);
$this->assertCount(1, $output['singles']);
$single = $output['singles'][0];
$this->assertArrayHasKey('string', $single);
$this->assertArrayHasKey('integer', $single);
$this->assertArrayHasKey('boolean', $single);
$this->assertArrayHasKey('required', $single);
$this->assertArrayNotHasKey('hidden', $single);
}
public function testResponseModelNested(): void
{
$output = $this->response->output(new Document([
'lists' => new Document([
'singles' => [
new Document([
'string' => 'lorem ipsum',
'integer' => 123,
'boolean' => true,
'hidden' => 'secret'
])
],
'hidden' => 'secret',
]),
'single' => new Document([
'string' => 'lorem ipsum',
'integer' => 123,
'boolean' => true,
'hidden' => 'secret'
]),
'hidden' => 'secret',
]), 'nested');
$this->assertArrayHasKey('lists', $output);
$this->assertArrayHasKey('single', $output);
$this->assertArrayNotHasKey('hidden', $output);
$this->assertCount(1, $output['lists']['singles']);
$single = $output['single'];
$this->assertArrayHasKey('string', $single);
$this->assertArrayHasKey('integer', $single);
$this->assertArrayHasKey('boolean', $single);
$this->assertArrayHasKey('required', $single);
$this->assertArrayNotHasKey('hidden', $single);
$singleFromArray = $output['lists']['singles'][0];
$this->assertArrayHasKey('string', $singleFromArray);
$this->assertArrayHasKey('integer', $singleFromArray);
$this->assertArrayHasKey('boolean', $singleFromArray);
$this->assertArrayHasKey('required', $single);
$this->assertArrayNotHasKey('hidden', $singleFromArray);
2020-12-30 23:54:11 +13:00
}
2022-05-24 02:54:50 +12:00
}