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: chrome/browser/local_discovery/privet_confirm_api_flow_unittest.cc

Issue 298883012: Added GetURL, GetOAuthScope, GetExtraRequestHeaders into GCDBaseApiFlow::Delegate. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/bind.h" 5 #include "base/bind.h"
6 #include "base/message_loop/message_loop.h" 6 #include "base/message_loop/message_loop.h"
7 #include "chrome/browser/local_discovery/privet_confirm_api_flow.h" 7 #include "chrome/browser/local_discovery/privet_confirm_api_flow.h"
8 #include "content/public/test/test_browser_thread.h" 8 #include "content/public/test/test_browser_thread.h"
9 #include "google_apis/gaia/fake_oauth2_token_service.h" 9 #include "google_apis/gaia/fake_oauth2_token_service.h"
10 #include "google_apis/gaia/google_service_auth_error.h" 10 #include "google_apis/gaia/google_service_auth_error.h"
(...skipping 16 matching lines...) Expand all
27 "}"; 27 "}";
28 28
29 const char kFailedConfirmResponse[] = "{" 29 const char kFailedConfirmResponse[] = "{"
30 " \"success\": false" 30 " \"success\": false"
31 "}"; 31 "}";
32 32
33 const char kFailedConfirmResponseBadJson[] = "[" 33 const char kFailedConfirmResponseBadJson[] = "["
34 " \"success\"" 34 " \"success\""
35 "]"; 35 "]";
36 36
37 const char kGCDConfirmResponse[] =
38 "{"
39 " \"kind\": \"clouddevices#registrationTicket\""
40 "}";
41
42 const char kAccountId[] = "account_id"; 37 const char kAccountId[] = "account_id";
43 38
44 class MockableConfirmCallback { 39 class MockableConfirmCallback {
45 public: 40 public:
46 MOCK_METHOD1(ConfirmCallback, void(GCDBaseApiFlow::Status)); 41 MOCK_METHOD1(ConfirmCallback, void(GCDBaseApiFlow::Status));
47 42
48 PrivetConfirmApiCallFlow::ResponseCallback callback() { 43 PrivetConfirmApiCallFlow::ResponseCallback callback() {
49 return base::Bind(&MockableConfirmCallback::ConfirmCallback, 44 return base::Bind(&MockableConfirmCallback::ConfirmCallback,
50 base::Unretained(this)); 45 base::Unretained(this));
51 } 46 }
(...skipping 22 matching lines...) Expand all
74 net::TestURLFetcherFactory fetcher_factory_; 69 net::TestURLFetcherFactory fetcher_factory_;
75 FakeOAuth2TokenService token_service_; 70 FakeOAuth2TokenService token_service_;
76 MockableConfirmCallback callback_; 71 MockableConfirmCallback callback_;
77 std::string account_id_; 72 std::string account_id_;
78 }; 73 };
79 74
80 TEST_F(PrivetConfirmApiFlowTest, SuccessOAuth2) { 75 TEST_F(PrivetConfirmApiFlowTest, SuccessOAuth2) {
81 PrivetConfirmApiCallFlow confirm_flow(request_context_.get(), 76 PrivetConfirmApiCallFlow confirm_flow(request_context_.get(),
82 &token_service_, 77 &token_service_,
83 account_id_, 78 account_id_,
84 true,
85 "SomeToken", 79 "SomeToken",
86 callback_.callback()); 80 callback_.callback());
87 GCDBaseApiFlow* cloudprint_flow = confirm_flow.GetBaseApiFlowForTests(); 81 GCDBaseApiFlow* cloudprint_flow = confirm_flow.GetBaseApiFlowForTests();
88 82
89 confirm_flow.Start(); 83 confirm_flow.Start();
90 84
91 cloudprint_flow->OnGetTokenSuccess(NULL, "SomeToken", base::Time()); 85 cloudprint_flow->OnGetTokenSuccess(NULL, "SomeToken", base::Time());
92 net::TestURLFetcher* fetcher = fetcher_factory_.GetFetcherByID(0); 86 net::TestURLFetcher* fetcher = fetcher_factory_.GetFetcherByID(0);
93 87
94 EXPECT_EQ(GURL("https://www.google.com/cloudprint/confirm?token=SomeToken"), 88 EXPECT_EQ(GURL("https://www.google.com/cloudprint/confirm?token=SomeToken"),
(...skipping 15 matching lines...) Expand all
110 104
111 EXPECT_CALL(callback_, ConfirmCallback(GCDBaseApiFlow::SUCCESS)); 105 EXPECT_CALL(callback_, ConfirmCallback(GCDBaseApiFlow::SUCCESS));
112 106
113 fetcher->delegate()->OnURLFetchComplete(fetcher); 107 fetcher->delegate()->OnURLFetchComplete(fetcher);
114 } 108 }
115 109
116 TEST_F(PrivetConfirmApiFlowTest, BadToken) { 110 TEST_F(PrivetConfirmApiFlowTest, BadToken) {
117 PrivetConfirmApiCallFlow confirm_flow(request_context_.get(), 111 PrivetConfirmApiCallFlow confirm_flow(request_context_.get(),
118 &token_service_, 112 &token_service_,
119 account_id_, 113 account_id_,
120 true,
121 "SomeCloudprintToken", 114 "SomeCloudprintToken",
122 callback_.callback()); 115 callback_.callback());
123 116
124 confirm_flow.Start(); 117 confirm_flow.Start();
125 118
126 GCDBaseApiFlow* cloudprint_flow = confirm_flow.GetBaseApiFlowForTests(); 119 GCDBaseApiFlow* cloudprint_flow = confirm_flow.GetBaseApiFlowForTests();
127 120
128 EXPECT_CALL(callback_, ConfirmCallback(GCDBaseApiFlow::ERROR_TOKEN)); 121 EXPECT_CALL(callback_, ConfirmCallback(GCDBaseApiFlow::ERROR_TOKEN));
129 cloudprint_flow->OnGetTokenFailure(NULL, GoogleServiceAuthError( 122 cloudprint_flow->OnGetTokenFailure(NULL, GoogleServiceAuthError(
130 GoogleServiceAuthError::USER_NOT_SIGNED_UP)); 123 GoogleServiceAuthError::USER_NOT_SIGNED_UP));
131 } 124 }
132 125
133 TEST_F(PrivetConfirmApiFlowTest, ServerFailure) { 126 TEST_F(PrivetConfirmApiFlowTest, ServerFailure) {
134 PrivetConfirmApiCallFlow confirm_flow(request_context_.get(), 127 PrivetConfirmApiCallFlow confirm_flow(request_context_.get(),
135 &token_service_, 128 &token_service_,
136 account_id_, 129 account_id_,
137 true,
138 "SomeToken", 130 "SomeToken",
139 callback_.callback()); 131 callback_.callback());
140 132
141 confirm_flow.Start(); 133 confirm_flow.Start();
142 134
143 GCDBaseApiFlow* cloudprint_flow = confirm_flow.GetBaseApiFlowForTests(); 135 GCDBaseApiFlow* cloudprint_flow = confirm_flow.GetBaseApiFlowForTests();
144 136
145 cloudprint_flow->OnGetTokenSuccess(NULL, "SomeToken", base::Time()); 137 cloudprint_flow->OnGetTokenSuccess(NULL, "SomeToken", base::Time());
146 net::TestURLFetcher* fetcher = fetcher_factory_.GetFetcherByID(0); 138 net::TestURLFetcher* fetcher = fetcher_factory_.GetFetcherByID(0);
147 139
148 EXPECT_EQ(GURL("https://www.google.com/cloudprint/confirm?token=SomeToken"), 140 EXPECT_EQ(GURL("https://www.google.com/cloudprint/confirm?token=SomeToken"),
149 fetcher->GetOriginalURL()); 141 fetcher->GetOriginalURL());
150 142
151 fetcher->SetResponseString(kFailedConfirmResponse); 143 fetcher->SetResponseString(kFailedConfirmResponse);
152 fetcher->set_status(net::URLRequestStatus(net::URLRequestStatus::SUCCESS, 144 fetcher->set_status(net::URLRequestStatus(net::URLRequestStatus::SUCCESS,
153 net::OK)); 145 net::OK));
154 fetcher->set_response_code(200); 146 fetcher->set_response_code(200);
155 147
156 EXPECT_CALL(callback_, ConfirmCallback(GCDBaseApiFlow::ERROR_FROM_SERVER)); 148 EXPECT_CALL(callback_, ConfirmCallback(GCDBaseApiFlow::ERROR_FROM_SERVER));
157 149
158 fetcher->delegate()->OnURLFetchComplete(fetcher); 150 fetcher->delegate()->OnURLFetchComplete(fetcher);
159 } 151 }
160 152
161 TEST_F(PrivetConfirmApiFlowTest, BadJson) { 153 TEST_F(PrivetConfirmApiFlowTest, BadJson) {
162 PrivetConfirmApiCallFlow confirm_flow(request_context_.get(), 154 PrivetConfirmApiCallFlow confirm_flow(request_context_.get(),
163 &token_service_, 155 &token_service_,
164 account_id_, 156 account_id_,
165 true,
166 "SomeToken", 157 "SomeToken",
167 callback_.callback()); 158 callback_.callback());
168 159
169 confirm_flow.Start(); 160 confirm_flow.Start();
170 161
171 GCDBaseApiFlow* cloudprint_flow = confirm_flow.GetBaseApiFlowForTests(); 162 GCDBaseApiFlow* cloudprint_flow = confirm_flow.GetBaseApiFlowForTests();
172 163
173 cloudprint_flow->OnGetTokenSuccess(NULL, "SomeToken", base::Time()); 164 cloudprint_flow->OnGetTokenSuccess(NULL, "SomeToken", base::Time());
174 net::TestURLFetcher* fetcher = fetcher_factory_.GetFetcherByID(0); 165 net::TestURLFetcher* fetcher = fetcher_factory_.GetFetcherByID(0);
175 166
176 EXPECT_EQ(GURL("https://www.google.com/cloudprint/confirm?token=SomeToken"), 167 EXPECT_EQ(GURL("https://www.google.com/cloudprint/confirm?token=SomeToken"),
177 fetcher->GetOriginalURL()); 168 fetcher->GetOriginalURL());
178 169
179 fetcher->SetResponseString(kFailedConfirmResponseBadJson); 170 fetcher->SetResponseString(kFailedConfirmResponseBadJson);
180 fetcher->set_status(net::URLRequestStatus( 171 fetcher->set_status(net::URLRequestStatus(
181 net::URLRequestStatus::SUCCESS, 172 net::URLRequestStatus::SUCCESS,
182 net::OK)); 173 net::OK));
183 fetcher->set_response_code(200); 174 fetcher->set_response_code(200);
184 175
185 EXPECT_CALL(callback_, 176 EXPECT_CALL(callback_,
186 ConfirmCallback(GCDBaseApiFlow::ERROR_MALFORMED_RESPONSE)); 177 ConfirmCallback(GCDBaseApiFlow::ERROR_MALFORMED_RESPONSE));
187 178
188 fetcher->delegate()->OnURLFetchComplete(fetcher); 179 fetcher->delegate()->OnURLFetchComplete(fetcher);
189 } 180 }
190 181
191 TEST_F(PrivetConfirmApiFlowTest, SuccessGCD) {
192 PrivetConfirmApiCallFlow confirm_flow(request_context_.get(),
193 &token_service_,
194 account_id_,
195 false,
196 "SomeGcdToken",
197 callback_.callback());
198 GCDBaseApiFlow* gcd_flow = confirm_flow.GetBaseApiFlowForTests();
199
200 confirm_flow.Start();
201
202 gcd_flow->OnGetTokenSuccess(NULL, "SomeToken", base::Time());
203 net::TestURLFetcher* fetcher = fetcher_factory_.GetFetcherByID(0);
204
205 EXPECT_EQ(GURL("https://www.googleapis.com/clouddevices/v1/"
206 "registrationTickets/SomeGcdToken"),
207 fetcher->GetOriginalURL());
208
209 EXPECT_EQ("{ \"userEmail\": \"me\" }", fetcher->upload_data());
210
211 net::HttpRequestHeaders headers;
212 fetcher->GetExtraRequestHeaders(&headers);
213 std::string oauth_header;
214 std::string proxy;
215 EXPECT_TRUE(headers.GetHeader("Authorization", &oauth_header));
216 EXPECT_EQ("Bearer SomeToken", oauth_header);
217 EXPECT_FALSE(headers.GetHeader("X-Cloudprint-Proxy", &proxy));
218
219 fetcher->SetResponseString(kGCDConfirmResponse);
220 fetcher->set_status(
221 net::URLRequestStatus(net::URLRequestStatus::SUCCESS, net::OK));
222 fetcher->set_response_code(200);
223
224 EXPECT_CALL(callback_, ConfirmCallback(GCDBaseApiFlow::SUCCESS));
225
226 fetcher->delegate()->OnURLFetchComplete(fetcher);
227 }
228
229 } // namespace 182 } // namespace
230 183
231 } // namespace local_discovery 184 } // namespace local_discovery
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698