urlmon: Added HTTP redirecting test.

This commit is contained in:
Jacek Caban 2009-12-15 21:16:17 +01:00 committed by Alexandre Julliard
parent 840c52acb9
commit ce53f34458
1 changed files with 28 additions and 8 deletions

View File

@ -131,7 +131,7 @@ static const WCHAR gzipW[] = {'g','z','i','p',0};
static HRESULT expect_hrResult;
static LPCWSTR file_name, http_url, expect_wsz;
static IInternetProtocol *async_protocol = NULL;
static BOOL first_data_notif, http_is_first, http_post_test;
static BOOL first_data_notif, http_is_first, http_post_test, test_redirect;
static int state = 0, prot_state, read_report_data;
static DWORD bindf, ex_priority , pi;
static IInternetProtocol *binding_protocol, *filtered_protocol;
@ -442,19 +442,23 @@ static void call_continue(PROTOCOLDATA *protocol_data)
CLEAR_CALLED(ReportProgress_FINDINGRESOURCE);
CLEAR_CALLED(ReportProgress_CONNECTING);
CLEAR_CALLED(ReportProgress_PROXYDETECTING);
} else todo_wine {
CHECK_NOT_CALLED(ReportProgress_FINDINGRESOURCE);
/* IE7 does call this */
CLEAR_CALLED(ReportProgress_CONNECTING);
}
}else if(test_redirect) {
CHECK_CALLED(ReportProgress_FINDINGRESOURCE);
}else todo_wine {
CHECK_NOT_CALLED(ReportProgress_FINDINGRESOURCE);
/* IE7 does call this */
CLEAR_CALLED(ReportProgress_CONNECTING);
}
}
if(tested_protocol == FTP_TEST)
todo_wine CHECK_CALLED(ReportProgress_SENDINGREQUEST);
else if (tested_protocol != HTTPS_TEST)
CHECK_CALLED(ReportProgress_SENDINGREQUEST);
if(test_redirect)
CHECK_CALLED(ReportProgress_REDIRECTING);
if(tested_protocol == HTTP_TEST || tested_protocol == HTTPS_TEST) {
SET_EXPECT(OnResponse);
if(tested_protocol == HTTPS_TEST)
if(tested_protocol == HTTPS_TEST || test_redirect)
SET_EXPECT(ReportProgress_ACCEPTRANGES);
SET_EXPECT(ReportProgress_MIMETYPEAVAILABLE);
if(bindf & BINDF_NEEDFILE)
@ -478,6 +482,8 @@ static void call_continue(PROTOCOLDATA *protocol_data)
CHECK_CALLED(OnResponse);
if(tested_protocol == HTTPS_TEST)
CHECK_CALLED(ReportProgress_ACCEPTRANGES);
else if(test_redirect)
CLEAR_CALLED(ReportProgress_ACCEPTRANGES);
CHECK_CALLED(ReportProgress_MIMETYPEAVAILABLE);
if(bindf & BINDF_NEEDFILE)
CHECK_CALLED(ReportProgress_CACHEFILENAMEAVAILABLE);
@ -616,7 +622,10 @@ static HRESULT WINAPI ProtocolSink_ReportProgress(IInternetProtocolSink *iface,
break;
case BINDSTATUS_REDIRECTING:
CHECK_EXPECT(ReportProgress_REDIRECTING);
ok(szStatusText == NULL, "szStatusText = %s\n", wine_dbgstr_w(szStatusText));
if(test_redirect)
ok(!strcmp_wa(szStatusText, "http://test.winehq.org/hello.html"), "szStatusText = %s\n", wine_dbgstr_w(szStatusText));
else
ok(szStatusText == NULL, "szStatusText = %s\n", wine_dbgstr_w(szStatusText));
break;
case BINDSTATUS_ENCODING:
CHECK_EXPECT(ReportProgress_ENCODING);
@ -1952,6 +1961,7 @@ static IClassFactory mimefilter_cf = { &MimeFilterCFVtbl };
#define TEST_POST 0x10
#define TEST_EMULATEPROT 0x20
#define TEST_SHORT_READ 0x40
#define TEST_REDIRECT 0x80
static void init_test(int prot, DWORD flags)
{
@ -1977,6 +1987,7 @@ static void init_test(int prot, DWORD flags)
emulate_prot = (flags & TEST_EMULATEPROT) != 0;
wait_for_switch = TRUE;
short_read = (flags & TEST_SHORT_READ) != 0;
test_redirect = (flags & TEST_REDIRECT) != 0;
}
static void test_priority(IInternetProtocol *protocol)
@ -2429,6 +2440,8 @@ static void test_http_protocol_url(LPCWSTR url, int prot, DWORD flags)
SET_EXPECT(ReportProgress_FINDINGRESOURCE);
SET_EXPECT(ReportProgress_CONNECTING);
SET_EXPECT(ReportProgress_SENDINGREQUEST);
if(test_redirect)
SET_EXPECT(ReportProgress_REDIRECTING);
SET_EXPECT(ReportProgress_PROXYDETECTING);
if(prot == HTTP_TEST)
SET_EXPECT(ReportProgress_CACHEFILENAMEAVAILABLE);
@ -2516,6 +2529,9 @@ static void test_http_protocol(void)
{'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 redirect_url[] =
{'h','t','t','p',':','/','/','t','e','s','t','.','w','i','n','e','h','q','.','o','r','g','/',
't','e','s','t','r','e','d','i','r','e','c','t',0};
trace("Testing http protocol (not from urlmon)...\n");
bindf = BINDF_ASYNCHRONOUS | BINDF_ASYNCSTORAGE | BINDF_PULLDATA;
@ -2538,6 +2554,10 @@ static void test_http_protocol(void)
trace("Testing http protocol (direct read)...\n");
bindf = BINDF_ASYNCHRONOUS | BINDF_ASYNCSTORAGE | BINDF_PULLDATA | BINDF_FROMURLMON;
test_http_protocol_url(winehq_url, HTTP_TEST, TEST_DIRECT_READ);
trace("Testing http protocol (redirected)...\n");
bindf = BINDF_ASYNCHRONOUS | BINDF_ASYNCSTORAGE | BINDF_PULLDATA | BINDF_FROMURLMON;
test_http_protocol_url(redirect_url, HTTP_TEST, TEST_REDIRECT);
}
static void test_https_protocol(void)