Index: net/http_client_unittest.cc |
diff --git a/net/http_client_unittest.cc b/net/http_client_unittest.cc |
deleted file mode 100644 |
index 038a4649d28afdf03d5cc37799c172c93302e4c1..0000000000000000000000000000000000000000 |
--- a/net/http_client_unittest.cc |
+++ /dev/null |
@@ -1,245 +0,0 @@ |
-// Copyright 2007-2009 Google Inc. |
-// |
-// Licensed under the Apache License, Version 2.0 (the "License"); |
-// you may not use this file except in compliance with the License. |
-// You may obtain a copy of the License at |
-// |
-// http://www.apache.org/licenses/LICENSE-2.0 |
-// |
-// Unless required by applicable law or agreed to in writing, software |
-// distributed under the License is distributed on an "AS IS" BASIS, |
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
-// See the License for the specific language governing permissions and |
-// limitations under the License. |
-// ======================================================================== |
- |
-// Since the net code is linked in as a lib, force the registration code to |
-// be a dependency, otherwise the linker is optimizing in out. |
-#pragma comment(linker, "/INCLUDE:_kRegisterWinHttp") |
- |
-#include <vector> |
-#include "base/basictypes.h" |
-#include "base/scoped_ptr.h" |
-#include "omaha/base/omaha_version.h" |
-#include "omaha/net/http_client.h" |
-#include "omaha/testing/unit_test.h" |
- |
-namespace omaha { |
- |
-// Test fixture, perhaps we need it later. |
-class HttpClientTest : public testing::Test { |
- protected: |
- HttpClientTest() {} |
- |
- static void SetUpTestCase() {} |
- |
- virtual void SetUp() { |
- http_client_.reset( |
- HttpClient::GetFactory().CreateObject(HttpClient::WINHTTP)); |
- ASSERT_TRUE(http_client_.get()); |
- ASSERT_SUCCEEDED(http_client_->Initialize()); |
- } |
- |
- virtual void TearDown() { |
- http_client_.reset(); |
- } |
- |
- void GetUrl(const TCHAR* url, bool use_proxy); |
- |
- scoped_ptr<HttpClient> http_client_; |
-}; |
- |
-CString BuildUserAgent() { |
- CString user_agent; |
- user_agent.Format(_T("HttpClientTest version %s"), omaha::GetVersionString()); |
- return user_agent; |
-} |
- |
-const TCHAR kTestUrlGet[] = _T("http://www.google.com/robots.txt"); |
-const TCHAR kTestSecureUrlGet[] = _T("https://www.google.com/robots.txt"); |
- |
-// If using a proxy is specified, the function does WPAD detection to get the |
-// name of the proxy to be used. The request goes direct if the WPAD fails. |
-void HttpClientTest::GetUrl(const TCHAR* url, bool use_proxy) { |
- ASSERT_TRUE(url); |
- |
- CString server, path; |
- int port = 0; |
- ASSERT_SUCCEEDED(http_client_->CrackUrl(url, |
- ICU_DECODE, |
- NULL, |
- &server, |
- &port, |
- &path, |
- NULL)); |
- ASSERT_STREQ(server, _T("www.google.com")); |
- ASSERT_STREQ(path, _T("/robots.txt")); |
- |
- HINTERNET session_handle = NULL; |
- ASSERT_SUCCEEDED(http_client_->Open(BuildUserAgent(), |
- HttpClient::kAccessTypeNoProxy, |
- NULL, |
- NULL, |
- 0, // Synchronous mode. |
- &session_handle)); |
- if (use_proxy) { |
- HttpClient::AutoProxyOptions autoproxy_options = {0}; |
- autoproxy_options.flags = WINHTTP_AUTOPROXY_AUTO_DETECT; |
- autoproxy_options.auto_detect_flags = WINHTTP_AUTO_DETECT_TYPE_DHCP | |
- WINHTTP_AUTO_DETECT_TYPE_DNS_A; |
- autoproxy_options.auto_logon_if_challenged = true; |
- HttpClient::ProxyInfo proxy_info = {0}; |
- http_client_->GetProxyForUrl(session_handle, |
- url, |
- &autoproxy_options, |
- &proxy_info); |
- if (proxy_info.proxy && wcslen(proxy_info.proxy)) { |
- proxy_info.access_type = WINHTTP_ACCESS_TYPE_NAMED_PROXY; |
- EXPECT_SUCCEEDED(http_client_->SetOption(session_handle, |
- WINHTTP_OPTION_PROXY, |
- &proxy_info, |
- sizeof(proxy_info))); |
- } |
- ::GlobalFree(const_cast<wchar_t*>(proxy_info.proxy)); |
- ::GlobalFree(const_cast<wchar_t*>(proxy_info.proxy_bypass)); |
- } |
- |
- HINTERNET connection_handle = NULL; |
- ASSERT_SUCCEEDED(http_client_->Connect(session_handle, |
- server, |
- port, |
- &connection_handle)); |
- uint32 flags = port == 443 ? WINHTTP_FLAG_SECURE : 0; |
- HINTERNET request_handle = NULL; |
- ASSERT_SUCCEEDED(http_client_->OpenRequest(connection_handle, |
- _T("GET"), |
- path, |
- NULL, // HTTP 1.1 |
- NULL, // Referrer. |
- NULL, // Default accept types. |
- flags, |
- &request_handle)); |
- ASSERT_SUCCEEDED(http_client_->SendRequest(request_handle, |
- NULL, 0, NULL, 0, 0, 0)); |
- ASSERT_SUCCEEDED(http_client_->ReceiveResponse(request_handle)); |
- CString content_type; |
- EXPECT_SUCCEEDED(http_client_->QueryHeadersString(request_handle, |
- WINHTTP_QUERY_CONTENT_TYPE, |
- NULL, |
- &content_type, |
- NULL)); |
- EXPECT_STREQ(content_type, _T("text/plain")); |
- CString server_header; |
- EXPECT_SUCCEEDED(http_client_->QueryHeadersString(request_handle, |
- WINHTTP_QUERY_SERVER, |
- NULL, |
- &server_header, |
- NULL)); |
- CString response; |
- DWORD size = 0; |
- do { |
- // Use ReadData to determine when a response has been completely read. |
- // Always allocate a buffer for ReadData even though QueryDataAvailable |
- // might return 0 bytes available. |
- ASSERT_SUCCEEDED(http_client_->QueryDataAvailable(request_handle, &size)); |
- std::vector<uint8> buf(size + 1); |
- ASSERT_SUCCEEDED(http_client_->ReadData(request_handle, |
- &buf.front(), |
- buf.size(), |
- &size)); |
- buf.resize(size); |
- if (size) { |
- response += CString(reinterpret_cast<char*>(&buf.front()), buf.size()); |
- } |
- } while (size > 0); |
- |
- // Compare a little bit of the body. |
- response.Truncate(10); |
- ASSERT_STREQ(response, _T("User-agent")); |
- |
- ASSERT_SUCCEEDED(http_client_->Close(request_handle)); |
- ASSERT_SUCCEEDED(http_client_->Close(connection_handle)); |
- ASSERT_SUCCEEDED(http_client_->Close(session_handle)); |
-} |
- |
-TEST_F(HttpClientTest, Get) { |
- if (IsTestRunByLocalSystem()) { |
- return; |
- } |
- |
- GetUrl(kTestUrlGet, false); |
-} |
- |
-TEST_F(HttpClientTest, SecureGet) { |
- if (IsTestRunByLocalSystem()) { |
- return; |
- } |
- |
- GetUrl(kTestSecureUrlGet, false); |
-} |
- |
-TEST_F(HttpClientTest, ProxyGet) { |
- GetUrl(kTestUrlGet, true); |
-} |
- |
-TEST_F(HttpClientTest, ProxySecureGet) { |
- GetUrl(kTestSecureUrlGet, true); |
-} |
- |
-TEST_F(HttpClientTest, BuildRequestHeader) { |
- ASSERT_STREQ(HttpClient::BuildRequestHeader(_T("foo"), _T("bar")), |
- _T("foo: bar\r\n")); |
-} |
- |
-TEST_F(HttpClientTest, GetStatusCodeClass) { |
- EXPECT_EQ(HttpClient::GetStatusCodeClass(HTTP_STATUS_CONTINUE), |
- HttpClient::STATUS_CODE_INFORMATIONAL); |
- |
- EXPECT_EQ(HttpClient::GetStatusCodeClass(HTTP_STATUS_OK), |
- HttpClient::STATUS_CODE_SUCCESSFUL); |
- |
- EXPECT_EQ(HttpClient::GetStatusCodeClass(HTTP_STATUS_PARTIAL_CONTENT), |
- HttpClient::STATUS_CODE_SUCCESSFUL); |
- |
- EXPECT_EQ(HttpClient::GetStatusCodeClass(HTTP_STATUS_AMBIGUOUS), |
- HttpClient::STATUS_CODE_REDIRECTION); |
- |
- EXPECT_EQ(HttpClient::GetStatusCodeClass(HTTP_STATUS_REDIRECT), |
- HttpClient::STATUS_CODE_REDIRECTION); |
- |
- EXPECT_EQ(HttpClient::GetStatusCodeClass(HTTP_STATUS_BAD_REQUEST), |
- HttpClient::STATUS_CODE_CLIENT_ERROR); |
- |
- EXPECT_EQ(HttpClient::GetStatusCodeClass(HTTP_STATUS_SERVICE_UNAVAIL), |
- HttpClient::STATUS_CODE_SERVER_ERROR); |
-} |
- |
-TEST_F(HttpClientTest, CrackUrl) { |
- CString scheme, server, path, query; |
- int port = 0; |
- ASSERT_SUCCEEDED(http_client_->CrackUrl(_T("http://host/path?query"), |
- 0, |
- &scheme, |
- &server, |
- &port, |
- &path, |
- &query)); |
- ASSERT_STREQ(scheme, _T("http")); |
- ASSERT_STREQ(server, _T("host")); |
- ASSERT_EQ(port, INTERNET_DEFAULT_HTTP_PORT); |
- ASSERT_STREQ(path, _T("/path")); |
- ASSERT_STREQ(query, _T("?query")); |
- |
- ASSERT_SUCCEEDED(http_client_->CrackUrl(_T("http://host"), |
- 0, |
- NULL, |
- NULL, |
- NULL, |
- &path, |
- &query)); |
- ASSERT_STREQ(path, _T("")); |
- ASSERT_STREQ(query, _T("")); |
-} |
- |
-} // namespace omaha |
- |