Owen Rudge : winhttp/tests: Add tests for WINHTTP_OPTION_MAX_HTTP_AUTOMATIC_REDIRECTS.
Alexandre Julliard
julliard at winehq.org
Fri Jul 3 14:36:17 CDT 2020
Module: wine
Branch: master
Commit: e4e94ed72ebe06377a127c72499f2ef1882d0b8a
URL: https://source.winehq.org/git/wine.git/?a=commit;h=e4e94ed72ebe06377a127c72499f2ef1882d0b8a
Author: Owen Rudge <orudge at codeweavers.com>
Date: Fri Jul 3 10:21:37 2020 +0100
winhttp/tests: Add tests for WINHTTP_OPTION_MAX_HTTP_AUTOMATIC_REDIRECTS.
Signed-off-by: Owen Rudge <orudge at codeweavers.com>
Signed-off-by: Hans Leidekker <hans at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/winhttp/tests/winhttp.c | 52 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 52 insertions(+)
diff --git a/dlls/winhttp/tests/winhttp.c b/dlls/winhttp/tests/winhttp.c
index 84063fdc82..79d700d4a1 100644
--- a/dlls/winhttp/tests/winhttp.c
+++ b/dlls/winhttp/tests/winhttp.c
@@ -5076,6 +5076,57 @@ done:
if (ses) WinHttpCloseHandle( ses );
}
+static void test_max_http_automatic_redirects (void)
+{
+ HINTERNET session, request, connection;
+ DWORD max_redirects, err;
+ BOOL ret;
+
+ session = WinHttpOpen(L"winetest", WINHTTP_ACCESS_TYPE_DEFAULT_PROXY,
+ WINHTTP_NO_PROXY_NAME, WINHTTP_NO_PROXY_BYPASS, 0);
+ ok(session != NULL, "WinHttpOpen failed to open session.\n");
+
+ connection = WinHttpConnect (session, L"test.winehq.org", INTERNET_DEFAULT_HTTP_PORT, 0);
+ ok(connection != NULL, "WinHttpConnect failed to open a connection, error: %u.\n", GetLastError());
+
+ /* Test with 2 redirects (page will try to redirect 3 times) */
+ request = WinHttpOpenRequest(connection, L"GET", L"tests/redirecttest.php?max=3", NULL, WINHTTP_NO_REFERER,
+ WINHTTP_DEFAULT_ACCEPT_TYPES, WINHTTP_FLAG_BYPASS_PROXY_CACHE);
+ if (request == NULL && GetLastError() == 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());
+ if (!request) goto done;
+
+ max_redirects = 2;
+ ret = WinHttpSetOption(request, WINHTTP_OPTION_MAX_HTTP_AUTOMATIC_REDIRECTS, &max_redirects, sizeof(max_redirects));
+ todo_wine ok(ret, "WinHttpSetOption failed: %u\n", GetLastError());
+
+ ret = WinHttpSendRequest(request, WINHTTP_NO_ADDITIONAL_HEADERS, 0, WINHTTP_NO_REQUEST_DATA, 0, 0, 0);
+ 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());
+
+ SetLastError(0xdeadbeef);
+ ret = WinHttpReceiveResponse(request, NULL);
+ todo_wine ok(!ret, "WinHttpReceiveResponse succeeded, expected failure\n");
+ todo_wine ok(GetLastError() == ERROR_WINHTTP_REDIRECT_FAILED, "Expected ERROR_WINHTTP_REDIRECT_FAILED, got %u.\n", GetLastError());
+
+ done:
+ ret = WinHttpCloseHandle(request);
+ ok(ret == TRUE, "WinHttpCloseHandle failed on closing request, got %d.\n", ret);
+ ret = WinHttpCloseHandle(connection);
+ ok(ret == TRUE, "WinHttpCloseHandle failed on closing connection, got %d.\n", ret);
+ ret = WinHttpCloseHandle(session);
+ ok(ret == TRUE, "WinHttpCloseHandle failed on closing session, got %d.\n", ret);
+}
+
START_TEST (winhttp)
{
struct server_info si;
@@ -5108,6 +5159,7 @@ START_TEST (winhttp)
test_WinHttpGetIEProxyConfigForCurrentUser();
test_WinHttpGetProxyForUrl();
test_chunked_read();
+ test_max_http_automatic_redirects();
si.event = CreateEventW(NULL, 0, 0, NULL);
si.port = 7532;
More information about the wine-cvs
mailing list