Browse Source

New FTP test from Nathaniel McHugh

experimental/first_unicode_implementation
Zoe Slattery 18 years ago
parent
commit
8ccb8ee6a2
  1. 41
      ext/ftp/tests/ftp_get_basic.phpt
  2. 25
      ext/ftp/tests/server.inc

41
ext/ftp/tests/ftp_get_basic.phpt

@ -0,0 +1,41 @@
--TEST--
FTP ftp_get file for both binary and ASCII transfer modes
--XFAIL--
Missing implementation in PHP6
--CREDITS--
Nathaniel McHugh
--SKIPIF--
<?php
require 'skipif.inc';
?>
--FILE--
<?php
require 'server.inc';
$ftp = ftp_connect('127.0.0.1', $port);
if (!$ftp) die("Couldn't connect to the server");
var_dump(ftp_login($ftp, 'user', 'pass'));
//test simple text transfer
$tmpfname = tempnam(".", "ftp_test");
var_dump(ftp_get($ftp, $tmpfname ,'a story.txt', FTP_ASCII));
echo file_get_contents($tmpfname);
//test binary data transfer
$tmpfname = tempnam(".", "ftp_test");
var_dump(ftp_get($ftp, $tmpfname, 'binary data.bin', FTP_BINARY));
var_dump(urlencode(file_get_contents($tmpfname)));
unlink($tmpfname);
//test non-existant file request
ftp_get($ftp, $tmpfname ,'a warning.txt', FTP_ASCII);
?>
--EXPECTF--
bool(true)
bool(true)
For sale: baby shoes, never worn.
bool(true)
string(21) "BINARYFoo%00Bar%0D%0A"
Warning: ftp_get(): a warning: No such file or directory in %sftp_get_basic.php on line %d

25
ext/ftp/tests/server.inc

@ -136,7 +136,6 @@ $cwd = '/';
$num_bogus_cmds = 0; $num_bogus_cmds = 0;
while($buf = fread($s, 4098)) { while($buf = fread($s, 4098)) {
if (!empty($bogus)) { if (!empty($bogus)) {
fputs($s, "502 Command not implemented (".$num_bogus_cmds++.").\r\n"); fputs($s, "502 Command not implemented (".$num_bogus_cmds++.").\r\n");
@ -262,7 +261,29 @@ while($buf = fread($s, 4098)) {
fputs($s, "550 No file named \"{$matches [1]}\"\r\n"); fputs($s, "550 No file named \"{$matches [1]}\"\r\n");
break; break;
} }
}
}elseif (preg_match('/^RETR ([\w\h]+)/', $buf, $matches)) {
if (!$fs = stream_socket_client("tcp://$host:$port")) {
fputs($s, "425 Can't open data connection\r\n");
continue;
}
switch($matches[1]){
case "a story":
fputs($s, "150 File status okay; about to open data connection.\r\n");
fputs($fs, "For sale: baby shoes, never worn.\r\n");
fputs($s, "226 Closing data Connection.\r\n");
break;
case "binary data":
fputs($s, "150 File status okay; about to open data connection.\r\n");
$transfer_type = $ascii? 'ASCII' : 'BINARY' ;
fputs($fs, $transfer_type."Foo\0Bar\r\n");
fputs($s, "226 Closing data Connection.\r\n");
break;
default:
fputs($s, "550 {$matches[1]}: No such file or directory \r\n");
break;
}
fclose($fs);
}
else { else {
fputs($s, "500 Syntax error, command unrecognized.\r\n"); fputs($s, "500 Syntax error, command unrecognized.\r\n");
dump_and_exit($buf); dump_and_exit($buf);

Loading…
Cancel
Save