aboutsummaryrefslogtreecommitdiffstats
path: root/tests/download
diff options
context:
space:
mode:
Diffstat (limited to 'tests/download')
-rw-r--r--tests/download/all_tests.php4
-rw-r--r--tests/download/http_byte_range.php62
2 files changed, 66 insertions, 0 deletions
diff --git a/tests/download/all_tests.php b/tests/download/all_tests.php
index 59a937f70a..21305a887c 100644
--- a/tests/download/all_tests.php
+++ b/tests/download/all_tests.php
@@ -15,6 +15,8 @@ if (!defined('PHPUnit_MAIN_METHOD'))
require_once 'test_framework/framework.php';
require_once 'PHPUnit/TextUI/TestRunner.php';
+require_once 'download/http_byte_range.php';
+
class phpbb_download_all_tests
{
public static function main()
@@ -26,6 +28,8 @@ class phpbb_download_all_tests
{
$suite = new PHPUnit_Framework_TestSuite('phpBB Download Tests');
+ $suite->addTestSuite('phpbb_download_http_byte_range_test');
+
return $suite;
}
}
diff --git a/tests/download/http_byte_range.php b/tests/download/http_byte_range.php
new file mode 100644
index 0000000000..075311a47c
--- /dev/null
+++ b/tests/download/http_byte_range.php
@@ -0,0 +1,62 @@
+<?php
+/**
+*
+* @package testing
+* @copyright (c) 2010 phpBB Group
+* @license http://opensource.org/licenses/gpl-license.php GNU Public License
+*
+*/
+
+require_once 'test_framework/framework.php';
+require_once '../phpBB/includes/functions_download.php';
+
+class phpbb_download_http_byte_range_test extends phpbb_test_case
+{
+ public function test_find_range_request()
+ {
+ // Missing 'bytes=' prefix
+ $_SERVER['HTTP_RANGE'] = 'bztes=';
+ $this->assertEquals(false, find_range_request());
+ unset($_SERVER['HTTP_RANGE']);
+
+ $_ENV['HTTP_RANGE'] = 'bztes=';
+ $this->assertEquals(false, find_range_request());
+ unset($_ENV['HTTP_RANGE']);
+
+ $_SERVER['HTTP_RANGE'] = 'bytes=0-0,123-125';
+ $this->assertEquals(array('0-0', '123-125'), find_range_request());
+ unset($_SERVER['HTTP_RANGE']);
+ }
+
+ /**
+ * @dataProvider parse_range_request_data()
+ */
+ public function test_parse_range_request($request_array, $filesize, $expected)
+ {
+ $this->assertEquals($expected, parse_range_request($request_array, $filesize));
+ }
+
+ public function parse_range_request_data()
+ {
+ return array(
+ // Does not read until the end of file.
+ array(
+ array('3-4'),
+ 10,
+ false,
+ ),
+
+ // Valid request, handle second range.
+ array(
+ array('0-0', '120-125'),
+ 125,
+ array(
+ 'byte_pos_start' => 120,
+ 'byte_pos_end' => 124,
+ 'bytes_requested' => 5,
+ 'bytes_total' => 125,
+ )
+ ),
+ );
+ }
+}