mirror of
https://github.com/reactos/reactos.git
synced 2025-07-31 19:01:48 +00:00
[WINHTTP_WINETEST] Sync with Wine Staging 1.7.55. CORE-10536
svn path=/trunk/; revision=70008
This commit is contained in:
parent
19bc65b1ac
commit
583130c90b
3 changed files with 560 additions and 68 deletions
|
@ -158,9 +158,9 @@ static void setup_test( struct info *info, enum api function, unsigned int line
|
|||
|
||||
static void test_connection_cache( void )
|
||||
{
|
||||
HANDLE ses, con, req;
|
||||
DWORD size, status;
|
||||
BOOL ret;
|
||||
HANDLE ses, con, req, event;
|
||||
DWORD size, status, err;
|
||||
BOOL ret, unload = TRUE;
|
||||
struct info info, *context = &info;
|
||||
|
||||
info.test = cache_test;
|
||||
|
@ -171,6 +171,14 @@ static void test_connection_cache( void )
|
|||
ses = WinHttpOpen( user_agent, 0, NULL, NULL, 0 );
|
||||
ok(ses != NULL, "failed to open session %u\n", GetLastError());
|
||||
|
||||
event = CreateEventW( NULL, FALSE, FALSE, NULL );
|
||||
ret = WinHttpSetOption( ses, WINHTTP_OPTION_UNLOAD_NOTIFY_EVENT, &event, sizeof(event) );
|
||||
if (!ret)
|
||||
{
|
||||
win_skip("Unload event not supported\n");
|
||||
unload = FALSE;
|
||||
}
|
||||
|
||||
WinHttpSetStatusCallback( ses, check_notification, WINHTTP_CALLBACK_FLAG_ALL_NOTIFICATIONS, 0 );
|
||||
|
||||
ret = WinHttpSetOption( ses, WINHTTP_OPTION_CONTEXT_VALUE, &context, sizeof(struct info *) );
|
||||
|
@ -186,7 +194,8 @@ static void test_connection_cache( void )
|
|||
|
||||
setup_test( &info, winhttp_send_request, __LINE__ );
|
||||
ret = WinHttpSendRequest( req, NULL, 0, NULL, 0, 0, 0 );
|
||||
if (!ret && GetLastError() == ERROR_WINHTTP_CANNOT_CONNECT)
|
||||
err = GetLastError();
|
||||
if (!ret && (err == ERROR_WINHTTP_CANNOT_CONNECT || err == ERROR_WINHTTP_TIMEOUT))
|
||||
{
|
||||
skip("connection failed, skipping\n");
|
||||
goto done;
|
||||
|
@ -214,7 +223,8 @@ static void test_connection_cache( void )
|
|||
|
||||
setup_test( &info, winhttp_send_request, __LINE__ );
|
||||
ret = WinHttpSendRequest( req, NULL, 0, NULL, 0, 0, 0 );
|
||||
if (!ret && GetLastError() == ERROR_WINHTTP_CANNOT_CONNECT)
|
||||
err = GetLastError();
|
||||
if (!ret && (err == ERROR_WINHTTP_CANNOT_CONNECT || err == ERROR_WINHTTP_TIMEOUT))
|
||||
{
|
||||
skip("connection failed, skipping\n");
|
||||
goto done;
|
||||
|
@ -236,15 +246,33 @@ static void test_connection_cache( void )
|
|||
setup_test( &info, winhttp_close_handle, __LINE__ );
|
||||
WinHttpCloseHandle( req );
|
||||
WinHttpCloseHandle( con );
|
||||
|
||||
if (unload)
|
||||
{
|
||||
status = WaitForSingleObject( event, 0 );
|
||||
ok(status == WAIT_TIMEOUT, "got %08x\n", status);
|
||||
}
|
||||
|
||||
WinHttpCloseHandle( ses );
|
||||
|
||||
Sleep(2000); /* make sure connection is evicted from cache */
|
||||
if (unload)
|
||||
{
|
||||
status = WaitForSingleObject( event, 0 );
|
||||
ok(status == WAIT_OBJECT_0, "got %08x\n", status);
|
||||
}
|
||||
|
||||
info.index = 0;
|
||||
|
||||
ses = WinHttpOpen( user_agent, 0, NULL, NULL, 0 );
|
||||
ok(ses != NULL, "failed to open session %u\n", GetLastError());
|
||||
|
||||
if (unload)
|
||||
{
|
||||
ret = WinHttpSetOption( ses, WINHTTP_OPTION_UNLOAD_NOTIFY_EVENT, &event, sizeof(event) );
|
||||
ok(ret, "failed to set unload option\n");
|
||||
}
|
||||
|
||||
WinHttpSetStatusCallback( ses, check_notification, WINHTTP_CALLBACK_FLAG_ALL_NOTIFICATIONS, 0 );
|
||||
|
||||
ret = WinHttpSetOption( ses, WINHTTP_OPTION_CONTEXT_VALUE, &context, sizeof(struct info *) );
|
||||
|
@ -263,7 +291,8 @@ static void test_connection_cache( void )
|
|||
|
||||
setup_test( &info, winhttp_send_request, __LINE__ );
|
||||
ret = WinHttpSendRequest( req, NULL, 0, NULL, 0, 0, 0 );
|
||||
if (!ret && GetLastError() == ERROR_WINHTTP_CANNOT_CONNECT)
|
||||
err = GetLastError();
|
||||
if (!ret && (err == ERROR_WINHTTP_CANNOT_CONNECT || err == ERROR_WINHTTP_TIMEOUT))
|
||||
{
|
||||
skip("connection failed, skipping\n");
|
||||
goto done;
|
||||
|
@ -291,7 +320,8 @@ static void test_connection_cache( void )
|
|||
|
||||
setup_test( &info, winhttp_send_request, __LINE__ );
|
||||
ret = WinHttpSendRequest( req, NULL, 0, NULL, 0, 0, 0 );
|
||||
if (!ret && GetLastError() == ERROR_WINHTTP_CANNOT_CONNECT)
|
||||
err = GetLastError();
|
||||
if (!ret && (err == ERROR_WINHTTP_CANNOT_CONNECT || err == ERROR_WINHTTP_TIMEOUT))
|
||||
{
|
||||
skip("connection failed, skipping\n");
|
||||
goto done;
|
||||
|
@ -311,9 +341,23 @@ static void test_connection_cache( void )
|
|||
done:
|
||||
WinHttpCloseHandle( req );
|
||||
WinHttpCloseHandle( con );
|
||||
|
||||
if (unload)
|
||||
{
|
||||
status = WaitForSingleObject( event, 0 );
|
||||
ok(status == WAIT_TIMEOUT, "got %08x\n", status);
|
||||
}
|
||||
|
||||
WinHttpCloseHandle( ses );
|
||||
|
||||
Sleep(2000); /* make sure connection is evicted from cache */
|
||||
if (unload)
|
||||
{
|
||||
status = WaitForSingleObject( event, 0 );
|
||||
ok(status == WAIT_OBJECT_0, "got %08x\n", status);
|
||||
}
|
||||
|
||||
CloseHandle( event );
|
||||
}
|
||||
|
||||
static const struct notification redirect_test[] =
|
||||
|
@ -347,7 +391,7 @@ static const struct notification redirect_test[] =
|
|||
static void test_redirect( void )
|
||||
{
|
||||
HANDLE ses, con, req;
|
||||
DWORD size, status;
|
||||
DWORD size, status, err;
|
||||
BOOL ret;
|
||||
struct info info, *context = &info;
|
||||
|
||||
|
@ -374,7 +418,8 @@ static void test_redirect( void )
|
|||
|
||||
setup_test( &info, winhttp_send_request, __LINE__ );
|
||||
ret = WinHttpSendRequest( req, NULL, 0, NULL, 0, 0, 0 );
|
||||
if (!ret && GetLastError() == ERROR_WINHTTP_CANNOT_CONNECT)
|
||||
err = GetLastError();
|
||||
if (!ret && (err == ERROR_WINHTTP_CANNOT_CONNECT || err == ERROR_WINHTTP_TIMEOUT))
|
||||
{
|
||||
skip("connection failed, skipping\n");
|
||||
goto done;
|
||||
|
@ -433,9 +478,9 @@ static const struct notification async_test[] =
|
|||
|
||||
static void test_async( void )
|
||||
{
|
||||
HANDLE ses, con, req;
|
||||
DWORD size, status;
|
||||
BOOL ret;
|
||||
HANDLE ses, con, req, event;
|
||||
DWORD size, status, err;
|
||||
BOOL ret, unload = TRUE;
|
||||
struct info info, *context = &info;
|
||||
char buffer[1024];
|
||||
|
||||
|
@ -447,22 +492,44 @@ static void test_async( void )
|
|||
ses = WinHttpOpen( user_agent, 0, NULL, NULL, WINHTTP_FLAG_ASYNC );
|
||||
ok(ses != NULL, "failed to open session %u\n", GetLastError());
|
||||
|
||||
WinHttpSetStatusCallback( ses, check_notification, WINHTTP_CALLBACK_FLAG_ALL_NOTIFICATIONS, 0 );
|
||||
event = CreateEventW( NULL, FALSE, FALSE, NULL );
|
||||
ret = WinHttpSetOption( ses, WINHTTP_OPTION_UNLOAD_NOTIFY_EVENT, &event, sizeof(event) );
|
||||
if (!ret)
|
||||
{
|
||||
win_skip("Unload event not supported\n");
|
||||
unload = FALSE;
|
||||
}
|
||||
|
||||
SetLastError( 0xdeadbeef );
|
||||
WinHttpSetStatusCallback( ses, check_notification, WINHTTP_CALLBACK_FLAG_ALL_NOTIFICATIONS, 0 );
|
||||
err = GetLastError();
|
||||
ok(err == ERROR_SUCCESS || broken(err == 0xdeadbeef) /* < win7 */, "got %u\n", err);
|
||||
|
||||
SetLastError( 0xdeadbeef );
|
||||
ret = WinHttpSetOption( ses, WINHTTP_OPTION_CONTEXT_VALUE, &context, sizeof(struct info *) );
|
||||
ok(ret, "failed to set context value %u\n", GetLastError());
|
||||
err = GetLastError();
|
||||
ok(ret, "failed to set context value %u\n", err);
|
||||
ok(err == ERROR_SUCCESS || broken(err == 0xdeadbeef) /* < win7 */, "got %u\n", err);
|
||||
|
||||
setup_test( &info, winhttp_connect, __LINE__ );
|
||||
SetLastError( 0xdeadbeef );
|
||||
con = WinHttpConnect( ses, test_winehq, 0, 0 );
|
||||
ok(con != NULL, "failed to open a connection %u\n", GetLastError());
|
||||
err = GetLastError();
|
||||
ok(con != NULL, "failed to open a connection %u\n", err);
|
||||
ok(err == ERROR_SUCCESS || broken(err == WSAEINVAL) /* < win7 */, "got %u\n", err);
|
||||
|
||||
setup_test( &info, winhttp_open_request, __LINE__ );
|
||||
SetLastError( 0xdeadbeef );
|
||||
req = WinHttpOpenRequest( con, NULL, NULL, NULL, NULL, NULL, 0 );
|
||||
ok(req != NULL, "failed to open a request %u\n", GetLastError());
|
||||
err = GetLastError();
|
||||
ok(req != NULL, "failed to open a request %u\n", err);
|
||||
ok(err == ERROR_SUCCESS, "got %u\n", err);
|
||||
|
||||
setup_test( &info, winhttp_send_request, __LINE__ );
|
||||
SetLastError( 0xdeadbeef );
|
||||
ret = WinHttpSendRequest( req, NULL, 0, NULL, 0, 0, 0 );
|
||||
if (!ret && GetLastError() == ERROR_WINHTTP_CANNOT_CONNECT)
|
||||
err = GetLastError();
|
||||
if (!ret && (err == ERROR_WINHTTP_CANNOT_CONNECT || err == ERROR_WINHTTP_TIMEOUT))
|
||||
{
|
||||
skip("connection failed, skipping\n");
|
||||
WinHttpCloseHandle( req );
|
||||
|
@ -471,39 +538,65 @@ static void test_async( void )
|
|||
CloseHandle( info.wait );
|
||||
return;
|
||||
}
|
||||
ok(ret, "failed to send request %u\n", GetLastError());
|
||||
ok(ret, "failed to send request %u\n", err);
|
||||
ok(err == ERROR_SUCCESS, "got %u\n", err);
|
||||
|
||||
WaitForSingleObject( info.wait, INFINITE );
|
||||
|
||||
setup_test( &info, winhttp_receive_response, __LINE__ );
|
||||
SetLastError( 0xdeadbeef );
|
||||
ret = WinHttpReceiveResponse( req, NULL );
|
||||
ok(ret, "failed to receive response %u\n", GetLastError());
|
||||
err = GetLastError();
|
||||
ok(ret, "failed to receive response %u\n", err);
|
||||
ok(err == ERROR_SUCCESS, "got %u\n", err);
|
||||
|
||||
WaitForSingleObject( info.wait, INFINITE );
|
||||
|
||||
size = sizeof(status);
|
||||
SetLastError( 0xdeadbeef );
|
||||
ret = WinHttpQueryHeaders( req, WINHTTP_QUERY_STATUS_CODE | WINHTTP_QUERY_FLAG_NUMBER, NULL, &status, &size, NULL );
|
||||
ok(ret, "failed unexpectedly %u\n", GetLastError());
|
||||
err = GetLastError();
|
||||
ok(ret, "failed unexpectedly %u\n", err);
|
||||
ok(status == 200, "request failed unexpectedly %u\n", status);
|
||||
ok(err == ERROR_SUCCESS || broken(err == 0xdeadbeef) /* < win7 */, "got %u\n", err);
|
||||
|
||||
setup_test( &info, winhttp_query_data, __LINE__ );
|
||||
SetLastError( 0xdeadbeef );
|
||||
ret = WinHttpQueryDataAvailable( req, NULL );
|
||||
ok(ret, "failed to query data available %u\n", GetLastError());
|
||||
err = GetLastError();
|
||||
ok(ret, "failed to query data available %u\n", err);
|
||||
ok(err == ERROR_SUCCESS || err == ERROR_IO_PENDING || broken(err == 0xdeadbeef) /* < win7 */, "got %u\n", err);
|
||||
|
||||
WaitForSingleObject( info.wait, INFINITE );
|
||||
|
||||
setup_test( &info, winhttp_read_data, __LINE__ );
|
||||
SetLastError( 0xdeadbeef );
|
||||
ret = WinHttpReadData( req, buffer, sizeof(buffer), NULL );
|
||||
ok(ret, "failed to query data available %u\n", GetLastError());
|
||||
err = GetLastError();
|
||||
ok(ret, "failed to read data %u\n", err);
|
||||
ok(err == ERROR_SUCCESS, "got %u\n", err);
|
||||
|
||||
WaitForSingleObject( info.wait, INFINITE );
|
||||
|
||||
setup_test( &info, winhttp_close_handle, __LINE__ );
|
||||
WinHttpCloseHandle( req );
|
||||
WinHttpCloseHandle( con );
|
||||
|
||||
if (unload)
|
||||
{
|
||||
status = WaitForSingleObject( event, 0 );
|
||||
ok(status == WAIT_TIMEOUT, "got %08x\n", status);
|
||||
}
|
||||
WinHttpCloseHandle( ses );
|
||||
|
||||
WaitForSingleObject( info.wait, INFINITE );
|
||||
|
||||
if (unload)
|
||||
{
|
||||
status = WaitForSingleObject( event, 2000 );
|
||||
ok(status == WAIT_OBJECT_0, "got %08x\n", status);
|
||||
}
|
||||
CloseHandle( event );
|
||||
CloseHandle( info.wait );
|
||||
}
|
||||
|
||||
|
|
|
@ -169,11 +169,14 @@ static void WinHttpCreateUrl_test( void )
|
|||
ok( len == 57, "expected len 57 got %u\n", len );
|
||||
|
||||
/* allocated url, NULL scheme */
|
||||
SetLastError( 0xdeadbeef );
|
||||
uc.lpszScheme = NULL;
|
||||
url[0] = 0;
|
||||
len = 256;
|
||||
ret = WinHttpCreateUrl( &uc, 0, url, &len );
|
||||
ok( ret, "expected success\n" );
|
||||
ok( GetLastError() == ERROR_SUCCESS || broken(GetLastError() == 0xdeadbeef) /* < win7 */,
|
||||
"expected ERROR_SUCCESS got %u\n", GetLastError() );
|
||||
ok( len == 56, "expected len 56 got %u\n", len );
|
||||
ok( !lstrcmpW( url, url1 ), "url doesn't match\n" );
|
||||
|
||||
|
@ -380,9 +383,13 @@ static void WinHttpCrackUrl_test( void )
|
|||
|
||||
/* no buffers */
|
||||
reset_url_components( &uc );
|
||||
SetLastError( 0xdeadbeef );
|
||||
ret = WinHttpCrackUrl( url_k1, 0, 0,&uc);
|
||||
error = GetLastError();
|
||||
|
||||
ok( ret, "WinHttpCrackUrl failed le=%u\n", GetLastError() );
|
||||
ok( ret, "WinHttpCrackUrl failed le=%u\n", error );
|
||||
ok( error == ERROR_SUCCESS || broken(error == ERROR_INVALID_PARAMETER) /* < win7 */,
|
||||
"got %u, expected ERROR_SUCCESS\n", error );
|
||||
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" );
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
* WinHTTP - tests
|
||||
*
|
||||
* Copyright 2008 Google (Zac Brown)
|
||||
* Copyright 2015 Dmitry Timoshkov
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -26,6 +27,7 @@
|
|||
#include <stdarg.h>
|
||||
#include <windef.h>
|
||||
#include <winbase.h>
|
||||
#include <winnls.h>
|
||||
#include <ole2.h>
|
||||
#include <winsock2.h>
|
||||
//#include <ws2tcpip.h>
|
||||
|
@ -34,6 +36,7 @@
|
|||
#include <winreg.h>
|
||||
//#include "initguid.h"
|
||||
#include <httprequest.h>
|
||||
#include <httprequestid.h>
|
||||
|
||||
#include <wine/test.h>
|
||||
|
||||
|
@ -47,8 +50,11 @@ static BOOL proxy_active(void)
|
|||
WINHTTP_PROXY_INFO proxy_info;
|
||||
BOOL active = FALSE;
|
||||
|
||||
SetLastError(0xdeadbeef);
|
||||
if (WinHttpGetDefaultProxyConfiguration(&proxy_info))
|
||||
{
|
||||
ok(GetLastError() == ERROR_SUCCESS || broken(GetLastError() == 0xdeadbeef) /* < win7 */,
|
||||
"got %u\n", GetLastError());
|
||||
active = (proxy_info.lpszProxy != NULL);
|
||||
if (active)
|
||||
GlobalFree(proxy_info.lpszProxy);
|
||||
|
@ -99,6 +105,8 @@ static void test_QueryOption(void)
|
|||
SetLastError(0xdeadbeef);
|
||||
ret = WinHttpQueryOption(session, WINHTTP_OPTION_REDIRECT_POLICY, &feature, &size);
|
||||
ok(ret, "failed to query option %u\n", GetLastError());
|
||||
ok(GetLastError() == ERROR_SUCCESS || broken(GetLastError() == 0xdeadbeef) /* < win7 */,
|
||||
"got %u\n", GetLastError());
|
||||
ok(size == sizeof(feature), "WinHttpQueryOption should set the size: %u\n", size);
|
||||
ok(feature == WINHTTP_OPTION_REDIRECT_POLICY_DISALLOW_HTTPS_TO_HTTP,
|
||||
"expected WINHTTP_OPTION_REDIRECT_POLICY_DISALLOW_HTTPS_TO_HTTP, got %#x\n", feature);
|
||||
|
@ -213,39 +221,57 @@ static void test_OpenRequest (void)
|
|||
{
|
||||
BOOL ret;
|
||||
HINTERNET session, request, connection;
|
||||
DWORD err;
|
||||
|
||||
SetLastError(0xdeadbeef);
|
||||
session = WinHttpOpen(test_useragent, WINHTTP_ACCESS_TYPE_DEFAULT_PROXY,
|
||||
WINHTTP_NO_PROXY_NAME, WINHTTP_NO_PROXY_BYPASS, 0);
|
||||
err = GetLastError();
|
||||
ok(session != NULL, "WinHttpOpen failed to open session.\n");
|
||||
ok(err == ERROR_SUCCESS, "got %u\n", err);
|
||||
|
||||
/* Test with a bad server name */
|
||||
SetLastError(0xdeadbeef);
|
||||
connection = WinHttpConnect(session, NULL, INTERNET_DEFAULT_HTTP_PORT, 0);
|
||||
err = GetLastError();
|
||||
ok (connection == NULL, "WinHttpConnect succeeded in opening connection to NULL server argument.\n");
|
||||
ok(GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %u.\n", GetLastError());
|
||||
ok(err == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %u.\n", err);
|
||||
|
||||
/* Test with a valid server name */
|
||||
SetLastError(0xdeadbeef);
|
||||
connection = WinHttpConnect (session, test_winehq, INTERNET_DEFAULT_HTTP_PORT, 0);
|
||||
ok(connection != NULL, "WinHttpConnect failed to open a connection, error: %u.\n", GetLastError());
|
||||
err = GetLastError();
|
||||
ok(connection != NULL, "WinHttpConnect failed to open a connection, error: %u.\n", err);
|
||||
ok(err == ERROR_SUCCESS || broken(err == WSAEINVAL) /* < win7 */, "got %u\n", err);
|
||||
|
||||
SetLastError(0xdeadbeef);
|
||||
request = WinHttpOpenRequest(connection, NULL, NULL, NULL, WINHTTP_NO_REFERER,
|
||||
WINHTTP_DEFAULT_ACCEPT_TYPES, 0);
|
||||
if (request == NULL && GetLastError() == ERROR_WINHTTP_NAME_NOT_RESOLVED)
|
||||
err = GetLastError();
|
||||
if (request == NULL && err == ERROR_WINHTTP_NAME_NOT_RESOLVED)
|
||||
{
|
||||
skip("Network unreachable, skipping.\n");
|
||||
goto done;
|
||||
}
|
||||
ok(request != NULL, "WinHttpOpenrequest failed to open a request, error: %u.\n", GetLastError());
|
||||
ok(request != NULL, "WinHttpOpenrequest failed to open a request, error: %u.\n", err);
|
||||
ok(err == ERROR_SUCCESS, "got %u\n", err);
|
||||
|
||||
SetLastError(0xdeadbeef);
|
||||
ret = WinHttpSendRequest(request, WINHTTP_NO_ADDITIONAL_HEADERS, 0, NULL, 0, 0, 0);
|
||||
if (!ret && GetLastError() == ERROR_WINHTTP_CANNOT_CONNECT)
|
||||
err = GetLastError();
|
||||
if (!ret && (err == ERROR_WINHTTP_CANNOT_CONNECT || err == ERROR_WINHTTP_TIMEOUT))
|
||||
{
|
||||
skip("Connection failed, skipping.\n");
|
||||
goto done;
|
||||
}
|
||||
ok(ret == TRUE, "WinHttpSendRequest failed: %u\n", GetLastError());
|
||||
ok(ret, "WinHttpSendRequest failed: %u\n", err);
|
||||
ok(err == ERROR_SUCCESS, "got %u\n", err);
|
||||
|
||||
SetLastError(0xdeadbeef);
|
||||
ret = WinHttpCloseHandle(request);
|
||||
ok(ret == TRUE, "WinHttpCloseHandle failed on closing request, got %d.\n", ret);
|
||||
err = GetLastError();
|
||||
ok(ret, "WinHttpCloseHandle failed on closing request, got %u.\n", err);
|
||||
ok(err == ERROR_SUCCESS, "got %u\n", err);
|
||||
|
||||
done:
|
||||
ret = WinHttpCloseHandle(connection);
|
||||
|
@ -259,6 +285,7 @@ static void test_empty_headers_param(void)
|
|||
{
|
||||
static const WCHAR empty[] = {0};
|
||||
HINTERNET ses, con, req;
|
||||
DWORD err;
|
||||
BOOL ret;
|
||||
|
||||
ses = WinHttpOpen(test_useragent, 0, NULL, NULL, 0);
|
||||
|
@ -271,7 +298,8 @@ static void test_empty_headers_param(void)
|
|||
ok(req != NULL, "failed to open a request %u\n", GetLastError());
|
||||
|
||||
ret = WinHttpSendRequest(req, empty, 0, NULL, 0, 0, 0);
|
||||
if (!ret && GetLastError() == ERROR_WINHTTP_CANNOT_CONNECT)
|
||||
err = GetLastError();
|
||||
if (!ret && (err == ERROR_WINHTTP_CANNOT_CONNECT || err == ERROR_WINHTTP_TIMEOUT))
|
||||
{
|
||||
skip("connection failed, skipping\n");
|
||||
goto done;
|
||||
|
@ -294,7 +322,7 @@ static void test_SendRequest (void)
|
|||
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 header_len, optional_len, total_len, bytes_rw, size, err;
|
||||
DWORD_PTR context;
|
||||
BOOL ret;
|
||||
CHAR buffer[256];
|
||||
|
@ -327,7 +355,8 @@ static void test_SendRequest (void)
|
|||
|
||||
context++;
|
||||
ret = WinHttpSendRequest(request, content_type, header_len, post_data, optional_len, total_len, context);
|
||||
if (!ret && GetLastError() == ERROR_WINHTTP_CANNOT_CONNECT)
|
||||
err = GetLastError();
|
||||
if (!ret && (err == ERROR_WINHTTP_CANNOT_CONNECT || err == ERROR_WINHTTP_TIMEOUT))
|
||||
{
|
||||
skip("connection failed, skipping\n");
|
||||
goto done;
|
||||
|
@ -343,9 +372,13 @@ static void test_SendRequest (void)
|
|||
for (i = 3; post_data[i]; i++)
|
||||
{
|
||||
bytes_rw = -1;
|
||||
SetLastError(0xdeadbeef);
|
||||
ret = WinHttpWriteData(request, &post_data[i], 1, &bytes_rw);
|
||||
if (ret)
|
||||
{
|
||||
ok(GetLastError() == ERROR_SUCCESS, "Expected ERROR_SUCCESS got %u.\n", GetLastError());
|
||||
ok(bytes_rw == 1, "WinHttpWriteData failed, wrote %u bytes instead of 1 byte.\n", bytes_rw);
|
||||
}
|
||||
else /* Since we already passed all optional data in WinHttpSendRequest Win7 fails our WinHttpWriteData call */
|
||||
{
|
||||
ok(GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER got %u.\n", GetLastError());
|
||||
|
@ -353,7 +386,10 @@ static void test_SendRequest (void)
|
|||
}
|
||||
}
|
||||
|
||||
SetLastError(0xdeadbeef);
|
||||
ret = WinHttpReceiveResponse(request, NULL);
|
||||
ok(GetLastError() == ERROR_SUCCESS || broken(GetLastError() == ERROR_NO_TOKEN) /* < win7 */,
|
||||
"Expected ERROR_SUCCESS got %u.\n", GetLastError());
|
||||
ok(ret == TRUE, "WinHttpReceiveResponse failed: %u.\n", GetLastError());
|
||||
|
||||
bytes_rw = -1;
|
||||
|
@ -380,9 +416,25 @@ static void test_WinHttpTimeFromSystemTime(void)
|
|||
{'M','o','n',',',' ','2','8',' ','J','u','l',' ','2','0','0','8',' ',
|
||||
'1','0',':','0','5',':','5','2',' ','G','M','T',0};
|
||||
WCHAR time_string[WINHTTP_TIME_FORMAT_BUFSIZE+1];
|
||||
DWORD err;
|
||||
|
||||
SetLastError(0xdeadbeef);
|
||||
ret = WinHttpTimeFromSystemTime(&time, NULL);
|
||||
err = GetLastError();
|
||||
ok(!ret, "WinHttpTimeFromSystemTime succeeded\n");
|
||||
ok(err == ERROR_INVALID_PARAMETER, "got %u\n", err);
|
||||
|
||||
SetLastError(0xdeadbeef);
|
||||
ret = WinHttpTimeFromSystemTime(NULL, time_string);
|
||||
err = GetLastError();
|
||||
ok(!ret, "WinHttpTimeFromSystemTime succeeded\n");
|
||||
ok(err == ERROR_INVALID_PARAMETER, "got %u\n", err);
|
||||
|
||||
SetLastError(0xdeadbeef);
|
||||
ret = WinHttpTimeFromSystemTime(&time, time_string);
|
||||
ok(ret == TRUE, "WinHttpTimeFromSystemTime failed: %u\n", GetLastError());
|
||||
err = GetLastError();
|
||||
ok(ret, "WinHttpTimeFromSystemTime failed: %u\n", err);
|
||||
ok(err == ERROR_SUCCESS || broken(err == 0xdeadbeef) /* < win7 */, "got %u\n", err);
|
||||
ok(memcmp(time_string, expected_string, sizeof(expected_string)) == 0,
|
||||
"Time string returned did not match expected time string.\n");
|
||||
}
|
||||
|
@ -398,14 +450,33 @@ static void test_WinHttpTimeToSystemTime(void)
|
|||
static const WCHAR time_string2[] =
|
||||
{' ','m','o','n',' ','2','8',' ','j','u','l',' ','2','0','0','8',' ',
|
||||
'1','0',' ','0','5',' ','5','2','\n',0};
|
||||
DWORD err;
|
||||
|
||||
SetLastError(0xdeadbeef);
|
||||
ret = WinHttpTimeToSystemTime(time_string1, NULL);
|
||||
err = GetLastError();
|
||||
ok(!ret, "WinHttpTimeToSystemTime succeeded\n");
|
||||
ok(err == ERROR_INVALID_PARAMETER, "got %u\n", err);
|
||||
|
||||
SetLastError(0xdeadbeef);
|
||||
ret = WinHttpTimeToSystemTime(NULL, &time);
|
||||
err = GetLastError();
|
||||
ok(!ret, "WinHttpTimeToSystemTime succeeded\n");
|
||||
ok(err == ERROR_INVALID_PARAMETER, "got %u\n", err);
|
||||
|
||||
SetLastError(0xdeadbeef);
|
||||
ret = WinHttpTimeToSystemTime(time_string1, &time);
|
||||
ok(ret == TRUE, "WinHttpTimeToSystemTime failed: %u\n", GetLastError());
|
||||
err = GetLastError();
|
||||
ok(ret, "WinHttpTimeToSystemTime failed: %u\n", err);
|
||||
ok(err == ERROR_SUCCESS || broken(err == 0xdeadbeef) /* < win7 */, "got %u\n", err);
|
||||
ok(memcmp(&time, &expected_time, sizeof(SYSTEMTIME)) == 0,
|
||||
"Returned SYSTEMTIME structure did not match expected SYSTEMTIME structure.\n");
|
||||
|
||||
SetLastError(0xdeadbeef);
|
||||
ret = WinHttpTimeToSystemTime(time_string2, &time);
|
||||
ok(ret == TRUE, "WinHttpTimeToSystemTime failed: %u\n", GetLastError());
|
||||
err = GetLastError();
|
||||
ok(ret, "WinHttpTimeToSystemTime failed: %u\n", err);
|
||||
ok(err == ERROR_SUCCESS || broken(err == 0xdeadbeef) /* < win7 */, "got %u\n", err);
|
||||
ok(memcmp(&time, &expected_time, sizeof(SYSTEMTIME)) == 0,
|
||||
"Returned SYSTEMTIME structure did not match expected SYSTEMTIME structure.\n");
|
||||
}
|
||||
|
@ -423,7 +494,8 @@ static void test_WinHttpAddHeaders(void)
|
|||
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',':','/','/','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'};
|
||||
{'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','t','e','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};
|
||||
static const WCHAR test_header_name2[] = {'n','a','m','e',0};
|
||||
|
@ -496,8 +568,11 @@ static void test_WinHttpAddHeaders(void)
|
|||
ret = WinHttpQueryHeaders(request, WINHTTP_QUERY_CUSTOM | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
|
||||
test_header_name, buffer, &len, &index);
|
||||
ok(ret == FALSE, "WinHttpQueryHeaders unexpectedly succeeded, found 'Warning' header.\n");
|
||||
SetLastError(0xdeadbeef);
|
||||
ret = WinHttpAddRequestHeaders(request, test_headers[0], -1L, WINHTTP_ADDREQ_FLAG_ADD);
|
||||
ok(ret == TRUE, "WinHttpAddRequestHeader failed to add new header, got %d with error %u.\n", ret, GetLastError());
|
||||
err = GetLastError();
|
||||
ok(ret, "WinHttpAddRequestHeader failed to add new header, got %d with error %u.\n", ret, err);
|
||||
ok(err == ERROR_SUCCESS || broken(err == 0xdeadbeef) /* < win7 */, "got %u\n", err);
|
||||
|
||||
index = 0;
|
||||
len = sizeof(buffer);
|
||||
|
@ -901,7 +976,7 @@ static void CALLBACK cert_error(HINTERNET handle, DWORD_PTR ctx, DWORD status, L
|
|||
static void test_secure_connection(void)
|
||||
{
|
||||
HINTERNET ses, con, req;
|
||||
DWORD size, status, policy, bitness, read_size;
|
||||
DWORD size, status, policy, bitness, read_size, err;
|
||||
BOOL ret;
|
||||
CERT_CONTEXT *cert;
|
||||
WINHTTP_CERTIFICATE_INFO info;
|
||||
|
@ -922,7 +997,8 @@ static void test_secure_connection(void)
|
|||
ok(req != NULL, "failed to open a request %u\n", GetLastError());
|
||||
|
||||
ret = WinHttpSendRequest(req, NULL, 0, NULL, 0, 0, 0);
|
||||
if (!ret && GetLastError() == ERROR_WINHTTP_CANNOT_CONNECT)
|
||||
err = GetLastError();
|
||||
if (!ret && (err == ERROR_WINHTTP_CANNOT_CONNECT || err == ERROR_WINHTTP_TIMEOUT))
|
||||
{
|
||||
skip("Connection failed, skipping.\n");
|
||||
goto cleanup;
|
||||
|
@ -944,7 +1020,9 @@ static void test_secure_connection(void)
|
|||
WinHttpSetStatusCallback(req, cert_error, WINHTTP_CALLBACK_STATUS_SECURE_FAILURE, 0);
|
||||
|
||||
ret = WinHttpSendRequest(req, NULL, 0, NULL, 0, 0, 0);
|
||||
if (!ret && (GetLastError() == ERROR_WINHTTP_SECURE_FAILURE || GetLastError() == ERROR_WINHTTP_CANNOT_CONNECT))
|
||||
err = GetLastError();
|
||||
if (!ret && (err == ERROR_WINHTTP_SECURE_FAILURE || err == ERROR_WINHTTP_CANNOT_CONNECT ||
|
||||
err == ERROR_WINHTTP_TIMEOUT))
|
||||
{
|
||||
skip("secure connection failed, skipping remaining secure tests\n");
|
||||
goto cleanup;
|
||||
|
@ -1022,7 +1100,8 @@ static void test_request_parameter_defaults(void)
|
|||
ok(req != NULL, "failed to open a request %u\n", GetLastError());
|
||||
|
||||
ret = WinHttpSendRequest(req, NULL, 0, NULL, 0, 0, 0);
|
||||
if (!ret && GetLastError() == ERROR_WINHTTP_CANNOT_CONNECT)
|
||||
error = GetLastError();
|
||||
if (!ret && (error == ERROR_WINHTTP_CANNOT_CONNECT || error == ERROR_WINHTTP_TIMEOUT))
|
||||
{
|
||||
skip("connection failed, skipping\n");
|
||||
goto done;
|
||||
|
@ -1049,7 +1128,8 @@ static void test_request_parameter_defaults(void)
|
|||
ok(req != NULL, "failed to open a request %u\n", GetLastError());
|
||||
|
||||
ret = WinHttpSendRequest(req, NULL, 0, NULL, 0, 0, 0);
|
||||
if (!ret && (GetLastError() == ERROR_WINHTTP_CANNOT_CONNECT || GetLastError() == ERROR_WINHTTP_TIMEOUT))
|
||||
error = GetLastError();
|
||||
if (!ret && (error == ERROR_WINHTTP_CANNOT_CONNECT || error == ERROR_WINHTTP_TIMEOUT))
|
||||
{
|
||||
skip("connection failed, skipping\n");
|
||||
goto done;
|
||||
|
@ -1216,9 +1296,11 @@ static void test_set_default_proxy_config(void)
|
|||
if (!ret && GetLastError() == ERROR_ACCESS_DENIED)
|
||||
skip("couldn't set default proxy configuration: access denied\n");
|
||||
else
|
||||
ok(ret, "WinHttpSetDefaultProxyConfiguration failed: %d\n",
|
||||
GetLastError());
|
||||
|
||||
{
|
||||
ok(ret, "WinHttpSetDefaultProxyConfiguration failed: %u\n", GetLastError());
|
||||
ok(GetLastError() == ERROR_SUCCESS || broken(GetLastError() == 0xdeadbeef) /* < win7 */,
|
||||
"got %u\n", GetLastError());
|
||||
}
|
||||
set_default_proxy_reg_value( saved_proxy_settings, len, type );
|
||||
}
|
||||
|
||||
|
@ -1254,6 +1336,8 @@ static void test_Timeouts (void)
|
|||
SetLastError(0xdeadbeef);
|
||||
ret = WinHttpSetTimeouts(ses, -1, -1, -1, -1);
|
||||
ok(ret, "%u\n", GetLastError());
|
||||
ok(GetLastError() == ERROR_SUCCESS || broken(GetLastError() == 0xdeadbeef) /* < win7 */,
|
||||
"expected ERROR_SUCCESS, got %u\n", GetLastError());
|
||||
|
||||
SetLastError(0xdeadbeef);
|
||||
ret = WinHttpSetTimeouts(ses, 0, 0, 0, 0);
|
||||
|
@ -2060,12 +2144,15 @@ static DWORD CALLBACK server_thread(LPVOID param)
|
|||
|
||||
static void test_basic_request(int port, const WCHAR *verb, const WCHAR *path)
|
||||
{
|
||||
static const WCHAR test_header_end_clrf[] = {'\r','\n','\r','\n',0};
|
||||
static const WCHAR test_header_end_raw[] = {0,0};
|
||||
HINTERNET ses, con, req;
|
||||
char buffer[0x100];
|
||||
WCHAR buffer2[0x100];
|
||||
DWORD count, status, size, error, supported, first, target;
|
||||
BOOL ret;
|
||||
|
||||
ses = WinHttpOpen(test_useragent, 0, NULL, NULL, 0);
|
||||
ses = WinHttpOpen(test_useragent, WINHTTP_ACCESS_TYPE_NO_PROXY, NULL, NULL, 0);
|
||||
ok(ses != NULL, "failed to open session %u\n", GetLastError());
|
||||
|
||||
con = WinHttpConnect(ses, localhostW, port, 0);
|
||||
|
@ -2096,6 +2183,21 @@ static void test_basic_request(int port, const WCHAR *verb, const WCHAR *path)
|
|||
ok(first == 0xdeadbeef, "got %x\n", first);
|
||||
ok(target == 0xdeadbeef, "got %x\n", target);
|
||||
|
||||
size = sizeof(buffer2);
|
||||
memset(buffer2, 0, sizeof(buffer2));
|
||||
ret = WinHttpQueryHeaders(req, WINHTTP_QUERY_RAW_HEADERS_CRLF, NULL, buffer2, &size, NULL);
|
||||
ok(ret, "failed to query for raw headers: %u\n", GetLastError());
|
||||
ok(!memcmp(buffer2 + lstrlenW(buffer2) - 4, test_header_end_clrf, sizeof(test_header_end_clrf)),
|
||||
"WinHttpQueryHeaders returned invalid end of header string\n");
|
||||
|
||||
size = sizeof(buffer2);
|
||||
memset(buffer2, 0, sizeof(buffer2));
|
||||
ret = WinHttpQueryHeaders(req, WINHTTP_QUERY_RAW_HEADERS, NULL, buffer2, &size, NULL);
|
||||
ok(ret, "failed to query for raw headers: %u\n", GetLastError());
|
||||
ok(!memcmp(buffer2 + (size / sizeof(WCHAR)) - 1, test_header_end_raw, sizeof(test_header_end_raw)),
|
||||
"WinHttpQueryHeaders returned invalid end of header string\n");
|
||||
ok(buffer2[(size / sizeof(WCHAR)) - 2] != 0, "returned string has too many NULL characters\n");
|
||||
|
||||
count = 0;
|
||||
memset(buffer, 0, sizeof(buffer));
|
||||
ret = WinHttpReadData(req, buffer, sizeof buffer, &count);
|
||||
|
@ -2118,7 +2220,7 @@ static void test_basic_authentication(int port)
|
|||
DWORD status, size, error, supported, first, target;
|
||||
BOOL ret;
|
||||
|
||||
ses = WinHttpOpen(test_useragent, 0, NULL, NULL, 0);
|
||||
ses = WinHttpOpen(test_useragent, WINHTTP_ACCESS_TYPE_NO_PROXY, NULL, NULL, 0);
|
||||
ok(ses != NULL, "failed to open session %u\n", GetLastError());
|
||||
|
||||
con = WinHttpConnect(ses, localhostW, port, 0);
|
||||
|
@ -2189,14 +2291,20 @@ static void test_basic_authentication(int port)
|
|||
ok(status == 401, "request failed unexpectedly %u\n", status);
|
||||
|
||||
supported = first = target = 0xdeadbeef;
|
||||
SetLastError(0xdeadbeef);
|
||||
ret = WinHttpQueryAuthSchemes(req, &supported, &first, &target);
|
||||
ok(ret, "failed to query authentication schemes %u\n", GetLastError());
|
||||
error = GetLastError();
|
||||
ok(ret, "failed to query authentication schemes %u\n", error);
|
||||
ok(error == ERROR_SUCCESS || broken(error == 0xdeadbeef) /* < win7 */, "expected ERROR_SUCCESS, got %u\n", error);
|
||||
ok(supported == WINHTTP_AUTH_SCHEME_BASIC, "got %x\n", supported);
|
||||
ok(first == WINHTTP_AUTH_SCHEME_BASIC, "got %x\n", first);
|
||||
ok(target == WINHTTP_AUTH_TARGET_SERVER, "got %x\n", target);
|
||||
|
||||
SetLastError(0xdeadbeef);
|
||||
ret = WinHttpSetCredentials(req, WINHTTP_AUTH_TARGET_SERVER, WINHTTP_AUTH_SCHEME_NTLM, NULL, NULL, NULL);
|
||||
ok(ret, "failed to set credentials %u\n", GetLastError());
|
||||
error = GetLastError();
|
||||
ok(ret, "failed to set credentials %u\n", error);
|
||||
ok(error == ERROR_SUCCESS || broken(error == 0xdeadbeef) /* < win7 */, "expected ERROR_SUCCESS, got %u\n", error);
|
||||
|
||||
ret = WinHttpSetCredentials(req, WINHTTP_AUTH_TARGET_SERVER, WINHTTP_AUTH_SCHEME_PASSPORT, NULL, NULL, NULL);
|
||||
ok(ret, "failed to set credentials %u\n", GetLastError());
|
||||
|
@ -2249,7 +2357,7 @@ static void test_basic_authentication(int port)
|
|||
|
||||
/* credentials set with WinHttpSetCredentials take precedence over those set through options */
|
||||
|
||||
ses = WinHttpOpen(test_useragent, 0, NULL, NULL, 0);
|
||||
ses = WinHttpOpen(test_useragent, WINHTTP_ACCESS_TYPE_NO_PROXY, NULL, NULL, 0);
|
||||
ok(ses != NULL, "failed to open session %u\n", GetLastError());
|
||||
|
||||
con = WinHttpConnect(ses, localhostW, port, 0);
|
||||
|
@ -2283,7 +2391,7 @@ static void test_basic_authentication(int port)
|
|||
WinHttpCloseHandle(con);
|
||||
WinHttpCloseHandle(ses);
|
||||
|
||||
ses = WinHttpOpen(test_useragent, 0, NULL, NULL, 0);
|
||||
ses = WinHttpOpen(test_useragent, WINHTTP_ACCESS_TYPE_NO_PROXY, NULL, NULL, 0);
|
||||
ok(ses != NULL, "failed to open session %u\n", GetLastError());
|
||||
|
||||
con = WinHttpConnect(ses, localhostW, port, 0);
|
||||
|
@ -2325,7 +2433,7 @@ static void test_no_headers(int port)
|
|||
DWORD error;
|
||||
BOOL ret;
|
||||
|
||||
ses = WinHttpOpen(test_useragent, 0, NULL, NULL, 0);
|
||||
ses = WinHttpOpen(test_useragent, WINHTTP_ACCESS_TYPE_NO_PROXY, NULL, NULL, 0);
|
||||
ok(ses != NULL, "failed to open session %u\n", GetLastError());
|
||||
|
||||
con = WinHttpConnect(ses, localhostW, port, 0);
|
||||
|
@ -2362,7 +2470,7 @@ static void test_no_content(int port)
|
|||
DWORD size, len = sizeof(buf), bytes_read, status;
|
||||
BOOL ret;
|
||||
|
||||
ses = WinHttpOpen(test_useragent, 0, NULL, NULL, 0);
|
||||
ses = WinHttpOpen(test_useragent, WINHTTP_ACCESS_TYPE_NO_PROXY, NULL, NULL, 0);
|
||||
ok(ses != NULL, "failed to open session %u\n", GetLastError());
|
||||
|
||||
con = WinHttpConnect(ses, localhostW, port, 0);
|
||||
|
@ -2401,18 +2509,23 @@ static void test_no_content(int port)
|
|||
ret = WinHttpQueryHeaders(req, WINHTTP_QUERY_CONTENT_LENGTH | WINHTTP_QUERY_FLAG_NUMBER,
|
||||
NULL, &status, &size, 0);
|
||||
ok(!ret, "expected no content-length header\n");
|
||||
ok(GetLastError() == ERROR_WINHTTP_HEADER_NOT_FOUND,
|
||||
"wrong error %u\n", GetLastError() );
|
||||
ok(GetLastError() == ERROR_WINHTTP_HEADER_NOT_FOUND, "wrong error %u\n", GetLastError());
|
||||
ok(status == 12345, "expected 0, got %d\n", status);
|
||||
|
||||
SetLastError(0xdeadbeef);
|
||||
size = 12345;
|
||||
ret = WinHttpQueryDataAvailable(req, &size);
|
||||
ok(ret, "expected success\n");
|
||||
ok(size == 0, "expected 0, got %d\n", size);
|
||||
ok(GetLastError() == ERROR_SUCCESS || broken(GetLastError() == 0xdeadbeef) /* < win7 */,
|
||||
"wrong error %u\n", GetLastError());
|
||||
ok(!size, "expected 0, got %u\n", size);
|
||||
|
||||
SetLastError(0xdeadbeef);
|
||||
ret = WinHttpReadData(req, buf, len, &bytes_read);
|
||||
ok(ret, "expected success\n");
|
||||
ok( bytes_read == 0, "expected 0, got %u available\n", bytes_read );
|
||||
ok(GetLastError() == ERROR_SUCCESS || broken(GetLastError() == 0xdeadbeef) /* < win7 */,
|
||||
"wrong error %u\n", GetLastError());
|
||||
ok(!bytes_read, "expected 0, got %u\n", bytes_read);
|
||||
|
||||
size = 12345;
|
||||
ret = WinHttpQueryDataAvailable(req, &size);
|
||||
|
@ -2442,7 +2555,7 @@ static void test_head_request(int port)
|
|||
DWORD size, len, count, status;
|
||||
BOOL ret;
|
||||
|
||||
ses = WinHttpOpen(test_useragent, 0, NULL, NULL, 0);
|
||||
ses = WinHttpOpen(test_useragent, WINHTTP_ACCESS_TYPE_NO_PROXY, NULL, NULL, 0);
|
||||
ok(ses != NULL, "failed to open session %u\n", GetLastError());
|
||||
|
||||
con = WinHttpConnect(ses, localhostW, port, 0);
|
||||
|
@ -2507,7 +2620,7 @@ static void test_not_modified(int port)
|
|||
GetSystemTime(&st);
|
||||
WinHttpTimeFromSystemTime(&st, &today[sizeof(ifmodifiedW)/sizeof(WCHAR)]);
|
||||
|
||||
session = WinHttpOpen(test_useragent, WINHTTP_ACCESS_TYPE_DEFAULT_PROXY,
|
||||
session = WinHttpOpen(test_useragent, WINHTTP_ACCESS_TYPE_NO_PROXY,
|
||||
WINHTTP_NO_PROXY_NAME, WINHTTP_NO_PROXY_BYPASS, 0);
|
||||
ok(session != NULL, "WinHttpOpen failed: %u\n", GetLastError());
|
||||
|
||||
|
@ -2561,7 +2674,7 @@ static void test_bad_header( int port )
|
|||
DWORD index, len;
|
||||
BOOL ret;
|
||||
|
||||
ses = WinHttpOpen( test_useragent, 0, NULL, NULL, 0 );
|
||||
ses = WinHttpOpen( test_useragent, WINHTTP_ACCESS_TYPE_NO_PROXY, NULL, NULL, 0 );
|
||||
ok( ses != NULL, "failed to open session %u\n", GetLastError() );
|
||||
|
||||
con = WinHttpConnect( ses, localhostW, port, 0 );
|
||||
|
@ -2593,7 +2706,7 @@ static void test_multiple_reads(int port)
|
|||
DWORD total_len = 0;
|
||||
BOOL ret;
|
||||
|
||||
ses = WinHttpOpen(test_useragent, 0, NULL, NULL, 0);
|
||||
ses = WinHttpOpen(test_useragent, WINHTTP_ACCESS_TYPE_NO_PROXY, NULL, NULL, 0);
|
||||
ok(ses != NULL, "failed to open session %u\n", GetLastError());
|
||||
|
||||
con = WinHttpConnect(ses, localhostW, port, 0);
|
||||
|
@ -2646,7 +2759,7 @@ static void test_cookies( int port )
|
|||
DWORD status, size;
|
||||
BOOL ret;
|
||||
|
||||
ses = WinHttpOpen( test_useragent, 0, NULL, NULL, 0 );
|
||||
ses = WinHttpOpen( test_useragent, WINHTTP_ACCESS_TYPE_NO_PROXY, NULL, NULL, 0 );
|
||||
ok( ses != NULL, "failed to open session %u\n", GetLastError() );
|
||||
|
||||
con = WinHttpConnect( ses, localhostW, port, 0 );
|
||||
|
@ -2726,7 +2839,7 @@ static void test_cookies( int port )
|
|||
WinHttpCloseHandle( con );
|
||||
WinHttpCloseHandle( ses );
|
||||
|
||||
ses = WinHttpOpen( test_useragent, 0, NULL, NULL, 0 );
|
||||
ses = WinHttpOpen( test_useragent, WINHTTP_ACCESS_TYPE_NO_PROXY, NULL, NULL, 0 );
|
||||
ok( ses != NULL, "failed to open session %u\n", GetLastError() );
|
||||
|
||||
con = WinHttpConnect( ses, localhostW, port, 0 );
|
||||
|
@ -2760,7 +2873,7 @@ static void test_connection_info( int port )
|
|||
DWORD size, error;
|
||||
BOOL ret;
|
||||
|
||||
ses = WinHttpOpen( test_useragent, 0, NULL, NULL, 0 );
|
||||
ses = WinHttpOpen( test_useragent, WINHTTP_ACCESS_TYPE_NO_PROXY, NULL, NULL, 0 );
|
||||
ok( ses != NULL, "failed to open session %u\n", GetLastError() );
|
||||
|
||||
con = WinHttpConnect( ses, localhostW, port, 0 );
|
||||
|
@ -2948,11 +3061,12 @@ static void test_IWinHttpRequest(void)
|
|||
static const WCHAR connectionW[] = {'C','o','n','n','e','c','t','i','o','n',0};
|
||||
static const WCHAR dateW[] = {'D','a','t','e',0};
|
||||
static const WCHAR test_dataW[] = {'t','e','s','t','d','a','t','a',128,0};
|
||||
static const WCHAR utf8W[] = {'u','t','f','-','8',0};
|
||||
HRESULT hr;
|
||||
IWinHttpRequest *req;
|
||||
BSTR method, url, username, password, response = NULL, status_text = NULL, headers = NULL;
|
||||
BSTR date, today, connection, value = NULL;
|
||||
VARIANT async, empty, timeout, body, body2, proxy_server, bypass_list, data;
|
||||
VARIANT async, empty, timeout, body, body2, proxy_server, bypass_list, data, cp;
|
||||
VARIANT_BOOL succeeded;
|
||||
LONG status;
|
||||
WCHAR todayW[WINHTTP_TIME_FORMAT_BUFSIZE];
|
||||
|
@ -3036,6 +3150,39 @@ static void test_IWinHttpRequest(void)
|
|||
hr = IWinHttpRequest_Open( req, method, url, async );
|
||||
ok( hr == S_OK, "got %08x\n", hr );
|
||||
|
||||
V_VT( &cp ) = VT_ERROR;
|
||||
V_ERROR( &cp ) = 0xdeadbeef;
|
||||
hr = IWinHttpRequest_get_Option( req, WinHttpRequestOption_URLCodePage, &cp );
|
||||
ok( hr == S_OK, "got %08x\n", hr );
|
||||
ok( V_VT( &cp ) == VT_I4, "got %08x\n", V_VT( &cp ) );
|
||||
ok( V_I4( &cp ) == CP_UTF8, "got %u\n", V_I4( &cp ) );
|
||||
|
||||
V_VT( &cp ) = VT_UI4;
|
||||
V_UI4( &cp ) = CP_ACP;
|
||||
hr = IWinHttpRequest_put_Option( req, WinHttpRequestOption_URLCodePage, cp );
|
||||
ok( hr == S_OK, "got %08x\n", hr );
|
||||
|
||||
V_VT( &cp ) = VT_ERROR;
|
||||
V_ERROR( &cp ) = 0xdeadbeef;
|
||||
hr = IWinHttpRequest_get_Option( req, WinHttpRequestOption_URLCodePage, &cp );
|
||||
ok( hr == S_OK, "got %08x\n", hr );
|
||||
ok( V_VT( &cp ) == VT_I4, "got %08x\n", V_VT( &cp ) );
|
||||
ok( V_I4( &cp ) == CP_ACP, "got %u\n", V_I4( &cp ) );
|
||||
|
||||
value = SysAllocString( utf8W );
|
||||
V_VT( &cp ) = VT_BSTR;
|
||||
V_BSTR( &cp ) = value;
|
||||
hr = IWinHttpRequest_put_Option( req, WinHttpRequestOption_URLCodePage, cp );
|
||||
ok( hr == S_OK, "got %08x\n", hr );
|
||||
SysFreeString( value );
|
||||
|
||||
V_VT( &cp ) = VT_ERROR;
|
||||
V_ERROR( &cp ) = 0xdeadbeef;
|
||||
hr = IWinHttpRequest_get_Option( req, WinHttpRequestOption_URLCodePage, &cp );
|
||||
ok( hr == S_OK, "got %08x\n", hr );
|
||||
ok( V_VT( &cp ) == VT_I4, "got %08x\n", V_VT( &cp ) );
|
||||
ok( V_I4( &cp ) == CP_UTF8, "got %u\n", V_I4( &cp ) );
|
||||
|
||||
hr = IWinHttpRequest_Abort( req );
|
||||
ok( hr == S_OK, "got %08x\n", hr );
|
||||
|
||||
|
@ -3410,6 +3557,241 @@ static void test_IWinHttpRequest(void)
|
|||
CoUninitialize();
|
||||
}
|
||||
|
||||
static void request_get_property(IWinHttpRequest *request, int property, VARIANT *ret)
|
||||
{
|
||||
DISPPARAMS params;
|
||||
VARIANT arg;
|
||||
HRESULT hr;
|
||||
|
||||
memset(¶ms, 0, sizeof(params));
|
||||
params.cNamedArgs = 0;
|
||||
params.rgdispidNamedArgs = NULL;
|
||||
params.cArgs = 1;
|
||||
params.rgvarg = &arg;
|
||||
VariantInit(&arg);
|
||||
V_VT(&arg) = VT_I4;
|
||||
V_I4(&arg) = property;
|
||||
VariantInit(ret);
|
||||
hr = IWinHttpRequest_Invoke(request, DISPID_HTTPREQUEST_OPTION, &IID_NULL, 0,
|
||||
DISPATCH_PROPERTYGET, ¶ms, ret, NULL, NULL);
|
||||
ok(hr == S_OK, "error %#x\n", hr);
|
||||
}
|
||||
|
||||
static void test_IWinHttpRequest_Invoke(void)
|
||||
{
|
||||
static const WCHAR utf8W[] = {'U','T','F','-','8',0};
|
||||
static const WCHAR regid[] = {'W','i','n','H','t','t','p','.','W','i','n','H','t','t','p','R','e','q','u','e','s','t','.','5','.','1',0};
|
||||
WCHAR openW[] = {'O','p','e','n',0};
|
||||
WCHAR optionW[] = {'O','p','t','i','o','n',0};
|
||||
OLECHAR *open = openW, *option = optionW;
|
||||
BSTR utf8;
|
||||
CLSID clsid;
|
||||
IWinHttpRequest *request;
|
||||
IDispatch *dispatch;
|
||||
DISPID id;
|
||||
DISPPARAMS params;
|
||||
VARIANT arg[3], ret;
|
||||
UINT err;
|
||||
BOOL bret;
|
||||
HRESULT hr;
|
||||
|
||||
CoInitialize(NULL);
|
||||
|
||||
hr = CLSIDFromProgID(regid, &clsid);
|
||||
ok(hr == S_OK, "CLSIDFromProgID error %#x\n", hr);
|
||||
bret = IsEqualIID(&clsid, &CLSID_WinHttpRequest);
|
||||
ok(bret || broken(!bret) /* win2003 */, "not expected %s\n", wine_dbgstr_guid(&clsid));
|
||||
|
||||
hr = CoCreateInstance(&CLSID_WinHttpRequest, 0, CLSCTX_INPROC_SERVER, &IID_IUnknown, (void **)&request);
|
||||
ok(hr == S_OK, "error %#x\n", hr);
|
||||
|
||||
hr = IWinHttpRequest_QueryInterface(request, &IID_IDispatch, (void **)&dispatch);
|
||||
ok(hr == S_OK, "error %#x\n", hr);
|
||||
IDispatch_Release(dispatch);
|
||||
|
||||
hr = IWinHttpRequest_GetIDsOfNames(request, &IID_NULL, &open, 1, 0x0409, &id);
|
||||
ok(hr == S_OK, "error %#x\n", hr);
|
||||
ok(id == DISPID_HTTPREQUEST_OPEN, "expected DISPID_HTTPREQUEST_OPEN, got %u\n", id);
|
||||
|
||||
hr = IWinHttpRequest_GetIDsOfNames(request, &IID_NULL, &option, 1, 0x0409, &id);
|
||||
ok(hr == S_OK, "error %#x\n", hr);
|
||||
ok(id == DISPID_HTTPREQUEST_OPTION, "expected DISPID_HTTPREQUEST_OPTION, got %u\n", id);
|
||||
|
||||
request_get_property(request, WinHttpRequestOption_URLCodePage, &ret);
|
||||
ok(V_VT(&ret) == VT_I4, "expected VT_I4, got %d\n", V_VT(&ret));
|
||||
ok(V_I4(&ret) == CP_UTF8, "expected CP_UTF8, got %d\n", V_I4(&ret));
|
||||
|
||||
memset(¶ms, 0, sizeof(params));
|
||||
params.cArgs = 2;
|
||||
params.cNamedArgs = 0;
|
||||
params.rgvarg = arg;
|
||||
V_VT(&arg[0]) = VT_I4;
|
||||
V_I4(&arg[0]) = 1252;
|
||||
V_VT(&arg[1]) = VT_R8;
|
||||
V_R8(&arg[1]) = 2.0; /* WinHttpRequestOption_URLCodePage */
|
||||
VariantInit(&ret);
|
||||
hr = IWinHttpRequest_Invoke(request, DISPID_HTTPREQUEST_OPTION, &IID_NULL, 0,
|
||||
DISPATCH_METHOD, ¶ms, NULL, NULL, &err);
|
||||
ok(hr == S_OK, "error %#x\n", hr);
|
||||
|
||||
request_get_property(request, WinHttpRequestOption_URLCodePage, &ret);
|
||||
ok(V_VT(&ret) == VT_I4, "expected VT_I4, got %d\n", V_VT(&ret));
|
||||
ok(V_I4(&ret) == CP_UTF8, "expected CP_UTF8, got %d\n", V_I4(&ret));
|
||||
|
||||
memset(¶ms, 0, sizeof(params));
|
||||
params.cArgs = 2;
|
||||
params.cNamedArgs = 0;
|
||||
params.rgvarg = arg;
|
||||
V_VT(&arg[0]) = VT_I4;
|
||||
V_I4(&arg[0]) = 1252;
|
||||
V_VT(&arg[1]) = VT_R8;
|
||||
V_R8(&arg[1]) = 2.0; /* WinHttpRequestOption_URLCodePage */
|
||||
VariantInit(&ret);
|
||||
hr = IWinHttpRequest_Invoke(request, DISPID_HTTPREQUEST_OPTION, &IID_NULL, 0,
|
||||
DISPATCH_METHOD | DISPATCH_PROPERTYPUT, ¶ms, NULL, NULL, &err);
|
||||
ok(hr == S_OK, "error %#x\n", hr);
|
||||
|
||||
request_get_property(request, WinHttpRequestOption_URLCodePage, &ret);
|
||||
ok(V_VT(&ret) == VT_I4, "expected VT_I4, got %d\n", V_VT(&ret));
|
||||
ok(V_I4(&ret) == CP_UTF8, "expected CP_UTF8, got %d\n", V_I4(&ret));
|
||||
|
||||
memset(¶ms, 0, sizeof(params));
|
||||
params.cArgs = 2;
|
||||
params.cNamedArgs = 0;
|
||||
params.rgvarg = arg;
|
||||
V_VT(&arg[0]) = VT_I4;
|
||||
V_I4(&arg[0]) = 1252;
|
||||
V_VT(&arg[1]) = VT_R8;
|
||||
V_R8(&arg[1]) = 2.0; /* WinHttpRequestOption_URLCodePage */
|
||||
VariantInit(&ret);
|
||||
hr = IWinHttpRequest_Invoke(request, DISPID_HTTPREQUEST_OPTION, &IID_NULL, 0,
|
||||
DISPATCH_PROPERTYPUT, ¶ms, NULL, NULL, &err);
|
||||
ok(hr == S_OK, "error %#x\n", hr);
|
||||
|
||||
request_get_property(request, WinHttpRequestOption_URLCodePage, &ret);
|
||||
ok(V_VT(&ret) == VT_I4, "expected VT_I4, got %d\n", V_VT(&ret));
|
||||
ok(V_I4(&ret) == 1252, "expected 1252, got %d\n", V_I4(&ret));
|
||||
|
||||
memset(¶ms, 0, sizeof(params));
|
||||
params.cArgs = 2;
|
||||
params.cNamedArgs = 0;
|
||||
params.rgvarg = arg;
|
||||
V_VT(&arg[0]) = VT_BSTR;
|
||||
utf8 = SysAllocString(utf8W);
|
||||
V_BSTR(&arg[0]) = utf8;
|
||||
V_VT(&arg[1]) = VT_R8;
|
||||
V_R8(&arg[1]) = 2.0; /* WinHttpRequestOption_URLCodePage */
|
||||
hr = IWinHttpRequest_Invoke(request, id, &IID_NULL, 0, DISPATCH_METHOD, ¶ms, NULL, NULL, &err);
|
||||
ok(hr == S_OK, "error %#x\n", hr);
|
||||
|
||||
request_get_property(request, WinHttpRequestOption_URLCodePage, &ret);
|
||||
ok(V_VT(&ret) == VT_I4, "expected VT_I4, got %d\n", V_VT(&ret));
|
||||
ok(V_I4(&ret) == 1252, "expected 1252, got %d\n", V_I4(&ret));
|
||||
|
||||
VariantInit(&ret);
|
||||
hr = IWinHttpRequest_Invoke(request, id, &IID_NULL, 0, DISPATCH_METHOD, ¶ms, &ret, NULL, &err);
|
||||
ok(hr == S_OK, "error %#x\n", hr);
|
||||
|
||||
request_get_property(request, WinHttpRequestOption_URLCodePage, &ret);
|
||||
ok(V_VT(&ret) == VT_I4, "expected VT_I4, got %d\n", V_VT(&ret));
|
||||
ok(V_I4(&ret) == 1252, "expected 1252, got %d\n", V_I4(&ret));
|
||||
|
||||
VariantInit(&ret);
|
||||
hr = IWinHttpRequest_Invoke(request, id, &IID_NULL, 0, DISPATCH_PROPERTYPUT, ¶ms, &ret, NULL, &err);
|
||||
ok(hr == S_OK, "error %#x\n", hr);
|
||||
|
||||
request_get_property(request, WinHttpRequestOption_URLCodePage, &ret);
|
||||
ok(V_VT(&ret) == VT_I4, "expected VT_I4, got %d\n", V_VT(&ret));
|
||||
ok(V_I4(&ret) == CP_UTF8, "expected CP_UTF8, got %d\n", V_I4(&ret));
|
||||
|
||||
hr = IWinHttpRequest_Invoke(request, DISPID_HTTPREQUEST_OPTION, &IID_NULL, 0, DISPATCH_PROPERTYPUT, ¶ms, NULL, NULL, NULL);
|
||||
ok(hr == S_OK, "error %#x\n", hr);
|
||||
|
||||
hr = IWinHttpRequest_Invoke(request, 255, &IID_NULL, 0, DISPATCH_PROPERTYPUT, ¶ms, NULL, NULL, NULL);
|
||||
ok(hr == DISP_E_MEMBERNOTFOUND, "error %#x\n", hr);
|
||||
|
||||
VariantInit(&ret);
|
||||
hr = IWinHttpRequest_Invoke(request, DISPID_HTTPREQUEST_OPTION, &IID_IUnknown, 0, DISPATCH_PROPERTYPUT, ¶ms, &ret, NULL, &err);
|
||||
ok(hr == DISP_E_UNKNOWNINTERFACE, "error %#x\n", hr);
|
||||
|
||||
VariantInit(&ret);
|
||||
if (0) /* crashes */
|
||||
hr = IWinHttpRequest_Invoke(request, DISPID_HTTPREQUEST_OPTION, &IID_NULL, 0, DISPATCH_PROPERTYPUT, NULL, &ret, NULL, &err);
|
||||
|
||||
params.cArgs = 1;
|
||||
hr = IWinHttpRequest_Invoke(request, DISPID_HTTPREQUEST_OPTION, &IID_NULL, 0, DISPATCH_PROPERTYPUT, ¶ms, &ret, NULL, &err);
|
||||
ok(hr == DISP_E_TYPEMISMATCH, "error %#x\n", hr);
|
||||
|
||||
VariantInit(&arg[2]);
|
||||
params.cArgs = 3;
|
||||
hr = IWinHttpRequest_Invoke(request, DISPID_HTTPREQUEST_OPTION, &IID_NULL, 0, DISPATCH_PROPERTYPUT, ¶ms, &ret, NULL, &err);
|
||||
todo_wine
|
||||
ok(hr == S_OK, "error %#x\n", hr);
|
||||
|
||||
VariantInit(&arg[0]);
|
||||
VariantInit(&arg[1]);
|
||||
VariantInit(&arg[2]);
|
||||
|
||||
params.cArgs = 1;
|
||||
V_VT(&arg[0]) = VT_I4;
|
||||
V_I4(&arg[0]) = WinHttpRequestOption_URLCodePage;
|
||||
hr = IWinHttpRequest_Invoke(request, DISPID_HTTPREQUEST_OPTION, &IID_NULL, 0, DISPATCH_PROPERTYGET, ¶ms, NULL, NULL, NULL);
|
||||
ok(hr == S_OK, "error %#x\n", hr);
|
||||
|
||||
V_VT(&ret) = 0xdead;
|
||||
V_I4(&ret) = 0xbeef;
|
||||
hr = IWinHttpRequest_Invoke(request, DISPID_HTTPREQUEST_OPTION, &IID_NULL, 0, DISPATCH_METHOD|DISPATCH_PROPERTYGET, ¶ms, &ret, NULL, NULL);
|
||||
ok(hr == S_OK, "error %#x\n", hr);
|
||||
ok(V_VT(&ret) == VT_I4, "expected VT_I4, got %d\n", V_VT(&ret));
|
||||
ok(V_I4(&ret) == CP_UTF8, "expected CP_UTF8, got %d\n", V_I4(&ret));
|
||||
|
||||
V_VT(&ret) = 0xdead;
|
||||
V_I4(&ret) = 0xbeef;
|
||||
hr = IWinHttpRequest_Invoke(request, DISPID_HTTPREQUEST_OPTION, &IID_NULL, 0, DISPATCH_METHOD, ¶ms, &ret, NULL, NULL);
|
||||
ok(hr == S_OK, "error %#x\n", hr);
|
||||
ok(V_VT(&ret) == VT_I4, "expected VT_I4, got %d\n", V_VT(&ret));
|
||||
ok(V_I4(&ret) == CP_UTF8, "expected CP_UTF8, got %d\n", V_I4(&ret));
|
||||
|
||||
hr = IWinHttpRequest_Invoke(request, DISPID_HTTPREQUEST_OPTION, &IID_NULL, 0, DISPATCH_METHOD|DISPATCH_PROPERTYGET, ¶ms, NULL, NULL, NULL);
|
||||
ok(hr == S_OK, "error %#x\n", hr);
|
||||
|
||||
V_VT(&ret) = 0xdead;
|
||||
V_I4(&ret) = 0xbeef;
|
||||
hr = IWinHttpRequest_Invoke(request, DISPID_HTTPREQUEST_OPTION, &IID_NULL, 0, 0, ¶ms, &ret, NULL, NULL);
|
||||
ok(hr == S_OK, "error %#x\n", hr);
|
||||
ok(V_VT(&ret) == VT_EMPTY, "expected VT_EMPTY, got %d\n", V_VT(&ret));
|
||||
ok(V_I4(&ret) == 0xbeef || V_I4(&ret) == 0 /* Win8 */, "expected 0xdead, got %d\n", V_I4(&ret));
|
||||
|
||||
hr = IWinHttpRequest_Invoke(request, DISPID_HTTPREQUEST_OPTION, &IID_NULL, 0, 0, ¶ms, NULL, NULL, NULL);
|
||||
ok(hr == S_OK, "error %#x\n", hr);
|
||||
|
||||
hr = IWinHttpRequest_Invoke(request, DISPID_HTTPREQUEST_OPTION, &IID_IUnknown, 0, DISPATCH_PROPERTYGET, ¶ms, NULL, NULL, NULL);
|
||||
ok(hr == DISP_E_UNKNOWNINTERFACE, "error %#x\n", hr);
|
||||
|
||||
params.cArgs = 2;
|
||||
hr = IWinHttpRequest_Invoke(request, DISPID_HTTPREQUEST_OPTION, &IID_NULL, 0, DISPATCH_PROPERTYGET, ¶ms, NULL, NULL, NULL);
|
||||
todo_wine
|
||||
ok(hr == S_OK, "error %#x\n", hr);
|
||||
|
||||
params.cArgs = 0;
|
||||
hr = IWinHttpRequest_Invoke(request, DISPID_HTTPREQUEST_OPTION, &IID_NULL, 0, DISPATCH_PROPERTYGET, ¶ms, NULL, NULL, NULL);
|
||||
ok(hr == DISP_E_PARAMNOTFOUND, "error %#x\n", hr);
|
||||
|
||||
SysFreeString(utf8);
|
||||
|
||||
params.cArgs = 1;
|
||||
V_VT(&arg[0]) = VT_I4;
|
||||
V_I4(&arg[0]) = AutoLogonPolicy_Never;
|
||||
VariantInit(&ret);
|
||||
hr = IWinHttpRequest_Invoke(request, DISPID_HTTPREQUEST_SETAUTOLOGONPOLICY, &IID_NULL, 0,
|
||||
DISPATCH_METHOD, ¶ms, &ret, NULL, NULL);
|
||||
ok(hr == S_OK, "error %#x\n", hr);
|
||||
|
||||
IWinHttpRequest_Release(request);
|
||||
|
||||
CoUninitialize();
|
||||
}
|
||||
|
||||
static void test_WinHttpDetectAutoProxyConfigUrl(void)
|
||||
{
|
||||
BOOL ret;
|
||||
|
@ -3465,6 +3847,7 @@ if (0) /* crashes on some win2k systems */
|
|||
}
|
||||
else
|
||||
{
|
||||
ok( error == ERROR_SUCCESS, "got %u\n", error );
|
||||
trace("%s\n", wine_dbgstr_w(url));
|
||||
GlobalFree( url );
|
||||
}
|
||||
|
@ -3484,8 +3867,12 @@ static void test_WinHttpGetIEProxyConfigForCurrentUser(void)
|
|||
ok( !ret, "expected failure\n" );
|
||||
ok( error == ERROR_INVALID_PARAMETER, "got %u\n", error );
|
||||
|
||||
SetLastError(0xdeadbeef);
|
||||
ret = WinHttpGetIEProxyConfigForCurrentUser( &cfg );
|
||||
error = GetLastError();
|
||||
ok( ret, "expected success\n" );
|
||||
ok( error == ERROR_SUCCESS || broken(error == ERROR_NO_TOKEN) /* < win7 */, "got %u\n", error );
|
||||
|
||||
trace("IEProxy.AutoDetect=%d\n", cfg.fAutoDetect);
|
||||
trace("IEProxy.AutoConfigUrl=%s\n", wine_dbgstr_w(cfg.lpszAutoConfigUrl));
|
||||
trace("IEProxy.Proxy=%s\n", wine_dbgstr_w(cfg.lpszProxy));
|
||||
|
@ -3572,9 +3959,12 @@ static void test_WinHttpGetProxyForUrl(void)
|
|||
options.dwAutoDetectFlags = WINHTTP_AUTO_DETECT_TYPE_DNS_A;
|
||||
|
||||
memset( &info, 0, sizeof(info) );
|
||||
SetLastError(0xdeadbeef);
|
||||
ret = WinHttpGetProxyForUrl( session, urlW, &options, &info );
|
||||
error = GetLastError();
|
||||
if (ret)
|
||||
{
|
||||
ok( error == ERROR_SUCCESS, "got %u\n", error );
|
||||
trace("Proxy.AccessType=%u\n", info.dwAccessType);
|
||||
trace("Proxy.Proxy=%s\n", wine_dbgstr_w(info.lpszProxy));
|
||||
trace("Proxy.ProxyBypass=%s\n", wine_dbgstr_w(info.lpszProxyBypass));
|
||||
|
@ -3604,7 +3994,7 @@ static void test_chunked_read(void)
|
|||
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];
|
||||
DWORD len;
|
||||
DWORD len, err;
|
||||
HINTERNET ses, con = NULL, req = NULL;
|
||||
BOOL ret;
|
||||
|
||||
|
@ -3623,7 +4013,8 @@ static void test_chunked_read(void)
|
|||
if (!req) goto done;
|
||||
|
||||
ret = WinHttpSendRequest( req, NULL, 0, NULL, 0, 0, 0 );
|
||||
if (!ret && GetLastError() == ERROR_WINHTTP_CANNOT_CONNECT)
|
||||
err = GetLastError();
|
||||
if (!ret && (err == ERROR_WINHTTP_CANNOT_CONNECT || err == ERROR_WINHTTP_TIMEOUT))
|
||||
{
|
||||
skip("connection failed, skipping\n");
|
||||
goto done;
|
||||
|
@ -3702,6 +4093,7 @@ START_TEST (winhttp)
|
|||
test_resolve_timeout();
|
||||
test_credentials();
|
||||
test_IWinHttpRequest();
|
||||
test_IWinHttpRequest_Invoke();
|
||||
test_WinHttpDetectAutoProxyConfigUrl();
|
||||
test_WinHttpGetIEProxyConfigForCurrentUser();
|
||||
test_WinHttpGetProxyForUrl();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue