test case 508 added to test callback-based POST

This commit is contained in:
Daniel Stenberg 2003-10-07 14:43:48 +00:00
Родитель 0b615afac9
Коммит f52534522c
4 изменённых файлов: 120 добавлений и 2 удалений

Просмотреть файл

@ -24,4 +24,4 @@ test62 test63 test64 test65 test66 test144 test145 test67 test68 test41 \
test40 test42 test69 test70 test71 test72 test73 test146 test505 \
test74 test75 test76 test77 test78 test147 test148 test506 test79 test80 \
test81 test82 test83 test84 test85 test86 test87 test507 test149 test88 \
test89 test90
test89 test90 test508

46
tests/data/test508 Normal file
Просмотреть файл

@ -0,0 +1,46 @@
#
# Server-side
<reply>
<data>
HTTP/1.1 200 OK
Date: Thu, 09 Nov 2010 14:49:00 GMT
Server: test-server/fake swsclose
Connection: close
Content-Type: text/html
hello
</data>
</reply>
# Client-side
<client>
<server>
http
</server>
# tool is what to use instead of 'curl'
<tool>
lib508
</tool>
<name>
send HTTP POST using read callback
</name>
<command>
http://%HOSTIP:%HOSTPORT/508
</command>
</client>
#
# Verify data after the test has been "shot"
<verify>
<protocol>
POST /508 HTTP/1.1
Host: 127.0.0.1:8999
Pragma: no-cache
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*
Content-Length: 45
Content-Type: application/x-www-form-urlencoded
this is what we post to the silly web server
</protocol>
</verify>

Просмотреть файл

@ -11,7 +11,8 @@ LIBDIR = ../../lib
SUPPORTFILES = first.c test.h
# here are all tools used for running libcurl tests
noinst_PROGRAMS = lib500 lib501 lib502 lib503 lib504 lib505 lib506 lib507
noinst_PROGRAMS = lib500 lib501 lib502 lib503 lib504 lib505 lib506 lib507 \
lib508
lib500_SOURCES = lib500.c $(SUPPORTFILES)
lib500_LDADD = $(LIBDIR)/libcurl.la
@ -44,3 +45,7 @@ lib506_DEPENDENCIES = $(LIBDIR)/libcurl.la
lib507_SOURCES = lib507.c $(SUPPORTFILES)
lib507_LDADD = $(LIBDIR)/libcurl.la
lib507_DEPENDENCIES = $(LIBDIR)/libcurl.la
lib508_SOURCES = lib508.c $(SUPPORTFILES)
lib508_LDADD = $(LIBDIR)/libcurl.la
lib508_DEPENDENCIES = $(LIBDIR)/libcurl.la

67
tests/libtest/lib508.c Normal file
Просмотреть файл

@ -0,0 +1,67 @@
#include "test.h"
static char data[]="this is what we post to the silly web server\n";
struct WriteThis {
char *readptr;
int sizeleft;
};
static size_t read_callback(void *ptr, size_t size, size_t nmemb, void *userp)
{
struct WriteThis *pooh = (struct WriteThis *)userp;
if(size*nmemb < 1)
return 0;
if(pooh->sizeleft) {
*(char *)ptr = pooh->readptr[0]; /* copy one single byte */
pooh->readptr++; /* advance pointer */
pooh->sizeleft--; /* less data left */
return 1; /* we return 1 byte at a time! */
}
return -1; /* no more data left to deliver */
}
CURLcode test(char *URL)
{
CURL *curl;
CURLcode res=CURLE_OK;
struct WriteThis pooh;
pooh.readptr = data;
pooh.sizeleft = strlen(data);
curl = curl_easy_init();
if(curl) {
/* First set the URL that is about to receive our POST. */
curl_easy_setopt(curl, CURLOPT_URL, URL);
/* Now specify we want to POST data */
curl_easy_setopt(curl, CURLOPT_POST, TRUE);
/* Set the expected POST size */
curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, pooh.sizeleft);
/* we want to use our own read function */
curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_callback);
/* pointer to pass to our read function */
curl_easy_setopt(curl, CURLOPT_INFILE, &pooh);
/* get verbose debug output please */
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
/* include headers in the output */
curl_easy_setopt(curl, CURLOPT_HEADER, TRUE);
/* Perform the request, res will get the return code */
res = curl_easy_perform(curl);
/* always cleanup */
curl_easy_cleanup(curl);
}
return res;
}