File: SCPSSH2UserStoryTest.php

package info (click to toggle)
php-phpseclib 2.0.15-1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 2,640 kB
  • sloc: php: 10,834; sh: 84; xml: 52; makefile: 22
file content (100 lines) | stat: -rw-r--r-- 3,088 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
<?php

/**
 * @author    Andreas Fischer <bantu@phpbb.com>
 * @copyright 2014 Andreas Fischer
 * @license   http://www.opensource.org/licenses/mit-license.html  MIT License
 */

use phpseclib\Net\SCP;
use phpseclib\Net\SSH2;

class Functional_Net_SCPSSH2UserStoryTest extends PhpseclibFunctionalTestCase
{
    protected static $remoteFile;
    protected static $exampleData;
    protected static $exampleDataLength;

    public static function setUpBeforeClass()
    {
        parent::setUpBeforeClass();
        self::$remoteFile = uniqid('phpseclib-scp-ssh2-') . '.txt';
        self::$exampleData = str_repeat('abscp12345', 1000);
        self::$exampleDataLength = 10000;
    }

    public function testConstructSSH2()
    {
        $ssh = new SSH2($this->getEnv('SSH_HOSTNAME'));
        $this->assertTrue(
            $ssh->login(
                $this->getEnv('SSH_USERNAME'),
                $this->getEnv('SSH_PASSWORD')
            )
        );
        return $ssh;
    }

    /**
     * @depends testConstructSSH2
     * @param \phpseclib\Net\SSH2 $ssh
     */
    public function testConstructor($ssh)
    {
        $scp = new SCP($ssh);
        $this->assertTrue(
            is_object($scp),
            'Could not construct \phpseclib\Net\SCP object.'
        );
        return $scp;
    }

    /**
     * @depends testConstructor
     * @param \phpseclib\Net\SCP $scp
     */
    public function testPutGetString($scp)
    {
        $this->assertTrue(
            $scp->put(self::$remoteFile, self::$exampleData),
            'Failed asserting that data could successfully be put() into file.'
        );
        $content = $scp->get(self::$remoteFile);
        // TODO: Address https://github.com/phpseclib/phpseclib/issues/146
        $this->assertContains(
            strlen($content),
            array(self::$exampleDataLength, self::$exampleDataLength + 1),
            'Failed asserting that string length matches expected length.'
        );
        $this->assertContains(
            $content,
            array(self::$exampleData, self::$exampleData . "\0"),
            'Failed asserting that string content matches expected content.'
        );
        return $scp;
    }

    /**
     * @depends testPutGetString
     * @param \phpseclib\Net\SCP $scp
     */
    public function testGetFile($scp)
    {
        $localFilename = $this->createTempFile();
        $this->assertTrue(
            $scp->get(self::$remoteFile, $localFilename),
            'Failed asserting that get() into file was successful.'
        );
        // TODO: Address https://github.com/phpseclib/phpseclib/issues/146
        $this->assertContains(
            filesize($localFilename),
            array(self::$exampleDataLength, self::$exampleDataLength + 1),
            'Failed asserting that filesize matches expected data size.'
        );
        $this->assertContains(
            file_get_contents($localFilename),
            array(self::$exampleData, self::$exampleData . "\0"),
            'Failed asserting that file content matches expected content.'
        );
    }
}