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 WorkerHTTP RFC1867-type formposting with filename/data contains ',', ';', '"' 30*6236dae4SAndroid Build Coastguard Worker</name> 31*6236dae4SAndroid Build Coastguard Worker<command> 32*6236dae4SAndroid Build Coastguard Workerhttp://%HOSTIP:%HTTPPORT/we/want/%TESTNUMBER -F "file=@\"%LOGDIR/test%TESTNUMBER,and;.txt\";type=mo/foo;filename=\"faker,and;.txt\"" -F 'file2=@"%LOGDIR/test%TESTNUMBER,and;.txt"' -F 'file3=@"%LOGDIR/test%TESTNUMBER,and;.txt";type=m/f,"%LOGDIR/test%TESTNUMBER,and;.txt"' -F a="{\"field1\":\"value1\",\"field2\":\"value2\"}" -F 'b=" \\value1;type=\"whatever\" "; type=text/foo; charset=utf-8 ; filename=param_b' 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,and;.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;|Content-Type: multipart/mixed; boundary=|-------).* 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: 1324 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="file"; filename="faker,and;.txt" 58*6236dae4SAndroid Build Coastguard WorkerContent-Type: mo/foo 59*6236dae4SAndroid Build Coastguard Worker 60*6236dae4SAndroid Build Coastguard Workerfoo bar 61*6236dae4SAndroid Build Coastguard WorkerThis is a bar foo 62*6236dae4SAndroid Build Coastguard Workerbar 63*6236dae4SAndroid Build Coastguard Workerfoo 64*6236dae4SAndroid Build Coastguard Worker 65*6236dae4SAndroid Build Coastguard Worker------------------------------24e78000bd32 66*6236dae4SAndroid Build Coastguard WorkerContent-Disposition: form-data; name="file2"; filename="test%TESTNUMBER,and;.txt" 67*6236dae4SAndroid Build Coastguard WorkerContent-Type: text/plain 68*6236dae4SAndroid Build Coastguard Worker 69*6236dae4SAndroid Build Coastguard Workerfoo bar 70*6236dae4SAndroid Build Coastguard WorkerThis is a bar foo 71*6236dae4SAndroid Build Coastguard Workerbar 72*6236dae4SAndroid Build Coastguard Workerfoo 73*6236dae4SAndroid Build Coastguard Worker 74*6236dae4SAndroid Build Coastguard Worker------------------------------24e78000bd32 75*6236dae4SAndroid Build Coastguard WorkerContent-Disposition: form-data; name="file3" 76*6236dae4SAndroid Build Coastguard WorkerContent-Type: multipart/mixed; boundary=----------------------------7f0e85a48b0b 77*6236dae4SAndroid Build Coastguard Worker 78*6236dae4SAndroid Build Coastguard WorkerContent-Disposition: attachment; filename="test%TESTNUMBER,and;.txt" 79*6236dae4SAndroid Build Coastguard WorkerContent-Type: m/f 80*6236dae4SAndroid Build Coastguard Worker 81*6236dae4SAndroid Build Coastguard Workerfoo bar 82*6236dae4SAndroid Build Coastguard WorkerThis is a bar foo 83*6236dae4SAndroid Build Coastguard Workerbar 84*6236dae4SAndroid Build Coastguard Workerfoo 85*6236dae4SAndroid Build Coastguard Worker 86*6236dae4SAndroid Build Coastguard WorkerContent-Disposition: attachment; filename="test%TESTNUMBER,and;.txt" 87*6236dae4SAndroid Build Coastguard WorkerContent-Type: text/plain 88*6236dae4SAndroid Build Coastguard Worker 89*6236dae4SAndroid Build Coastguard Workerfoo bar 90*6236dae4SAndroid Build Coastguard WorkerThis is a bar foo 91*6236dae4SAndroid Build Coastguard Workerbar 92*6236dae4SAndroid Build Coastguard Workerfoo 93*6236dae4SAndroid Build Coastguard Worker 94*6236dae4SAndroid Build Coastguard Worker 95*6236dae4SAndroid Build Coastguard WorkerContent-Disposition: form-data; name="a" 96*6236dae4SAndroid Build Coastguard Worker 97*6236dae4SAndroid Build Coastguard Worker{"field1":"value1","field2":"value2"} 98*6236dae4SAndroid Build Coastguard WorkerContent-Disposition: form-data; name="b"; filename="param_b" 99*6236dae4SAndroid Build Coastguard WorkerContent-Type: text/foo; charset=utf-8 100*6236dae4SAndroid Build Coastguard Worker 101*6236dae4SAndroid Build Coastguard Worker \value1;type="whatever" 102*6236dae4SAndroid Build Coastguard Worker------------------------------24e78000bd32-- 103*6236dae4SAndroid Build Coastguard Worker</protocol> 104*6236dae4SAndroid Build Coastguard Worker</verify> 105*6236dae4SAndroid Build Coastguard Worker</testcase> 106