Active mode FTP test cases with server not establishing data connection

591 -> FTP multi PORT and 425 on upload
592 -> FTP multi PORT and 421 on upload
593 -> FTP multi PORT upload, no data conn and no transient neg. reply
594 -> FTP multi PORT upload, no data conn and no positive prelim. reply

1206 -> FTP PORT and 425 on download
1207 -> FTP PORT and 421 on download
1208 -> FTP PORT download, no data conn and no transient negative reply
1209 -> FTP PORT download, no data conn and no positive preliminary reply
This commit is contained in:
Yang Tse 2011-11-11 19:46:44 +01:00
parent fd765c627f
commit 082e8a3b03
12 changed files with 465 additions and 20 deletions

View File

@ -3,4 +3,11 @@
# per line.
# Lines starting with '#' letters are treated as comments.
811
589
591
592
593
594
1206
1207
1208
1209

View File

@ -47,8 +47,8 @@ test542 test543 test544 test545 test546 test547 test548 test549 test550 \
test551 test552 test553 test554 test555 test556 test557 test560 test561 \
test562 test563 test564 test565 test566 test567 test568 test569 test570 \
test571 test572 test573 test574 test575 test576 test578 test579 test580 \
test581 test582 test583 test584 test585 test586 test587 test588 test589 \
test590 \
test581 test582 test583 test584 test585 test586 test587 test588 test590 \
test591 test592 test593 test594 \
test600 test601 test602 test603 test604 \
test605 test606 test607 test608 test609 test610 test611 test612 test613 \
test614 test615 test616 test617 test618 test619 test620 test621 test622 \
@ -75,7 +75,8 @@ test1102 test1103 test1104 test1105 test1106 test1107 test1108 test1109 \
test1110 test1111 test1112 test1113 test1114 test1115 test1116 test1117 \
test1118 test1119 test1120 test1121 test1122 test1123 test1124 test1125 \
test1126 test1127 test1128 test1129 test1130 test1131 \
test1200 test1201 test1202 test1203 test1204 test1205 \
test1200 test1201 test1202 test1203 test1204 test1205 test1206 test1207 \
test1208 test1209 \
test1300 test1301 test1302 test1303 test1304 test1305 \
test1306 test1307 test1308 test1309 test1310 test1311 test1312 test1313 \
test1314 \

53
tests/data/test1206 Normal file
View File

@ -0,0 +1,53 @@
<testcase>
<info>
<keywords>
FTP
PORT
RETR
NODATACONN425
</keywords>
</info>
# Server-side
<reply>
<data nocheck="yes">
some bytes
</data>
<servercmd>
NODATACONN425
</servercmd>
</reply>
# Client-side
<client>
<server>
ftp
</server>
<name>
FTP PORT and 425 on download
</name>
<command>
--max-time %FTPTIME2 ftp://%HOSTIP:%FTPPORT/1206 -P -
</command>
</client>
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^EPRT \|1\|(.*)/EPRT \|1\|/
</strippart>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPRT |1|
TYPE I
SIZE 1206
RETR 1206
QUIT
</protocol>
<errorcode>
19
</errorcode>
</verify>
</testcase>

53
tests/data/test1207 Normal file
View File

@ -0,0 +1,53 @@
<testcase>
<info>
<keywords>
FTP
PORT
RETR
NODATACONN421
</keywords>
</info>
# Server-side
<reply>
<data nocheck="yes">
some bytes
</data>
<servercmd>
NODATACONN421
</servercmd>
</reply>
# Client-side
<client>
<server>
ftp
</server>
<name>
FTP PORT and 421 on download
</name>
<command>
--max-time %FTPTIME2 ftp://%HOSTIP:%FTPPORT/1207 -P -
</command>
</client>
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^EPRT \|1\|(.*)/EPRT \|1\|/
</strippart>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPRT |1|
TYPE I
SIZE 1207
RETR 1207
QUIT
</protocol>
<errorcode>
19
</errorcode>
</verify>
</testcase>

53
tests/data/test1208 Normal file
View File

@ -0,0 +1,53 @@
<testcase>
<info>
<keywords>
FTP
PORT
RETR
NODATACONN150
</keywords>
</info>
# Server-side
<reply>
<data nocheck="yes">
some bytes
</data>
<servercmd>
NODATACONN150
</servercmd>
</reply>
# Client-side
<client>
<server>
ftp
</server>
<name>
FTP PORT download, no data conn and no transient negative reply
</name>
<command>
--max-time %FTPTIME2 ftp://%HOSTIP:%FTPPORT/1208 -P -
</command>
</client>
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^EPRT \|1\|(.*)/EPRT \|1\|/
</strippart>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPRT |1|
TYPE I
SIZE 1208
RETR 1208
QUIT
</protocol>
<errorcode>
19
</errorcode>
</verify>
</testcase>

53
tests/data/test1209 Normal file
View File

@ -0,0 +1,53 @@
<testcase>
<info>
<keywords>
FTP
PORT
RETR
NODATACONN
</keywords>
</info>
# Server-side
<reply>
<data nocheck="yes">
some bytes
</data>
<servercmd>
NODATACONN
</servercmd>
</reply>
# Client-side
<client>
<server>
ftp
</server>
<name>
FTP PORT download, no data conn and no positive preliminary reply
</name>
<command>
--max-time %FTPTIME2 ftp://%HOSTIP:%FTPPORT/1209 -P -
</command>
</client>
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^EPRT \|1\|(.*)/EPRT \|1\|/
</strippart>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
EPRT |1|
TYPE I
SIZE 1209
RETR 1209
QUIT
</protocol>
<errorcode>
19
</errorcode>
</verify>
</testcase>

View File

@ -1,6 +1,7 @@
#
# For this test the server rejects the EPRT command
# and code in lib589 makes use of curl_multi_timeout()
# For this test the server rejects the EPRT command,
# code in lib591 makes use of curl_multi_timeout()
# and server does not establish data connection.
#
<testcase>
<info>
@ -10,6 +11,7 @@ PORT
STOR
multi
EPRT refused
NODATACONN425
</keywords>
</info>
@ -18,6 +20,7 @@ EPRT refused
<data>
</data>
<servercmd>
NODATACONN425
REPLY EPRT 500 we don't like EPRT now
</servercmd>
</reply>
@ -28,16 +31,16 @@ REPLY EPRT 500 we don't like EPRT now
ftp
</server>
<tool>
lib589
lib591
</tool>
<name>
FTP PORT upload using multi interface timeout, EPRT doesn't work
FTP multi PORT and 425 on upload
</name>
<command>
ftp://%HOSTIP:%FTPPORT/path/589 log/upload589
ftp://%HOSTIP:%FTPPORT/path/591 %FTPTIME2 log/upload591
</command>
<file name="log/upload589">
Moooooooooooo for 589
<file name="log/upload591">
Moooooooooooo for 591
upload this
</file>
</client>
@ -57,12 +60,13 @@ CWD path
EPRT |1|
PORT
TYPE I
STOR 589
STOR 591
QUIT
</protocol>
<errorcode>
28
</errorcode>
<upload>
Moooooooooooo for 589
upload this
</upload>
</verify>
</testcase>

72
tests/data/test592 Normal file
View File

@ -0,0 +1,72 @@
#
# For this test the server rejects the EPRT command,
# code in lib591 makes use of curl_multi_timeout()
# and server does not establish data connection.
#
<testcase>
<info>
<keywords>
FTP
PORT
STOR
multi
EPRT refused
NODATACONN421
</keywords>
</info>
# Server-side
<reply>
<data>
</data>
<servercmd>
NODATACONN421
REPLY EPRT 500 we don't like EPRT now
</servercmd>
</reply>
# Client-side
<client>
<server>
ftp
</server>
<tool>
lib591
</tool>
<name>
FTP multi PORT and 421 on upload
</name>
<command>
ftp://%HOSTIP:%FTPPORT/path/592 %FTPTIME2 log/upload592
</command>
<file name="log/upload592">
Moooooooooooo for 592
upload this
</file>
</client>
# Verify data after the test has been "shot"
<verify>
# Strip off parts of the PORT and EPRT commands that might differ
<strippart>
s/^PORT (.*)/PORT/
s/^EPRT \|1\|(.*)/EPRT \|1\|/
</strippart>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPRT |1|
PORT
TYPE I
STOR 592
QUIT
</protocol>
<errorcode>
28
</errorcode>
<upload>
</upload>
</verify>
</testcase>

72
tests/data/test593 Normal file
View File

@ -0,0 +1,72 @@
#
# For this test the server rejects the EPRT command,
# code in lib591 makes use of curl_multi_timeout()
# and server does not establish data connection.
#
<testcase>
<info>
<keywords>
FTP
PORT
STOR
multi
EPRT refused
NODATACONN150
</keywords>
</info>
# Server-side
<reply>
<data>
</data>
<servercmd>
NODATACONN150
REPLY EPRT 500 we don't like EPRT now
</servercmd>
</reply>
# Client-side
<client>
<server>
ftp
</server>
<tool>
lib591
</tool>
<name>
FTP multi PORT upload, no data conn and no transient neg. reply
</name>
<command>
ftp://%HOSTIP:%FTPPORT/path/593 %FTPTIME2 log/upload593
</command>
<file name="log/upload593">
Moooooooooooo for 593
upload this
</file>
</client>
# Verify data after the test has been "shot"
<verify>
# Strip off parts of the PORT and EPRT commands that might differ
<strippart>
s/^PORT (.*)/PORT/
s/^EPRT \|1\|(.*)/EPRT \|1\|/
</strippart>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPRT |1|
PORT
TYPE I
STOR 593
QUIT
</protocol>
<errorcode>
28
</errorcode>
<upload>
</upload>
</verify>
</testcase>

72
tests/data/test594 Normal file
View File

@ -0,0 +1,72 @@
#
# For this test the server rejects the EPRT command,
# code in lib591 makes use of curl_multi_timeout()
# and server does not establish data connection.
#
<testcase>
<info>
<keywords>
FTP
PORT
STOR
multi
EPRT refused
NODATACONN
</keywords>
</info>
# Server-side
<reply>
<data>
</data>
<servercmd>
NODATACONN
REPLY EPRT 500 we don't like EPRT now
</servercmd>
</reply>
# Client-side
<client>
<server>
ftp
</server>
<tool>
lib591
</tool>
<name>
FTP multi PORT upload, no data conn and no positive prelim. reply
</name>
<command>
ftp://%HOSTIP:%FTPPORT/path/594 %FTPTIME2 log/upload594
</command>
<file name="log/upload594">
Moooooooooooo for 594
upload this
</file>
</client>
# Verify data after the test has been "shot"
<verify>
# Strip off parts of the PORT and EPRT commands that might differ
<strippart>
s/^PORT (.*)/PORT/
s/^EPRT \|1\|(.*)/EPRT \|1\|/
</strippart>
<protocol>
USER anonymous
PASS ftp@example.com
PWD
CWD path
EPRT |1|
PORT
TYPE I
STOR 594
QUIT
</protocol>
<errorcode>
28
</errorcode>
<upload>
</upload>
</verify>
</testcase>

View File

@ -15,8 +15,8 @@ noinst_PROGRAMS = chkhostname \
lib579 lib529 lib530 lib532 lib533 lib536 lib537 lib540 lib541 lib542 \
lib543 lib544 lib545 lib547 lib548 lib549 lib552 lib553 lib554 lib555 \
lib556 lib539 lib557 lib560 lib562 lib564 lib565 lib566 lib567 lib568 \
lib569 lib570 lib571 lib572 lib573 lib582 lib583 lib585 lib587 lib589 \
lib590
lib569 lib570 lib571 lib572 lib573 lib582 lib583 lib585 lib587 lib590 \
lib591
chkhostname_SOURCES = chkhostname.c $(top_srcdir)/lib/curl_gethostname.c
chkhostname_LDADD = @CURL_NETWORK_LIBS@
@ -171,6 +171,6 @@ lib585_CPPFLAGS = $(AM_CPPFLAGS) -DLIB585
lib587_SOURCES = lib554.c $(SUPPORTFILES)
lib587_CPPFLAGS = $(AM_CPPFLAGS) -DLIB587
lib589_SOURCES = lib589.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)
lib590_SOURCES = lib590.c $(SUPPORTFILES)
lib591_SOURCES = lib591.c $(SUPPORTFILES) $(TESTUTIL) $(WARNLESS)

View File

@ -21,6 +21,8 @@
***************************************************************************/
#include "test.h"
/* lib591 is used for test cases 591, 592, 593 and 594 */
#include <fcntl.h>
#include "testutil.h"
@ -42,12 +44,12 @@ int test(char *URL)
start_test_timing();
upload = fopen(libtest_arg2, "rb");
upload = fopen(libtest_arg3, "rb");
if(!upload) {
error = ERRNO;
fprintf(stderr, "fopen() failed with error: %d (%s)\n",
error, strerror(error));
fprintf(stderr, "Error opening file: (%s)\n", libtest_arg2);
fprintf(stderr, "Error opening file: (%s)\n", libtest_arg3);
return TEST_ERR_FOPEN;
}
@ -74,6 +76,9 @@ int test(char *URL)
/* use active mode FTP */
easy_setopt(easy, CURLOPT_FTPPORT, "-");
/* server connection timeout */
easy_setopt(easy, CURLOPT_CONNECTTIMEOUT, strtol(libtest_arg2, NULL, 10));
multi_init(multi);
multi_add_handle(multi, easy);