From 1bf503302013ed438df51447fd2cc242a6abc90a Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Sat, 26 Apr 2014 17:36:17 +0000 Subject: [PATCH] [WINHTTP_WINETEST] * Sync with Wine 1.7.17. CORE-8080 svn path=/trunk/; revision=62991 --- rostests/winetests/winhttp/notification.c | 185 +++++++++++----------- rostests/winetests/winhttp/url.c | 94 +++++------ rostests/winetests/winhttp/winhttp.c | 160 ++++++++++++------- 3 files changed, 243 insertions(+), 196 deletions(-) diff --git a/rostests/winetests/winhttp/notification.c b/rostests/winetests/winhttp/notification.c index 5b351c8dbce..ffbea03bbe3 100644 --- a/rostests/winetests/winhttp/notification.c +++ b/rostests/winetests/winhttp/notification.c @@ -27,6 +27,7 @@ #include "wine/test.h" static const WCHAR user_agent[] = {'w','i','n','e','t','e','s','t',0}; +static const WCHAR test_winehq[] = {'t','e','s','t','.','w','i','n','e','h','q','.','o','r','g',0}; enum api { @@ -44,9 +45,9 @@ struct notification { enum api function; /* api responsible for notification */ unsigned int status; /* status received */ - int todo; - int ignore; - int skipped_for_proxy; + BOOL todo; + BOOL ignore; + BOOL skipped_for_proxy; }; struct info @@ -89,7 +90,7 @@ static void CALLBACK check_notification( HINTERNET handle, DWORD_PTR context, DW DWORD size = sizeof(struct info *); WinHttpQueryOption( handle, WINHTTP_OPTION_CONTEXT_VALUE, &info, &size ); } - ok(i < info->count, "unexpected notification 0x%08x\n", status); + ok(i < info->count, "%u: unexpected notification 0x%08x\n", info->line, status); if (i >= info->count) return; status_ok = (info->test[i].status == status); @@ -107,7 +108,7 @@ static void CALLBACK check_notification( HINTERNET handle, DWORD_PTR context, DW todo_wine ok(function_ok, "%u: expected function %u got %u\n", info->line, info->test[i].function, info->function); } } - if (status_ok) info->index++; + if (status_ok && function_ok) info->index++; if (proxy_active()) { while (info->test[info->index].skipped_for_proxy) @@ -122,31 +123,31 @@ static void CALLBACK check_notification( HINTERNET handle, DWORD_PTR context, DW static const struct notification cache_test[] = { - { winhttp_connect, WINHTTP_CALLBACK_STATUS_HANDLE_CREATED, 0 }, - { winhttp_open_request, WINHTTP_CALLBACK_STATUS_HANDLE_CREATED, 0 }, - { winhttp_send_request, WINHTTP_CALLBACK_STATUS_RESOLVING_NAME, 0 }, - { winhttp_send_request, WINHTTP_CALLBACK_STATUS_NAME_RESOLVED, 0 }, - { winhttp_send_request, WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER, 0 }, - { winhttp_send_request, WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER, 0 }, - { winhttp_send_request, WINHTTP_CALLBACK_STATUS_SENDING_REQUEST, 0 }, - { winhttp_send_request, WINHTTP_CALLBACK_STATUS_REQUEST_SENT, 0 }, - { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE, 0 }, - { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED, 0 }, - { winhttp_close_handle, WINHTTP_CALLBACK_STATUS_CLOSING_CONNECTION, 0, 1 }, - { winhttp_close_handle, WINHTTP_CALLBACK_STATUS_CONNECTION_CLOSED, 0, 1 }, - { winhttp_close_handle, WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING, 0, 1 }, - { winhttp_open_request, WINHTTP_CALLBACK_STATUS_HANDLE_CREATED, 0 }, - { winhttp_send_request, WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER, 0 }, - { winhttp_send_request, WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER, 0 }, - { winhttp_send_request, WINHTTP_CALLBACK_STATUS_SENDING_REQUEST, 0 }, - { winhttp_send_request, WINHTTP_CALLBACK_STATUS_REQUEST_SENT, 0 }, - { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE, 0 }, - { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED, 0 }, - { winhttp_close_handle, WINHTTP_CALLBACK_STATUS_CLOSING_CONNECTION, 0, 1 }, - { winhttp_close_handle, WINHTTP_CALLBACK_STATUS_CONNECTION_CLOSED, 0, 1 }, - { winhttp_close_handle, WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING, 0, 1 }, - { winhttp_close_handle, WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING, 1, 1 }, - { winhttp_close_handle, WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING, 1, 1 } + { winhttp_connect, WINHTTP_CALLBACK_STATUS_HANDLE_CREATED }, + { winhttp_open_request, WINHTTP_CALLBACK_STATUS_HANDLE_CREATED }, + { winhttp_send_request, WINHTTP_CALLBACK_STATUS_RESOLVING_NAME }, + { winhttp_send_request, WINHTTP_CALLBACK_STATUS_NAME_RESOLVED }, + { winhttp_send_request, WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER }, + { winhttp_send_request, WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER }, + { winhttp_send_request, WINHTTP_CALLBACK_STATUS_SENDING_REQUEST }, + { winhttp_send_request, WINHTTP_CALLBACK_STATUS_REQUEST_SENT }, + { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE }, + { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED }, + { winhttp_close_handle, WINHTTP_CALLBACK_STATUS_CLOSING_CONNECTION, FALSE, TRUE }, + { winhttp_close_handle, WINHTTP_CALLBACK_STATUS_CONNECTION_CLOSED, FALSE, TRUE }, + { winhttp_close_handle, WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING, FALSE, TRUE }, + { winhttp_open_request, WINHTTP_CALLBACK_STATUS_HANDLE_CREATED }, + { winhttp_send_request, WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER }, + { winhttp_send_request, WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER }, + { winhttp_send_request, WINHTTP_CALLBACK_STATUS_SENDING_REQUEST }, + { winhttp_send_request, WINHTTP_CALLBACK_STATUS_REQUEST_SENT }, + { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE }, + { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED }, + { winhttp_close_handle, WINHTTP_CALLBACK_STATUS_CLOSING_CONNECTION, FALSE, TRUE }, + { winhttp_close_handle, WINHTTP_CALLBACK_STATUS_CONNECTION_CLOSED, FALSE, TRUE }, + { winhttp_close_handle, WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING, FALSE, TRUE }, + { winhttp_close_handle, WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING, TRUE, TRUE }, + { winhttp_close_handle, WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING, TRUE, TRUE } }; static void setup_test( struct info *info, enum api function, unsigned int line ) @@ -157,8 +158,6 @@ static void setup_test( struct info *info, enum api function, unsigned int line static void test_connection_cache( void ) { - static const WCHAR codeweavers[] = {'w','w','w','.','c','o','d','e','w','e','a','v','e','r','s','.','c','o','m',0}; - HANDLE ses, con, req; DWORD size, status; BOOL ret; @@ -178,7 +177,7 @@ static void test_connection_cache( void ) ok(ret, "failed to set context value %u\n", GetLastError()); setup_test( &info, winhttp_connect, __LINE__ ); - con = WinHttpConnect( ses, codeweavers, 0, 0 ); + con = WinHttpConnect( ses, test_winehq, 0, 0 ); ok(con != NULL, "failed to open a connection %u\n", GetLastError()); setup_test( &info, winhttp_open_request, __LINE__ ); @@ -242,7 +241,7 @@ static void test_connection_cache( void ) ok(ret, "failed to set context value %u\n", GetLastError()); setup_test( &info, winhttp_connect, __LINE__ ); - con = WinHttpConnect( ses, codeweavers, 0, 0 ); + con = WinHttpConnect( ses, test_winehq, 0, 0 ); ok(con != NULL, "failed to open a connection %u\n", GetLastError()); setup_test( &info, winhttp_open_request, __LINE__ ); @@ -298,36 +297,34 @@ static void test_connection_cache( void ) static const struct notification redirect_test[] = { - { winhttp_connect, WINHTTP_CALLBACK_STATUS_HANDLE_CREATED, 0 }, - { winhttp_open_request, WINHTTP_CALLBACK_STATUS_HANDLE_CREATED, 0 }, - { winhttp_send_request, WINHTTP_CALLBACK_STATUS_RESOLVING_NAME, 0 }, - { winhttp_send_request, WINHTTP_CALLBACK_STATUS_NAME_RESOLVED, 0 }, - { winhttp_send_request, WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER, 0 }, - { winhttp_send_request, WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER, 0 }, - { winhttp_send_request, WINHTTP_CALLBACK_STATUS_SENDING_REQUEST, 0 }, - { winhttp_send_request, WINHTTP_CALLBACK_STATUS_REQUEST_SENT, 0 }, - { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE, 0 }, - { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED, 0 }, - { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_REDIRECT, 0 }, - { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RESOLVING_NAME, 0, 0, 1 }, - { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_NAME_RESOLVED, 0, 0, 1 }, - { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER, 0, 0, 1 }, - { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER, 0, 0, 1 }, - { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_SENDING_REQUEST, 0 }, - { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_REQUEST_SENT, 0 }, - { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE, 0 }, - { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED, 0 }, - { winhttp_close_handle, WINHTTP_CALLBACK_STATUS_CLOSING_CONNECTION, 0, 1 }, - { winhttp_close_handle, WINHTTP_CALLBACK_STATUS_CONNECTION_CLOSED, 0, 1 }, - { winhttp_close_handle, WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING, 0, 1 }, - { winhttp_close_handle, WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING, 1, 1 }, - { winhttp_close_handle, WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING, 1, 1 } + { winhttp_connect, WINHTTP_CALLBACK_STATUS_HANDLE_CREATED }, + { winhttp_open_request, WINHTTP_CALLBACK_STATUS_HANDLE_CREATED }, + { winhttp_send_request, WINHTTP_CALLBACK_STATUS_RESOLVING_NAME, FALSE, TRUE }, + { winhttp_send_request, WINHTTP_CALLBACK_STATUS_NAME_RESOLVED, FALSE, TRUE }, + { winhttp_send_request, WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER }, + { winhttp_send_request, WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER }, + { winhttp_send_request, WINHTTP_CALLBACK_STATUS_SENDING_REQUEST }, + { winhttp_send_request, WINHTTP_CALLBACK_STATUS_REQUEST_SENT }, + { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE }, + { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED }, + { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_REDIRECT }, + { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RESOLVING_NAME, FALSE, TRUE, TRUE }, + { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_NAME_RESOLVED, FALSE, TRUE, TRUE }, + { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER, FALSE, FALSE, TRUE }, + { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER, FALSE, FALSE, TRUE }, + { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_SENDING_REQUEST }, + { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_REQUEST_SENT }, + { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE }, + { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED }, + { winhttp_close_handle, WINHTTP_CALLBACK_STATUS_CLOSING_CONNECTION, FALSE, TRUE }, + { winhttp_close_handle, WINHTTP_CALLBACK_STATUS_CONNECTION_CLOSED, FALSE, TRUE }, + { winhttp_close_handle, WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING, FALSE, TRUE }, + { winhttp_close_handle, WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING, TRUE, TRUE }, + { winhttp_close_handle, WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING, TRUE, TRUE } }; static void test_redirect( void ) { - static const WCHAR codeweavers[] = {'c','o','d','e','w','e','a','v','e','r','s','.','c','o','m',0}; - HANDLE ses, con, req; DWORD size, status; BOOL ret; @@ -347,7 +344,7 @@ static void test_redirect( void ) ok(ret, "failed to set context value %u\n", GetLastError()); setup_test( &info, winhttp_connect, __LINE__ ); - con = WinHttpConnect( ses, codeweavers, 0, 0 ); + con = WinHttpConnect( ses, test_winehq, 0, 0 ); ok(con != NULL, "failed to open a connection %u\n", GetLastError()); setup_test( &info, winhttp_open_request, __LINE__ ); @@ -375,42 +372,40 @@ static void test_redirect( void ) static const struct notification async_test[] = { - { winhttp_connect, WINHTTP_CALLBACK_STATUS_HANDLE_CREATED, 0 }, - { winhttp_open_request, WINHTTP_CALLBACK_STATUS_HANDLE_CREATED, 0 }, - { winhttp_send_request, WINHTTP_CALLBACK_STATUS_RESOLVING_NAME, 0 }, - { winhttp_send_request, WINHTTP_CALLBACK_STATUS_NAME_RESOLVED, 0 }, - { winhttp_send_request, WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER, 0 }, - { winhttp_send_request, WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER, 0 }, - { winhttp_send_request, WINHTTP_CALLBACK_STATUS_SENDING_REQUEST, 0 }, - { winhttp_send_request, WINHTTP_CALLBACK_STATUS_REQUEST_SENT, 0 }, - { winhttp_send_request, WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE, 0 }, - { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE, 0 }, - { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED, 0 }, - { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_REDIRECT, 0 }, - { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RESOLVING_NAME, 0, 0, 1 }, - { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_NAME_RESOLVED, 0, 0, 1 }, - { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER, 0, 0, 1 }, - { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER, 0, 0, 1 }, - { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_SENDING_REQUEST, 0 }, - { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_REQUEST_SENT, 0 }, - { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE, 0 }, - { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED, 0 }, - { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE, 0 }, - { winhttp_query_data, WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE, 0 }, - { winhttp_read_data, WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE, 0, 1 }, - { winhttp_read_data, WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED, 0, 1 }, - { winhttp_read_data, WINHTTP_CALLBACK_STATUS_READ_COMPLETE, 0, 1 }, - { winhttp_close_handle, WINHTTP_CALLBACK_STATUS_CLOSING_CONNECTION, 0, 1 }, - { winhttp_close_handle, WINHTTP_CALLBACK_STATUS_CONNECTION_CLOSED, 0, 1 }, - { winhttp_close_handle, WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING, 0, 1 }, - { winhttp_close_handle, WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING, 1, 1 }, - { winhttp_close_handle, WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING, 1, 1 } + { winhttp_connect, WINHTTP_CALLBACK_STATUS_HANDLE_CREATED }, + { winhttp_open_request, WINHTTP_CALLBACK_STATUS_HANDLE_CREATED }, + { winhttp_send_request, WINHTTP_CALLBACK_STATUS_RESOLVING_NAME, FALSE, TRUE }, + { winhttp_send_request, WINHTTP_CALLBACK_STATUS_NAME_RESOLVED, FALSE, TRUE }, + { winhttp_send_request, WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER }, + { winhttp_send_request, WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER }, + { winhttp_send_request, WINHTTP_CALLBACK_STATUS_SENDING_REQUEST }, + { winhttp_send_request, WINHTTP_CALLBACK_STATUS_REQUEST_SENT }, + { winhttp_send_request, WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE }, + { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE }, + { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED }, + { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_REDIRECT }, + { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RESOLVING_NAME, FALSE, TRUE, TRUE }, + { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_NAME_RESOLVED, FALSE, TRUE, TRUE }, + { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER, FALSE, FALSE, TRUE }, + { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER, FALSE, FALSE, TRUE }, + { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_SENDING_REQUEST }, + { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_REQUEST_SENT }, + { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE }, + { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED }, + { winhttp_receive_response, WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE }, + { winhttp_query_data, WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE }, + { winhttp_read_data, WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE, FALSE, TRUE }, + { winhttp_read_data, WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED, FALSE, TRUE }, + { winhttp_read_data, WINHTTP_CALLBACK_STATUS_READ_COMPLETE, FALSE, TRUE }, + { winhttp_close_handle, WINHTTP_CALLBACK_STATUS_CLOSING_CONNECTION, FALSE, TRUE }, + { winhttp_close_handle, WINHTTP_CALLBACK_STATUS_CONNECTION_CLOSED, FALSE, TRUE }, + { winhttp_close_handle, WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING, FALSE, TRUE }, + { winhttp_close_handle, WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING, TRUE, TRUE }, + { winhttp_close_handle, WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING, TRUE, TRUE } }; static void test_async( void ) { - static const WCHAR codeweavers[] = {'c','o','d','e','w','e','a','v','e','r','s','.','c','o','m',0}; - HANDLE ses, con, req; DWORD size, status; BOOL ret; @@ -420,7 +415,7 @@ static void test_async( void ) info.test = async_test; info.count = sizeof(async_test) / sizeof(async_test[0]); info.index = 0; - info.wait = CreateEvent( NULL, FALSE, FALSE, NULL ); + info.wait = CreateEventW( NULL, FALSE, FALSE, NULL ); ses = WinHttpOpen( user_agent, 0, NULL, NULL, WINHTTP_FLAG_ASYNC ); ok(ses != NULL, "failed to open session %u\n", GetLastError()); @@ -431,7 +426,7 @@ static void test_async( void ) ok(ret, "failed to set context value %u\n", GetLastError()); setup_test( &info, winhttp_connect, __LINE__ ); - con = WinHttpConnect( ses, codeweavers, 0, 0 ); + con = WinHttpConnect( ses, test_winehq, 0, 0 ); ok(con != NULL, "failed to open a connection %u\n", GetLastError()); setup_test( &info, winhttp_open_request, __LINE__ ); diff --git a/rostests/winetests/winhttp/url.c b/rostests/winetests/winhttp/url.c index f0bd43431de..3ac0bec92df 100644 --- a/rostests/winetests/winhttp/url.c +++ b/rostests/winetests/winhttp/url.c @@ -353,21 +353,21 @@ static void WinHttpCrackUrl_test( void ) uc.dwExtraInfoLength = 20; ret = WinHttpCrackUrl( url1, 0, 0, &uc ); - ok( ret, "WinHttpCrackUrl failed\n" ); - ok( uc.nScheme == INTERNET_SCHEME_HTTP, "unexpected scheme\n" ); - ok( !memcmp( uc.lpszScheme, http, sizeof(http) ), "unexpected scheme\n" ); - ok( uc.dwSchemeLength == 4, "unexpected scheme length\n" ); - ok( !memcmp( uc.lpszUserName, username, sizeof(username) ), "unexpected username\n" ); - ok( uc.dwUserNameLength == 8, "unexpected username length\n" ); - ok( !memcmp( uc.lpszPassword, password, sizeof(password) ), "unexpected password\n" ); - ok( uc.dwPasswordLength == 8, "unexpected password length\n" ); - ok( !memcmp( uc.lpszHostName, winehq, sizeof(winehq) ), "unexpected hostname\n" ); - ok( uc.dwHostNameLength == 14, "unexpected hostname length\n" ); + ok( ret, "WinHttpCrackUrl failed le=%u\n", GetLastError() ); + ok( uc.nScheme == INTERNET_SCHEME_HTTP, "unexpected scheme: %u\n", uc.nScheme ); + ok( !memcmp( uc.lpszScheme, http, sizeof(http) ), "unexpected scheme: %s\n", wine_dbgstr_w(uc.lpszScheme) ); + ok( uc.dwSchemeLength == 4, "unexpected scheme length: %u\n", uc.dwSchemeLength ); + ok( !memcmp( uc.lpszUserName, username, sizeof(username) ), "unexpected username: %s\n", wine_dbgstr_w(uc.lpszUserName) ); + ok( uc.dwUserNameLength == 8, "unexpected username length: %u\n", uc.dwUserNameLength ); + ok( !memcmp( uc.lpszPassword, password, sizeof(password) ), "unexpected password: %s\n", wine_dbgstr_w(uc.lpszPassword) ); + ok( uc.dwPasswordLength == 8, "unexpected password length: %u\n", uc.dwPasswordLength ); + ok( !memcmp( uc.lpszHostName, winehq, sizeof(winehq) ), "unexpected hostname: %s\n", wine_dbgstr_w(uc.lpszHostName) ); + ok( uc.dwHostNameLength == 14, "unexpected hostname length: %u\n", uc.dwHostNameLength ); ok( uc.nPort == 80, "unexpected port: %u\n", uc.nPort ); - ok( !memcmp( uc.lpszUrlPath, about, sizeof(about) ), "unexpected path\n" ); - ok( uc.dwUrlPathLength == 11, "unexpected path length\n" ); - ok( !memcmp( uc.lpszExtraInfo, query, sizeof(query) ), "unexpected extra info\n" ); - ok( uc.dwExtraInfoLength == 6, "unexpected extra info length\n" ); + ok( !memcmp( uc.lpszUrlPath, about, sizeof(about) ), "unexpected path: %s\n", wine_dbgstr_w(uc.lpszUrlPath) ); + ok( uc.dwUrlPathLength == 11, "unexpected path length: %u\n", uc.dwUrlPathLength ); + ok( !memcmp( uc.lpszExtraInfo, query, sizeof(query) ), "unexpected extra info: %s\n", wine_dbgstr_w(uc.lpszExtraInfo) ); + ok( uc.dwExtraInfoLength == 6, "unexpected extra info length: %u\n", uc.dwExtraInfoLength ); /* buffer of insufficient length */ scheme[0] = 0; @@ -376,15 +376,15 @@ static void WinHttpCrackUrl_test( void ) SetLastError( 0xdeadbeef ); ret = WinHttpCrackUrl( url1, 0, 0, &uc ); error = GetLastError(); - ok( !ret, "WinHttpCrackUrl failed\n" ); - ok( error == ERROR_INSUFFICIENT_BUFFER, "WinHttpCrackUrl failed\n" ); + ok( !ret, "WinHttpCrackUrl succeeded\n" ); + ok( error == ERROR_INSUFFICIENT_BUFFER, "got %u, expected ERROR_INSUFFICIENT_BUFFER\n", error ); ok( uc.dwSchemeLength == 5, "unexpected scheme length: %u\n", uc.dwSchemeLength ); /* no buffers */ reset_url_components( &uc ); ret = WinHttpCrackUrl( url_k1, 0, 0,&uc); - ok( ret, "WinHttpCrackUrl failed\n" ); + ok( ret, "WinHttpCrackUrl failed le=%u\n", GetLastError() ); ok( uc.nScheme == INTERNET_SCHEME_HTTP, "unexpected scheme\n" ); ok( uc.lpszScheme == url_k1,"unexpected scheme\n" ); ok( uc.dwSchemeLength == 4, "unexpected scheme length\n" ); @@ -403,7 +403,7 @@ static void WinHttpCrackUrl_test( void ) reset_url_components( &uc ); ret = WinHttpCrackUrl( url_k2, 0, 0,&uc); - ok( ret, "WinHttpCrackUrl failed\n" ); + ok( ret, "WinHttpCrackUrl failed le=%u\n", GetLastError() ); ok( uc.nScheme == INTERNET_SCHEME_HTTP, "unexpected scheme\n" ); ok( uc.lpszScheme == url_k2, "unexpected scheme\n" ); ok( uc.dwSchemeLength == 4, "unexpected scheme length\n" ); @@ -422,7 +422,7 @@ static void WinHttpCrackUrl_test( void ) reset_url_components( &uc ); ret = WinHttpCrackUrl( url_k3, 0, 0, &uc ); - ok( ret, "WinHttpCrackUrl failed\n" ); + ok( ret, "WinHttpCrackUrl failed le=%u\n", GetLastError() ); ok( uc.nScheme == INTERNET_SCHEME_HTTPS, "unexpected scheme\n" ); ok( uc.lpszScheme == url_k3, "unexpected scheme\n" ); ok( uc.dwSchemeLength == 5, "unexpected scheme length\n" ); @@ -441,61 +441,61 @@ static void WinHttpCrackUrl_test( void ) /* bad parameters */ reset_url_components( &uc ); ret = WinHttpCrackUrl( url_k4, 0, 0, &uc ); - ok( !ret, "WinHttpCrackUrl failed\n" ); + ok( !ret, "WinHttpCrackUrl succeeded\n" ); reset_url_components( &uc ); ret = WinHttpCrackUrl( url_k5, 0, 0, &uc ); - ok( !ret, "WinHttpCrackUrl failed\n" ); + ok( !ret, "WinHttpCrackUrl succeeded\n" ); reset_url_components( &uc ); ret = WinHttpCrackUrl( url_k6, 0, 0, &uc ); - ok( !ret, "WinHttpCrackUrl failed\n" ); + ok( !ret, "WinHttpCrackUrl succeeded\n" ); reset_url_components( &uc ); ret = WinHttpCrackUrl( url_k7, 0, 0, &uc ); - ok( !ret, "WinHttpCrackUrl failed\n" ); + ok( !ret, "WinHttpCrackUrl succeeded\n" ); reset_url_components( &uc ); ret = WinHttpCrackUrl( url_k8, 0, 0, &uc ); - ok( !ret, "WinHttpCrackUrl failed\n" ); + ok( !ret, "WinHttpCrackUrl succeeded\n" ); reset_url_components( &uc ); ret = WinHttpCrackUrl( url_k9, 0, 0, &uc ); - ok( ret, "WinHttpCrackUrl failed\n" ); - ok( uc.lpszUrlPath == url_k9 + 14, "unexpected path\n" ); - ok( uc.dwUrlPathLength == 0, "unexpected path length\n" ); - ok( uc.lpszExtraInfo == url_k9 + 14, "unexpected extra info\n" ); - ok( uc.dwExtraInfoLength == 0, "unexpected extra info length\n" ); + ok( ret, "WinHttpCrackUrl failed le=%u\n", GetLastError() ); + ok( uc.lpszUrlPath == url_k9 + 14, "unexpected path: %s\n", wine_dbgstr_w(uc.lpszUrlPath) ); + ok( uc.dwUrlPathLength == 0, "unexpected path length: %u\n", uc.dwUrlPathLength ); + ok( uc.lpszExtraInfo == url_k9 + 14, "unexpected extra info: %s\n", wine_dbgstr_w(uc.lpszExtraInfo) ); + ok( uc.dwExtraInfoLength == 0, "unexpected extra info length: %u\n", uc.dwExtraInfoLength ); reset_url_components( &uc ); ret = WinHttpCrackUrl( url_k10, 0, 0, &uc ); - ok( ret, "WinHttpCrackUrl failed\n" ); - ok( uc.lpszUrlPath == url_k10 + 13, "unexpected path\n" ); - ok( uc.dwUrlPathLength == 7, "unexpected path length\n" ); - ok( uc.lpszExtraInfo == url_k10 + 20, "unexpected extra info\n" ); - ok( uc.dwExtraInfoLength == 0, "unexpected extra info length\n" ); + ok( ret, "WinHttpCrackUrl failed le=%u\n", GetLastError() ); + ok( uc.lpszUrlPath == url_k10 + 13, "unexpected path: %s\n", wine_dbgstr_w(uc.lpszUrlPath) ); + ok( uc.dwUrlPathLength == 7, "unexpected path length: %u\n", uc.dwUrlPathLength ); + ok( uc.lpszExtraInfo == url_k10 + 20, "unexpected extra info: %s\n", wine_dbgstr_w(uc.lpszExtraInfo) ); + ok( uc.dwExtraInfoLength == 0, "unexpected extra info length: %u\n", uc.dwExtraInfoLength ); reset_url_components( &uc ); ret = WinHttpCrackUrl( url5, 0, 0, &uc ); - ok( !ret, "WinHttpCrackUrl failed\n" ); + ok( !ret, "WinHttpCrackUrl succeeded\n" ); reset_url_components( &uc ); ret = WinHttpCrackUrl( empty, 0, 0, &uc ); - ok( !ret, "WinHttpCrackUrl failed\n" ); + ok( !ret, "WinHttpCrackUrl succeeded\n" ); ret = WinHttpCrackUrl( url1, 0, 0, NULL ); - ok( !ret, "WinHttpCrackUrl failed\n" ); + ok( !ret, "WinHttpCrackUrl succeeded\n" ); ret = WinHttpCrackUrl( NULL, 0, 0, &uc ); - ok( !ret, "WinHttpCrackUrl failed\n" ); + ok( !ret, "WinHttpCrackUrl succeeded\n" ); /* decoding without buffers */ reset_url_components( &uc ); SetLastError(0xdeadbeef); ret = WinHttpCrackUrl( url8, 0, ICU_DECODE, &uc ); error = GetLastError(); - ok( !ret, "WinHttpCrackUrl failed\n" ); - ok( error == ERROR_INVALID_PARAMETER, "WinHttpCrackUrl failed\n" ); + ok( !ret, "WinHttpCrackUrl succeeded\n" ); + ok( error == ERROR_INVALID_PARAMETER, "got %u, expected ERROR_INVALID_PARAMETER\n", error ); /* decoding with buffers */ uc.lpszScheme = scheme; @@ -538,7 +538,7 @@ static void WinHttpCrackUrl_test( void ) path[0] = 0; ret = WinHttpCrackUrl( url7, 0, 0, &uc ); - ok( ret, "WinHttpCrackUrl failed\n" ); + ok( ret, "WinHttpCrackUrl failed le=%u\n", GetLastError() ); ok( !memcmp( uc.lpszHostName, winehq, sizeof(winehq) ), "unexpected host name: %s\n", wine_dbgstr_w(uc.lpszHostName) ); ok( uc.dwHostNameLength == 14, "unexpected host name length: %d\n", uc.dwHostNameLength ); ok( uc.nPort == 42, "unexpected port: %u\n", uc.nPort ); @@ -546,17 +546,17 @@ static void WinHttpCrackUrl_test( void ) /* decoding without buffers */ reset_url_components( &uc ); ret = WinHttpCrackUrl( url9, 0, 0, &uc ); - ok( ret, "WinHttpCrackUrl failed\n" ); + ok( ret, "WinHttpCrackUrl failed le=%u\n", GetLastError() ); ok( uc.nPort == 0, "unexpected port: %u\n", uc.nPort ); reset_url_components( &uc ); ret = WinHttpCrackUrl( url10, 0, 0, &uc ); - ok( ret, "WinHttpCrackUrl failed\n" ); + ok( ret, "WinHttpCrackUrl failed le=%u\n", GetLastError() ); ok( uc.nPort == 80, "unexpected port: %u\n", uc.nPort ); reset_url_components( &uc ); ret = WinHttpCrackUrl( url11, 0, 0, &uc ); - ok( ret, "WinHttpCrackUrl failed\n" ); + ok( ret, "WinHttpCrackUrl failed le=%u\n", GetLastError() ); ok( uc.nPort == 443, "unexpected port: %u\n", uc.nPort ); reset_url_components( &uc ); @@ -575,7 +575,7 @@ static void WinHttpCrackUrl_test( void ) reset_url_components( &uc ); ret = WinHttpCrackUrl( url12, 0, 0, &uc); - ok( ret, "WinHttpCrackUrl failed\n" ); + ok( ret, "WinHttpCrackUrl failed le=%u\n", GetLastError() ); ok( uc.nScheme == INTERNET_SCHEME_HTTP, "unexpected scheme\n" ); ok( uc.lpszScheme == url12,"unexpected scheme\n" ); ok( uc.dwSchemeLength == 4, "unexpected scheme length\n" ); @@ -603,7 +603,7 @@ static void WinHttpCrackUrl_test( void ) uc.dwExtraInfoLength = 0; uc.nPort = 0; ret = WinHttpCrackUrl( url13, 0, ICU_DECODE, &uc ); - ok( ret, "WinHttpCrackUrl failed\n" ); + ok( ret, "WinHttpCrackUrl failed le=%u\n", GetLastError() ); uc.lpszScheme = scheme; uc.dwSchemeLength = 20; @@ -619,7 +619,7 @@ static void WinHttpCrackUrl_test( void ) uc.dwExtraInfoLength = 0; uc.nPort = 0; ret = WinHttpCrackUrl( url14, 0, ICU_ESCAPE|ICU_DECODE, &uc ); - ok( ret, "WinHttpCrackUrl failed\n" ); + ok( ret, "WinHttpCrackUrl failed le=%u\n", GetLastError() ); ok( !lstrcmpW( uc.lpszHostName, hostnameW ), "unexpected host name\n" ); ok( !lstrcmpW( uc.lpszUrlPath, pathW ), "unexpected path\n" ); } diff --git a/rostests/winetests/winhttp/winhttp.c b/rostests/winetests/winhttp/winhttp.c index d7e283c0b0c..ddf0f1a3f99 100644 --- a/rostests/winetests/winhttp/winhttp.c +++ b/rostests/winetests/winhttp/winhttp.c @@ -41,7 +41,7 @@ static const WCHAR test_useragent[] = {'W','i','n','e',' ','R','e','g','r','e','s','s','i','o','n',' ','T','e','s','t',0}; -static const WCHAR test_server[] = {'w','i','n','e','h','q','.','o','r','g',0}; +static const WCHAR test_winehq[] = {'t','e','s','t','.','w','i','n','e','h','q','.','o','r','g',0}; static const WCHAR localhostW[] = {'l','o','c','a','l','h','o','s','t',0}; static BOOL proxy_active(void) @@ -146,7 +146,7 @@ static void test_QueryOption(void) "expected ERROR_WINHTTP_INCORRECT_HANDLE_TYPE, got %u\n", GetLastError()); SetLastError(0xdeadbeef); - connection = WinHttpConnect(session, test_server, INTERNET_DEFAULT_HTTP_PORT, 0); + connection = WinHttpConnect(session, test_winehq, INTERNET_DEFAULT_HTTP_PORT, 0); ok(connection != NULL, "WinHttpConnect failed to open a connection, error: %u\n", GetLastError()); feature = WINHTTP_DISABLE_COOKIES; @@ -227,7 +227,7 @@ static void test_OpenRequest (void) ok(GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %u.\n", GetLastError()); /* Test with a valid server name */ - connection = WinHttpConnect (session, test_server, INTERNET_DEFAULT_HTTP_PORT, 0); + connection = WinHttpConnect (session, test_winehq, INTERNET_DEFAULT_HTTP_PORT, 0); ok(connection != NULL, "WinHttpConnect failed to open a connection, error: %u.\n", GetLastError()); request = WinHttpOpenRequest(connection, NULL, NULL, NULL, WINHTTP_NO_REFERER, @@ -259,7 +259,6 @@ static void test_OpenRequest (void) static void test_empty_headers_param(void) { - static const WCHAR winehq[] = {'w','i','n','e','h','q','.','o','r','g',0}; static const WCHAR empty[] = {0}; HINTERNET ses, con, req; BOOL ret; @@ -267,7 +266,7 @@ static void test_empty_headers_param(void) ses = WinHttpOpen(test_useragent, 0, NULL, NULL, 0); ok(ses != NULL, "failed to open session %u\n", GetLastError()); - con = WinHttpConnect(ses, winehq, 80, 0); + con = WinHttpConnect(ses, test_winehq, 80, 0); ok(con != NULL, "failed to open a connection %u\n", GetLastError()); req = WinHttpOpenRequest(con, NULL, NULL, NULL, NULL, NULL, 0); @@ -283,6 +282,13 @@ static void test_empty_headers_param(void) static void test_SendRequest (void) { + static const WCHAR content_type[] = + {'C','o','n','t','e','n','t','-','T','y','p','e',':',' ','a','p','p','l','i','c','a','t','i','o','n', + '/','x','-','w','w','w','-','f','o','r','m','-','u','r','l','e','n','c','o','d','e','d',0}; + static const WCHAR test_file[] = {'t','e','s','t','s','/','p','o','s','t','.','p','h','p',0}; + static const WCHAR test_verb[] = {'P','O','S','T',0}; + static CHAR post_data[] = "mode=Test"; + static const char test_post[] = "mode => Test\0\n"; HINTERNET session, request, connection; DWORD header_len, optional_len, total_len, bytes_rw, size; DWORD_PTR context; @@ -290,16 +296,6 @@ static void test_SendRequest (void) CHAR buffer[256]; int i; - static const WCHAR test_site[] = {'c','r','o','s','s','o','v','e','r','.', - 'c','o','d','e','w','e','a','v','e','r','s','.','c','o','m',0}; - static const WCHAR content_type[] = - {'C','o','n','t','e','n','t','-','T','y','p','e',':',' ','a','p','p','l','i','c','a','t','i','o','n', - '/','x','-','w','w','w','-','f','o','r','m','-','u','r','l','e','n','c','o','d','e','d',0}; - static const WCHAR test_file[] = {'/','p','o','s','t','t','e','s','t','.','p','h','p',0}; - static const WCHAR test_verb[] = {'P','O','S','T',0}; - static CHAR post_data[] = "mode=Test"; - static CHAR test_post[] = "mode => Test\\0\n"; - header_len = -1L; total_len = optional_len = sizeof(post_data); memset(buffer, 0xff, sizeof(buffer)); @@ -308,7 +304,7 @@ static void test_SendRequest (void) WINHTTP_NO_PROXY_NAME, WINHTTP_NO_PROXY_BYPASS, 0); ok(session != NULL, "WinHttpOpen failed to open session.\n"); - connection = WinHttpConnect (session, test_site, INTERNET_DEFAULT_HTTP_PORT, 0); + connection = WinHttpConnect (session, test_winehq, INTERNET_DEFAULT_HTTP_PORT, 0); ok(connection != NULL, "WinHttpConnect failed to open a connection, error: %u.\n", GetLastError()); request = WinHttpOpenRequest(connection, test_verb, test_file, NULL, WINHTTP_NO_REFERER, @@ -355,8 +351,8 @@ static void test_SendRequest (void) ret = WinHttpReadData(request, buffer, sizeof(buffer) - 1, &bytes_rw); ok(ret == TRUE, "WinHttpReadData failed: %u.\n", GetLastError()); - ok(bytes_rw == strlen(test_post), "Read %u bytes instead of %d.\n", bytes_rw, lstrlen(test_post)); - ok(strncmp(buffer, test_post, bytes_rw) == 0, "Data read did not match, got '%s'.\n", buffer); + ok(bytes_rw == sizeof(test_post) - 1, "Read %u bytes\n", bytes_rw); + ok(!memcmp(buffer, test_post, sizeof(test_post) - 1), "Data read did not match.\n"); ret = WinHttpCloseHandle(request); ok(ret == TRUE, "WinHttpCloseHandle failed on closing request, got %d.\n", ret); @@ -413,15 +409,12 @@ static void test_WinHttpAddHeaders(void) WCHAR check_buffer[MAX_PATH]; DWORD index, len, oldlen; - static const WCHAR test_site[] = {'c','r','o','s','s','o','v','e','r','.', - 'c','o','d','e','w','e','a','v','e','r','s','.','c','o','m',0}; static const WCHAR test_file[] = {'/','p','o','s','t','t','e','s','t','.','p','h','p',0}; static const WCHAR test_verb[] = {'P','O','S','T',0}; - static const WCHAR test_header_begin[] = {'P','O','S','T',' ','/','p','o','s','t','t','e','s','t','.','p','h','p',' ','H','T','T','P','/','1'}; static const WCHAR full_path_test_header_begin[] = - {'P','O','S','T',' ','h','t','t','p',':','/','/','c','r','o','s','s','o','v','e','r','.','c','o','d','e','w','e','a','v','e','r','s','.','c','o','m',':','8','0','/','p','o','s','t','t','e','s','t','.','p','h','p',' ','H','T','T','P','/','1'}; + {'P','O','S','T',' ','h','t','t','p',':','/','/','t','e','s','t','.','w','i','n','e','h','q','.','o','r','g',':','8','0','/','p','o','s','t','.','p','h','p',' ','H','T','T','P','/','1'}; static const WCHAR test_header_end[] = {'\r','\n','\r','\n',0}; static const WCHAR test_header_name[] = {'W','a','r','n','i','n','g',0}; @@ -469,7 +462,7 @@ static void test_WinHttpAddHeaders(void) WINHTTP_NO_PROXY_NAME, WINHTTP_NO_PROXY_BYPASS, 0); ok(session != NULL, "WinHttpOpen failed to open session.\n"); - connection = WinHttpConnect (session, test_site, INTERNET_DEFAULT_HTTP_PORT, 0); + connection = WinHttpConnect (session, test_winehq, INTERNET_DEFAULT_HTTP_PORT, 0); ok(connection != NULL, "WinHttpConnect failed to open a connection, error: %u.\n", GetLastError()); request = WinHttpOpenRequest(connection, test_verb, test_file, NULL, WINHTTP_NO_REFERER, @@ -816,8 +809,6 @@ static void CALLBACK cert_error(HINTERNET handle, DWORD_PTR ctx, DWORD status, L static void test_secure_connection(void) { - static const WCHAR google[] = {'w','w','w','.','g','o','o','g','l','e','.','c','o','m',0}; - HINTERNET ses, con, req; DWORD size, status, policy, bitness, read_size; BOOL ret; @@ -832,7 +823,7 @@ static void test_secure_connection(void) ret = WinHttpSetOption(ses, WINHTTP_OPTION_REDIRECT_POLICY, &policy, sizeof(policy)); ok(ret, "failed to set redirect policy %u\n", GetLastError()); - con = WinHttpConnect(ses, google, 443, 0); + con = WinHttpConnect(ses, test_winehq, 443, 0); ok(con != NULL, "failed to open a connection %u\n", GetLastError()); /* try without setting WINHTTP_FLAG_SECURE */ @@ -922,8 +913,6 @@ cleanup: static void test_request_parameter_defaults(void) { static const WCHAR empty[] = {0}; - static const WCHAR codeweavers[] = {'c','o','d','e','w','e','a','v','e','r','s','.','c','o','m',0}; - HINTERNET ses, con, req; DWORD size, status, error; WCHAR *version; @@ -932,7 +921,7 @@ static void test_request_parameter_defaults(void) ses = WinHttpOpen(test_useragent, 0, NULL, NULL, 0); ok(ses != NULL, "failed to open session %u\n", GetLastError()); - con = WinHttpConnect(ses, codeweavers, 0, 0); + con = WinHttpConnect(ses, test_winehq, 0, 0); ok(con != NULL, "failed to open a connection %u\n", GetLastError()); req = WinHttpOpenRequest(con, NULL, NULL, NULL, NULL, NULL, 0); @@ -1126,8 +1115,6 @@ static void test_Timeouts (void) BOOL ret; DWORD value, size; HINTERNET ses, req, con; - static const WCHAR codeweavers[] = {'c','o','d','e','w','e','a','v','e','r','s','.','c','o','m',0}; - ses = WinHttpOpen(test_useragent, 0, NULL, NULL, 0); ok(ses != NULL, "failed to open session %u\n", GetLastError()); @@ -1288,7 +1275,7 @@ static void test_Timeouts (void) ok(ret, "%u\n", GetLastError()); ok(value == 0xbeefdead, "Expected 0xbeefdead, got %u\n", value); - con = WinHttpConnect(ses, codeweavers, 0, 0); + con = WinHttpConnect(ses, test_winehq, 0, 0); ok(con != NULL, "failed to open a connection %u\n", GetLastError()); /* Timeout values should match the last one set for session */ @@ -1717,11 +1704,8 @@ static void test_Timeouts (void) static void test_resolve_timeout(void) { - static const WCHAR codeweavers[] = - {'c','o','d','e','w','e','a','v','e','r','s','.','c','o','m',0}; static const WCHAR nxdomain[] = - {'n','x','d','o','m','a','i','n','.','c','o','d','e','w','e','a','v','e','r','s','.','c','o','m',0}; - + {'n','x','d','o','m','a','i','n','.','w','i','n','e','h','q','.','o','r','g',0}; HINTERNET ses, con, req; DWORD timeout; BOOL ret; @@ -1743,6 +1727,11 @@ static void test_resolve_timeout(void) SetLastError(0xdeadbeef); ret = WinHttpSendRequest(req, NULL, 0, NULL, 0, 0, 0); + if(ret == 1) + { + skip("nxdomain returned success. Broken ISP redirects?\n"); + return; + } ok(!ret, "sent request\n"); ok(GetLastError() == ERROR_WINHTTP_NAME_NOT_RESOLVED, "expected ERROR_WINHTTP_NAME_NOT_RESOLVED got %u\n", GetLastError()); @@ -1761,7 +1750,7 @@ static void test_resolve_timeout(void) ret = WinHttpSetOption(ses, WINHTTP_OPTION_RESOLVE_TIMEOUT, &timeout, sizeof(timeout)); ok(ret, "failed to set resolve timeout %u\n", GetLastError()); - con = WinHttpConnect(ses, codeweavers, 0, 0); + con = WinHttpConnect(ses, test_winehq, 0, 0); ok(con != NULL, "failed to open a connection %u\n", GetLastError()); req = WinHttpOpenRequest(con, NULL, NULL, NULL, NULL, NULL, 0); @@ -1806,6 +1795,8 @@ struct server_info int port; }; +#define BIG_BUFFER_LEN 0x2250 + static DWORD CALLBACK server_thread(LPVOID param) { struct server_info *si = param; @@ -1863,6 +1854,13 @@ static DWORD CALLBACK server_thread(LPVOID param) else send(c, noauthmsg, sizeof noauthmsg - 1, 0); } + if (strstr(buffer, "/big")) + { + char msg[BIG_BUFFER_LEN]; + memset(msg, 'm', sizeof(msg)); + send(c, okmsg, sizeof(okmsg) - 1, 0); + send(c, msg, sizeof(msg), 0); + } if (strstr(buffer, "/no_headers")) { send(c, page1, sizeof page1 - 1, 0); @@ -2085,13 +2083,19 @@ static void test_no_headers(int port) ok(req != NULL, "failed to open a request %u\n", GetLastError()); ret = WinHttpSendRequest(req, NULL, 0, NULL, 0, 0, 0); - ok(ret, "failed to send request %u\n", GetLastError()); - - SetLastError(0xdeadbeef); - ret = WinHttpReceiveResponse(req, NULL); - error = GetLastError(); - ok(!ret, "expected failure\n"); - ok(error == ERROR_WINHTTP_INVALID_SERVER_RESPONSE, "got %u\n", error); + if (!ret) + { + error = GetLastError(); + ok(error == ERROR_WINHTTP_INVALID_SERVER_RESPONSE, "got %u\n", error); + } + else + { + SetLastError(0xdeadbeef); + ret = WinHttpReceiveResponse(req, NULL); + error = GetLastError(); + ok(!ret, "expected failure\n"); + ok(error == ERROR_WINHTTP_INVALID_SERVER_RESPONSE, "got %u\n", error); + } WinHttpCloseHandle(req); WinHttpCloseHandle(con); @@ -2135,6 +2139,55 @@ static void test_bad_header( int port ) WinHttpCloseHandle( ses ); } +static void test_multiple_reads(int port) +{ + static const WCHAR bigW[] = {'b','i','g',0}; + HINTERNET ses, con, req; + DWORD total_len = 0; + BOOL ret; + + ses = WinHttpOpen(test_useragent, 0, NULL, NULL, 0); + ok(ses != NULL, "failed to open session %u\n", GetLastError()); + + con = WinHttpConnect(ses, localhostW, port, 0); + ok(con != NULL, "failed to open a connection %u\n", GetLastError()); + + req = WinHttpOpenRequest(con, NULL, bigW, NULL, NULL, NULL, 0); + ok(req != NULL, "failed to open a request %u\n", GetLastError()); + + ret = WinHttpSendRequest(req, NULL, 0, NULL, 0, 0, 0); + ok(ret, "failed to send request %u\n", GetLastError()); + + ret = WinHttpReceiveResponse(req, NULL); + ok(ret == TRUE, "expected success\n"); + + for (;;) + { + DWORD len = 0xdeadbeef; + ret = WinHttpQueryDataAvailable( req, &len ); + ok( ret, "WinHttpQueryDataAvailable failed with error %u\n", GetLastError() ); + if (ret) ok( len != 0xdeadbeef, "WinHttpQueryDataAvailable return wrong length\n" ); + if (len) + { + DWORD bytes_read; + char *buf = HeapAlloc( GetProcessHeap(), 0, len + 1 ); + + ret = WinHttpReadData( req, buf, len, &bytes_read ); + ok( len == bytes_read, "only got %u of %u available\n", bytes_read, len ); + + HeapFree( GetProcessHeap(), 0, buf ); + if (!bytes_read) break; + total_len += bytes_read; + } + if (!len) break; + } + ok(total_len == BIG_BUFFER_LEN, "got wrong length: 0x%x\n", total_len); + + WinHttpCloseHandle(req); + WinHttpCloseHandle(con); + WinHttpCloseHandle(ses); +} + static void test_connection_info( int port ) { static const WCHAR basicW[] = {'/','b','a','s','i','c',0}; @@ -2319,11 +2372,10 @@ static void test_IWinHttpRequest(void) { static const WCHAR usernameW[] = {'u','s','e','r','n','a','m','e',0}; static const WCHAR passwordW[] = {'p','a','s','s','w','o','r','d',0}; - static const WCHAR url1W[] = {'h','t','t','p',':','/','/','w','i','n','e','h','q','.','o','r','g',0}; - static const WCHAR url2W[] = {'w','i','n','e','h','q','.','o','r','g',0}; - static const WCHAR url3W[] = {'h','t','t','p',':','/','/','c','r','o','s','s','o','v','e','r','.', - 'c','o','d','e','w','e','a','v','e','r','s','.','c','o','m','/', - 'p','o','s','t','t','e','s','t','.','p','h','p',0}; + static const WCHAR url1W[] = {'h','t','t','p',':','/','/','t','e','s','t','.','w','i','n','e','h','q','.','o','r','g',0}; + static const WCHAR url2W[] = {'t','e','s','t','.','w','i','n','e','h','q','.','o','r','g',0}; + static const WCHAR url3W[] = {'h','t','t','p',':','/','/','t','e','s','t','.','w','i','n','e','h','q','.', + 'o','r','g','/','t','e','s','t','s','/','p','o','s','t','.','p','h','p',0}; static const WCHAR method1W[] = {'G','E','T',0}; static const WCHAR method2W[] = {'I','N','V','A','L','I','D',0}; static const WCHAR method3W[] = {'P','O','S','T',0}; @@ -2764,7 +2816,7 @@ if (0) /* crashes on some win2k systems */ if (!ret) { ok( error == ERROR_WINHTTP_AUTODETECTION_FAILED, "got %u\n", error ); - ok( url == (WCHAR *)0xdeadbeef, "got %p\n", url ); + ok( !url || broken(url == (WCHAR *)0xdeadbeef), "got %p\n", url ); } else { @@ -2779,7 +2831,7 @@ if (0) /* crashes on some win2k systems */ if (!ret) { ok( error == ERROR_WINHTTP_AUTODETECTION_FAILED, "got %u\n", error ); - ok( url == (WCHAR *)0xdeadbeef, "got %p\n", url ); + ok( !url || broken(url == (WCHAR *)0xdeadbeef), "got %p\n", url ); } else { @@ -2926,7 +2978,6 @@ static void test_WinHttpGetProxyForUrl(void) static void test_chunked_read(void) { - static const WCHAR host[] = {'t','e','s','t','.','w','i','n','e','h','q','.','o','r','g',0}; static const WCHAR verb[] = {'/','t','e','s','t','c','h','u','n','k','e','d',0}; static const WCHAR chunked[] = {'c','h','u','n','k','e','d',0}; WCHAR header[32]; @@ -2940,7 +2991,7 @@ static void test_chunked_read(void) ok( ses != NULL, "WinHttpOpen failed with error %u\n", GetLastError() ); if (!ses) goto done; - con = WinHttpConnect( ses, host, 0, 0 ); + con = WinHttpConnect( ses, test_winehq, 0, 0 ); ok( con != NULL, "WinHttpConnect failed with error %u\n", GetLastError() ); if (!con) goto done; @@ -3028,7 +3079,7 @@ START_TEST (winhttp) test_WinHttpGetProxyForUrl(); test_chunked_read(); - si.event = CreateEvent(NULL, 0, 0, NULL); + si.event = CreateEventW(NULL, 0, 0, NULL); si.port = 7532; thread = CreateThread(NULL, 0, server_thread, (LPVOID)&si, 0, NULL); @@ -3044,6 +3095,7 @@ START_TEST (winhttp) test_no_headers(si.port); test_basic_authentication(si.port); test_bad_header(si.port); + test_multiple_reads(si.port); /* send the basic request again to shutdown the server thread */ test_basic_request(si.port, NULL, quitW);