PHP Classes

File: tests/FtpAdapterMiscTest.php

Recommend this page to a friend!
  Classes of Johnny Mast   Redbox PHP Scandir Filter   tests/FtpAdapterMiscTest.php   Download  
File: tests/FtpAdapterMiscTest.php
Role: Unit test script
Content type: text/plain
Description: Unit test script
Class: Redbox PHP Scandir Filter
Scan files for new or modified files
Author: By
Last change:
Date: 8 years ago
Size: 6,844 bytes
 

Contents

Class file image Download
<?php
namespace Redbox\Scan\Tests;
use
Redbox\Scan\Exception;
use
Redbox\Scan\Adapter;
use
Redbox\Scan\Report;
use
Redbox\Scan;

/**
 * This class will run tests against the default Ftp adapter. Please not that this
 * tests will be skipped on travis. You can only run these tests on your local machine.
 *
 * @coversDefaultClass \Redbox\Scan\Adapter\Ftp
 * @package Redbox\Scan\Tests
 * @group ExcludeFromHHVM
 */
class FtpAdapterMiscTest extends \PHPUnit_Framework_TestCase
{

   
/**
     * That that Adapter\Ftp::setPassiveMode() will return NULL if there
     * is no connection.
     */
   
public function test_ftp_set_passive_mode_returns_null_if_not_connected()
    {
       
$anonymous_ftp_adapter = new Adapter\Ftp (
           
'ftp.kernel.org',
           
'anonymous',
           
'anonymous',
           
''
       
);
       
$this->assertNull($anonymous_ftp_adapter->setPassiveMode(true));
    }

   
/**
     * That that Adapter\Ftp::setActiveMode() will return NULL if there
     * is no connection.
     */
   
public function test_ftp_set_active_mode_returns_null_if_not_connected()
    {
       
$anonymous_ftp_adapter = new Adapter\Ftp (
           
'ftp.kernel.org',
           
'anonymous',
           
'anonymous',
           
''
       
);
       
$this->assertNull($anonymous_ftp_adapter->setActiveMode());
    }

   
/**
     * Validate that failing connections throw a Exception\RuntimeException
     * @expectedException \Redbox\Scan\Exception\RuntimeException
     */
   
public function test_ftp_failing_connections_should_throw_a_exception()
    {
       
$adapter = new Adapter\Ftp (
           
$host = 'example._com',
           
$username = '',
           
$password = '',
           
$file = ''
       
);
       
$adapter->authenticate();
    }

   
/**
     * Validate that invalid login's throw a Exception\RuntimeException
     * @expectedException \Redbox\Scan\Exception\RuntimeException
     */
   
public function test_ftp_invalid_authentication_should_throw_a_exception()
    {

       
$adapter = new Adapter\Ftp (
           
$host = 'ftp.kernel.org',
           
$username = 'ad',
           
$password = 'anonymous',
           
$file = ''
       
);
       
$adapter->authenticate();
        unset(
$adapter);
    }

   
/**
     * Test if Adapter\Ftp::setTransferMode() to FTP_MODE_ASCII will return
     * FTP_MODE_ASCII when Adapter\Ftp::getTransferMode() is called.
     */
   
public function test_ftp_set_and_get_transfer_mode_ascii_returns_ascii()
    {
       
$adapter = new Adapter\Ftp (
           
$host = 'ftp.kernel.org',
           
$username = 'ad',
           
$password = 'anonymous',
           
$file = ''
       
);
       
$adapter->setTransferMode(Adapter\Ftp::FTP_MODE_ASCII);
       
$this->assertEquals(Adapter\Ftp::FTP_MODE_ASCII, $adapter->getTransferMode());
    }

   
/**
     * Test if Adapter\Ftp::setTransferMode() to FTP_MODE_ASCII will return
     * FTP_MODE_ASCII when Adapter\Ftp::getTransferMode() is called.
     */
   
public function test_ftp_set_and_get_transfer_mode_binary_returns_binary()
    {
       
$adapter = new Adapter\Ftp (
           
$host = 'ftp.kernel.org',
           
$username = 'ad',
           
$password = 'anonymous',
           
$file = ''
       
);
       
$adapter->setTransferMode(Adapter\Ftp::FTP_MODE_BINARY);
       
$this->assertEquals(Adapter\Ftp::FTP_MODE_BINARY, $adapter->getTransferMode());
    }

   
/**
     * Assert that reading from a local ftp server will work if the credentials are correct.
     */
   
public function test_ftp_local_connection_file_read()
    {
        if ((
$user = getenv('FTP_USER')) && ($pass = getenv('FTP_PASSWORD')) && ($host = getenv('FTP_HOST')))
        {
           
$ftp = new Adapter\Ftp (
               
$host,
               
$user,
               
$pass,
               
'httpdocs/scan.yml'
           
);
           
$ret = $ftp->authenticate();
           
$this->assertTrue($ret);

            if (
$ret === true)
            {
               
$report = $ftp->read();
               
$this->assertInstanceOf('Redbox\Scan\Report\Report', $report);
            }
            unset(
$ftp);
        }
    }

   
/**
     * Assert that writing to a local ftp server will work if the credentials are correct.
     */
   
public function test_ftp_local_connection_file_write()
    {
        if ((
$user = getenv('FTP_USER')) && ($pass = getenv('FTP_PASSWORD')) && ($host = getenv('FTP_HOST')))
        {
           
$ftp = new Adapter\Ftp (
               
$host,
               
$user,
               
$pass,
               
'httpdocs/scan_new.yml'
           
);
           
$ret = $ftp->authenticate();
           
$this->assertTrue($ret);

            if (
$ret === true)
            {
               
$report = new Scan\Report\Report();
               
$items = array('a' => 'b');
               
$report->setItems($items);

               
$didWrite = $ftp->write($report);
               
$this->assertTrue($didWrite);
            }
            unset(
$ftp);
        }
    }

    public function
test_ftp_local_connection_file_write_fails_on_bad_report()
    {

        if ((
$user = getenv('FTP_USER')) && ($pass = getenv('FTP_PASSWORD')) && ($host = getenv('FTP_HOST')))
        {
           
$ftp = new Adapter\Ftp (
               
$host,
               
$user,
               
$pass,
               
'httpdocs/scan.yml'
           
);

           
$result = $ftp->read();

           
/** @noinspection PhpParamsInspection */
           
$this->assertFalse($result);
            unset(
$ftp);
        }
    }

   
/**
     * Assert that reading from a local ftp server will fail if the report is invalid.
     */
   
public function test_ftp_local_connection_file_read_fails()
    {
        if ((
$user = getenv('FTP_USER')) && ($pass = getenv('FTP_PASSWORD')) && ($host = getenv('FTP_HOST')))
        {
           
$ftp = new Adapter\Ftp (
               
$host,
               
$user,
               
$pass,
               
'httpdocs/scan.yml'
           
);
           
$result = $ftp->write();
           
$this->assertFalse($result);
        }
    }

   
/**
     * Assert that writing to a local ftp server will fail if the user is not authenticated.
     */
   
public function test_ftp_local_connection_file_write_fails()
    {
        if ((
$user = getenv('FTP_USER')) && ($pass = getenv('FTP_PASSWORD')) && ($host = getenv('FTP_HOST')))
        {
           
$ftp = new Adapter\Ftp (
               
'',
               
'',
               
'',
               
'httpdocs/scan_new.yml'
           
);

           
$report = new Scan\Report\Report();
           
$items = array('a' => 'b');
           
$report->setItems($items);

           
$result = $ftp->write($report);
           
$this->assertFalse($result);
            unset(
$ftp);
        }
    }
}