Jacek Caban : wininet: Added post data tests.
Alexandre Julliard
julliard at winehq.org
Thu Jan 13 11:49:00 CST 2011
Module: wine
Branch: master
Commit: 0662555af33bd8bee5e7cf0ecdc135a3151158d1
URL: http://source.winehq.org/git/wine.git/?a=commit;h=0662555af33bd8bee5e7cf0ecdc135a3151158d1
Author: Jacek Caban <jacek at codeweavers.com>
Date: Thu Jan 13 13:54:23 2011 +0100
wininet: Added post data tests.
---
dlls/wininet/tests/http.c | 31 ++++++++++++++++++++++++++++---
1 files changed, 28 insertions(+), 3 deletions(-)
diff --git a/dlls/wininet/tests/http.c b/dlls/wininet/tests/http.c
index 7872297..16a29ce 100644
--- a/dlls/wininet/tests/http.c
+++ b/dlls/wininet/tests/http.c
@@ -114,7 +114,10 @@ typedef struct {
const char *redirected_url;
const char *host;
const char *path;
+ const char *headers;
DWORD flags;
+ const char *post_data;
+ const char *content;
} test_data_t;
static const test_data_t test_data[] = {
@@ -123,6 +126,7 @@ static const test_data_t test_data[] = {
"http://test.winehq.org/hello.html",
"test.winehq.org",
"/testredirect",
+ "",
TESTF_REDIRECT
},
{
@@ -130,7 +134,18 @@ static const test_data_t test_data[] = {
"http://www.codeweavers.com/",
"www.codeweavers.com",
"",
+ "Accept-Encoding: gzip, deflate",
TESTF_COMPRESSED|TESTF_ALLOW_COOKIE
+ },
+ {
+ "http://crossover.codeweavers.com/posttest.php",
+ "http://crossover.codeweavers.com/posttest.php",
+ "crossover.codeweavers.com",
+ "/posttest.php",
+ "Content-Type: application/x-www-form-urlencoded",
+ 0,
+ "mode=Test",
+ "mode => Test\n"
}
};
@@ -270,9 +285,10 @@ static VOID WINAPI callback(
static void InternetReadFile_test(int flags, const test_data_t *test)
{
+ char *post_data = NULL;
BOOL res;
CHAR buffer[4000];
- DWORD length;
+ DWORD length, post_len = 0;
DWORD out;
const char *types[2] = { "*", NULL };
HINTERNET hi, hic = 0, hor = 0;
@@ -305,7 +321,7 @@ static void InternetReadFile_test(int flags, const test_data_t *test)
SET_EXPECT(INTERNET_STATUS_HANDLE_CREATED);
trace("HttpOpenRequestA <--\n");
- hor = HttpOpenRequestA(hic, "GET", test->path, NULL, NULL, types,
+ hor = HttpOpenRequestA(hic, test->post_data ? "POST" : "GET", test->path, NULL, NULL, types,
INTERNET_FLAG_KEEP_CONNECTION | INTERNET_FLAG_RESYNCHRONIZE,
0xdeadbead);
if (hor == 0x0 && GetLastError() == ERROR_INTERNET_NAME_NOT_RESOLVED) {
@@ -383,8 +399,13 @@ static void InternetReadFile_test(int flags, const test_data_t *test)
}
trace("HttpSendRequestA -->\n");
+ if(test->post_data) {
+ post_len = strlen(test->post_data);
+ post_data = HeapAlloc(GetProcessHeap(), 0, post_len);
+ memcpy(post_data, test->post_data, post_len);
+ }
SetLastError(0xdeadbeef);
- res = HttpSendRequestA(hor, (test->flags & TESTF_COMPRESSED) ? "Accept-Encoding: gzip, deflate" : "", -1, NULL, 0);
+ res = HttpSendRequestA(hor, test->headers, -1, post_data, post_len);
if (flags & INTERNET_FLAG_ASYNC)
ok(!res && (GetLastError() == ERROR_IO_PENDING),
"Asynchronous HttpSendRequest NOT returning 0 with error ERROR_IO_PENDING\n");
@@ -395,6 +416,7 @@ static void InternetReadFile_test(int flags, const test_data_t *test)
if (flags & INTERNET_FLAG_ASYNC)
WaitForSingleObject(hCompleteEvent, INFINITE);
+ HeapFree(GetProcessHeap(), 0, post_data);
if(test->flags & TESTF_ALLOW_COOKIE) {
CLEAR_NOTIFIED(INTERNET_STATUS_COOKIE_SENT);
@@ -501,6 +523,8 @@ static void InternetReadFile_test(int flags, const test_data_t *test)
trace("ReadFile -> %s %i\n",res?"TRUE":"FALSE",length);
+ if(test->content)
+ ok(!strcmp(buffer, test->content), "buffer = '%s', expected '%s'\n", buffer, test->content);
HeapFree(GetProcessHeap(),0,buffer);
}
if (length == 0)
@@ -3178,4 +3202,5 @@ START_TEST(http)
test_bogus_accept_types_array();
InternetReadFile_chunked_test();
HttpSendRequestEx_test();
+ InternetReadFile_test(INTERNET_FLAG_ASYNC, &test_data[2]);
}
More information about the wine-cvs
mailing list