Guides
- Introduction
- Getting Started
- Acceptance Tests
- Functional Tests
- Unit Tests
- Debugging
- Modules And Helpers
- Reusing Test Code
- Advanced Usage
- BDD
- Customization
- Data
- API Testing
- Codecoverage
- Reporting
- Continuous Integration
- Parallel Execution
Testomatio - Test Management for Codeception
Search
FTP
Installation
composer require --dev codeception/module-ftpDescription
Works with SFTP/FTP servers.
In order to test the contents of a specific file stored on any remote FTP/SFTP system this module downloads a temporary file to the local system. The temporary directory is defined by default as
tests/_datato specify a different directory set the tmp config option to your chosen path.
Don’t forget to create the folder and ensure its writable.
Supported and tested FTP types are:
- FTP
- SFTP
Connection uses php build in FTP client for FTP, connection to SFTP uses phpseclib pulled in using composer.
For SFTP, add phpseclib to require list.
"require": {
"phpseclib/phpseclib": "^2.0.14"
}Status
- Stability:
- FTP: stable
- SFTP: stable
Config
- type: ftp - type of connection ftp/sftp (defaults to ftp).
- host required - hostname/ip address of the ftp server.
- port: 21 - port number for the ftp server
- timeout: 90 - timeout settings for connecting the ftp server.
- user: anonymous - user to access ftp server, defaults to anonymous authentication.
- password - password, defaults to empty for anonymous.
- key - path to RSA key for sftp.
- tmp - path to local directory for storing tmp files.
- passive: true - Turns on or off passive mode (FTP only)
- cleanup: true - remove tmp files from local directory on completion.
Example
Example (FTP)
modules:
enabled: [FTP]
config:
FTP:
type: ftp
host: '127.0.0.1'
port: 21
timeout: 120
user: 'root'
password: 'root'
key: ~/.ssh/id_rsa
tmp: 'tests/_data/ftp'
passive: true
cleanup: false
Example (SFTP)
modules:
enabled: [FTP]
config:
FTP:
type: sftp
host: '127.0.0.1'
port: 22
timeout: 120
user: 'root'
password: 'root'
key: ''
tmp: 'tests/_data/ftp'
cleanup: false
This module extends the Filesystem module, file contents methods are inherited from this module.
Actions
amInPath
param string$pathreturn void
Enters a directory on the ftp system - FTP root directory is used by default
cleanDir
param string$dirnamereturn void
Erases directory contents on the FTP/SFTP server
<?php
$I->cleanDir('logs');copyDir
param string$srcparam string$dstreturn void
Currently not supported in this module, overwrite inherited method
deleteDir
param string$dirnamereturn void
Deletes directory with all subdirectories on the remote FTP/SFTP server
<?php
$I->deleteDir('vendor');deleteFile
param string$filenamereturn void
Deletes a file on the remote FTP/SFTP system
<?php
$I->deleteFile('composer.lock');deleteThisFile
return void
Deletes a file
dontSeeFileFound
param string$filenameparam string$pathreturn void
Checks if file does not exist in path on the remote FTP/SFTP system
dontSeeFileFoundMatches
param string$regexparam string$pathreturn void
Checks if file does not exist in path on the remote FTP/SFTP system, using regular expression as filename.
DOES NOT OPEN the file when it’s exists
dontSeeInThisFile
param string$textreturn void
Checks If opened file doesn’t contain text in it
<?php
$I->openFile('composer.json');
$I->dontSeeInThisFile('codeception/codeception');grabDirectory
return string
Grabber method to return current working directory
<?php
$pwd = $I->grabDirectory();grabFileCount
param string$pathparam bool$ignore - suppress ‘.’, ‘..’ and ‘.thumbs.db’return int
Grabber method for returning file/folders count in directory
<?php
$count = $I->grabFileCount();
$count = $I->grabFileCount('TEST', false); // Include . .. .thumbs.dbgrabFileList
param string$pathparam bool$ignore - suppress ‘.’, ‘..’ and ‘.thumbs.db’return array
Grabber method for returning file/folders listing in an array
<?php
$files = $I->grabFileList();
$count = $I->grabFileList('TEST', false); // Include . .. .thumbs.dbgrabFileModified
param string$filenamereturn int
Grabber method to return last modified timestamp
<?php
$time = $I->grabFileModified('test.txt');grabFileSize
param string$filenamereturn int
Grabber method to return file size
<?php
$size = $I->grabFileSize('test.txt');loginAs
param string$userparam string$passwordreturn void
Change the logged in user mid-way through your test, this closes the current connection to the server and initialises and new connection.
On initiation of this modules you are automatically logged into the server using the specified config options or defaulted to anonymous user if not provided.
<?php
$I->loginAs('user','password');makeDir
param string$dirnamereturn void
Create a directory on the server
<?php
$I->makeDir('vendor');openFile
param string$filenamereturn void
Opens a file (downloads from the remote FTP/SFTP system to a tmp directory for processing) and stores it’s content.
Usage:
<?php
$I->openFile('composer.json');
$I->seeInThisFile('codeception/codeception');renameDir
param string$dirnameparam string$renamereturn void
Rename/Move directory on the FTP/SFTP server
<?php
$I->renameDir('vendor', 'vendor_old');renameFile
param string$filenameparam string$renamereturn void
Rename/Move file on the FTP/SFTP server
<?php
$I->renameFile('composer.lock', 'composer_old.lock');seeFileContentsEqual
param string$textreturn void
Checks the strict matching of file contents.
Unlike seeInThisFile will fail if file has something more than expected lines.
Better to use with HEREDOC strings.
Matching is done after removing “\r” chars from file content.
<?php
$I->openFile('process.pid');
$I->seeFileContentsEqual('3192');seeFileFound
param string$filenameparam string$pathreturn void
Checks if file exists in path on the remote FTP/SFTP system.
DOES NOT OPEN the file when it’s exists
<?php
$I->seeFileFound('UserModel.php','app/models');seeFileFoundMatches
param string$regexparam string$pathreturn void
Checks if file exists in path on the remote FTP/SFTP system, using regular expression as filename.
DOES NOT OPEN the file when it’s exists
<?php
$I->seeFileFoundMatches('/^UserModel_([0-9]{6}).php$/','app/models');seeInThisFile
param string$textreturn void
Checks If opened file has text in it.
Usage:
<?php
$I->openFile('composer.json');
$I->seeInThisFile('codeception/codeception');seeNumberNewLines
param int$number New linesreturn void
Checks If opened file has the number of new lines.
Usage:
<?php
$I->openFile('composer.json');
$I->seeNumberNewLines(5);seeThisFileMatches
param string$regexreturn void
Checks that contents of currently opened file matches $regex
writeToFile
param string$filenameparam string$contentsreturn void
Saves contents to tmp file and uploads the FTP/SFTP system.
Overwrites current file on server if exists.
<?php
$I->writeToFile('composer.json', 'some data here');


