Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(634)

Side by Side Diff: net/cup_request_unittest.cc

Issue 624713003: Keep only base/extractor.[cc|h]. (Closed) Base URL: https://chromium.googlesource.com/external/omaha.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/cup_request.cc ('k') | net/cup_utils.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2008-2010 Google Inc.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 // ========================================================================
15
16 // This unit test is hardcoded to run against production servers only.
17
18 #include <iostream>
19 #include <vector>
20 #include "base/scoped_ptr.h"
21 #include "omaha/base/constants.h"
22 #include "omaha/base/vistautil.h"
23 #include "omaha/net/cup_request.h"
24 #include "omaha/net/network_config.h"
25 #include "omaha/net/simple_request.h"
26 #include "omaha/net/urlmon_request.h"
27 #include "omaha/testing/unit_test.h"
28
29 namespace omaha {
30
31 const TCHAR* const kGetUrl =
32 _T("http://tools.google.com/service/update2/id");
33 const TCHAR* const kGetUrlNoResponseBody =
34 _T("http://tools.google.com/service/update2/nil");
35 const TCHAR* const kPostUrl =
36 _T("http://tools.google.com/service/update2");
37 const uint8 kRequestBuffer[] = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><o:gup date xmlns:o=\"http://www.google.com/update2/request\" protocol=\"2.0\" version= \"1.2.1.0\" ismachine=\"1\" testsource=\"dev\"><o:os platform=\"win\" version=\" 5.1\" sp=\"Service Pack 2\"/><o:app appid=\"{52820187-5605-4C18-AA51-8BD0A1209C8 C}\" version=\"1.1.1.3\" lang=\"abc\" client=\"{0AF52D61-9958-4fea-9B29-CDD9DCDB B145}\" iid=\"{F723495F-8ACF-4746-8240-643741C797B5}\"><o:event eventtype=\"1\" eventresult=\"1\" errorcode=\"0\" previousversion=\"1.0.0.0\"/></o:app></o:gupda te>"; // NOLINT
38
39 class CupRequestTest : public testing::Test {
40 protected:
41 CupRequestTest() {}
42
43 static void SetUpTestCase() {
44 NetworkConfig* network_config = NULL;
45 EXPECT_HRESULT_SUCCEEDED(
46 NetworkConfigManager::Instance().GetUserNetworkConfig(&network_config));
47 network_config->SetCupCredentials(NULL);
48
49 // For debugging purposes, try FF configuration first.
50 network_config->Clear();
51 network_config->Add(new FirefoxProxyDetector());
52 EXPECT_HRESULT_SUCCEEDED(network_config->Detect());
53 }
54
55 static void TearDownTestCase() {
56 NetworkConfig* network_config = NULL;
57 EXPECT_HRESULT_SUCCEEDED(
58 NetworkConfigManager::Instance().GetUserNetworkConfig(&network_config));
59 network_config->SetCupCredentials(NULL);
60 network_config->Clear();
61 }
62
63 void DoRequest(HttpRequestInterface* contained_request,
64 const CString& url,
65 const uint8* request_buffer,
66 size_t request_buffer_lenght) {
67 scoped_ptr<CupRequest> http_request(new CupRequest(contained_request));
68
69 NetworkConfig* network_config = NULL;
70 EXPECT_HRESULT_SUCCEEDED(
71 NetworkConfigManager::Instance().GetUserNetworkConfig(&network_config));
72 network_config->SetCupCredentials(NULL);
73
74 // For debugging purposes, try FF configuration first.
75 network_config->Clear();
76 network_config->Add(new FirefoxProxyDetector());
77 EXPECT_HRESULT_SUCCEEDED(network_config->Detect());
78
79 // This will use Firefox or direct connection if FF is not installed.
80 std::vector<ProxyConfig> proxy_configurations(
81 network_config->GetConfigurations());
82 proxy_configurations.push_back(ProxyConfig());
83
84 // Clear CUP credentials.
85 network_config->SetCupCredentials(NULL);
86
87 HINTERNET handle = network_config->session().session_handle;
88 http_request->set_session_handle(handle);
89 http_request->set_proxy_configuration(proxy_configurations[0]);
90 http_request->set_url(url);
91 if (request_buffer) {
92 http_request->set_request_buffer(request_buffer, request_buffer_lenght);
93 }
94
95 // First request goes with a fresh set of client credentials.
96 EXPECT_HRESULT_SUCCEEDED(http_request->Send());
97 int http_status = http_request->GetHttpStatusCode();
98 EXPECT_TRUE(http_status == HTTP_STATUS_OK ||
99 http_status == HTTP_STATUS_PARTIAL_CONTENT);
100 std::vector<uint8> response(http_request->GetResponse());
101
102 // Second request goes with cached client credentials.
103 EXPECT_HRESULT_SUCCEEDED(http_request->Send());
104 http_status = http_request->GetHttpStatusCode();
105 EXPECT_TRUE(http_status == HTTP_STATUS_OK ||
106 http_status == HTTP_STATUS_PARTIAL_CONTENT);
107 response = http_request->GetResponse();
108
109 // After each test run we should have some {sk, c} persisted in the
110 // registry. The CUP credentials are written back when the CUP request
111 // that has created them is destroyed.
112 http_request.reset();
113 CupCredentials cup_creds;
114 EXPECT_HRESULT_SUCCEEDED(network_config->GetCupCredentials(&cup_creds));
115 EXPECT_FALSE(cup_creds.sk.empty());
116 EXPECT_FALSE(cup_creds.c.IsEmpty());
117
118 network_config->SetCupCredentials(NULL);
119 EXPECT_HRESULT_FAILED(network_config->GetCupCredentials(&cup_creds));
120 }
121 };
122
123 TEST_F(CupRequestTest, GetSimpleRequest) {
124 if (IsTestRunByLocalSystem()) {
125 return;
126 }
127
128 DoRequest(new SimpleRequest, kGetUrl, NULL, 0);
129 DoRequest(new SimpleRequest, kGetUrlNoResponseBody, NULL, 0);
130 }
131
132 TEST_F(CupRequestTest, GetUrlmonRequest) {
133 DoRequest(new UrlmonRequest, kGetUrl, NULL, 0);
134 DoRequest(new UrlmonRequest, kGetUrlNoResponseBody, NULL, 0);
135 }
136
137 TEST_F(CupRequestTest, PostSimpleRequest) {
138 if (IsTestRunByLocalSystem()) {
139 return;
140 }
141
142 DoRequest(new SimpleRequest, kPostUrl,
143 kRequestBuffer, arraysize(kRequestBuffer) - 1);
144 }
145
146 TEST_F(CupRequestTest, PostUrlmonRequest) {
147 DoRequest(new UrlmonRequest, kPostUrl,
148 kRequestBuffer, arraysize(kRequestBuffer) - 1);
149 }
150
151 } // namespace omaha
152
OLDNEW
« no previous file with comments | « net/cup_request.cc ('k') | net/cup_utils.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698