Annotation of embedaddon/curl/tests/data/test1404, revision 1.1.1.1
1.1 misho 1: <testcase>
2: # Based on test 1315
3: <info>
4: <keywords>
5: HTTP
6: HTTP FORMPOST
7: HTTP file upload
8: --libcurl
9: </keywords>
10: </info>
11:
12: # Server-side
13: <reply>
14: <data>
15: HTTP/1.1 200 OK
16: Date: Thu, 29 Jul 2008 14:49:00 GMT
17: Server: test-server/fake
18: Content-Length: 0
19: Connection: close
20:
21: </data>
22: </reply>
23:
24: # Client-side
25: <client>
26: <server>
27: http
28: </server>
29: <name>
30: --libcurl for HTTP RFC1867-type formposting - -F with 3 files, one with explicit type & encoder
31: </name>
32: <setenv>
33: SSL_CERT_FILE=
34: </setenv>
35: <command>
36: http://%HOSTIP:%HTTPPORT/we/want/1404 -F name=value -F 'file=@log/test1404.txt,log/test1404.txt;type=magic/content;encoder=8bit,log/test1404.txt;headers=X-testheader-1: header 1;headers=X-testheader-2: header 2' --libcurl log/test1404.c
37: </command>
38: # We create this file before the command is invoked!
39: <file name="log/test1404.txt">
40: dummy data
41: </file>
42: </client>
43:
44: # Verify data after the test has been "shot"
45: <verify>
46: <strip>
47: (^User-Agent:.*|-----+\w+)
48: </strip>
49: <protocol>
50: POST /we/want/1404 HTTP/1.1
51: User-Agent: curl/7.18.2 (i686-pc-linux-gnu) libcurl/7.18.2 OpenSSL/0.9.7a ipv6 zlib/1.1.4
52: Host: %HOSTIP:%HTTPPORT
53: Accept: */*
54: Content-Length: 882
55: Content-Type: multipart/form-data; boundary=----------------------------9ef8d6205763
56:
57: ------------------------------9ef8d6205763
58: Content-Disposition: form-data; name="name"
59:
60: value
61: ------------------------------9ef8d6205763
62: Content-Disposition: form-data; name="file"
63: Content-Type: multipart/mixed; boundary=----------------------------aaaaaaaaaaaa
64:
65: Content-Disposition: attachment; filename="test1404.txt"
66: Content-Type: text/plain
67:
68: dummy data
69:
70: ------------------------------9ef8d6205763
71: Content-Disposition: attachment; filename="test1404.txt"
72: Content-Type: magic/content
73: Content-Transfer-Encoding: 8bit
74:
75: dummy data
76:
77: ------------------------------9ef8d6205763
78: Content-Disposition: attachment; filename="test1404.txt"
79: Content-Type: text/plain
80: X-testheader-1: header 1
81: X-testheader-2: header 2
82:
83: dummy data
84:
85: ------------------------------aaaaaaaaaaaa--
86:
87: ------------------------------9ef8d6205763--
88: </protocol>
89: <stripfile>
90: # curl's default user-agent varies with version, libraries etc.
91: s/(USERAGENT, \")[^\"]+/${1}stripped/
92: # CURLOPT_SSL_VERIFYPEER, SSH_KNOWNHOSTS and HTTP_VERSION vary with
93: # configurations - just ignore them
94: $_ = '' if /CURLOPT_SSL_VERIFYPEER/
95: $_ = '' if /CURLOPT_SSH_KNOWNHOSTS/
96: $_ = '' if /CURLOPT_HTTP_VERSION/
97: $_ = '' if /CURLOPT_INTERLEAVEDATA/
98: # CURL_DOES_CONVERSION generates an extra comment.
99: $_ = '' if /\/\* "value" \*\//
100: </stripfile>
101: <file name="log/test1404.c" mode="text">
102: /********* Sample code generated by the curl command line tool **********
103: * All curl_easy_setopt() options are documented at:
104: * https://curl.haxx.se/libcurl/c/curl_easy_setopt.html
105: ************************************************************************/
106: #include <curl/curl.h>
107:
108: int main(int argc, char *argv[])
109: {
110: CURLcode ret;
111: CURL *hnd;
112: curl_mime *mime1;
113: curl_mimepart *part1;
114: curl_mime *mime2;
115: curl_mimepart *part2;
116: struct curl_slist *slist1;
117:
118: mime1 = NULL;
119: mime2 = NULL;
120: slist1 = NULL;
121: slist1 = curl_slist_append(slist1, "X-testheader-1: header 1");
122: slist1 = curl_slist_append(slist1, "X-testheader-2: header 2");
123:
124: hnd = curl_easy_init();
125: curl_easy_setopt(hnd, CURLOPT_BUFFERSIZE, 102400L);
126: curl_easy_setopt(hnd, CURLOPT_URL, "http://%HOSTIP:%HTTPPORT/we/want/1404");
127: mime1 = curl_mime_init(hnd);
128: part1 = curl_mime_addpart(mime1);
129: curl_mime_data(part1, "value", CURL_ZERO_TERMINATED);
130: curl_mime_name(part1, "name");
131: part1 = curl_mime_addpart(mime1);
132: mime2 = curl_mime_init(hnd);
133: part2 = curl_mime_addpart(mime2);
134: curl_mime_filedata(part2, "log/test1404.txt");
135: part2 = curl_mime_addpart(mime2);
136: curl_mime_filedata(part2, "log/test1404.txt");
137: curl_mime_encoder(part2, "8bit");
138: curl_mime_type(part2, "magic/content");
139: part2 = curl_mime_addpart(mime2);
140: curl_mime_filedata(part2, "log/test1404.txt");
141: curl_mime_headers(part2, slist1, 1);
142: slist1 = NULL;
143: curl_mime_subparts(part1, mime2);
144: mime2 = NULL;
145: curl_mime_name(part1, "file");
146: curl_easy_setopt(hnd, CURLOPT_MIMEPOST, mime1);
147: curl_easy_setopt(hnd, CURLOPT_USERAGENT, "stripped");
148: curl_easy_setopt(hnd, CURLOPT_MAXREDIRS, 50L);
149: curl_easy_setopt(hnd, CURLOPT_VERBOSE, 1L);
150: curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L);
151:
152: /* Here is a list of options the curl code used that cannot get generated
153: as source easily. You may select to either not use them or implement
154: them yourself.
155:
156: CURLOPT_WRITEDATA set to a objectpointer
157: CURLOPT_WRITEFUNCTION set to a functionpointer
158: CURLOPT_READDATA set to a objectpointer
159: CURLOPT_READFUNCTION set to a functionpointer
160: CURLOPT_SEEKDATA set to a objectpointer
161: CURLOPT_SEEKFUNCTION set to a functionpointer
162: CURLOPT_ERRORBUFFER set to a objectpointer
163: CURLOPT_STDERR set to a objectpointer
164: CURLOPT_DEBUGFUNCTION set to a functionpointer
165: CURLOPT_DEBUGDATA set to a objectpointer
166: CURLOPT_HEADERFUNCTION set to a functionpointer
167: CURLOPT_HEADERDATA set to a objectpointer
168:
169: */
170:
171: ret = curl_easy_perform(hnd);
172:
173: curl_easy_cleanup(hnd);
174: hnd = NULL;
175: curl_mime_free(mime1);
176: mime1 = NULL;
177: curl_mime_free(mime2);
178: mime2 = NULL;
179: curl_slist_free_all(slist1);
180: slist1 = NULL;
181:
182: return (int)ret;
183: }
184: /**** End of sample code ****/
185: </file>
186: </verify>
187: </testcase>
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>