222 lines
6.8 KiB
PHP
222 lines
6.8 KiB
PHP
<?php
|
|
|
|
/** DomFramework - Tests
|
|
* @package domframework
|
|
* @author Dominique Fournier <dominique@fournier38.fr>
|
|
* @license BSD
|
|
*/
|
|
|
|
namespace Domframework\Tests;
|
|
|
|
use Domframework\Outputdl;
|
|
|
|
/** Test the Outputdl.php file */
|
|
class OutputdlTest extends \PHPUnit_Framework_TestCase
|
|
{
|
|
public function test_outputdl_init()
|
|
{
|
|
exec("rm -f /tmp/testDFWoutputDL*");
|
|
file_put_contents(
|
|
"/tmp/testDFWoutputDL",
|
|
str_repeat(
|
|
"1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\n",
|
|
1000
|
|
)
|
|
);
|
|
symlink("/etc/passwd", "/tmp/testDFWoutputDL2");
|
|
symlink("/tmp/testDFWoutputDL", "/tmp/testDFWoutputDL3");
|
|
}
|
|
|
|
public function test_outputdl_1()
|
|
{
|
|
// Check the full download content
|
|
$outputdl = new Outputdl();
|
|
$this->expectOutputString(str_repeat(
|
|
"1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\n",
|
|
1000
|
|
));
|
|
$outputdl->downloadFile("/tmp/testDFWoutputDL");
|
|
}
|
|
|
|
public function test_outputdl_Announce_1()
|
|
{
|
|
// Check the announce of Resume mode Enabled
|
|
$outputdl = new Outputdl();
|
|
$outputdl->downloadFile("/tmp/testDFWoutputDL");
|
|
$res = $outputdl->headers();
|
|
$this->assertSame(in_array("Accept-Ranges: bytes", $res), true);
|
|
}
|
|
|
|
public function test_outputdl_Announce_2()
|
|
{
|
|
// Check the announce of Resume mode Disabled
|
|
$outputdl = new Outputdl();
|
|
$outputdl->resumeAllow(false);
|
|
$outputdl->downloadFile("/tmp/testDFWoutputDL");
|
|
$res = $outputdl->headers();
|
|
$this->assertSame(in_array("Accept-Ranges: none", $res), true);
|
|
}
|
|
|
|
public function test_outputdl_Partial_1()
|
|
{
|
|
// Check the content get with provided range
|
|
$outputdl = new Outputdl();
|
|
$_SERVER["HTTP_RANGE"] = "bytes=3-9";
|
|
$this->expectOutputString("4567890");
|
|
$outputdl->downloadFile("/tmp/testDFWoutputDL");
|
|
unset($_SERVER["HTTP_RANGE"]);
|
|
}
|
|
|
|
public function test_outputdl_Partial_2()
|
|
{
|
|
// Check the content get with provided range
|
|
$outputdl = new Outputdl();
|
|
$_SERVER["HTTP_RANGE"] = "bytes=3-";
|
|
$this->expectOutputString(substr(str_repeat(
|
|
"1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\n",
|
|
1000
|
|
), 3));
|
|
$outputdl->downloadFile("/tmp/testDFWoutputDL");
|
|
unset($_SERVER["HTTP_RANGE"]);
|
|
}
|
|
|
|
public function test_outputdl_Partial_3()
|
|
{
|
|
// Check the content get with provided range
|
|
$outputdl = new Outputdl();
|
|
$_SERVER["HTTP_RANGE"] = "bytes=0-";
|
|
$this->expectOutputString(str_repeat(
|
|
"1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\n",
|
|
1000
|
|
));
|
|
$outputdl->downloadFile("/tmp/testDFWoutputDL");
|
|
unset($_SERVER["HTTP_RANGE"]);
|
|
}
|
|
|
|
public function test_outputdl_Partial_4()
|
|
{
|
|
// Check the content get with provided range
|
|
$outputdl = new Outputdl();
|
|
$_SERVER["HTTP_RANGE"] = "bytes=-5";
|
|
$this->expectOutputString("wxyz\n");
|
|
$outputdl->downloadFile("/tmp/testDFWoutputDL");
|
|
unset($_SERVER["HTTP_RANGE"]);
|
|
}
|
|
|
|
public function test_outputdl_Partial_5()
|
|
{
|
|
// Check the content get with provided range
|
|
$outputdl = new Outputdl();
|
|
$_SERVER["HTTP_RANGE"] = "bytes=0-3,6-9";
|
|
$this->expectOutputString("--Qm91bmRhcnk=\r
|
|
Content-Range: bytes 0-3/63000\r
|
|
Content-Type: application/octet-stream\r
|
|
\r
|
|
1234\r
|
|
--Qm91bmRhcnk=\r
|
|
Content-Range: bytes 6-9/63000\r
|
|
Content-Type: application/octet-stream\r
|
|
\r
|
|
7890\r
|
|
--Qm91bmRhcnk=--\r
|
|
");
|
|
$outputdl->downloadFile("/tmp/testDFWoutputDL");
|
|
unset($_SERVER["HTTP_RANGE"]);
|
|
}
|
|
|
|
public function test_outputdl_PartialWrong_1()
|
|
{
|
|
// Check the invalid provided range
|
|
unset($_SERVER["HTTP_RANGE"]);
|
|
$outputdl = new Outputdl();
|
|
$_SERVER["HTTP_RANGE"] = "bytes=99999-";
|
|
$this->expectException("Exception", "Invalid range provided", 416);
|
|
$outputdl->downloadFile("/tmp/testDFWoutputDL");
|
|
}
|
|
|
|
public function test_outputdl_PartialWrong_2()
|
|
{
|
|
// Check the invalid provided range
|
|
unset($_SERVER["HTTP_RANGE"]);
|
|
$outputdl = new Outputdl();
|
|
$_SERVER["HTTP_RANGE"] = "bytes=9-3";
|
|
$this->expectException("Exception", "Invalid range provided", 416);
|
|
$outputdl->downloadFile("/tmp/testDFWoutputDL");
|
|
}
|
|
|
|
public function test_outputdl_PartialWrong_3()
|
|
{
|
|
// Check the invalid provided range
|
|
unset($_SERVER["HTTP_RANGE"]);
|
|
$outputdl = new Outputdl();
|
|
$_SERVER["HTTP_RANGE"] = "bytes=9-999999";
|
|
$this->expectException("Exception", "Invalid range provided", 416);
|
|
$outputdl->downloadFile("/tmp/testDFWoutputDL");
|
|
}
|
|
|
|
public function test_outputdl_PartialWrong_4()
|
|
{
|
|
// Check the invalid provided range
|
|
unset($_SERVER["HTTP_RANGE"]);
|
|
$outputdl = new Outputdl();
|
|
$_SERVER["HTTP_RANGE"] = "bytes=-";
|
|
$this->expectException("Exception", "Invalid range provided", 416);
|
|
$outputdl->downloadFile("/tmp/testDFWoutputDL");
|
|
}
|
|
|
|
public function test_outputdl_invalidBase_1()
|
|
{
|
|
// Check the base comparison : OK
|
|
unset($_SERVER["HTTP_RANGE"]);
|
|
$outputdl = new Outputdl();
|
|
$outputdl->base("/tmp");
|
|
$this->expectOutputString(str_repeat(
|
|
"1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\n",
|
|
1000
|
|
));
|
|
$outputdl->downloadFile("/tmp/testDFWoutputDL");
|
|
}
|
|
|
|
public function test_outputdl_invalidBase_2()
|
|
{
|
|
// Check the base comparison : BAD
|
|
unset($_SERVER["HTTP_RANGE"]);
|
|
$outputdl = new Outputdl();
|
|
$outputdl->base("/tmp");
|
|
$this->expectException(
|
|
"Exception",
|
|
"Invalid file to download : out of base",
|
|
406
|
|
);
|
|
$outputdl->downloadFile("../../../../../..//etc/passwd");
|
|
}
|
|
|
|
public function test_outputdl_invalidFile_1()
|
|
{
|
|
// Check the base comparison : BAD Symlink
|
|
unset($_SERVER["HTTP_RANGE"]);
|
|
$outputdl = new Outputdl();
|
|
$outputdl->base("/tmp");
|
|
$this->expectException(
|
|
"Exception",
|
|
"Invalid file to download : not a file",
|
|
406
|
|
);
|
|
$outputdl->downloadFile("/tmp/testDFWoutputDL3");
|
|
}
|
|
|
|
public function test_outputdl_invalidFile_2()
|
|
{
|
|
// Check the base comparison : Non existing
|
|
unset($_SERVER["HTTP_RANGE"]);
|
|
$outputdl = new Outputdl();
|
|
$outputdl->base("/tmp");
|
|
$this->expectException(
|
|
"Exception",
|
|
"Invalid file to download : file doesn't exists",
|
|
404
|
|
);
|
|
$outputdl->downloadFile("/tmp/testDFWoutputNON");
|
|
}
|
|
}
|