-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathVndErrorResponseTest.hack
More file actions
43 lines (40 loc) · 1.46 KB
/
VndErrorResponseTest.hack
File metadata and controls
43 lines (40 loc) · 1.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
use type Nazg\Http\VndErrorResponse;
use type Ytake\Hungrr\StatusCode;
use type Facebook\HackTest\HackTest;
use namespace HH\Lib\IO;
use function Facebook\FBExpect\expect;
final class VndErrorResponseTest extends HackTest {
public async function testShouldBe(): Awaitable<void> {
list($read, $write) = IO\pipe();
$r = new VndErrorResponse($write);
await $write->writeAsync(\json_encode(dict[]));
$write->close();
expect($r->getStatusCode())->toBeSame(500);
expect($r->getProtocolVersion())->toBeSame('1.1');
expect($r->getReasonPhrase())->toBeSame('Internal Server Error');
expect($r->getHeaders())->toBeSame(dict[
'content-type' => vec['application/vnd.error+json'],
]);
$re = await $read->readAsync();
expect($re)->toBeSame('{}');
}
public async function testShouldReturnJsonBody(): Awaitable<void> {
list($read, $write) = IO\pipe();
await $write->writeAsync(\json_encode(dict[
'testing' => dict[
'HHVM' => 'Hack',
]
]));
$write->close();
$r = new VndErrorResponse($write, StatusCode::FORBIDDEN);
expect($r->getStatusCode())->toBeSame(403);
expect($r->getProtocolVersion())->toBeSame('1.1');
expect($r->getReasonPhrase())->toBeSame('Forbidden');
expect($r->getHeaders())->toBeSame(dict[
'content-type' => vec['application/vnd.error+json'],
]);
$r->getBody();
$re = await $read->readAsync();
expect($re)->toBeSame('{"testing":{"HHVM":"Hack"}}');
}
}