Something went wrong. Try again.
@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
Something went wrong. Try again.
2.7 kB · 108 lines
PHP
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109<?php
final class AphrontHTTPHeaderParserTestCase extends PhutilTestCase {
public function testHeaderParser() { $cases = array( array( 'Key: x; y; z', 'Key', 'x; y; z', array( array('x', null), array('y', null), array('z', null), ), ), array( 'Content-Disposition: form-data; name="label"', 'Content-Disposition', 'form-data; name="label"', array( array('form-data', null), array('name', 'label'), ), ), array( 'Content-Type: multipart/form-data; charset=utf-8', 'Content-Type', 'multipart/form-data; charset=utf-8', array( array('multipart/form-data', null), array('charset', 'utf-8'), ), ), array( 'Content-Type: application/octet-stream; charset="ut', 'Content-Type', 'application/octet-stream; charset="ut', false, ), array( 'Content-Type: multipart/form-data; boundary=ABCDEFG', 'Content-Type', 'multipart/form-data; boundary=ABCDEFG', array( array('multipart/form-data', null), array('boundary', 'ABCDEFG'), ), ), array( 'Content-Type: multipart/form-data; boundary="ABCDEFG"', 'Content-Type', 'multipart/form-data; boundary="ABCDEFG"', array( array('multipart/form-data', null), array('boundary', 'ABCDEFG'), ), ), );
foreach ($cases as $case) { $input = $case[0]; $expect_name = $case[1]; $expect_content = $case[2];
$parser = id(new AphrontHTTPHeaderParser()) ->parseRawHeader($input);
$actual_name = $parser->getHeaderName(); $actual_content = $parser->getHeaderContent();
$this->assertEqual( $expect_name, $actual_name, pht('Header name for: %s', $input));
$this->assertEqual( $expect_content, $actual_content, pht('Header content for: %s', $input));
if (isset($case[3])) { $expect_pairs = $case[3];
$caught = null; try { $actual_pairs = $parser->getHeaderContentAsPairs(); } catch (Exception $ex) { $caught = $ex; }
if ($expect_pairs === false) { $this->assertEqual( true, ($caught instanceof Exception), pht('Expect exception for header pairs of: %s', $input)); } else { $this->assertEqual( $expect_pairs, $actual_pairs, pht('Header pairs for: %s', $input)); } } } }
}