2015-05-15 18:00:35 -07:00
|
|
|
From 9e879920a222f6c795b836fb687b6d3549c8c36e Mon Sep 17 00:00:00 2001
|
2015-05-15 17:07:36 -07:00
|
|
|
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
|
|
|
Date: Fri, 15 May 2015 23:09:20 +0200
|
|
|
|
Subject: wininet/tests: Check cookie behaviour when overriding host.
|
|
|
|
|
|
|
|
---
|
|
|
|
dlls/wininet/tests/http.c | 101 +++++++++++++++++++++++++++++++++++++++++++++-
|
|
|
|
1 file changed, 100 insertions(+), 1 deletion(-)
|
|
|
|
|
|
|
|
diff --git a/dlls/wininet/tests/http.c b/dlls/wininet/tests/http.c
|
|
|
|
index 4c515b7..165a76e 100644
|
|
|
|
--- a/dlls/wininet/tests/http.c
|
|
|
|
+++ b/dlls/wininet/tests/http.c
|
|
|
|
@@ -1982,6 +1982,14 @@ static const char okmsg_cookie_path[] =
|
|
|
|
"Set-Cookie: subcookie2=data; path=/test_cookie_set_path\r\n"
|
|
|
|
"\r\n";
|
|
|
|
|
|
|
|
+static const char okmsg_cookie[] =
|
|
|
|
+"HTTP/1.1 200 OK\r\n"
|
|
|
|
+"Date: Mon, 01 Dec 2008 13:44:34 GMT\r\n"
|
|
|
|
+"Server: winetest\r\n"
|
|
|
|
+"Content-Length: 0\r\n"
|
|
|
|
+"Set-Cookie: testcookie=testvalue\r\n"
|
|
|
|
+"\r\n";
|
|
|
|
+
|
|
|
|
static const char notokmsg[] =
|
|
|
|
"HTTP/1.1 400 Bad Request\r\n"
|
|
|
|
"Server: winetest\r\n"
|
|
|
|
@@ -2371,6 +2379,25 @@ static DWORD CALLBACK server_thread(LPVOID param)
|
|
|
|
else
|
|
|
|
send(c, notokmsg, sizeof notokmsg-1, 0);
|
|
|
|
}
|
|
|
|
+ if (strstr(buffer, "/test_cookie_set_host_override"))
|
|
|
|
+ {
|
|
|
|
+ send(c, okmsg_cookie, sizeof okmsg_cookie-1, 0);
|
|
|
|
+ }
|
|
|
|
+ if (strstr(buffer, "/test_cookie_check_host_override"))
|
|
|
|
+ {
|
|
|
|
+ if (strstr(buffer, "Cookie:") && strstr(buffer, "testcookie=testvalue"))
|
|
|
|
+ send(c, okmsg, sizeof okmsg-1, 0);
|
|
|
|
+ else
|
|
|
|
+ send(c, notokmsg, sizeof notokmsg-1, 0);
|
|
|
|
+ }
|
|
|
|
+ if (strstr(buffer, "/test_cookie_check_different_host"))
|
|
|
|
+ {
|
|
|
|
+ if (!strstr(buffer, "foo") &&
|
|
|
|
+ strstr(buffer, "cookie=biscuit"))
|
|
|
|
+ send(c, okmsg, sizeof okmsg-1, 0);
|
|
|
|
+ else
|
|
|
|
+ send(c, notokmsg, sizeof notokmsg-1, 0);
|
|
|
|
+ }
|
|
|
|
if (strstr(buffer, "/test_host_override"))
|
|
|
|
{
|
|
|
|
if (strstr(buffer, host_header_override))
|
|
|
|
@@ -3082,6 +3109,76 @@ static void test_header_override(int port)
|
|
|
|
test_status_code_todo(req, 400);
|
|
|
|
InternetCloseHandle(req);
|
|
|
|
|
|
|
|
+ InternetSetCookieA("http://localhost", "cookie", "biscuit");
|
|
|
|
+
|
|
|
|
+ req = HttpOpenRequestA(con, NULL, "/testC", NULL, NULL, NULL, INTERNET_FLAG_KEEP_CONNECTION, 0);
|
|
|
|
+ ok(req != NULL, "HttpOpenRequest failed\n");
|
|
|
|
+
|
|
|
|
+ ret = HttpAddRequestHeadersA(req, host_header_override, ~0u, HTTP_ADDREQ_FLAG_ADD);
|
|
|
|
+ ok(ret, "HttpAddRequestHeaders failed\n");
|
|
|
|
+
|
|
|
|
+ ret = HttpSendRequestA(req, NULL, 0, NULL, 0);
|
|
|
|
+ ok(ret, "HttpSendRequest failed\n");
|
|
|
|
+
|
|
|
|
+ test_status_code(req, 200);
|
|
|
|
+ InternetCloseHandle(req);
|
|
|
|
+
|
|
|
|
+ req = HttpOpenRequestA(con, NULL, "/test_cookie_set_host_override", NULL, NULL, NULL, INTERNET_FLAG_KEEP_CONNECTION, 0);
|
|
|
|
+ ok(req != NULL, "HttpOpenRequest failed\n");
|
|
|
|
+
|
|
|
|
+ ret = HttpAddRequestHeadersA(req, host_header_override, ~0u, HTTP_ADDREQ_FLAG_ADD);
|
|
|
|
+ ok(ret, "HttpAddRequestHeaders failed\n");
|
|
|
|
+
|
|
|
|
+ ret = HttpSendRequestA(req, NULL, 0, NULL, 0);
|
|
|
|
+ ok(ret, "HttpSendRequest failed\n");
|
|
|
|
+
|
|
|
|
+ test_status_code(req, 200);
|
|
|
|
+ InternetCloseHandle(req);
|
|
|
|
+
|
|
|
|
+ req = HttpOpenRequestA(con, NULL, "/test_cookie_check_host_override", NULL, NULL, NULL, INTERNET_FLAG_KEEP_CONNECTION, 0);
|
|
|
|
+ ok(req != NULL, "HttpOpenRequest failed\n");
|
|
|
|
+
|
|
|
|
+ ret = HttpAddRequestHeadersA(req, host_header_override, ~0u, HTTP_ADDREQ_FLAG_ADD);
|
|
|
|
+ ok(ret, "HttpAddRequestHeaders failed\n");
|
|
|
|
+
|
|
|
|
+ ret = HttpSendRequestA(req, NULL, 0, NULL, 0);
|
|
|
|
+ ok(ret, "HttpSendRequest failed\n");
|
|
|
|
+
|
|
|
|
+ test_status_code_todo(req, 200);
|
|
|
|
+ InternetCloseHandle(req);
|
|
|
|
+
|
|
|
|
+ req = HttpOpenRequestA(con, NULL, "/test_cookie_check_host_override", NULL, NULL, NULL, INTERNET_FLAG_KEEP_CONNECTION, 0);
|
|
|
|
+ ok(req != NULL, "HttpOpenRequest failed\n");
|
|
|
|
+
|
|
|
|
+ ret = HttpSendRequestA(req, NULL, 0, NULL, 0);
|
|
|
|
+ ok(ret, "HttpSendRequest failed\n");
|
|
|
|
+
|
|
|
|
+ test_status_code_todo(req, 200);
|
|
|
|
+ InternetCloseHandle(req);
|
|
|
|
+
|
|
|
|
+ InternetSetCookieA("http://test.local", "foo", "bar");
|
|
|
|
+
|
|
|
|
+ req = HttpOpenRequestA(con, NULL, "/test_cookie_check_different_host", NULL, NULL, NULL, INTERNET_FLAG_KEEP_CONNECTION, 0);
|
|
|
|
+ ok(req != NULL, "HttpOpenRequest failed\n");
|
|
|
|
+
|
|
|
|
+ ret = HttpSendRequestA(req, NULL, 0, NULL, 0);
|
|
|
|
+ ok(ret, "HttpSendRequest failed\n");
|
|
|
|
+
|
|
|
|
+ test_status_code(req, 200);
|
|
|
|
+ InternetCloseHandle(req);
|
|
|
|
+
|
|
|
|
+ req = HttpOpenRequestA(con, NULL, "/test_cookie_check_different_host", NULL, NULL, NULL, INTERNET_FLAG_KEEP_CONNECTION, 0);
|
|
|
|
+ ok(req != NULL, "HttpOpenRequest failed\n");
|
|
|
|
+
|
|
|
|
+ ret = HttpAddRequestHeadersA(req, host_header_override, ~0u, HTTP_ADDREQ_FLAG_ADD);
|
|
|
|
+ ok(ret, "HttpAddRequestHeaders failed\n");
|
|
|
|
+
|
|
|
|
+ ret = HttpSendRequestA(req, NULL, 0, NULL, 0);
|
|
|
|
+ ok(ret, "HttpSendRequest failed\n");
|
|
|
|
+
|
|
|
|
+ test_status_code(req, 200);
|
|
|
|
+ InternetCloseHandle(req);
|
|
|
|
+
|
|
|
|
InternetCloseHandle( con );
|
|
|
|
InternetCloseHandle( ses );
|
|
|
|
|
|
|
|
@@ -4453,8 +4550,10 @@ static void test_request_content_length(int port)
|
|
|
|
con = InternetConnectA(ses, "localhost", port, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0);
|
|
|
|
ok(con != NULL, "InternetConnect failed\n");
|
|
|
|
|
|
|
|
+ /* On XP there is a weird bug that the following tests fail if certain cookies
|
|
|
|
+ * are set. We workaround this problem by passing INTERNET_FLAG_NO_COOKIES as flag. */
|
|
|
|
req = HttpOpenRequestA(con, "POST", "/test_request_content_length", NULL, NULL, NULL,
|
|
|
|
- INTERNET_FLAG_KEEP_CONNECTION, 0);
|
|
|
|
+ INTERNET_FLAG_KEEP_CONNECTION | INTERNET_FLAG_NO_COOKIES, 0);
|
|
|
|
ok(req != NULL, "HttpOpenRequest failed\n");
|
|
|
|
|
|
|
|
ret = HttpSendRequestA(req, NULL, 0, NULL, 0);
|
|
|
|
--
|
|
|
|
2.4.0
|
|
|
|
|