Path: blob/master/src/aphront/__tests__/AphrontRequestTestCase.php
12249 views
<?php12final class AphrontRequestTestCase extends PhabricatorTestCase {34public function testRequestDataAccess() {5$r = new AphrontRequest('example.com', '/');6$r->setRequestData(7array(8'str_empty' => '',9'str' => 'derp',10'str_true' => 'true',11'str_false' => 'false',1213'zero' => '0',14'one' => '1',1516'arr_empty' => array(),17'arr_num' => array(1, 2, 3),1819'comma' => ',',20'comma_1' => 'a, b',21'comma_2' => ' ,a ,, b ,,,, ,, ',22'comma_3' => '0',23'comma_4' => 'a, a, b, a',24'comma_5' => "a\nb, c\n\nd\n\n\n,\n",25));2627$this->assertEqual(1, $r->getInt('one'));28$this->assertEqual(0, $r->getInt('zero'));29$this->assertEqual(null, $r->getInt('does-not-exist'));30$this->assertEqual(0, $r->getInt('str_empty'));3132$this->assertEqual(true, $r->getBool('one'));33$this->assertEqual(false, $r->getBool('zero'));34$this->assertEqual(true, $r->getBool('str_true'));35$this->assertEqual(false, $r->getBool('str_false'));36$this->assertEqual(true, $r->getBool('str'));37$this->assertEqual(null, $r->getBool('does-not-exist'));38$this->assertEqual(false, $r->getBool('str_empty'));3940$this->assertEqual('derp', $r->getStr('str'));41$this->assertEqual('', $r->getStr('str_empty'));42$this->assertEqual(null, $r->getStr('does-not-exist'));4344$this->assertEqual(array(), $r->getArr('arr_empty'));45$this->assertEqual(array(1, 2, 3), $r->getArr('arr_num'));46$this->assertEqual(null, $r->getArr('str_empty', null));47$this->assertEqual(null, $r->getArr('str_true', null));48$this->assertEqual(null, $r->getArr('does-not-exist', null));49$this->assertEqual(array(), $r->getArr('does-not-exist'));5051$this->assertEqual(array(), $r->getStrList('comma'));52$this->assertEqual(array('a', 'b'), $r->getStrList('comma_1'));53$this->assertEqual(array('a', 'b'), $r->getStrList('comma_2'));54$this->assertEqual(array('0'), $r->getStrList('comma_3'));55$this->assertEqual(array('a', 'a', 'b', 'a'), $r->getStrList('comma_4'));56$this->assertEqual(array('a', 'b', 'c', 'd'), $r->getStrList('comma_5'));57$this->assertEqual(array(), $r->getStrList('does-not-exist'));58$this->assertEqual(null, $r->getStrList('does-not-exist', null));5960$this->assertEqual(true, $r->getExists('str'));61$this->assertEqual(false, $r->getExists('does-not-exist'));62}6364public function testHostAttacks() {65static $tests = array(66'domain.com' => 'domain.com',67'domain.com:80' => 'domain.com',68'evil.com:[email protected]' => 'real.com',69'evil.com:[email protected]:80' => 'real.com',70);7172foreach ($tests as $input => $expect) {73$r = new AphrontRequest($input, '/');74$this->assertEqual(75$expect,76$r->getHost(),77pht('Host: %s', $input));78}79}8081public function testFlattenRequestData() {82$test_cases = array(83array(84'a' => 'a',85'b' => '1',86'c' => '',87),88array(89'a' => 'a',90'b' => '1',91'c' => '',92),9394array(95'x' => array(960 => 'a',971 => 'b',982 => 'c',99),100),101array(102'x[0]' => 'a',103'x[1]' => 'b',104'x[2]' => 'c',105),106107array(108'x' => array(109'y' => array(110'z' => array(11140 => 'A',11250 => 'B',113'C' => 60,114),115),116),117),118array(119'x[y][z][40]' => 'A',120'x[y][z][50]' => 'B',121'x[y][z][C]' => '60',122),123);124125for ($ii = 0; $ii < count($test_cases); $ii += 2) {126$input = $test_cases[$ii];127$expect = $test_cases[$ii + 1];128129$this->assertEqual($expect, AphrontRequest::flattenData($input));130}131}132133public function testGetHTTPHeader() {134$server_data = array(135'HTTP_ACCEPT_ENCODING' => 'duck/quack',136'CONTENT_TYPE' => 'cow/moo',137);138139$this->assertEqual(140'duck/quack',141AphrontRequest::getHTTPHeader('AcCePt-EncOdING', null, $server_data));142$this->assertEqual(143'cow/moo',144AphrontRequest::getHTTPHeader('cONTent-TyPE', null, $server_data));145$this->assertEqual(146null,147AphrontRequest::getHTTPHeader('Pie-Flavor', null, $server_data));148}149150}151152153