<testcase>
<info>
<keywords>
HTTP
HTTP POST
HTTP MIME POST
</keywords>
</info>

#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</data>
<datacheck>
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
HTTP/1.1 200 OK
Date: Tue, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html

hello
</datacheck>
</reply>

# Client-side
<client>
<features>
Mime
</features>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib%TESTNUMBER
</tool>

<name>
HTTP multi-part chunked mimepost using read callback for the file part
</name>
<command>
http://%HOSTIP:%HTTPPORT/%TESTNUMBER
</command>
</client>

#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^--------------------------[A-Za-z0-9]*/------------------------------/
s/boundary=------------------------[A-Za-z0-9]*/boundary=----------------------------/
</strippart>
# Note that the stripping above removes 12 bytes from every occurrence of the
# boundary string and since 5 of them are in the body contents, we see
# (5*12) == 60 bytes less
<protocol>
POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Transfer-Encoding: chunked
Content-Type: multipart/form-data; boundary=----------------------------
Expect: 100-continue

%if hyper
7C
%else
7c
%endif
------------------------------
Content-Disposition: form-data; name="sendfile"; filename="postit2.c"

d
1
u
1
m
1
m
1
y
1


%if hyper
6B
%else
6b
%endif

------------------------------
Content-Disposition: form-data; name="callbackdata"


1
d
1
u
1
m
1
m
1
y
1


%if hyper
1B2
%else
1b2
%endif

------------------------------
Content-Disposition: form-data; name="filename"

postit2.c
------------------------------
Content-Disposition: form-data; name="submit"

send
------------------------------
Content-Disposition: form-data; name="somename"; filename="somefile.txt"
Content-Type: text/plain

blah blah
--------------------------------

0

POST /%TESTNUMBER HTTP/1.1
Host: %HOSTIP:%HTTPPORT
Accept: */*
Transfer-Encoding: chunked
Content-Type: multipart/form-data; boundary=----------------------------
Expect: 100-continue

%if hyper
8A
%else
8a
%endif
------------------------------
Content-Disposition: form-data; name="sendfile alternative"; filename="file name 2"

d
1
u
1
m
1
m
1
y
1


%if hyper
6B
%else
6b
%endif

------------------------------
Content-Disposition: form-data; name="callbackdata"


1
d
1
u
1
m
1
m
1
y
1


%if hyper
1B2
%else
1b2
%endif

------------------------------
Content-Disposition: form-data; name="filename"

postit2.c
------------------------------
Content-Disposition: form-data; name="submit"

send
------------------------------
Content-Disposition: form-data; name="somename"; filename="somefile.txt"
Content-Type: text/plain

blah blah
--------------------------------

0

</protocol>
</verify>
</testcase>
