1*6236dae4SAndroid Build Coastguard Worker<testcase> 2*6236dae4SAndroid Build Coastguard Worker<info> 3*6236dae4SAndroid Build Coastguard Worker<keywords> 4*6236dae4SAndroid Build Coastguard WorkerHTTP 5*6236dae4SAndroid Build Coastguard WorkerHTTP FORMPOST 6*6236dae4SAndroid Build Coastguard Worker</keywords> 7*6236dae4SAndroid Build Coastguard Worker</info> 8*6236dae4SAndroid Build Coastguard Worker# Server-side 9*6236dae4SAndroid Build Coastguard Worker<reply> 10*6236dae4SAndroid Build Coastguard Worker<data> 11*6236dae4SAndroid Build Coastguard WorkerHTTP/1.1 200 OK 12*6236dae4SAndroid Build Coastguard WorkerDate: Tue, 09 Nov 2010 14:49:00 GMT 13*6236dae4SAndroid Build Coastguard WorkerServer: test-server/fake 14*6236dae4SAndroid Build Coastguard WorkerContent-Length: 10 15*6236dae4SAndroid Build Coastguard Worker 16*6236dae4SAndroid Build Coastguard Workerblablabla 17*6236dae4SAndroid Build Coastguard Worker</data> 18*6236dae4SAndroid Build Coastguard Worker</reply> 19*6236dae4SAndroid Build Coastguard Worker 20*6236dae4SAndroid Build Coastguard Worker# Client-side 21*6236dae4SAndroid Build Coastguard Worker<client> 22*6236dae4SAndroid Build Coastguard Worker<features> 23*6236dae4SAndroid Build Coastguard WorkerMime 24*6236dae4SAndroid Build Coastguard Worker</features> 25*6236dae4SAndroid Build Coastguard Worker<server> 26*6236dae4SAndroid Build Coastguard Workerhttp 27*6236dae4SAndroid Build Coastguard Worker</server> 28*6236dae4SAndroid Build Coastguard Worker<name> 29*6236dae4SAndroid Build Coastguard WorkerMultipart formposting with backslash-escaping of name= and filename= 30*6236dae4SAndroid Build Coastguard Worker</name> 31*6236dae4SAndroid Build Coastguard Worker<command> 32*6236dae4SAndroid Build Coastguard Workerhttp://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER --form-escape -F name=daniel -F tool=curl --form-string "str1=@literal" --form-string "str2=<verbatim;type=xxx/yyy" -F "file=@%LOGDIR/test%TESTNUMBER.txt;type=moo/foobar;filename=fakerfile" -F file2=@%LOGDIR/test%TESTNUMBER.txt -F "file3=@\"%LOGDIR/test%TESTNUMBER.txt\";type=mo/foo;filename=\"f\\\\\\\\ak\\\\\\er,\\\\an\\d;.t\\\"xt\"" -F 'file4=@"%LOGDIR/test%TESTNUMBER.txt"; filename="A\\AA\"\"\\\"ZZZ"' 33*6236dae4SAndroid Build Coastguard Worker</command> 34*6236dae4SAndroid Build Coastguard Worker# We create this file before the command is invoked! 35*6236dae4SAndroid Build Coastguard Worker<file name="%LOGDIR/test%TESTNUMBER.txt"> 36*6236dae4SAndroid Build Coastguard Workerfoo bar 37*6236dae4SAndroid Build Coastguard WorkerThis is a bar foo 38*6236dae4SAndroid Build Coastguard Workerbar 39*6236dae4SAndroid Build Coastguard Workerfoo 40*6236dae4SAndroid Build Coastguard Worker</file> 41*6236dae4SAndroid Build Coastguard Worker</client> 42*6236dae4SAndroid Build Coastguard Worker 43*6236dae4SAndroid Build Coastguard Worker# Verify data after the test has been "shot" 44*6236dae4SAndroid Build Coastguard Worker<verify> 45*6236dae4SAndroid Build Coastguard Worker<strip> 46*6236dae4SAndroid Build Coastguard Worker^(Content-Type: multipart/form-data;|-------).* 47*6236dae4SAndroid Build Coastguard Worker</strip> 48*6236dae4SAndroid Build Coastguard Worker<protocol> 49*6236dae4SAndroid Build Coastguard WorkerPOST /we/want/%TESTNUMBER HTTP/1.1 50*6236dae4SAndroid Build Coastguard WorkerHost: %HOSTIP:%HTTPPORT 51*6236dae4SAndroid Build Coastguard WorkerUser-Agent: curl/%VERSION 52*6236dae4SAndroid Build Coastguard WorkerAccept: */* 53*6236dae4SAndroid Build Coastguard WorkerContent-Length: 1240 54*6236dae4SAndroid Build Coastguard WorkerContent-Type: multipart/form-data; boundary=----------------------------24e78000bd32 55*6236dae4SAndroid Build Coastguard Worker 56*6236dae4SAndroid Build Coastguard Worker------------------------------24e78000bd32 57*6236dae4SAndroid Build Coastguard WorkerContent-Disposition: form-data; name="name" 58*6236dae4SAndroid Build Coastguard Worker 59*6236dae4SAndroid Build Coastguard Workerdaniel 60*6236dae4SAndroid Build Coastguard Worker------------------------------24e78000bd32 61*6236dae4SAndroid Build Coastguard WorkerContent-Disposition: form-data; name="tool" 62*6236dae4SAndroid Build Coastguard Worker 63*6236dae4SAndroid Build Coastguard Workercurl 64*6236dae4SAndroid Build Coastguard Worker------------------------------24e78000bd32 65*6236dae4SAndroid Build Coastguard WorkerContent-Disposition: form-data; name="str1" 66*6236dae4SAndroid Build Coastguard Worker 67*6236dae4SAndroid Build Coastguard Worker@literal 68*6236dae4SAndroid Build Coastguard Worker------------------------------24e78000bd32 69*6236dae4SAndroid Build Coastguard WorkerContent-Disposition: form-data; name="str2" 70*6236dae4SAndroid Build Coastguard Worker 71*6236dae4SAndroid Build Coastguard Worker<verbatim;type=xxx/yyy 72*6236dae4SAndroid Build Coastguard Worker------------------------------24e78000bd32 73*6236dae4SAndroid Build Coastguard WorkerContent-Disposition: form-data; name="file"; filename="fakerfile" 74*6236dae4SAndroid Build Coastguard WorkerContent-Type: moo/foobar 75*6236dae4SAndroid Build Coastguard Worker 76*6236dae4SAndroid Build Coastguard Workerfoo bar 77*6236dae4SAndroid Build Coastguard WorkerThis is a bar foo 78*6236dae4SAndroid Build Coastguard Workerbar 79*6236dae4SAndroid Build Coastguard Workerfoo 80*6236dae4SAndroid Build Coastguard Worker 81*6236dae4SAndroid Build Coastguard Worker------------------------------24e78000bd32 82*6236dae4SAndroid Build Coastguard WorkerContent-Disposition: form-data; name="file2"; filename="test%TESTNUMBER.txt" 83*6236dae4SAndroid Build Coastguard WorkerContent-Type: text/plain 84*6236dae4SAndroid Build Coastguard Worker 85*6236dae4SAndroid Build Coastguard Workerfoo bar 86*6236dae4SAndroid Build Coastguard WorkerThis is a bar foo 87*6236dae4SAndroid Build Coastguard Workerbar 88*6236dae4SAndroid Build Coastguard Workerfoo 89*6236dae4SAndroid Build Coastguard Worker 90*6236dae4SAndroid Build Coastguard Worker------------------------------24e78000bd32 91*6236dae4SAndroid Build Coastguard WorkerContent-Disposition: form-data; name="file3"; filename="f\\\\ak\\\\er,\\an\\d;.t\"xt" 92*6236dae4SAndroid Build Coastguard WorkerContent-Type: mo/foo 93*6236dae4SAndroid Build Coastguard Worker 94*6236dae4SAndroid Build Coastguard Workerfoo bar 95*6236dae4SAndroid Build Coastguard WorkerThis is a bar foo 96*6236dae4SAndroid Build Coastguard Workerbar 97*6236dae4SAndroid Build Coastguard Workerfoo 98*6236dae4SAndroid Build Coastguard Worker 99*6236dae4SAndroid Build Coastguard Worker------------------------------24e78000bd32 100*6236dae4SAndroid Build Coastguard WorkerContent-Disposition: form-data; name="file4"; filename="A\\AA\"\"\\\"ZZZ" 101*6236dae4SAndroid Build Coastguard WorkerContent-Type: text/plain 102*6236dae4SAndroid Build Coastguard Worker 103*6236dae4SAndroid Build Coastguard Workerfoo bar 104*6236dae4SAndroid Build Coastguard WorkerThis is a bar foo 105*6236dae4SAndroid Build Coastguard Workerbar 106*6236dae4SAndroid Build Coastguard Workerfoo 107*6236dae4SAndroid Build Coastguard Worker 108*6236dae4SAndroid Build Coastguard Worker------------------------------24e78000bd32-- 109*6236dae4SAndroid Build Coastguard Worker</protocol> 110*6236dae4SAndroid Build Coastguard Worker</verify> 111*6236dae4SAndroid Build Coastguard Worker</testcase> 112