winhttp/tests: Test when large amount of data is returned from a 401.
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com> Signed-off-by: Hans Leidekker <hans@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
f5de978a9c
commit
ae4ad49c75
|
@ -2059,6 +2059,15 @@ static const char multiauth[] =
|
|||
"Content-Type: text/plain\r\n"
|
||||
"\r\n";
|
||||
|
||||
static const char largeauth[] =
|
||||
"HTTP/1.1 401 Unauthorized\r\n"
|
||||
"Server: winetest\r\n"
|
||||
"WWW-Authenticate: Basic realm=\"placebo\"\r\n"
|
||||
"WWW-Authenticate: NTLM\r\n"
|
||||
"Content-Length: 10240\r\n"
|
||||
"Content-Type: text/plain\r\n"
|
||||
"\r\n";
|
||||
|
||||
static const char unauthorized[] = "Unauthorized";
|
||||
static const char hello_world[] = "Hello World";
|
||||
|
||||
|
@ -2161,6 +2170,21 @@ static DWORD CALLBACK server_thread(LPVOID param)
|
|||
send(c, headmsg, sizeof headmsg - 1, 0);
|
||||
continue;
|
||||
}
|
||||
if (strstr(buffer, "GET /multiauth"))
|
||||
{
|
||||
send(c, multiauth, sizeof multiauth - 1, 0);
|
||||
}
|
||||
if (strstr(buffer, "GET /largeauth"))
|
||||
{
|
||||
if (strstr(buffer, "Authorization: NTLM"))
|
||||
send(c, okmsg, sizeof(okmsg) - 1, 0);
|
||||
else
|
||||
{
|
||||
send(c, largeauth, sizeof largeauth - 1, 0);
|
||||
for (i = 0; i < 10240; i++) send(c, "A", 1, 0);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (strstr(buffer, "GET /cookie5"))
|
||||
{
|
||||
if (strstr(buffer, "Cookie: name2=value\r\n"))
|
||||
|
@ -2168,10 +2192,6 @@ static DWORD CALLBACK server_thread(LPVOID param)
|
|||
else
|
||||
send(c, notokmsg, sizeof(notokmsg) - 1, 0);
|
||||
}
|
||||
if (strstr(buffer, "GET /multiauth"))
|
||||
{
|
||||
send(c, multiauth, sizeof multiauth - 1, 0);
|
||||
}
|
||||
if (strstr(buffer, "GET /cookie4"))
|
||||
{
|
||||
send(c, cookiemsg2, sizeof(cookiemsg2) - 1, 0);
|
||||
|
@ -2554,6 +2574,57 @@ static void test_multi_authentication(int port)
|
|||
WinHttpCloseHandle(ses);
|
||||
}
|
||||
|
||||
static void test_large_data_authentication(int port)
|
||||
{
|
||||
static const WCHAR largeauthW[] = {'/','l','a','r','g','e','a','u','t','h',0};
|
||||
static const WCHAR getW[] = {'G','E','T',0};
|
||||
static WCHAR userW[] = {'u','s','e','r',0};
|
||||
static WCHAR passW[] = {'p','w','d',0};
|
||||
HINTERNET ses, con, req;
|
||||
DWORD status, size;
|
||||
BOOL ret;
|
||||
|
||||
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);
|
||||
ok(con != NULL, "failed to open a connection %u\n", GetLastError());
|
||||
|
||||
req = WinHttpOpenRequest(con, getW, largeauthW, NULL, NULL, NULL, 0);
|
||||
ok(req != NULL, "failed to open a request %u\n", GetLastError());
|
||||
|
||||
ret = WinHttpSendRequest(req, WINHTTP_NO_ADDITIONAL_HEADERS, 0, WINHTTP_NO_REQUEST_DATA, 0, 0, 0);
|
||||
ok(ret, "expected success\n");
|
||||
|
||||
ret = WinHttpReceiveResponse(req, NULL);
|
||||
ok(ret, "expected success\n");
|
||||
|
||||
size = sizeof(status);
|
||||
ret = WinHttpQueryHeaders(req, WINHTTP_QUERY_STATUS_CODE | WINHTTP_QUERY_FLAG_NUMBER, NULL,
|
||||
&status, &size, NULL);
|
||||
ok(ret, "expected success\n");
|
||||
ok(status == HTTP_STATUS_DENIED, "got %d\n", status);
|
||||
|
||||
ret = WinHttpSetCredentials(req, WINHTTP_AUTH_TARGET_SERVER, WINHTTP_AUTH_SCHEME_NTLM, userW, passW, NULL);
|
||||
ok(ret, "expected success\n");
|
||||
|
||||
ret = WinHttpSendRequest(req, WINHTTP_NO_ADDITIONAL_HEADERS, 0, WINHTTP_NO_REQUEST_DATA, 0, 0, 0);
|
||||
ok(ret, "expected success %d\n", GetLastError());
|
||||
|
||||
ret = WinHttpReceiveResponse(req, NULL);
|
||||
todo_wine ok(ret, "expected success\n");
|
||||
|
||||
size = sizeof(status);
|
||||
ret = WinHttpQueryHeaders(req, WINHTTP_QUERY_STATUS_CODE | WINHTTP_QUERY_FLAG_NUMBER, NULL,
|
||||
&status, &size, NULL);
|
||||
todo_wine ok(ret, "expected success\n");
|
||||
todo_wine ok(status == HTTP_STATUS_OK, "got %d\n", status);
|
||||
|
||||
WinHttpCloseHandle(req);
|
||||
WinHttpCloseHandle(con);
|
||||
WinHttpCloseHandle(ses);
|
||||
}
|
||||
|
||||
static void test_no_headers(int port)
|
||||
{
|
||||
static const WCHAR no_headersW[] = {'/','n','o','_','h','e','a','d','e','r','s',0};
|
||||
|
@ -4354,6 +4425,7 @@ START_TEST (winhttp)
|
|||
test_not_modified(si.port);
|
||||
test_basic_authentication(si.port);
|
||||
test_multi_authentication(si.port);
|
||||
test_large_data_authentication(si.port);
|
||||
test_bad_header(si.port);
|
||||
test_multiple_reads(si.port);
|
||||
test_cookies(si.port);
|
||||
|
|
Loading…
Reference in New Issue