Imported Upstream version 7.53.1
[platform/upstream/curl.git] / tests / data / test1405
1 <testcase>
2 # Derived from test227
3 <info>
4 <keywords>
5 FTP
6 post-quote
7 pre-quote
8 --libcurl
9 </keywords>
10 </info>
11 # Server-side
12 <reply>
13 <data>
14 data
15     to
16       see
17 that FTP
18 works
19   so does it?
20 </data>
21 <servercmd>
22 REPLY EPSV 500 no such command
23 REPLY FAIL 500 this might not be a failure!
24 </servercmd>
25 </reply>
26
27 # Client-side
28 <client>
29 <server>
30 ftp
31 </server>
32  <name>
33 --libcurl for FTP with quote ops
34  </name>
35  <command>
36 ftp://%HOSTIP:%FTPPORT/1405 -Q "NOOP 1" -Q "+NOOP 2" -Q "-NOOP 3" -Q "*FAIL" -Q "+*FAIL HARD" --libcurl log/test1405.c
37 </command>
38 </client>
39
40 # Verify data after the test has been "shot"
41 <verify>
42 <protocol>
43 USER anonymous\r
44 PASS ftp@example.com\r
45 PWD\r
46 NOOP 1\r
47 FAIL\r
48 EPSV\r
49 PASV\r
50 TYPE I\r
51 NOOP 2\r
52 FAIL HARD\r
53 SIZE 1405\r
54 RETR 1405\r
55 NOOP 3\r
56 QUIT\r
57 </protocol>
58 <file name="log/test1405.c" mode="text">
59 /********* Sample code generated by the curl command line tool **********
60  * All curl_easy_setopt() options are documented at:
61  * https://curl.haxx.se/libcurl/c/curl_easy_setopt.html
62  ************************************************************************/
63 #include <curl/curl.h>
64
65 int main(int argc, char *argv[])
66 {
67   CURLcode ret;
68   CURL *hnd;
69   struct curl_slist *slist1;
70   struct curl_slist *slist2;
71   struct curl_slist *slist3;
72
73   slist1 = NULL;
74   slist1 = curl_slist_append(slist1, "NOOP 1");
75   slist1 = curl_slist_append(slist1, "*FAIL");
76   slist2 = NULL;
77   slist2 = curl_slist_append(slist2, "NOOP 3");
78   slist3 = NULL;
79   slist3 = curl_slist_append(slist3, "NOOP 2");
80   slist3 = curl_slist_append(slist3, "*FAIL HARD");
81
82   hnd = curl_easy_init();
83   curl_easy_setopt(hnd, CURLOPT_URL, "ftp://%HOSTIP:%FTPPORT/1405");
84   curl_easy_setopt(hnd, CURLOPT_HEADER, 1L);
85   curl_easy_setopt(hnd, CURLOPT_QUOTE, slist1);
86   curl_easy_setopt(hnd, CURLOPT_POSTQUOTE, slist2);
87   curl_easy_setopt(hnd, CURLOPT_PREQUOTE, slist3);
88   curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L);
89   curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L);
90
91   /* Here is a list of options the curl code used that cannot get generated
92      as source easily. You may select to either not use them or implement
93      them yourself.
94
95   CURLOPT_WRITEDATA set to a objectpointer
96   CURLOPT_INTERLEAVEDATA set to a objectpointer
97   CURLOPT_WRITEFUNCTION set to a functionpointer
98   CURLOPT_READDATA set to a objectpointer
99   CURLOPT_READFUNCTION set to a functionpointer
100   CURLOPT_SEEKDATA set to a objectpointer
101   CURLOPT_SEEKFUNCTION set to a functionpointer
102   CURLOPT_ERRORBUFFER set to a objectpointer
103   CURLOPT_STDERR set to a objectpointer
104   CURLOPT_DEBUGFUNCTION set to a functionpointer
105   CURLOPT_DEBUGDATA set to a objectpointer
106   CURLOPT_HEADERFUNCTION set to a functionpointer
107   CURLOPT_HEADERDATA set to a objectpointer
108
109   */
110
111   ret = curl_easy_perform(hnd);
112
113   curl_easy_cleanup(hnd);
114   hnd = NULL;
115   curl_slist_free_all(slist1);
116   slist1 = NULL;
117   curl_slist_free_all(slist2);
118   slist2 = NULL;
119   curl_slist_free_all(slist3);
120   slist3 = NULL;
121
122   return (int)ret;
123 }
124 /**** End of sample code ****/
125 </file>
126 <stripfile>
127 # CURLOPT_USERAGENT and CURLOPT_MAXREDIRS requires HTTP protocol
128 # support, IOW depends on configuration - just ignore these.
129 $_ = '' if /CURLOPT_USERAGENT/
130 $_ = '' if /CURLOPT_MAXREDIRS/
131 # CURLOPT_SSL_VERIFYPEER, SSH_KNOWNHOSTS and HTTP_VERSION vary with
132 # configurations - just ignore them
133 $_ = '' if /CURLOPT_SSL_VERIFYPEER/
134 $_ = '' if /CURLOPT_SSH_KNOWNHOSTS/
135 $_ = '' if /CURLOPT_HTTP_VERSION/
136 </stripfile>
137 </verify>
138 </testcase>