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

Side by Side Diff: sync/notifier/gcm_network_channel_unittest.cc

Issue 270873002: Extract GCMClient data types into separate gcm_types.h (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Reupload 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
« no previous file with comments | « sync/notifier/gcm_network_channel_delegate.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/run_loop.h" 5 #include "base/run_loop.h"
6 #include "base/strings/string_util.h" 6 #include "base/strings/string_util.h"
7 #include "google_apis/gaia/google_service_auth_error.h" 7 #include "google_apis/gaia/google_service_auth_error.h"
8 #include "net/url_request/test_url_fetcher_factory.h" 8 #include "net/url_request/test_url_fetcher_factory.h"
9 #include "net/url_request/url_request_test_util.h" 9 #include "net/url_request/url_request_test_util.h"
10 #include "sync/notifier/gcm_network_channel.h" 10 #include "sync/notifier/gcm_network_channel.h"
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after
242 EXPECT_EQ(TRANSIENT_INVALIDATION_ERROR, get_last_invalidator_state()); 242 EXPECT_EQ(TRANSIENT_INVALIDATION_ERROR, get_last_invalidator_state());
243 EXPECT_FALSE(delegate()->message_callback.is_null()); 243 EXPECT_FALSE(delegate()->message_callback.is_null());
244 url_fetcher_factory()->SetFakeResponse(GURL("http://test.url.com"), 244 url_fetcher_factory()->SetFakeResponse(GURL("http://test.url.com"),
245 std::string(), 245 std::string(),
246 net::HTTP_NO_CONTENT, 246 net::HTTP_NO_CONTENT,
247 net::URLRequestStatus::SUCCESS); 247 net::URLRequestStatus::SUCCESS);
248 248
249 // After construction GCMNetworkChannel should have called Register. 249 // After construction GCMNetworkChannel should have called Register.
250 EXPECT_FALSE(delegate()->register_callback.is_null()); 250 EXPECT_FALSE(delegate()->register_callback.is_null());
251 // Return valid registration id. 251 // Return valid registration id.
252 delegate()->register_callback.Run("registration.id", gcm::GCMClient::SUCCESS); 252 delegate()->register_callback.Run("registration.id", gcm::RESULT_SUCCESS);
253 253
254 network_channel()->SendMessage("abra.cadabra"); 254 network_channel()->SendMessage("abra.cadabra");
255 // SendMessage should have triggered RequestToken. No HTTP request should be 255 // SendMessage should have triggered RequestToken. No HTTP request should be
256 // started yet. 256 // started yet.
257 EXPECT_FALSE(delegate()->request_token_callback.is_null()); 257 EXPECT_FALSE(delegate()->request_token_callback.is_null());
258 EXPECT_EQ(url_fetchers_created_count(), 0); 258 EXPECT_EQ(url_fetchers_created_count(), 0);
259 // Return valid access token. This should trigger HTTP request. 259 // Return valid access token. This should trigger HTTP request.
260 delegate()->request_token_callback.Run( 260 delegate()->request_token_callback.Run(
261 GoogleServiceAuthError::AuthErrorNone(), "access.token"); 261 GoogleServiceAuthError::AuthErrorNone(), "access.token");
262 RunLoopUntilIdle(); 262 RunLoopUntilIdle();
263 EXPECT_EQ(url_fetchers_created_count(), 1); 263 EXPECT_EQ(url_fetchers_created_count(), 1);
264 264
265 // Return another access token. Message should be cleared by now and shouldn't 265 // Return another access token. Message should be cleared by now and shouldn't
266 // be sent. 266 // be sent.
267 delegate()->request_token_callback.Run( 267 delegate()->request_token_callback.Run(
268 GoogleServiceAuthError::AuthErrorNone(), "access.token2"); 268 GoogleServiceAuthError::AuthErrorNone(), "access.token2");
269 RunLoopUntilIdle(); 269 RunLoopUntilIdle();
270 EXPECT_EQ(url_fetchers_created_count(), 1); 270 EXPECT_EQ(url_fetchers_created_count(), 1);
271 EXPECT_EQ(INVALIDATIONS_ENABLED, get_last_invalidator_state()); 271 EXPECT_EQ(INVALIDATIONS_ENABLED, get_last_invalidator_state());
272 } 272 }
273 273
274 TEST_F(GCMNetworkChannelTest, FailedRegister) { 274 TEST_F(GCMNetworkChannelTest, FailedRegister) {
275 // After construction GCMNetworkChannel should have called Register. 275 // After construction GCMNetworkChannel should have called Register.
276 EXPECT_FALSE(delegate()->register_callback.is_null()); 276 EXPECT_FALSE(delegate()->register_callback.is_null());
277 EXPECT_EQ(1, delegate()->register_call_count_); 277 EXPECT_EQ(1, delegate()->register_call_count_);
278 // Return transient error from Register call. 278 // Return transient error from Register call.
279 delegate()->register_callback.Run("", gcm::GCMClient::NETWORK_ERROR); 279 delegate()->register_callback.Run("", gcm::RESULT_NETWORK_ERROR);
280 RunLoopUntilIdle(); 280 RunLoopUntilIdle();
281 // GcmNetworkChannel should have scheduled Register retry. 281 // GcmNetworkChannel should have scheduled Register retry.
282 EXPECT_EQ(2, delegate()->register_call_count_); 282 EXPECT_EQ(2, delegate()->register_call_count_);
283 // Return persistent error from Register call. 283 // Return persistent error from Register call.
284 delegate()->register_callback.Run("", gcm::GCMClient::NOT_SIGNED_IN); 284 delegate()->register_callback.Run("", gcm::RESULT_NOT_SIGNED_IN);
285 RunLoopUntilIdle(); 285 RunLoopUntilIdle();
286 // GcmNetworkChannel should give up trying. 286 // GcmNetworkChannel should give up trying.
287 EXPECT_EQ(2, delegate()->register_call_count_); 287 EXPECT_EQ(2, delegate()->register_call_count_);
288 288
289 network_channel()->SendMessage("abra.cadabra"); 289 network_channel()->SendMessage("abra.cadabra");
290 // SendMessage shouldn't trigger RequestToken. 290 // SendMessage shouldn't trigger RequestToken.
291 EXPECT_TRUE(delegate()->request_token_callback.is_null()); 291 EXPECT_TRUE(delegate()->request_token_callback.is_null());
292 EXPECT_EQ(0, url_fetchers_created_count()); 292 EXPECT_EQ(0, url_fetchers_created_count());
293 } 293 }
294 294
295 TEST_F(GCMNetworkChannelTest, RegisterFinishesAfterSendMessage) { 295 TEST_F(GCMNetworkChannelTest, RegisterFinishesAfterSendMessage) {
296 url_fetcher_factory()->SetFakeResponse(GURL("http://test.url.com"), 296 url_fetcher_factory()->SetFakeResponse(GURL("http://test.url.com"),
297 "", 297 "",
298 net::HTTP_NO_CONTENT, 298 net::HTTP_NO_CONTENT,
299 net::URLRequestStatus::SUCCESS); 299 net::URLRequestStatus::SUCCESS);
300 300
301 // After construction GCMNetworkChannel should have called Register. 301 // After construction GCMNetworkChannel should have called Register.
302 EXPECT_FALSE(delegate()->register_callback.is_null()); 302 EXPECT_FALSE(delegate()->register_callback.is_null());
303 303
304 network_channel()->SendMessage("abra.cadabra"); 304 network_channel()->SendMessage("abra.cadabra");
305 // SendMessage shouldn't trigger RequestToken. 305 // SendMessage shouldn't trigger RequestToken.
306 EXPECT_TRUE(delegate()->request_token_callback.is_null()); 306 EXPECT_TRUE(delegate()->request_token_callback.is_null());
307 EXPECT_EQ(url_fetchers_created_count(), 0); 307 EXPECT_EQ(url_fetchers_created_count(), 0);
308 308
309 // Return valid registration id. 309 // Return valid registration id.
310 delegate()->register_callback.Run("registration.id", gcm::GCMClient::SUCCESS); 310 delegate()->register_callback.Run("registration.id", gcm::RESULT_SUCCESS);
311 311
312 EXPECT_FALSE(delegate()->request_token_callback.is_null()); 312 EXPECT_FALSE(delegate()->request_token_callback.is_null());
313 EXPECT_EQ(url_fetchers_created_count(), 0); 313 EXPECT_EQ(url_fetchers_created_count(), 0);
314 // Return valid access token. This should trigger HTTP request. 314 // Return valid access token. This should trigger HTTP request.
315 delegate()->request_token_callback.Run( 315 delegate()->request_token_callback.Run(
316 GoogleServiceAuthError::AuthErrorNone(), "access.token"); 316 GoogleServiceAuthError::AuthErrorNone(), "access.token");
317 RunLoopUntilIdle(); 317 RunLoopUntilIdle();
318 EXPECT_EQ(url_fetchers_created_count(), 1); 318 EXPECT_EQ(url_fetchers_created_count(), 1);
319 } 319 }
320 320
321 TEST_F(GCMNetworkChannelTest, RequestTokenFailure) { 321 TEST_F(GCMNetworkChannelTest, RequestTokenFailure) {
322 // After construction GCMNetworkChannel should have called Register. 322 // After construction GCMNetworkChannel should have called Register.
323 EXPECT_FALSE(delegate()->register_callback.is_null()); 323 EXPECT_FALSE(delegate()->register_callback.is_null());
324 // Return valid registration id. 324 // Return valid registration id.
325 delegate()->register_callback.Run("registration.id", gcm::GCMClient::SUCCESS); 325 delegate()->register_callback.Run("registration.id", gcm::RESULT_SUCCESS);
326 326
327 network_channel()->SendMessage("abra.cadabra"); 327 network_channel()->SendMessage("abra.cadabra");
328 // SendMessage should have triggered RequestToken. No HTTP request should be 328 // SendMessage should have triggered RequestToken. No HTTP request should be
329 // started yet. 329 // started yet.
330 EXPECT_FALSE(delegate()->request_token_callback.is_null()); 330 EXPECT_FALSE(delegate()->request_token_callback.is_null());
331 EXPECT_EQ(url_fetchers_created_count(), 0); 331 EXPECT_EQ(url_fetchers_created_count(), 0);
332 // RequestToken returns failure. 332 // RequestToken returns failure.
333 delegate()->request_token_callback.Run( 333 delegate()->request_token_callback.Run(
334 GoogleServiceAuthError::FromConnectionError(1), ""); 334 GoogleServiceAuthError::FromConnectionError(1), "");
335 335
336 // Should be no HTTP requests. 336 // Should be no HTTP requests.
337 EXPECT_EQ(url_fetchers_created_count(), 0); 337 EXPECT_EQ(url_fetchers_created_count(), 0);
338 } 338 }
339 339
340 TEST_F(GCMNetworkChannelTest, AuthErrorFromServer) { 340 TEST_F(GCMNetworkChannelTest, AuthErrorFromServer) {
341 // Setup fake response to return AUTH_ERROR. 341 // Setup fake response to return AUTH_ERROR.
342 url_fetcher_factory()->SetFakeResponse(GURL("http://test.url.com"), 342 url_fetcher_factory()->SetFakeResponse(GURL("http://test.url.com"),
343 "", 343 "",
344 net::HTTP_UNAUTHORIZED, 344 net::HTTP_UNAUTHORIZED,
345 net::URLRequestStatus::SUCCESS); 345 net::URLRequestStatus::SUCCESS);
346 346
347 // After construction GCMNetworkChannel should have called Register. 347 // After construction GCMNetworkChannel should have called Register.
348 EXPECT_FALSE(delegate()->register_callback.is_null()); 348 EXPECT_FALSE(delegate()->register_callback.is_null());
349 // Return valid registration id. 349 // Return valid registration id.
350 delegate()->register_callback.Run("registration.id", gcm::GCMClient::SUCCESS); 350 delegate()->register_callback.Run("registration.id", gcm::RESULT_SUCCESS);
351 351
352 network_channel()->SendMessage("abra.cadabra"); 352 network_channel()->SendMessage("abra.cadabra");
353 // SendMessage should have triggered RequestToken. No HTTP request should be 353 // SendMessage should have triggered RequestToken. No HTTP request should be
354 // started yet. 354 // started yet.
355 EXPECT_FALSE(delegate()->request_token_callback.is_null()); 355 EXPECT_FALSE(delegate()->request_token_callback.is_null());
356 EXPECT_EQ(url_fetchers_created_count(), 0); 356 EXPECT_EQ(url_fetchers_created_count(), 0);
357 // Return valid access token. This should trigger HTTP request. 357 // Return valid access token. This should trigger HTTP request.
358 delegate()->request_token_callback.Run( 358 delegate()->request_token_callback.Run(
359 GoogleServiceAuthError::AuthErrorNone(), "access.token"); 359 GoogleServiceAuthError::AuthErrorNone(), "access.token");
360 RunLoopUntilIdle(); 360 RunLoopUntilIdle();
361 EXPECT_EQ(url_fetchers_created_count(), 1); 361 EXPECT_EQ(url_fetchers_created_count(), 1);
362 EXPECT_EQ(delegate()->invalidated_token, "access.token"); 362 EXPECT_EQ(delegate()->invalidated_token, "access.token");
363 } 363 }
364 364
365 // Following two tests are to check for memory leaks/crashes when Register and 365 // Following two tests are to check for memory leaks/crashes when Register and
366 // RequestToken don't complete by the teardown. 366 // RequestToken don't complete by the teardown.
367 TEST_F(GCMNetworkChannelTest, RegisterNeverCompletes) { 367 TEST_F(GCMNetworkChannelTest, RegisterNeverCompletes) {
368 network_channel()->SendMessage("abra.cadabra"); 368 network_channel()->SendMessage("abra.cadabra");
369 // Register should be called by now. Let's not complete and see what happens. 369 // Register should be called by now. Let's not complete and see what happens.
370 EXPECT_FALSE(delegate()->register_callback.is_null()); 370 EXPECT_FALSE(delegate()->register_callback.is_null());
371 } 371 }
372 372
373 TEST_F(GCMNetworkChannelTest, RequestTokenNeverCompletes) { 373 TEST_F(GCMNetworkChannelTest, RequestTokenNeverCompletes) {
374 network_channel()->SendMessage("abra.cadabra"); 374 network_channel()->SendMessage("abra.cadabra");
375 // Return valid registration id. 375 // Return valid registration id.
376 delegate()->register_callback.Run("registration.id", gcm::GCMClient::SUCCESS); 376 delegate()->register_callback.Run("registration.id", gcm::RESULT_SUCCESS);
377 // RequestToken should be called by now. Let's not complete and see what 377 // RequestToken should be called by now. Let's not complete and see what
378 // happens. 378 // happens.
379 EXPECT_FALSE(delegate()->request_token_callback.is_null()); 379 EXPECT_FALSE(delegate()->request_token_callback.is_null());
380 } 380 }
381 381
382 TEST_F(GCMNetworkChannelTest, Base64EncodeDecode) { 382 TEST_F(GCMNetworkChannelTest, Base64EncodeDecode) {
383 std::string input; 383 std::string input;
384 std::string plain; 384 std::string plain;
385 std::string base64; 385 std::string base64;
386 // Empty string. 386 // Empty string.
(...skipping 20 matching lines...) Expand all
407 } 407 }
408 408
409 TEST_F(GCMNetworkChannelTest, TransientError) { 409 TEST_F(GCMNetworkChannelTest, TransientError) {
410 EXPECT_FALSE(delegate()->message_callback.is_null()); 410 EXPECT_FALSE(delegate()->message_callback.is_null());
411 // POST will fail. 411 // POST will fail.
412 url_fetcher_factory()->SetFakeResponse(GURL("http://test.url.com"), 412 url_fetcher_factory()->SetFakeResponse(GURL("http://test.url.com"),
413 std::string(), 413 std::string(),
414 net::HTTP_SERVICE_UNAVAILABLE, 414 net::HTTP_SERVICE_UNAVAILABLE,
415 net::URLRequestStatus::SUCCESS); 415 net::URLRequestStatus::SUCCESS);
416 416
417 delegate()->register_callback.Run("registration.id", gcm::GCMClient::SUCCESS); 417 delegate()->register_callback.Run("registration.id", gcm::RESULT_SUCCESS);
418 418
419 network_channel()->SendMessage("abra.cadabra"); 419 network_channel()->SendMessage("abra.cadabra");
420 EXPECT_FALSE(delegate()->request_token_callback.is_null()); 420 EXPECT_FALSE(delegate()->request_token_callback.is_null());
421 delegate()->request_token_callback.Run( 421 delegate()->request_token_callback.Run(
422 GoogleServiceAuthError::AuthErrorNone(), "access.token"); 422 GoogleServiceAuthError::AuthErrorNone(), "access.token");
423 RunLoopUntilIdle(); 423 RunLoopUntilIdle();
424 EXPECT_EQ(url_fetchers_created_count(), 1); 424 EXPECT_EQ(url_fetchers_created_count(), 1);
425 // Failing HTTP POST should cause TRANSIENT_INVALIDATION_ERROR. 425 // Failing HTTP POST should cause TRANSIENT_INVALIDATION_ERROR.
426 EXPECT_EQ(TRANSIENT_INVALIDATION_ERROR, get_last_invalidator_state()); 426 EXPECT_EQ(TRANSIENT_INVALIDATION_ERROR, get_last_invalidator_state());
427 // Network change to CONNECTION_NONE shouldn't affect invalidator state. 427 // Network change to CONNECTION_NONE shouldn't affect invalidator state.
(...skipping 21 matching lines...) Expand all
449 EXPECT_TRUE(Base64DecodeURLSafe(parts[parts.size() - 1], &buffer)); 449 EXPECT_TRUE(Base64DecodeURLSafe(parts[parts.size() - 1], &buffer));
450 } 450 }
451 451
452 TEST_F(GCMNetworkChannelTest, EchoToken) { 452 TEST_F(GCMNetworkChannelTest, EchoToken) {
453 url_fetcher_factory()->SetFakeResponse(GURL("http://test.url.com"), 453 url_fetcher_factory()->SetFakeResponse(GURL("http://test.url.com"),
454 std::string(), 454 std::string(),
455 net::HTTP_OK, 455 net::HTTP_OK,
456 net::URLRequestStatus::SUCCESS); 456 net::URLRequestStatus::SUCCESS);
457 // After construction GCMNetworkChannel should have called Register. 457 // After construction GCMNetworkChannel should have called Register.
458 // Return valid registration id. 458 // Return valid registration id.
459 delegate()->register_callback.Run("registration.id", gcm::GCMClient::SUCCESS); 459 delegate()->register_callback.Run("registration.id", gcm::RESULT_SUCCESS);
460 460
461 network_channel()->SendMessage("abra.cadabra"); 461 network_channel()->SendMessage("abra.cadabra");
462 // Return valid access token. This should trigger HTTP request. 462 // Return valid access token. This should trigger HTTP request.
463 delegate()->request_token_callback.Run( 463 delegate()->request_token_callback.Run(
464 GoogleServiceAuthError::AuthErrorNone(), "access.token"); 464 GoogleServiceAuthError::AuthErrorNone(), "access.token");
465 RunLoopUntilIdle(); 465 RunLoopUntilIdle();
466 EXPECT_EQ(url_fetchers_created_count(), 1); 466 EXPECT_EQ(url_fetchers_created_count(), 1);
467 EXPECT_TRUE(get_last_echo_token().empty()); 467 EXPECT_TRUE(get_last_echo_token().empty());
468 468
469 // Trigger response. 469 // Trigger response.
(...skipping 15 matching lines...) Expand all
485 delegate()->request_token_callback.Run( 485 delegate()->request_token_callback.Run(
486 GoogleServiceAuthError::AuthErrorNone(), "access.token"); 486 GoogleServiceAuthError::AuthErrorNone(), "access.token");
487 RunLoopUntilIdle(); 487 RunLoopUntilIdle();
488 EXPECT_EQ(url_fetchers_created_count(), 3); 488 EXPECT_EQ(url_fetchers_created_count(), 3);
489 // Echo_token should be from second message. 489 // Echo_token should be from second message.
490 EXPECT_EQ("echo.token", get_last_echo_token()); 490 EXPECT_EQ("echo.token", get_last_echo_token());
491 } 491 }
492 #endif 492 #endif
493 493
494 } // namespace syncer 494 } // namespace syncer
OLDNEW
« no previous file with comments | « sync/notifier/gcm_network_channel_delegate.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698