http_test.php
来自「PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。」· PHP 代码 · 共 427 行 · 第 1/2 页
PHP
427 行
<?php
// $Id: http_test.php 1505 2007-04-30 23:39:59Z lastcraft $
require_once(dirname(__FILE__) . '/../autorun.php');
require_once(dirname(__FILE__) . '/../encoding.php');
require_once(dirname(__FILE__) . '/../http.php');
require_once(dirname(__FILE__) . '/../socket.php');
require_once(dirname(__FILE__) . '/../cookies.php');
Mock::generate('SimpleSocket');
Mock::generate('SimpleCookieJar');
Mock::generate('SimpleRoute');
Mock::generatePartial('SimpleRoute', 'PartialSimpleRoute', array('_createSocket'));
Mock::generatePartial(
'SimpleProxyRoute',
'PartialSimpleProxyRoute',
array('_createSocket'));
class TestOfDirectRoute extends UnitTestCase {
function testDefaultGetRequest() {
$socket = &new MockSimpleSocket();
$socket->expectArgumentsAt(0, 'write', array("GET /here.html HTTP/1.0\r\n"));
$socket->expectArgumentsAt(1, 'write', array("Host: a.valid.host\r\n"));
$socket->expectArgumentsAt(2, 'write', array("Connection: close\r\n"));
$socket->expectCallCount('write', 3);
$route = &new PartialSimpleRoute();
$route->setReturnReference('_createSocket', $socket);
$route->SimpleRoute(new SimpleUrl('http://a.valid.host/here.html'));
$this->assertReference($route->createConnection('GET', 15), $socket);
}
function testDefaultPostRequest() {
$socket = &new MockSimpleSocket();
$socket->expectArgumentsAt(0, 'write', array("POST /here.html HTTP/1.0\r\n"));
$socket->expectArgumentsAt(1, 'write', array("Host: a.valid.host\r\n"));
$socket->expectArgumentsAt(2, 'write', array("Connection: close\r\n"));
$socket->expectCallCount('write', 3);
$route = &new PartialSimpleRoute();
$route->setReturnReference('_createSocket', $socket);
$route->SimpleRoute(new SimpleUrl('http://a.valid.host/here.html'));
$route->createConnection('POST', 15);
}
function testGetWithPort() {
$socket = &new MockSimpleSocket();
$socket->expectArgumentsAt(0, 'write', array("GET /here.html HTTP/1.0\r\n"));
$socket->expectArgumentsAt(1, 'write', array("Host: a.valid.host:81\r\n"));
$socket->expectArgumentsAt(2, 'write', array("Connection: close\r\n"));
$socket->expectCallCount('write', 3);
$route = &new PartialSimpleRoute();
$route->setReturnReference('_createSocket', $socket);
$route->SimpleRoute(new SimpleUrl('http://a.valid.host:81/here.html'));
$route->createConnection('GET', 15);
}
function testGetWithParameters() {
$socket = &new MockSimpleSocket();
$socket->expectArgumentsAt(0, 'write', array("GET /here.html?a=1&b=2 HTTP/1.0\r\n"));
$socket->expectArgumentsAt(1, 'write', array("Host: a.valid.host\r\n"));
$socket->expectArgumentsAt(2, 'write', array("Connection: close\r\n"));
$socket->expectCallCount('write', 3);
$route = &new PartialSimpleRoute();
$route->setReturnReference('_createSocket', $socket);
$route->SimpleRoute(new SimpleUrl('http://a.valid.host/here.html?a=1&b=2'));
$route->createConnection('GET', 15);
}
}
class TestOfProxyRoute extends UnitTestCase {
function testDefaultGet() {
$socket = &new MockSimpleSocket();
$socket->expectArgumentsAt(0, 'write', array("GET http://a.valid.host/here.html HTTP/1.0\r\n"));
$socket->expectArgumentsAt(1, 'write', array("Host: my-proxy:8080\r\n"));
$socket->expectArgumentsAt(2, 'write', array("Connection: close\r\n"));
$socket->expectCallCount('write', 3);
$route = &new PartialSimpleProxyRoute();
$route->setReturnReference('_createSocket', $socket);
$route->SimpleProxyRoute(
new SimpleUrl('http://a.valid.host/here.html'),
new SimpleUrl('http://my-proxy'));
$route->createConnection('GET', 15);
}
function testDefaultPost() {
$socket = &new MockSimpleSocket();
$socket->expectArgumentsAt(0, 'write', array("POST http://a.valid.host/here.html HTTP/1.0\r\n"));
$socket->expectArgumentsAt(1, 'write', array("Host: my-proxy:8080\r\n"));
$socket->expectArgumentsAt(2, 'write', array("Connection: close\r\n"));
$socket->expectCallCount('write', 3);
$route = &new PartialSimpleProxyRoute();
$route->setReturnReference('_createSocket', $socket);
$route->SimpleProxyRoute(
new SimpleUrl('http://a.valid.host/here.html'),
new SimpleUrl('http://my-proxy'));
$route->createConnection('POST', 15);
}
function testGetWithPort() {
$socket = &new MockSimpleSocket();
$socket->expectArgumentsAt(0, 'write', array("GET http://a.valid.host:81/here.html HTTP/1.0\r\n"));
$socket->expectArgumentsAt(1, 'write', array("Host: my-proxy:8081\r\n"));
$socket->expectArgumentsAt(2, 'write', array("Connection: close\r\n"));
$socket->expectCallCount('write', 3);
$route = &new PartialSimpleProxyRoute();
$route->setReturnReference('_createSocket', $socket);
$route->SimpleProxyRoute(
new SimpleUrl('http://a.valid.host:81/here.html'),
new SimpleUrl('http://my-proxy:8081'));
$route->createConnection('GET', 15);
}
function testGetWithParameters() {
$socket = &new MockSimpleSocket();
$socket->expectArgumentsAt(0, 'write', array("GET http://a.valid.host/here.html?a=1&b=2 HTTP/1.0\r\n"));
$socket->expectArgumentsAt(1, 'write', array("Host: my-proxy:8080\r\n"));
$socket->expectArgumentsAt(2, 'write', array("Connection: close\r\n"));
$socket->expectCallCount('write', 3);
$route = &new PartialSimpleProxyRoute();
$route->setReturnReference('_createSocket', $socket);
$route->SimpleProxyRoute(
new SimpleUrl('http://a.valid.host/here.html?a=1&b=2'),
new SimpleUrl('http://my-proxy'));
$route->createConnection('GET', 15);
}
function testGetWithAuthentication() {
$encoded = base64_encode('Me:Secret');
$socket = &new MockSimpleSocket();
$socket->expectArgumentsAt(0, 'write', array("GET http://a.valid.host/here.html HTTP/1.0\r\n"));
$socket->expectArgumentsAt(1, 'write', array("Host: my-proxy:8080\r\n"));
$socket->expectArgumentsAt(2, 'write', array("Proxy-Authorization: Basic $encoded\r\n"));
$socket->expectArgumentsAt(3, 'write', array("Connection: close\r\n"));
$socket->expectCallCount('write', 4);
$route = &new PartialSimpleProxyRoute();
$route->setReturnReference('_createSocket', $socket);
$route->SimpleProxyRoute(
new SimpleUrl('http://a.valid.host/here.html'),
new SimpleUrl('http://my-proxy'),
'Me',
'Secret');
$route->createConnection('GET', 15);
}
}
class TestOfHttpRequest extends UnitTestCase {
function testReadingBadConnection() {
$socket = &new MockSimpleSocket();
$route = &new MockSimpleRoute();
$route->setReturnReference('createConnection', $socket);
$request = &new SimpleHttpRequest($route, new SimpleGetEncoding());
$reponse = &$request->fetch(15);
$this->assertTrue($reponse->isError());
}
function testReadingGoodConnection() {
$socket = &new MockSimpleSocket();
$socket->expectOnce('write', array("\r\n"));
$route = &new MockSimpleRoute();
$route->setReturnReference('createConnection', $socket);
$route->expectArguments('createConnection', array('GET', 15));
$request = &new SimpleHttpRequest($route, new SimpleGetEncoding());
$this->assertIsA($request->fetch(15), 'SimpleHttpResponse');
}
function testWritingAdditionalHeaders() {
$socket = &new MockSimpleSocket();
$socket->expectArgumentsAt(0, 'write', array("My: stuff\r\n"));
$socket->expectArgumentsAt(1, 'write', array("\r\n"));
$socket->expectCallCount('write', 2);
$route = &new MockSimpleRoute();
$route->setReturnReference('createConnection', $socket);
$request = &new SimpleHttpRequest($route, new SimpleGetEncoding());
$request->addHeaderLine('My: stuff');
$request->fetch(15);
}
function testCookieWriting() {
$socket = &new MockSimpleSocket();
$socket->expectArgumentsAt(0, 'write', array("Cookie: a=A\r\n"));
$socket->expectArgumentsAt(1, 'write', array("\r\n"));
$socket->expectCallCount('write', 2);
$route = &new MockSimpleRoute();
$route->setReturnReference('createConnection', $socket);
$jar = new SimpleCookieJar();
$jar->setCookie('a', 'A');
$request = &new SimpleHttpRequest($route, new SimpleGetEncoding());
$request->readCookiesFromJar($jar, new SimpleUrl('/'));
$this->assertIsA($request->fetch(15), 'SimpleHttpResponse');
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?