summaryrefslogtreecommitdiff
path: root/tests/unit/Web/THttpRequestTest.php
diff options
context:
space:
mode:
authortof <>2007-06-13 12:01:20 +0000
committertof <>2007-06-13 12:01:20 +0000
commit56df3d3faa32bb92223b363945ce0b19761f040f (patch)
tree17742fb863a02dab33c003636941354df4062ca0 /tests/unit/Web/THttpRequestTest.php
parent643386f289d94e6c4484e0c9dbabc22e5a373b1c (diff)
Implements THttpCookie, THttpCookieCollection, and THttpRequest unit tests
Diffstat (limited to 'tests/unit/Web/THttpRequestTest.php')
-rw-r--r--tests/unit/Web/THttpRequestTest.php285
1 files changed, 254 insertions, 31 deletions
diff --git a/tests/unit/Web/THttpRequestTest.php b/tests/unit/Web/THttpRequestTest.php
index 5bb66304..3ddc557e 100644
--- a/tests/unit/Web/THttpRequestTest.php
+++ b/tests/unit/Web/THttpRequestTest.php
@@ -2,6 +2,7 @@
require_once dirname(__FILE__).'/../phpunit.php';
Prado::using('System.Web.THttpRequest');
+Prado::using('System.Security.TSecurityManager');
/**
* @package System.Web
@@ -27,7 +28,14 @@ class THttpRequestTest extends PHPUnit_Framework_TestCase {
$_SERVER['REMOTE_ADDR'] = '127.0.0.1';
$_SERVER['HTTP_USER_AGENT'] = 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3';
$_SERVER['REMOTE_HOST'] = 'localhost';
+ $_SERVER['HTTP_ACCEPT'] = 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5';
+ $_SERVER['HTTP_ACCEPT_LANGUAGE'] = 'fr,en-us;q=0.8,fr-fr;q=0.5,en;q=0.3';
+ $_SERVER['HTTP_ACCEPT_ENCODING'] = 'gzip,deflate';
+ $_SERVER['HTTP_ACCEPT_CHARSET'] = 'ISO-8859-1,utf-8;q=0.7,*;q=0.7';
+ $_COOKIE['phpsessid']='0123456789abcdef';
+
+ $_FILES['userfile']=array ('name' => 'test.jpg','type' => 'image/jpg', 'size' => 10240, 'tmp_name' => 'tmpXXAZECZ', 'error'=>0);
if(self::$app === null) {
self::$app = new TApplication(dirname(__FILE__).'/app');
}
@@ -37,6 +45,13 @@ class THttpRequestTest extends PHPUnit_Framework_TestCase {
$request = new THttpRequest();
$request->init(null);
self::assertEquals('', $request->getUrlManager());
+ // Try with unsetted REQUEST_URL & PATH_INFO
+ unset($_SERVER['REQUEST_URI']);
+ unset($_SERVER['PATH_INFO']);
+ $request = new THttpRequest();
+ $request->init(null);
+ self::assertEquals('', $request->getUrlManager());
+
}
public function testStripSlashes() {
@@ -49,6 +64,12 @@ class THttpRequestTest extends PHPUnit_Framework_TestCase {
$request = new THttpRequest();
$request->init(null);
self::assertType('TUri', $request->getUrl());
+ // Try with $_SERVER['HTTP_HOST'] empty
+ $request=null;
+ $request = new THttpRequest();
+ $request->init(null);
+ $_SERVER['HTTP_HOST']='';
+ self::assertType('TUri', $request->getUrl());
}
public function testGetUrlManager() {
@@ -58,11 +79,51 @@ class THttpRequestTest extends PHPUnit_Framework_TestCase {
}
public function testSetUrlManager() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $request = new THttpRequest();
+ // Try invalid manager id
+ $request->setUrlManager('invalidManagerId');
+ try {
+ $request->init(null);
+ self::fail ('httprequest_urlmanager_inexist exception not thrown');
+ } catch (TConfigurationException $e) {
+
+ }
+ $request=null;
+
+
+ // Try with valid module id, but not instance of TUrlManager
+ $module=new TAssetManager();
+ self::$app->setModule('badmanager',$module);
+ $request = new THttpRequest();
+ $request->setUrlManager('badmanager');
+ try {
+ $request->init(null);
+ self::fail ('httprequest_urlmanager_invalid exception not thrown');
+ } catch (TConfigurationException $e) {
+
+ }
+ $request=null;
+
+ // Finally, try with a valid manager
+ $module=new TUrlManager ();
+ self::$app->setModule('goodmanager',$module);
+ $request = new THttpRequest();
+ $request->setUrlManager('goodmanager');
+ $request->init(null);
+ self::assertEquals ('goodmanager', $request->getUrlManager());
+ self::assertType ('TUrlManager',$request->getUrlManagerModule());
+
}
public function testSetUrlFormat() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $request = new THttpRequest();
+ $request->setUrlFormat('Path');
+ self::assertEquals('Path', $request->getUrlFormat());
+ // Test invalid
+ try {
+ $request->setUrlFormat('Bad');
+ self::fail ('Bad Value exception not thrown');
+ } catch (TInvalidDataValueException $e) {}
}
public function testGetRequestType() {
@@ -136,6 +197,22 @@ class THttpRequestTest extends PHPUnit_Framework_TestCase {
}
public function testGetBrowser() {
+ /*$request = new THttpRequest();
+ $request->init(null);
+ // Reset UserAgent, because constructor of THttpRequest unset it if called from cli !
+ $_SERVER['HTTP_USER_AGENT'] = 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3';
+ try {
+ $browser=$request->getBrowser();
+ self::assertType ('array', $browser);
+ self::assertEquals('Firefox', $browser['browser']);
+ self::assertEquals('2.0.0.3', $browser['version']);
+ } catch (TPhpErrorException $e) {
+ // If not supported, skip test
+ if (strstr($e->getMessage(),'browscap ini directive not set'))
+ self::markTestSkipped('browscap ini directive not set in php.ini');
+ else
+ self::fail ('Exception raised : '.$e->getMessage());
+ }*/
throw new PHPUnit_Framework_IncompleteTestError();
}
@@ -157,95 +234,241 @@ class THttpRequestTest extends PHPUnit_Framework_TestCase {
}
public function testGetAcceptTypes() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $request = new THttpRequest();
+ $request->init(null);
+ self::assertEquals('text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5', $request->getAcceptTypes());
}
public function testGetUserLanguages() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $request = new THttpRequest();
+ $request->init(null);
+ // Browser sent fr,en-us;q=0.8,fr-fr;q=0.5,en;q=0.3
+ // that means that browser want fr (1) first, next en-us (0.8), then fr-fr(0.5)n and last en (0.3)
+ // So, we expect method to return an array with these languages, and this order
+ $acceptLanguages=array ('fr', 'en-us','fr-fr','en');
+ self::assertEquals($acceptLanguages, $request->getUserLanguages());
}
public function testSetEnableCookieValidation() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $request = new THttpRequest();
+ $request->init(null);
+ $request->setEnableCookieValidation (true);
+ self::assertEquals(true, $request->getEnableCookieValidation());
}
public function testGetCookies() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $request = new THttpRequest ();
+ $request->init (null);
+ $request->setEnableCookieValidation (false);
+ $cookies=$request->getCookies();
+ self::assertType('THttpCookieCollection', $cookies);
+ self::assertEquals('0123456789abcdef', $cookies->itemAt('phpsessid')->getValue());
+ $request = null;
+
+ // Test with cookie validation
+ $security=new TSecurityManager();
+ self::$app->setModule ('security', $security);
+ $_COOKIE['phpsessid']=$security->hashData('0123456789abcdef');
+ $request = new THttpRequest ();
+ $request->init (null);
+ $request->setEnableCookieValidation (true);
+ $cookies=$request->getCookies();
+ self::assertType('THttpCookieCollection', $cookies);
+ self::assertEquals('0123456789abcdef', $cookies->itemAt('phpsessid')->getValue());
}
public function testGetUploadedFiles() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $request = new THttpRequest ();
+ $request->init (null);
+ self::assertEquals($_FILES, $request->getUploadedFiles());
}
public function testGetServerVariables() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $request = new THttpRequest ();
+ $request->init (null);
+ self::assertEquals($_SERVER, $request->getServerVariables());
}
public function testGetEnvironmentVariables() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $request = new THttpRequest ();
+ $request->init (null);
+ self::assertEquals($_ENV, $request->getEnvironmentVariables());
}
public function testConstructUrl() {
- throw new PHPUnit_Framework_IncompleteTestError();
- }
-
- public function testGetAvailableServices() {
- throw new PHPUnit_Framework_IncompleteTestError();
- }
-
- public function testSetAvailableServices() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $request = new THttpRequest ();
+ $request->init (null);
+ // Try to construct an url to the pageservice with some parameters
+ $url=$request->constructURL('page','Home',array('param1'=>'value1','param2'=>'value2'), true);
+ self::assertEquals('/demos/personal/index.php?page=Home&amp;param1=value1&amp;param2=value2', $url);
+ // Try without encode &
+ $url=$request->constructURL('page','Home',array('param1'=>'value1','param2'=>'value2'), false);
+ self::assertEquals('/demos/personal/index.php?page=Home&param1=value1&param2=value2', $url);
}
public function testSetServiceID() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $request = new THttpRequest ();
+ $request->setServiceId('page');
+ self::assertEquals('page', $request->getServiceId());
}
public function testGetIterator() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $request = new THttpRequest ();
+ $request->init(null);
+ self::assertType ('TMapIterator', $request->getIterator());
}
public function testGetCount() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $request = new THttpRequest ();
+ $request->init(null);
+ // Simulate a request with just a service
+ $_GET['page']='Home';
+ $request->resolveRequest(array('page'));
+ // Should return 1 (service param, and no get param)
+ self::assertEquals(1, $request->getCount());
+ self::assertEquals(1, $request->count());
+
}
public function testGetKeys() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $request = new THttpRequest ();
+ $request->init(null);
+ // Simulate a request with just a service
+ $_GET['page']='Home';
+ $request->resolveRequest(array('page'));
+ self::assertEquals(array('page'), $request->getKeys());
}
public function testItemAt() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $request = new THttpRequest ();
+ $request->init(null);
+ // Simulate a request with just a service
+ $_GET['page']='Home';
+ $request->resolveRequest(array('page'));
+ self::assertEquals('Home', $request->itemAt('page'));
}
public function testAdd() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $request = new THttpRequest ();
+ $request->init(null);
+ // Simulate a request with just a service
+ $_GET['page']='Home';
+ $request->resolveRequest(array('page'));
+ $request->Add('param1','value1');
+ self::assertEquals('value1', $request->itemAt('param1'));
}
public function testRemove() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $request = new THttpRequest ();
+ $request->init(null);
+ // Simulate a request with just a service
+ $_GET['page']='Home';
+ $request->resolveRequest(array('page'));
+ // Remove an unknow key
+ self::assertNull($request->remove('param1','value1'));
+ // Remove a key
+ self::assertEquals('Home', $request->remove('page'));
}
public function testContains() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $request = new THttpRequest ();
+ $request->init(null);
+ // Simulate a request with just a service
+ $_GET['page']='Home';
+ $request->resolveRequest(array('page'));
+ self::assertTrue($request->contains('page'));
+ self::assertFalse($request->contains('param'));
+ }
+
+ public function testClear() {
+ $request = new THttpRequest ();
+ $request->init(null);
+ // Simulate a request with just a service
+ $_GET['page']='Home';
+ $request->resolveRequest(array('page'));
+ $request->clear();
+ self::assertEquals(0,$request->getCount());
}
public function testToArray() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $request = new THttpRequest ();
+ $request->init(null);
+ // Simulate a request with just a service
+ $_GET['page']='Home';
+ $request->resolveRequest(array('page'));
+ self::assertEquals(array ('page'=>'Home'), $request->toArray());
}
public function testOffsetExists() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $request = new THttpRequest ();
+ $request->init (null);
+ // should not exists
+ self::assertFalse($request->offsetExists(0));
}
public function testOffsetGet() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $request = new THttpRequest ();
+ $request->init (null);
+ // should not exists
+ self::assertNull($request->offsetGet(0));
}
public function testOffsetSet() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $request = new THttpRequest ();
+ $request->init (null);
+ $request->offsetSet(0, 'test');
+ // should not exists
+ self::assertEquals('test',$request->offsetGet(0));
}
public function testOffsetUnset() {
- throw new PHPUnit_Framework_IncompleteTestError();
+ $request = new THttpRequest ();
+ $request->init (null);
+ $request->offsetSet(0, 'test');
+ // Count should be 1
+ self::assertEquals (1, $request->count());
+ $request->offsetUnset(0);
+ // Now, count should be zero
+ self::assertEquals (0, $request->count());
+ }
+
+ public function testGetSetID() {
+ $request=new THttpRequest();
+ $request->init(null);
+ $request->setID('testId');
+ self::assertEquals('testId', $request->getID());
+ }
+
+ public function testGetSetUrlParamSeparator() {
+ $request=new THttpRequest();
+ $request->init(null);
+ // Try an invalid separator
+ try {
+ $request->setUrlParamSeparator('&&');
+ self::fail('httprequest_separator_invalid exception not thrown');
+ } catch (TInvalidDataValueException $e) {
+ }
+ // Try valid one
+ $request->setUrlParamSeparator('&');
+ self::assertEquals('&', $request->getUrlParamSeparator());
+ }
+
+ public function testGetServiceParameter() {
+ $request=new THttpRequest();
+ $request->init(null);
+ $_GET['page']='Home';
+ $request->resolveRequest(array('page'));
+ self::assertEquals('Home', $request->getServiceParameter());
+ }
+
+ public function testGetRequestResolved() {
+ $request=new THttpRequest();
+ $request->init(null);
+ self::assertFalse($request->getRequestResolved());
+ $_GET['page']='Home';
+ $request->resolveRequest(array('page'));
+ self::assertTrue($request->getRequestResolved());
}
+
}
?> \ No newline at end of file