mirror of
https://github.com/filp/whoops.git
synced 2026-08-26 15:17:45 +00:00
82 lines
1.9 KiB
PHP
82 lines
1.9 KiB
PHP
<?php
|
|
/**
|
|
* Whoops - php errors for cool kids
|
|
*/
|
|
|
|
namespace Whoops\Handler;
|
|
|
|
use RuntimeException;
|
|
use Whoops\TestCase;
|
|
|
|
class XmlResponseHandlerTest extends TestCase
|
|
{
|
|
public function testSimpleValid()
|
|
{
|
|
$handler = new XmlResponseHandler();
|
|
|
|
$run = $this->getRunInstance();
|
|
$run->pushHandler($handler);
|
|
$run->register();
|
|
|
|
ob_start();
|
|
$run->handleException($this->getException());
|
|
$data = ob_get_clean();
|
|
|
|
$this->assertTrue($this->isValidXml($data));
|
|
|
|
return simplexml_load_string($data);
|
|
}
|
|
|
|
/**
|
|
* @depends testSimpleValid
|
|
*/
|
|
public function testSimpleValidFile(\SimpleXMLElement $xml)
|
|
{
|
|
$this->checkField($xml, 'file', $this->getException()->getFile());
|
|
}
|
|
|
|
/**
|
|
* @depends testSimpleValid
|
|
*/
|
|
public function testSimpleValidLine(\SimpleXMLElement $xml)
|
|
{
|
|
$this->checkField($xml, 'line', (string) $this->getException()->getLine());
|
|
}
|
|
|
|
/**
|
|
* @depends testSimpleValid
|
|
*/
|
|
public function testSimpleValidType(\SimpleXMLElement $xml)
|
|
{
|
|
$this->checkField($xml, 'type', get_class($this->getException()));
|
|
}
|
|
|
|
/**
|
|
* Helper for testSimpleValid*
|
|
*/
|
|
private function checkField(\SimpleXMLElement $xml, $field, $value)
|
|
{
|
|
$list = $xml->xpath('/root/error/'.$field);
|
|
$this->assertArrayHasKey(0, $list);
|
|
$this->assertSame($value, (string) $list[0]);
|
|
}
|
|
|
|
private function getException()
|
|
{
|
|
return new RuntimeException();
|
|
}
|
|
|
|
/**
|
|
* See if passed string is a valid XML document
|
|
* @param string $data
|
|
* @return bool
|
|
*/
|
|
private function isValidXml($data)
|
|
{
|
|
$prev = libxml_use_internal_errors(true);
|
|
$xml = simplexml_load_string($data);
|
|
libxml_use_internal_errors($prev);
|
|
return $xml !== false;
|
|
}
|
|
}
|