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

Side by Side Diff: common/web_services_client_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 | « common/web_services_client.cc ('k') | common/webplugin_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 #include "base/scoped_ptr.h"
17 #include "omaha/base/const_addresses.h"
18 #include "omaha/base/scoped_any.h"
19 #include "omaha/base/scoped_ptr_address.h"
20 #include "omaha/base/string.h"
21 #include "omaha/base/vista_utils.h"
22 #include "omaha/common/config_manager.h"
23 #include "omaha/common/update_request.h"
24 #include "omaha/common/update_response.h"
25 #include "omaha/common/web_services_client.h"
26 #include "omaha/net/network_request.h"
27 #include "omaha/testing/unit_test.h"
28
29 using ::testing::_;
30
31 namespace omaha {
32
33 // TODO(omaha): test the machine case.
34
35 class WebServicesClientTest : public testing::Test {
36 protected:
37 virtual void SetUp() {
38 EXPECT_HRESULT_SUCCEEDED(
39 ConfigManager::Instance()->GetUpdateCheckUrl(&update_check_url_));
40
41 web_service_client_.reset(new WebServicesClient(false));
42
43 update_request_.reset(xml::UpdateRequest::Create(false,
44 _T("unittest_sessionid"),
45 _T("unittest_instsource"),
46 CString()));
47 update_response_.reset(xml::UpdateResponse::Create());
48 }
49
50 virtual void TearDown() {
51 web_service_client_.reset();
52 }
53
54 NetworkRequest* network_request() const {
55 return web_service_client_->network_request();
56 }
57
58 CString update_check_url_;
59
60 scoped_ptr<WebServicesClient> web_service_client_;
61 scoped_ptr<xml::UpdateRequest> update_request_;
62 scoped_ptr<xml::UpdateResponse> update_response_;
63 };
64
65 TEST_F(WebServicesClientTest, Send) {
66 EXPECT_HRESULT_SUCCEEDED(web_service_client_->Initialize(update_check_url_,
67 HeadersVector(),
68 false));
69
70 // Test sending a user update check request.
71 EXPECT_HRESULT_SUCCEEDED(web_service_client_->Send(update_request_.get(),
72 update_response_.get()));
73 EXPECT_TRUE(web_service_client_->is_http_success());
74
75 xml::response::Response response(update_response_->response());
76 EXPECT_STREQ(_T("3.0"), response.protocol);
77
78 NetworkRequest* network_request(network_request());
79
80 CString cookie;
81 EXPECT_HRESULT_FAILED(network_request->QueryHeadersString(
82 WINHTTP_QUERY_FLAG_REQUEST_HEADERS | WINHTTP_QUERY_COOKIE,
83 WINHTTP_HEADER_NAME_BY_INDEX,
84 &cookie));
85 EXPECT_TRUE(cookie.IsEmpty());
86
87 CString etag;
88 EXPECT_HRESULT_FAILED(network_request->QueryHeadersString(
89 WINHTTP_QUERY_ETAG, WINHTTP_HEADER_NAME_BY_INDEX, &etag));
90 EXPECT_TRUE(etag.IsEmpty());
91 }
92
93 TEST_F(WebServicesClientTest, SendUsingCup) {
94 EXPECT_HRESULT_SUCCEEDED(web_service_client_->Initialize(update_check_url_,
95 HeadersVector(),
96 true));
97
98 // Test sending a user update check request.
99 EXPECT_HRESULT_SUCCEEDED(web_service_client_->Send(update_request_.get(),
100 update_response_.get()));
101 EXPECT_TRUE(web_service_client_->is_http_success());
102
103 xml::response::Response response(update_response_->response());
104 EXPECT_STREQ(_T("3.0"), response.protocol);
105
106 NetworkRequest* network_request(network_request());
107
108 CString no_request_age_header;
109 network_request->QueryHeadersString(
110 WINHTTP_QUERY_CUSTOM | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
111 _T("X-RequestAge"),
112 &no_request_age_header);
113
114 EXPECT_STREQ(_T(""), no_request_age_header);
115
116 // A CUP transaction has either a request or a response CUP cookie and
117 // the ETag response header.
118 CString request_cookie;
119 network_request->QueryHeadersString(
120 WINHTTP_QUERY_COOKIE | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
121 WINHTTP_HEADER_NAME_BY_INDEX,
122 &request_cookie);
123 const bool has_cup_request_cookie = request_cookie.Find(_T("c=")) != -1;
124
125 CString response_cookie;
126 network_request->QueryHeadersString(WINHTTP_QUERY_SET_COOKIE,
127 WINHTTP_HEADER_NAME_BY_INDEX,
128 &response_cookie);
129 const bool has_cup_response_cookie = response_cookie.Find(_T("c=")) != -1;
130
131 EXPECT_TRUE(has_cup_request_cookie || has_cup_response_cookie);
132
133 CString etag;
134 EXPECT_HRESULT_SUCCEEDED(network_request->QueryHeadersString(
135 WINHTTP_QUERY_ETAG, WINHTTP_HEADER_NAME_BY_INDEX, &etag));
136 EXPECT_FALSE(etag.IsEmpty());
137 }
138
139 TEST_F(WebServicesClientTest, SendForcingHttps) {
140 // Skips the test if the update check URL is not https.
141 if (!String_StartsWith(update_check_url_, kHttpsProtoScheme, true)) {
142 return;
143 }
144
145 EXPECT_HRESULT_SUCCEEDED(web_service_client_->Initialize(update_check_url_,
146 HeadersVector(),
147 true));
148
149 EXPECT_TRUE(update_request_->IsEmpty());
150
151 // Adds an application with non-empty tt_token to the update request.
152 // This should prevent the network stack from replacing https with
153 // CUP protocol.
154 xml::request::App app;
155 app.app_id = _T("{21CD0965-0B0E-47cf-B421-2D191C16C0E2}");
156 app.iid = _T("{00000000-0000-0000-0000-000000000000}");
157 app.update_check.is_valid = true;
158 app.update_check.tt_token = _T("Test TT token");
159 update_request_->AddApp(app);
160
161 EXPECT_FALSE(update_request_->IsEmpty());
162 EXPECT_TRUE(update_request_->has_tt_token());
163
164 EXPECT_HRESULT_SUCCEEDED(web_service_client_->Send(update_request_.get(),
165 update_response_.get()));
166 EXPECT_TRUE(web_service_client_->is_http_success());
167
168 // Do a couple of sanity checks on the parsing of the response.
169 xml::response::Response response(update_response_->response());
170 EXPECT_STREQ(_T("3.0"), response.protocol);
171 ASSERT_EQ(1, response.apps.size());
172 EXPECT_STREQ(_T("error-unknownApplication"), response.apps[0].status);
173 }
174
175 TEST_F(WebServicesClientTest, SendWithCustomHeader) {
176 HeadersVector headers;
177 headers.push_back(std::make_pair(_T("X-RequestAge"), _T("200")));
178
179 EXPECT_HRESULT_SUCCEEDED(web_service_client_->Initialize(update_check_url_,
180 headers,
181 true));
182
183 EXPECT_HRESULT_SUCCEEDED(web_service_client_->Send(update_request_.get(),
184 update_response_.get()));
185 EXPECT_TRUE(web_service_client_->is_http_success());
186
187 xml::response::Response response(update_response_->response());
188 EXPECT_STREQ(_T("3.0"), response.protocol);
189
190 NetworkRequest* network_request(network_request());
191
192 CString request_age_header;
193 network_request->QueryHeadersString(
194 WINHTTP_QUERY_CUSTOM | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
195 _T("X-RequestAge"),
196 &request_age_header);
197
198 EXPECT_STREQ(_T("200"), request_age_header);
199 }
200
201 TEST_F(WebServicesClientTest, SendString) {
202 EXPECT_HRESULT_SUCCEEDED(web_service_client_->Initialize(update_check_url_,
203 HeadersVector(),
204 false));
205
206 // Test sending a user update check request.
207 CString request_string =
208 _T("<?xml version=\"1.0\" encoding=\"UTF-8\"?>")
209 _T("<request protocol=\"3.0\" testsource=\"dev\"></request>");
210 scoped_ptr<xml::UpdateResponse> response(xml::UpdateResponse::Create());
211 EXPECT_HRESULT_SUCCEEDED(web_service_client_->SendString(&request_string,
212 response.get()));
213 EXPECT_TRUE(web_service_client_->is_http_success());
214 }
215
216 TEST_F(WebServicesClientTest, SendStringWithCustomHeader) {
217 HeadersVector headers;
218 headers.push_back(std::make_pair(_T("X-FooBar"), _T("424")));
219
220 EXPECT_HRESULT_SUCCEEDED(web_service_client_->Initialize(update_check_url_,
221 headers,
222 false));
223
224 // Test sending a user update check request.
225 CString request_string =
226 _T("<?xml version=\"1.0\" encoding=\"UTF-8\"?>")
227 _T("<request protocol=\"3.0\" testsource=\"dev\"></request>");
228 scoped_ptr<xml::UpdateResponse> response(xml::UpdateResponse::Create());
229 EXPECT_HRESULT_SUCCEEDED(web_service_client_->SendString(&request_string,
230 response.get()));
231 EXPECT_TRUE(web_service_client_->is_http_success());
232
233 NetworkRequest* network_request(network_request());
234
235 CString foobar_header;
236 network_request->QueryHeadersString(
237 WINHTTP_QUERY_CUSTOM | WINHTTP_QUERY_FLAG_REQUEST_HEADERS,
238 _T("X-FooBar"),
239 &foobar_header);
240
241 EXPECT_STREQ(_T("424"), foobar_header);
242 }
243
244 } // namespace omaha
245
OLDNEW
« no previous file with comments | « common/web_services_client.cc ('k') | common/webplugin_utils.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698