public function testCanFilterResponseBuilder()
{
$this->hooks->registerHandler('response', 'action:output4', function ($hook, $type, $response, $params) {
$this->assertEquals('response', $hook);
$this->assertEquals('action:output4', $type);
$this->assertEquals($response, $params);
$this->assertInstanceOf(OkResponse::class, $response);
$response->setContent('good bye');
$response->setStatusCode(ELGG_HTTP_BAD_REQUEST);
return $response;
});
$this->assertTrue($this->actions->register('output4', "{$this->actionsDir}/output4.php", 'public'));
$this->request = $this->prepareHttpRequest('action/output4', 'POST', [], 2, true);
$this->createService();
set_input('output', ['foo', 'bar']);
set_input('system_message', 'success');
set_input('forward_reason', ELGG_HTTP_OK);
set_input('forward_url', 'index');
$this->route();
$response = _elgg_services()->responseFactory->getSentResponse();
$this->assertInstanceOf(Response::class, $response);
$this->assertEquals(ELGG_HTTP_BAD_REQUEST, $response->getStatusCode());
$this->assertContains('application/json', $response->headers->get('Content-Type'));
//$this->assertContains('charset=utf-8', strtolower($response->headers->get('Content-Type')));
$output = json_encode(['error' => 'good bye']);
$this->assertEquals($output, $response->getContent());
}