cacert-testmgr/external/ZendFramework-1.9.5/tests/Zend/Http/Client/TestAdapterTest.php

222 lines
6.8 KiB
PHP
Raw Normal View History

<?php
/**
* Zend Framework
*
* LICENSE
*
* This source file is subject to the new BSD license that is bundled
* with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://framework.zend.com/license/new-bsd
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@zend.com so we can send you a copy immediately.
*
* @category Zend
* @package Zend_Http_Client
* @subpackage UnitTests
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id: TestAdapterTest.php 17869 2009-08-28 10:37:13Z cogo $
*/
require_once realpath(dirname(__FILE__) . '/../../../') . '/TestHelper.php';
require_once 'Zend/Http/Client.php';
require_once 'Zend/Http/Client/Adapter/Test.php';
require_once 'PHPUnit/Framework/TestCase.php';
/**
* Exercises Zend_Http_Client_Adapter_Test
*
* @category Zend
* @package Zend_Http_Client
* @subpackage UnitTests
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @group Zend_Http
* @group Zend_Http_Client
*/
class Zend_Http_Client_TestAdapterTest extends PHPUnit_Framework_TestCase
{
/**
* Test adapter
*
* @var Zend_Http_Client_Adapter_Test
*/
protected $adapter;
/**
* Set up the test adapter before running the test
*
*/
public function setUp()
{
$this->adapter = new Zend_Http_Client_Adapter_Test();
}
/**
* Tear down the test adapter after running the test
*
*/
public function tearDown()
{
$this->adapter = null;
}
/**
* Make sure an exception is thrown on invalid cofiguration
*
* @expectedException Zend_Http_Client_Adapter_Exception
*/
public function testSetConfigThrowsOnInvalidConfig()
{
$this->adapter->setConfig('foo');
}
public function testSetConfigReturnsQuietly()
{
$this->adapter->setConfig(array('foo' => 'bar'));
}
public function testConnectReturnsQuietly()
{
$this->adapter->connect('http://foo');
}
public function testCloseReturnsQuietly()
{
$this->adapter->close();
}
public function testReadDefaultResponse()
{
$expected = "HTTP/1.1 400 Bad Request\r\n\r\n";
$this->assertEquals($expected, $this->adapter->read());
}
public function testReadingSingleResponse()
{
$expected = "HTTP/1.1 200 OK\r\n\r\n";
$this->adapter->setResponse($expected);
$this->assertEquals($expected, $this->adapter->read());
$this->assertEquals($expected, $this->adapter->read());
}
public function testReadingResponseCycles()
{
$expected = array("HTTP/1.1 200 OK\r\n\r\n",
"HTTP/1.1 302 Moved Temporarily\r\n\r\n");
$this->adapter->setResponse($expected[0]);
$this->adapter->addResponse($expected[1]);
$this->assertEquals($expected[0], $this->adapter->read());
$this->assertEquals($expected[1], $this->adapter->read());
$this->assertEquals($expected[0], $this->adapter->read());
}
/**
* Test that responses could be added as strings
*
* @dataProvider validHttpResponseProvider
*/
public function testAddResponseAsString($testResponse)
{
$this->adapter->read(); // pop out first response
$this->adapter->addResponse($testResponse);
$this->assertEquals($testResponse, $this->adapter->read());
}
/**
* Test that responses could be added as objects (ZF-7009)
*
* @link http://framework.zend.com/issues/browse/ZF-7009
* @dataProvider validHttpResponseProvider
*/
public function testAddResponseAsObject($testResponse)
{
$this->adapter->read(); // pop out first response
$respObj = Zend_Http_Response::fromString($testResponse);
$this->adapter->addResponse($respObj);
$this->assertEquals($testResponse, $this->adapter->read());
}
public function testReadingResponseCyclesWhenSetByArray()
{
$expected = array("HTTP/1.1 200 OK\r\n\r\n",
"HTTP/1.1 302 Moved Temporarily\r\n\r\n");
$this->adapter->setResponse($expected);
$this->assertEquals($expected[0], $this->adapter->read());
$this->assertEquals($expected[1], $this->adapter->read());
$this->assertEquals($expected[0], $this->adapter->read());
}
public function testSettingNextResponseByIndex()
{
$expected = array("HTTP/1.1 200 OK\r\n\r\n",
"HTTP/1.1 302 Moved Temporarily\r\n\r\n",
"HTTP/1.1 404 Not Found\r\n\r\n");
$this->adapter->setResponse($expected);
$this->assertEquals($expected[0], $this->adapter->read());
foreach ($expected as $i => $expected) {
$this->adapter->setResponseIndex($i);
$this->assertEquals($expected, $this->adapter->read());
}
}
public function testSettingNextResponseToAnInvalidIndex()
{
$indexes = array(-1, 1);
foreach ($indexes as $i) {
try {
$this->adapter->setResponseIndex($i);
$this->fail();
} catch (Exception $e) {
$class = 'Zend_Http_Client_Adapter_Exception';
$this->assertType($class, $e);
$this->assertRegexp('/out of range/i', $e->getMessage());
}
}
}
/**
* Data Providers
*/
/**
* Provide valid HTTP responses as string
*
* @return array
*/
static public function validHttpResponseProvider()
{
return array(
array("HTTP/1.1 200 OK\r\n\r\n"),
array("HTTP/1.1 302 Moved Temporarily\r\nLocation: http://example.com/baz\r\n\r\n"),
array("HTTP/1.1 404 Not Found\r\n" .
"Date: Sun, 14 Jun 2009 10:40:06 GMT\r\n" .
"Server: Apache/2.2.3 (CentOS)\r\n" .
"Content-length: 281\r\n" .
"Connection: close\r\n" .
"Content-type: text/html; charset=iso-8859-1\r\n\r\n" .
"<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\n" .
"<html><head>\n" .
"<title>404 Not Found</title>\n" .
"</head><body>\n" .
"<h1>Not Found</h1>\n" .
"<p>The requested URL /foo/bar was not found on this server.</p>\n" .
"<hr>\n" .
"<address>Apache/2.2.3 (CentOS) Server at example.com Port 80</address>\n" .
"</body></html>")
);
}
}