mirror of
https://github.com/phpseclib/phpseclib.git
synced 2024-12-24 02:55:30 +00:00
SFTP: Add test for put() from local file.
This commit is contained in:
parent
6d42873b87
commit
ca4bcc180e
72
tests/Functional/Net/SFTPLargeFileTest.php
Normal file
72
tests/Functional/Net/SFTPLargeFileTest.php
Normal file
@ -0,0 +1,72 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @author Andreas Fischer <bantu@phpbb.com>
|
||||
* @copyright 2014 Andreas Fischer
|
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||
*/
|
||||
|
||||
require_once 'Crypt/Base.php';
|
||||
|
||||
class Functional_Net_SFTPLargeFileTest extends PhpseclibFunctionalTestCase
|
||||
{
|
||||
protected $sftp;
|
||||
protected $scratchDir;
|
||||
|
||||
static public function setUpBeforeClass()
|
||||
{
|
||||
if (!extension_loaded('mcrypt')) {
|
||||
self::markTestSkipped('This test depends on mcrypt for performance.');
|
||||
}
|
||||
parent::setUpBeforeClass();
|
||||
self::ensureConstant('CRYPT_AES_MODE', CRYPT_MODE_MCRYPT);
|
||||
self::ensureConstant('CRYPT_BLOWFISH_MODE', CRYPT_MODE_MCRYPT);
|
||||
self::ensureConstant('CRYPT_DES_MODE', CRYPT_MODE_MCRYPT);
|
||||
self::ensureConstant('CRYPT_RC2_MODE', CRYPT_MODE_MCRYPT);
|
||||
self::ensureConstant('CRYPT_RC4_MODE', CRYPT_MODE_MCRYPT);
|
||||
self::ensureConstant('CRYPT_RIJNDAEL_MODE', CRYPT_MODE_MCRYPT);
|
||||
self::ensureConstant('CRYPT_TWOFISH_MODE', CRYPT_MODE_MCRYPT);
|
||||
}
|
||||
|
||||
public function setUp()
|
||||
{
|
||||
$this->scratchDir = uniqid('phpseclib-sftp-large-scratch-');
|
||||
|
||||
$this->sftp = new Net_SFTP($this->getEnv('SSH_HOSTNAME'));
|
||||
$this->assertTrue($this->sftp->login(
|
||||
$this->getEnv('SSH_USERNAME'),
|
||||
$this->getEnv('SSH_PASSWORD')
|
||||
));
|
||||
$this->assertTrue($this->sftp->mkdir($this->scratchDir));
|
||||
$this->assertTrue($this->sftp->chdir($this->scratchDir));
|
||||
}
|
||||
|
||||
public function tearDown()
|
||||
{
|
||||
$this->sftp->chdir($this->getEnv('SSH_HOME'));
|
||||
$this->sftp->delete($this->scratchDir);
|
||||
parent::tearDown();
|
||||
}
|
||||
|
||||
/**
|
||||
* @group github298
|
||||
* @group github455
|
||||
* @group github457
|
||||
*/
|
||||
public function testPutSizeLocalFile()
|
||||
{
|
||||
$tmp_filename = $this->createTempFile(128, 1024 * 1024);
|
||||
$filename = 'file-large-from-local.txt';
|
||||
|
||||
$this->assertTrue(
|
||||
$this->sftp->put($filename, $tmp_filename, NET_SFTP_LOCAL_FILE),
|
||||
'Failed asserting that local file could be successfully put().'
|
||||
);
|
||||
|
||||
$this->assertSame(
|
||||
128 * 1024 * 1024,
|
||||
$this->sftp->size($filename),
|
||||
'Failed asserting that uploaded local file has the expected length.'
|
||||
);
|
||||
}
|
||||
}
|
@ -21,15 +21,29 @@ abstract class PhpseclibTestCase extends PHPUnit_Framework_TestCase
|
||||
|
||||
/**
|
||||
* Creates a temporary file on the local filesystem and returns its path.
|
||||
* All files created using this method will be deleted from the filesystem
|
||||
* on tearDown(), i.e. after each test method was run.
|
||||
* The $number_of_writes and $bytes_per_write parameters can be used to
|
||||
* write $number_of_writes * $bytes_per_write times the character 'a' to the
|
||||
* temporary file. All files created using this method will be deleted from
|
||||
* the filesystem on tearDown(), i.e. after each test method was run.
|
||||
*
|
||||
* @param int $number_of_writes
|
||||
* @param int $bytes_per_write
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function createTempFile()
|
||||
protected function createTempFile($number_of_writes = 0, $bytes_per_write = 0)
|
||||
{
|
||||
$filename = tempnam(sys_get_temp_dir(), 'phpseclib-test-');
|
||||
$this->assertTrue(file_exists($filename));
|
||||
$this->tempFilesToUnlinkOnTearDown[] = $filename;
|
||||
if ($number_of_writes > 0 && $bytes_per_write > 0) {
|
||||
$fp = fopen($filename, 'wb');
|
||||
for ($i = 0; $i < $number_of_writes; ++$i) {
|
||||
fwrite($fp, str_repeat('a', $bytes_per_write));
|
||||
}
|
||||
fclose($fp);
|
||||
$this->assertSame($number_of_writes * $bytes_per_write, filesize($filename));
|
||||
}
|
||||
return $filename;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user