* @license http://www.apache.org/licenses/LICENSE-2.0 * @link http://phpsx.org */ class ExceptionTest extends TestCase { public function testBadRequestException() { $this->assertRedirection(301, 'PSX\Http\Exception\MovedPermanentlyException', array('http://google.com')); $this->assertRedirection(302, 'PSX\Http\Exception\FoundException', array('http://google.com')); $this->assertRedirection(303, 'PSX\Http\Exception\SeeOtherException', array('http://google.com')); $this->assertRedirection(304, 'PSX\Http\Exception\NotModifiedException'); $this->assertClientError(400, 'PSX\Http\Exception\BadRequestException', array('foo')); $this->assertClientError(401, 'PSX\Http\Exception\UnauthorizedException', array('foo', 'Basic', array('realm' => 'psx'))); $this->assertClientError(403, 'PSX\Http\Exception\ForbiddenException', array('foo')); $this->assertClientError(404, 'PSX\Http\Exception\NotFoundException', array('foo')); $this->assertClientError(405, 'PSX\Http\Exception\MethodNotAllowedException', array('foo', array('GET', 'POST'))); $this->assertClientError(406, 'PSX\Http\Exception\NotAcceptableException', array('foo')); $this->assertClientError(409, 'PSX\Http\Exception\ConflictException', array('foo')); $this->assertClientError(410, 'PSX\Http\Exception\GoneException', array('foo')); $this->assertClientError(415, 'PSX\Http\Exception\UnsupportedMediaTypeException', array('foo')); $this->assertServerError(500, 'PSX\Http\Exception\InternalServerErrorException', array('foo')); $this->assertServerError(501, 'PSX\Http\Exception\NotImplementedException', array('foo')); $this->assertServerError(503, 'PSX\Http\Exception\ServiceUnavailableException', array('foo')); } protected function assertRedirection($statusCode, $className, array $arguments = array()) { $e = $this->getException($className, $arguments); $this->assertInstanceOf('PSX\Http\Exception\RedirectionException', $e); $this->assertGreaterThanOrEqual(300, $e->getStatusCode()); $this->assertLessThan(400, $e->getStatusCode()); $this->assertEquals($statusCode, $e->getStatusCode()); if ($statusCode != 304) { $this->assertEquals('http://google.com', $e->getLocation()); } } protected function assertClientError($statusCode, $className, array $arguments = array()) { $e = $this->getException($className, $arguments); $this->assertInstanceOf('PSX\Http\Exception\ClientErrorException', $e); $this->assertGreaterThanOrEqual(400, $e->getStatusCode()); $this->assertLessThan(500, $e->getStatusCode()); $this->assertEquals($statusCode, $e->getStatusCode()); if ($statusCode == 401) { $this->assertEquals('Basic', $e->getType()); $this->assertEquals(array('realm' => 'psx'), $e->getParameters()); } elseif ($statusCode == 405) { $this->assertEquals(array('GET', 'POST'), $e->getAllowedMethods()); } } protected function assertServerError($statusCode, $className, array $arguments = array()) { $e = $this->getException($className, $arguments); $this->assertInstanceOf('PSX\Http\Exception\ServerErrorException', $e); $this->assertGreaterThanOrEqual(500, $e->getStatusCode()); $this->assertLessThan(600, $e->getStatusCode()); $this->assertEquals($statusCode, $e->getStatusCode()); } protected function getException($className, array $arguments = array()) { $class = new \ReflectionClass($className); $exception = $class->newInstanceArgs($arguments); if (!$exception instanceof \Exception) { $this->fail('Class must be an exception'); } try { throw $exception; } catch (\Exception $e) { return $e; } } } __halt_compiler();----SIGNATURE:----Q5K4rz186/wJnolIy5piugV0PeonZ1L2tDWNxIoRY8UF3QZLk1FXZcv4dbdETjbn8ZltcHUWCq/9qE6OiHiTvYXBRg526djtRdOqShqmQPKkwQAOvTT2Gvl0B+VKrhpjqMAz42r08w93+cfJCvHSoqqnSI7hrWX7kO0Qbn62gD9UAzjVFMPe7ZkJ6lwK701gEVq0AXONi3h7wUx9tuLMh/Hp+BFBmKYLV3QxW3sGRBkgrYBEiFWrseX/kTQwyNZnlWdZAFD6g57Axv/zWVvEMMJuhfoPT6nXjXgxFcUtjRYfw85EZqeoq82oRIwd9pc/fZltHlTh9UkWx70l9Gn1zqrlj2RUfZg8BGhGHAeAH1+nbXEPrau6f9ydtE2zybTFsTBoxSbvRhdwK9HyS+8ab2iLvXQzjeO5JmsKKWBbbKBbvNqj606vt6EqtD0o6TzvMNxZT0c+1rW+w5eYFzx+nii6DA3gZYGreJt0lHQVV8yjTaZZQX3zVM/FxczHbqUWKKmQlITNvqZisZn3136SqSKQR2zKflNQm097PVj1aSE3kZBWWahOSmwo9w86E5tt1JimheR4MmZyIpjf+RaHx4hopWztHR+44rdwpav3CTbgyyI/8c/M9UHRu7mwC9JunawTrBrLUcAQugiaoWUOwg5rEMZ3l/8meEorweQgh04=----ATTACHMENT:----NDcxOTM2NTcxMzcyOTMxMiA5MDA4OTI3MTgyMzkwNjgxIDk3ODUzOTU4ODAyNTY4ODg=