Jacek Caban : wininet: Added INTERNET_OPTION_REQUEST_FLAGS tests.
Alexandre Julliard
julliard at winehq.org
Thu May 24 14:58:13 CDT 2012
Module: wine
Branch: master
Commit: 17d683b0f410d11d2039b5ac7c6488a140d4ea80
URL: http://source.winehq.org/git/wine.git/?a=commit;h=17d683b0f410d11d2039b5ac7c6488a140d4ea80
Author: Jacek Caban <jacek at codeweavers.com>
Date: Thu May 24 15:24:55 2012 +0200
wininet: Added INTERNET_OPTION_REQUEST_FLAGS tests.
---
dlls/wininet/tests/http.c | 57 +++++++++++++++++++++++++++++++++++++--------
1 files changed, 47 insertions(+), 10 deletions(-)
diff --git a/dlls/wininet/tests/http.c b/dlls/wininet/tests/http.c
index 2909df2..72ee56e 100644
--- a/dlls/wininet/tests/http.c
+++ b/dlls/wininet/tests/http.c
@@ -220,6 +220,26 @@ static void _test_status_code(unsigned line, HINTERNET req, DWORD excode)
"[invalid 2] HttpQueryInfo failed: %x(%d)\n", res, GetLastError());
}
+#define test_request_flags(a,b) _test_request_flags(__LINE__,a,b,FALSE)
+#define test_request_flags_todo(a,b) _test_request_flags(__LINE__,a,b,TRUE)
+static void _test_request_flags(unsigned line, HINTERNET req, DWORD exflags, BOOL is_todo)
+{
+ DWORD flags, size;
+ BOOL res;
+
+ flags = 0xdeadbeef;
+ size = sizeof(flags);
+ res = InternetQueryOptionW(req, INTERNET_OPTION_REQUEST_FLAGS, &flags, &size);
+ ok_(__FILE__,line)(res, "InternetQueryOptionW(INTERNET_OPTION_REQUEST_FLAGS) failed: %u\n", GetLastError());
+
+ /* FIXME: Remove once we have INTERNET_REQFLAG_CACHE_WRITE_DISABLED implementation */
+ flags &= ~INTERNET_REQFLAG_CACHE_WRITE_DISABLED;
+ if(!is_todo)
+ ok_(__FILE__,line)(flags == exflags, "flags = %x, expected %x\n", flags, exflags);
+ else
+ todo_wine ok_(__FILE__,line)(flags == exflags, "flags = %x, expected %x\n", flags, exflags);
+}
+
static int close_handle_cnt;
static VOID WINAPI callback(
@@ -377,7 +397,6 @@ static void InternetReadFile_test(int flags, const test_data_t *test)
BOOL res, on_async = TRUE;
CHAR buffer[4000];
DWORD length, post_len = 0;
- DWORD out;
const char *types[2] = { "*", NULL };
HINTERNET hi, hic = 0, hor = 0;
@@ -410,7 +429,7 @@ static void InternetReadFile_test(int flags, const test_data_t *test)
trace("HttpOpenRequestA <--\n");
hor = HttpOpenRequestA(hic, test->post_data ? "POST" : "GET", test->path, NULL, NULL, types,
- INTERNET_FLAG_KEEP_CONNECTION | INTERNET_FLAG_RESYNCHRONIZE,
+ INTERNET_FLAG_KEEP_CONNECTION | INTERNET_FLAG_RELOAD,
0xdeadbead);
if (hor == 0x0 && GetLastError() == ERROR_INTERNET_NAME_NOT_RESOLVED) {
/*
@@ -426,6 +445,8 @@ static void InternetReadFile_test(int flags, const test_data_t *test)
if (hor == 0x0) goto abort;
+ test_request_flags(hor, INTERNET_REQFLAG_NO_HEADERS);
+
length = sizeof(buffer);
res = InternetQueryOptionA(hor, INTERNET_OPTION_URL, buffer, &length);
ok(res, "InternetQueryOptionA(INTERNET_OPTION_URL) failed: %u\n", GetLastError());
@@ -529,9 +550,7 @@ static void InternetReadFile_test(int flags, const test_data_t *test)
CLEAR_NOTIFIED(INTERNET_STATUS_CONNECTING_TO_SERVER);
CLEAR_NOTIFIED(INTERNET_STATUS_CONNECTED_TO_SERVER);
- length = 4;
- res = InternetQueryOptionA(hor,INTERNET_OPTION_REQUEST_FLAGS,&out,&length);
- ok(res, "InternetQueryOptionA(INTERNET_OPTION_REQUEST) failed with error %d\n", GetLastError());
+ test_request_flags(hor, 0);
length = 100;
res = InternetQueryOptionA(hor,INTERNET_OPTION_URL,buffer,&length);
@@ -662,7 +681,7 @@ static void InternetReadFile_chunked_test(void)
trace("HttpOpenRequestA <--\n");
hor = HttpOpenRequestA(hic, "GET", "/tests/chunked", NULL, NULL, types,
- INTERNET_FLAG_KEEP_CONNECTION | INTERNET_FLAG_RESYNCHRONIZE,
+ INTERNET_FLAG_KEEP_CONNECTION | INTERNET_FLAG_RELOAD,
0xdeadbead);
if (hor == 0x0 && GetLastError() == ERROR_INTERNET_NAME_NOT_RESOLVED) {
/*
@@ -685,6 +704,8 @@ static void InternetReadFile_chunked_test(void)
"Synchronous HttpSendRequest returning 0, error %u\n", GetLastError());
trace("HttpSendRequestA <--\n");
+ test_request_flags(hor, 0);
+
length = 100;
res = HttpQueryInfoA(hor,HTTP_QUERY_CONTENT_TYPE,buffer,&length,0x0);
buffer[length]=0;
@@ -781,7 +802,7 @@ static void InternetReadFileExA_test(int flags)
trace("HttpOpenRequestA <--\n");
hor = HttpOpenRequestA(hic, "GET", "/tests/redirect", NULL, NULL, types,
- INTERNET_FLAG_KEEP_CONNECTION | INTERNET_FLAG_RESYNCHRONIZE,
+ INTERNET_FLAG_KEEP_CONNECTION | INTERNET_FLAG_RELOAD,
0xdeadbead);
if (hor == 0x0 && GetLastError() == ERROR_INTERNET_NAME_NOT_RESOLVED) {
/*
@@ -878,6 +899,8 @@ static void InternetReadFileExA_test(int flags)
rc ? "TRUE" : "FALSE", GetLastError());
HeapFree(GetProcessHeap(), 0, inetbuffers.lpvBuffer);
+ test_request_flags(hor, 0);
+
/* tests to see whether lpcszHeader is used - it isn't */
inetbuffers.dwStructSize = sizeof(INTERNET_BUFFERS);
inetbuffers.lpcszHeader = (LPCTSTR)0xdeadbeef;
@@ -1039,6 +1062,7 @@ static void HttpSendRequestEx_test(void)
}
ok( hRequest != NULL, "Failed to open request handle err %u\n", GetLastError());
+ test_request_flags(hRequest, INTERNET_REQFLAG_NO_HEADERS);
BufferIn.dwStructSize = sizeof( INTERNET_BUFFERS);
BufferIn.Next = (LPINTERNET_BUFFERS)0xdeadcab;
@@ -1057,12 +1081,18 @@ static void HttpSendRequestEx_test(void)
ok(ret, "HttpSendRequestEx Failed with error %u\n", error);
ok(error == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %u\n", error);
+ test_request_flags(hRequest, INTERNET_REQFLAG_NO_HEADERS);
+
for (i = 3; szPostData[i]; i++)
ok(InternetWriteFile(hRequest, &szPostData[i], 1, &dwBytesWritten),
"InternetWriteFile failed\n");
+ test_request_flags(hRequest, INTERNET_REQFLAG_NO_HEADERS);
+
ok(HttpEndRequest(hRequest, NULL, 0, 0), "HttpEndRequest Failed\n");
+ test_request_flags(hRequest, 0);
+
ok(InternetReadFile(hRequest, szBuffer, 255, &dwBytesRead),
"Unable to read response\n");
szBuffer[dwBytesRead] = 0;
@@ -1918,6 +1948,7 @@ static void test_proxy_indirect(int port)
ok(!strcmp(buffer, "Basic realm=\"placebo\""), "proxy auth info wrong\n");
test_status_code(hr, 407);
+ test_request_flags(hr, 0);
sz = sizeof buffer;
r = HttpQueryInfo(hr, HTTP_QUERY_STATUS_TEXT, buffer, &sz, NULL);
@@ -2019,6 +2050,7 @@ static void test_header_handling_order(int port)
ok(ret, "HttpSendRequest failed\n");
test_status_code(request, 200);
+ test_request_flags(request, 0);
InternetCloseHandle(request);
@@ -2378,6 +2410,7 @@ static void test_basic_authentication(int port)
ok(ret, "HttpSendRequest failed %u\n", GetLastError());
test_status_code(request, 200);
+ test_request_flags(request, 0);
InternetCloseHandle(request);
InternetCloseHandle(connect);
@@ -2404,6 +2437,7 @@ static void test_invalid_response_headers(int port)
ok(ret, "HttpSendRequest failed %u\n", GetLastError());
test_status_code(request, 401);
+ test_request_flags(request, 0);
buffer[0] = 0;
size = sizeof(buffer);
@@ -2441,10 +2475,14 @@ static void test_response_without_headers(int port)
hr = HttpOpenRequest(hc, NULL, "/testG", NULL, NULL, NULL, 0, 0);
ok(hr != NULL, "HttpOpenRequest failed %u\n", GetLastError());
+ test_request_flags(hr, INTERNET_REQFLAG_NO_HEADERS);
+
SetLastError(0xdeadbeef);
r = HttpSendRequest(hr, NULL, 0, NULL, 0);
ok(r, "HttpSendRequest failed %u\n", GetLastError());
+ test_request_flags_todo(hr, INTERNET_REQFLAG_NO_HEADERS);
+
count = 0;
memset(buffer, 0, sizeof buffer);
SetLastError(0xdeadbeef);
@@ -2454,6 +2492,7 @@ static void test_response_without_headers(int port)
todo_wine ok(!memcmp(buffer, page1, sizeof page1), "http data wrong\n");
test_status_code(hr, 200);
+ test_request_flags_todo(hr, INTERNET_REQFLAG_NO_HEADERS);
buffer[0] = 0;
size = sizeof(buffer);
@@ -3535,9 +3574,7 @@ static void test_InternetCloseHandle(void)
ok(!res && (GetLastError() == ERROR_IO_PENDING),
"Asynchronous HttpSendRequest NOT returning 0 with error ERROR_IO_PENDING\n");
- len = sizeof(flags);
- res = InternetQueryOptionA(closetest_req, INTERNET_OPTION_REQUEST_FLAGS, &flags, &len);
- ok(res, "InternetQueryOptionA(%p INTERNET_OPTION_URL) failed: %u\n", closetest_req, GetLastError());
+ test_request_flags(closetest_req, INTERNET_REQFLAG_NO_HEADERS);
res = InternetCloseHandle(closetest_session);
ok(res, "InternetCloseHandle failed: %u\n", GetLastError());
More information about the wine-cvs
mailing list