Imported Upstream version 7.59.0
[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 <setenv>
36 SSL_CERT_FILE=
37 </setenv>
38  <command>
39 ftp://%HOSTIP:%FTPPORT/1405 -Q "NOOP 1" -Q "+NOOP 2" -Q "-NOOP 3" -Q "*FAIL" -Q "+*FAIL HARD" --libcurl log/test1405.c
40 </command>
41 </client>
42
43 # Verify data after the test has been "shot"
44 <verify>
45 <protocol>
46 USER anonymous
47 PASS ftp@example.com
48 PWD
49 NOOP 1
50 FAIL
51 EPSV
52 PASV
53 TYPE I
54 NOOP 2
55 FAIL HARD
56 SIZE 1405
57 RETR 1405
58 NOOP 3
59 QUIT
60 </protocol>
61 <file name="log/test1405.c" mode="text">
62 /********* Sample code generated by the curl command line tool **********
63  * All curl_easy_setopt() options are documented at:
64  * https://curl.haxx.se/libcurl/c/curl_easy_setopt.html
65  ************************************************************************/
66 #include <curl/curl.h>
67
68 int main(int argc, char *argv[])
69 {
70   CURLcode ret;
71   CURL *hnd;
72   struct curl_slist *slist1;
73   struct curl_slist *slist2;
74   struct curl_slist *slist3;
75
76   slist1 = NULL;
77   slist1 = curl_slist_append(slist1, "NOOP 1");
78   slist1 = curl_slist_append(slist1, "*FAIL");
79   slist2 = NULL;
80   slist2 = curl_slist_append(slist2, "NOOP 3");
81   slist3 = NULL;
82   slist3 = curl_slist_append(slist3, "NOOP 2");
83   slist3 = curl_slist_append(slist3, "*FAIL HARD");
84
85   hnd = curl_easy_init();
86   curl_easy_setopt(hnd, CURLOPT_BUFFERSIZE, 102400L);
87   curl_easy_setopt(hnd, CURLOPT_URL, "ftp://%HOSTIP:%FTPPORT/1405");
88   curl_easy_setopt(hnd, CURLOPT_HEADER, 1L);
89   curl_easy_setopt(hnd, CURLOPT_QUOTE, slist1);
90   curl_easy_setopt(hnd, CURLOPT_POSTQUOTE, slist2);
91   curl_easy_setopt(hnd, CURLOPT_PREQUOTE, slist3);
92   curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L);
93   curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L);
94
95   /* Here is a list of options the curl code used that cannot get generated
96      as source easily. You may select to either not use them or implement
97      them yourself.
98
99   CURLOPT_WRITEDATA set to a objectpointer
100   CURLOPT_INTERLEAVEDATA set to a objectpointer
101   CURLOPT_WRITEFUNCTION set to a functionpointer
102   CURLOPT_READDATA set to a objectpointer
103   CURLOPT_READFUNCTION set to a functionpointer
104   CURLOPT_SEEKDATA set to a objectpointer
105   CURLOPT_SEEKFUNCTION set to a functionpointer
106   CURLOPT_ERRORBUFFER set to a objectpointer
107   CURLOPT_STDERR set to a objectpointer
108   CURLOPT_DEBUGFUNCTION set to a functionpointer
109   CURLOPT_DEBUGDATA set to a objectpointer
110   CURLOPT_HEADERFUNCTION set to a functionpointer
111   CURLOPT_HEADERDATA set to a objectpointer
112
113   */
114
115   ret = curl_easy_perform(hnd);
116
117   curl_easy_cleanup(hnd);
118   hnd = NULL;
119   curl_slist_free_all(slist1);
120   slist1 = NULL;
121   curl_slist_free_all(slist2);
122   slist2 = NULL;
123   curl_slist_free_all(slist3);
124   slist3 = NULL;
125
126   return (int)ret;
127 }
128 /**** End of sample code ****/
129 </file>
130 <stripfile>
131 # CURLOPT_USERAGENT and CURLOPT_MAXREDIRS requires HTTP protocol
132 # support, IOW depends on configuration - just ignore these.
133 $_ = '' if /CURLOPT_USERAGENT/
134 $_ = '' if /CURLOPT_MAXREDIRS/
135 # CURLOPT_SSL_VERIFYPEER, SSH_KNOWNHOSTS and HTTP_VERSION vary with
136 # configurations - just ignore them
137 $_ = '' if /CURLOPT_SSL_VERIFYPEER/
138 $_ = '' if /CURLOPT_SSH_KNOWNHOSTS/
139 $_ = '' if /CURLOPT_HTTP_VERSION/
140 </stripfile>
141 </verify>
142 </testcase>