OLD | NEW |
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 "components/gcm_driver/gcm_client_impl.h" | 5 #include "components/gcm_driver/gcm_client_impl.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include <memory> | 9 #include <memory> |
10 | 10 |
(...skipping 404 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
415 | 415 |
416 GCMClientImplTest::~GCMClientImplTest() {} | 416 GCMClientImplTest::~GCMClientImplTest() {} |
417 | 417 |
418 void GCMClientImplTest::SetUp() { | 418 void GCMClientImplTest::SetUp() { |
419 testing::Test::SetUp(); | 419 testing::Test::SetUp(); |
420 ASSERT_TRUE(CreateUniqueTempDir()); | 420 ASSERT_TRUE(CreateUniqueTempDir()); |
421 BuildGCMClient(base::TimeDelta()); | 421 BuildGCMClient(base::TimeDelta()); |
422 InitializeGCMClient(); | 422 InitializeGCMClient(); |
423 StartGCMClient(); | 423 StartGCMClient(); |
424 SetUpUrlFetcherFactory(); | 424 SetUpUrlFetcherFactory(); |
425 CompleteCheckin(kDeviceAndroidId, | 425 ASSERT_NO_FATAL_FAILURE( |
426 kDeviceSecurityToken, | 426 CompleteCheckin(kDeviceAndroidId, kDeviceSecurityToken, std::string(), |
427 std::string(), | 427 std::map<std::string, std::string>())); |
428 std::map<std::string, std::string>()); | |
429 } | 428 } |
430 | 429 |
431 void GCMClientImplTest::SetUpUrlFetcherFactory() { | 430 void GCMClientImplTest::SetUpUrlFetcherFactory() { |
432 url_fetcher_factory_.set_remove_fetcher_on_delete(true); | 431 url_fetcher_factory_.set_remove_fetcher_on_delete(true); |
433 } | 432 } |
434 | 433 |
435 void GCMClientImplTest::PumpLoopUntilIdle() { | 434 void GCMClientImplTest::PumpLoopUntilIdle() { |
436 task_runner_->RunUntilIdle(); | 435 task_runner_->RunUntilIdle(); |
437 } | 436 } |
438 | 437 |
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
651 base::FilePath store_file_path = | 650 base::FilePath store_file_path = |
652 gcm_store_path().Append(FILE_PATH_LITERAL("CURRENT")); | 651 gcm_store_path().Append(FILE_PATH_LITERAL("CURRENT")); |
653 ASSERT_TRUE(base::AppendToFile(store_file_path, "A", 1)); | 652 ASSERT_TRUE(base::AppendToFile(store_file_path, "A", 1)); |
654 | 653 |
655 // Restart GCM client. The store should be reset and the loading should | 654 // Restart GCM client. The store should be reset and the loading should |
656 // complete successfully. | 655 // complete successfully. |
657 reset_last_event(); | 656 reset_last_event(); |
658 BuildGCMClient(base::TimeDelta()); | 657 BuildGCMClient(base::TimeDelta()); |
659 InitializeGCMClient(); | 658 InitializeGCMClient(); |
660 StartGCMClient(); | 659 StartGCMClient(); |
661 CompleteCheckin(kDeviceAndroidId2, | 660 ASSERT_NO_FATAL_FAILURE( |
662 kDeviceSecurityToken2, | 661 CompleteCheckin(kDeviceAndroidId2, kDeviceSecurityToken2, std::string(), |
663 std::string(), | 662 std::map<std::string, std::string>())); |
664 std::map<std::string, std::string>()); | |
665 | 663 |
666 EXPECT_EQ(LOADING_COMPLETED, last_event()); | 664 EXPECT_EQ(LOADING_COMPLETED, last_event()); |
667 EXPECT_EQ(kDeviceAndroidId2, mcs_client()->last_android_id()); | 665 EXPECT_EQ(kDeviceAndroidId2, mcs_client()->last_android_id()); |
668 EXPECT_EQ(kDeviceSecurityToken2, mcs_client()->last_security_token()); | 666 EXPECT_EQ(kDeviceSecurityToken2, mcs_client()->last_security_token()); |
669 } | 667 } |
670 | 668 |
671 TEST_F(GCMClientImplTest, DestroyStoreWhenNotNeeded) { | 669 TEST_F(GCMClientImplTest, DestroyStoreWhenNotNeeded) { |
672 // Close the GCM store. | 670 // Close the GCM store. |
673 gcm_client()->Stop(); | 671 gcm_client()->Stop(); |
674 PumpLoopUntilIdle(); | 672 PumpLoopUntilIdle(); |
(...skipping 17 matching lines...) Expand all Loading... |
692 EXPECT_FALSE(device_checkin_info().android_id); | 690 EXPECT_FALSE(device_checkin_info().android_id); |
693 EXPECT_FALSE(device_checkin_info().secret); | 691 EXPECT_FALSE(device_checkin_info().secret); |
694 } | 692 } |
695 | 693 |
696 TEST_F(GCMClientImplTest, RegisterApp) { | 694 TEST_F(GCMClientImplTest, RegisterApp) { |
697 EXPECT_FALSE(ExistsRegistration(kAppId)); | 695 EXPECT_FALSE(ExistsRegistration(kAppId)); |
698 | 696 |
699 std::vector<std::string> senders; | 697 std::vector<std::string> senders; |
700 senders.push_back("sender"); | 698 senders.push_back("sender"); |
701 Register(kAppId, senders); | 699 Register(kAppId, senders); |
702 CompleteRegistration("reg_id"); | 700 ASSERT_NO_FATAL_FAILURE(CompleteRegistration("reg_id")); |
703 | 701 |
704 EXPECT_EQ(REGISTRATION_COMPLETED, last_event()); | 702 EXPECT_EQ(REGISTRATION_COMPLETED, last_event()); |
705 EXPECT_EQ(kAppId, last_app_id()); | 703 EXPECT_EQ(kAppId, last_app_id()); |
706 EXPECT_EQ("reg_id", last_registration_id()); | 704 EXPECT_EQ("reg_id", last_registration_id()); |
707 EXPECT_EQ(GCMClient::SUCCESS, last_result()); | 705 EXPECT_EQ(GCMClient::SUCCESS, last_result()); |
708 EXPECT_TRUE(ExistsRegistration(kAppId)); | 706 EXPECT_TRUE(ExistsRegistration(kAppId)); |
709 } | 707 } |
710 | 708 |
711 TEST_F(GCMClientImplTest, DISABLED_RegisterAppFromCache) { | 709 TEST_F(GCMClientImplTest, DISABLED_RegisterAppFromCache) { |
712 EXPECT_FALSE(ExistsRegistration(kAppId)); | 710 EXPECT_FALSE(ExistsRegistration(kAppId)); |
713 | 711 |
714 std::vector<std::string> senders; | 712 std::vector<std::string> senders; |
715 senders.push_back("sender"); | 713 senders.push_back("sender"); |
716 Register(kAppId, senders); | 714 Register(kAppId, senders); |
717 CompleteRegistration("reg_id"); | 715 ASSERT_NO_FATAL_FAILURE(CompleteRegistration("reg_id")); |
718 EXPECT_TRUE(ExistsRegistration(kAppId)); | 716 EXPECT_TRUE(ExistsRegistration(kAppId)); |
719 | 717 |
720 EXPECT_EQ(kAppId, last_app_id()); | 718 EXPECT_EQ(kAppId, last_app_id()); |
721 EXPECT_EQ("reg_id", last_registration_id()); | 719 EXPECT_EQ("reg_id", last_registration_id()); |
722 EXPECT_EQ(GCMClient::SUCCESS, last_result()); | 720 EXPECT_EQ(GCMClient::SUCCESS, last_result()); |
723 EXPECT_EQ(REGISTRATION_COMPLETED, last_event()); | 721 EXPECT_EQ(REGISTRATION_COMPLETED, last_event()); |
724 | 722 |
725 // Recreate GCMClient in order to load from the persistent store. | 723 // Recreate GCMClient in order to load from the persistent store. |
726 BuildGCMClient(base::TimeDelta()); | 724 BuildGCMClient(base::TimeDelta()); |
727 InitializeGCMClient(); | 725 InitializeGCMClient(); |
728 StartGCMClient(); | 726 StartGCMClient(); |
729 | 727 |
730 EXPECT_TRUE(ExistsRegistration(kAppId)); | 728 EXPECT_TRUE(ExistsRegistration(kAppId)); |
731 } | 729 } |
732 | 730 |
733 TEST_F(GCMClientImplTest, RegisterPreviousSenderAgain) { | 731 TEST_F(GCMClientImplTest, RegisterPreviousSenderAgain) { |
734 EXPECT_FALSE(ExistsRegistration(kAppId)); | 732 EXPECT_FALSE(ExistsRegistration(kAppId)); |
735 | 733 |
736 // Register a sender. | 734 // Register a sender. |
737 std::vector<std::string> senders; | 735 std::vector<std::string> senders; |
738 senders.push_back("sender"); | 736 senders.push_back("sender"); |
739 Register(kAppId, senders); | 737 Register(kAppId, senders); |
740 CompleteRegistration("reg_id"); | 738 ASSERT_NO_FATAL_FAILURE(CompleteRegistration("reg_id")); |
741 | 739 |
742 EXPECT_EQ(REGISTRATION_COMPLETED, last_event()); | 740 EXPECT_EQ(REGISTRATION_COMPLETED, last_event()); |
743 EXPECT_EQ(kAppId, last_app_id()); | 741 EXPECT_EQ(kAppId, last_app_id()); |
744 EXPECT_EQ("reg_id", last_registration_id()); | 742 EXPECT_EQ("reg_id", last_registration_id()); |
745 EXPECT_EQ(GCMClient::SUCCESS, last_result()); | 743 EXPECT_EQ(GCMClient::SUCCESS, last_result()); |
746 EXPECT_TRUE(ExistsRegistration(kAppId)); | 744 EXPECT_TRUE(ExistsRegistration(kAppId)); |
747 | 745 |
748 reset_last_event(); | 746 reset_last_event(); |
749 | 747 |
750 // Register a different sender. Different registration ID from previous one | 748 // Register a different sender. Different registration ID from previous one |
751 // should be returned. | 749 // should be returned. |
752 std::vector<std::string> senders2; | 750 std::vector<std::string> senders2; |
753 senders2.push_back("sender2"); | 751 senders2.push_back("sender2"); |
754 Register(kAppId, senders2); | 752 Register(kAppId, senders2); |
755 CompleteRegistration("reg_id2"); | 753 ASSERT_NO_FATAL_FAILURE(CompleteRegistration("reg_id2")); |
756 | 754 |
757 EXPECT_EQ(REGISTRATION_COMPLETED, last_event()); | 755 EXPECT_EQ(REGISTRATION_COMPLETED, last_event()); |
758 EXPECT_EQ(kAppId, last_app_id()); | 756 EXPECT_EQ(kAppId, last_app_id()); |
759 EXPECT_EQ("reg_id2", last_registration_id()); | 757 EXPECT_EQ("reg_id2", last_registration_id()); |
760 EXPECT_EQ(GCMClient::SUCCESS, last_result()); | 758 EXPECT_EQ(GCMClient::SUCCESS, last_result()); |
761 EXPECT_TRUE(ExistsRegistration(kAppId)); | 759 EXPECT_TRUE(ExistsRegistration(kAppId)); |
762 | 760 |
763 reset_last_event(); | 761 reset_last_event(); |
764 | 762 |
765 // Register the 1st sender again. Different registration ID from previous one | 763 // Register the 1st sender again. Different registration ID from previous one |
766 // should be returned. | 764 // should be returned. |
767 std::vector<std::string> senders3; | 765 std::vector<std::string> senders3; |
768 senders3.push_back("sender"); | 766 senders3.push_back("sender"); |
769 Register(kAppId, senders3); | 767 Register(kAppId, senders3); |
770 CompleteRegistration("reg_id"); | 768 ASSERT_NO_FATAL_FAILURE(CompleteRegistration("reg_id")); |
771 | 769 |
772 EXPECT_EQ(REGISTRATION_COMPLETED, last_event()); | 770 EXPECT_EQ(REGISTRATION_COMPLETED, last_event()); |
773 EXPECT_EQ(kAppId, last_app_id()); | 771 EXPECT_EQ(kAppId, last_app_id()); |
774 EXPECT_EQ("reg_id", last_registration_id()); | 772 EXPECT_EQ("reg_id", last_registration_id()); |
775 EXPECT_EQ(GCMClient::SUCCESS, last_result()); | 773 EXPECT_EQ(GCMClient::SUCCESS, last_result()); |
776 EXPECT_TRUE(ExistsRegistration(kAppId)); | 774 EXPECT_TRUE(ExistsRegistration(kAppId)); |
777 } | 775 } |
778 | 776 |
779 TEST_F(GCMClientImplTest, UnregisterApp) { | 777 TEST_F(GCMClientImplTest, UnregisterApp) { |
780 EXPECT_FALSE(ExistsRegistration(kAppId)); | 778 EXPECT_FALSE(ExistsRegistration(kAppId)); |
781 | 779 |
782 std::vector<std::string> senders; | 780 std::vector<std::string> senders; |
783 senders.push_back("sender"); | 781 senders.push_back("sender"); |
784 Register(kAppId, senders); | 782 Register(kAppId, senders); |
785 CompleteRegistration("reg_id"); | 783 ASSERT_NO_FATAL_FAILURE(CompleteRegistration("reg_id")); |
786 EXPECT_TRUE(ExistsRegistration(kAppId)); | 784 EXPECT_TRUE(ExistsRegistration(kAppId)); |
787 | 785 |
788 Unregister(kAppId); | 786 Unregister(kAppId); |
789 CompleteUnregistration(kAppId); | 787 ASSERT_NO_FATAL_FAILURE(CompleteUnregistration(kAppId)); |
790 | 788 |
791 EXPECT_EQ(UNREGISTRATION_COMPLETED, last_event()); | 789 EXPECT_EQ(UNREGISTRATION_COMPLETED, last_event()); |
792 EXPECT_EQ(kAppId, last_app_id()); | 790 EXPECT_EQ(kAppId, last_app_id()); |
793 EXPECT_EQ(GCMClient::SUCCESS, last_result()); | 791 EXPECT_EQ(GCMClient::SUCCESS, last_result()); |
794 EXPECT_FALSE(ExistsRegistration(kAppId)); | 792 EXPECT_FALSE(ExistsRegistration(kAppId)); |
795 } | 793 } |
796 | 794 |
797 // Tests that stopping the GCMClient also deletes pending registration requests. | 795 // Tests that stopping the GCMClient also deletes pending registration requests. |
798 // This is tested by checking that url fetcher contained in the request was | 796 // This is tested by checking that url fetcher contained in the request was |
799 // deleted. | 797 // deleted. |
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
960 StartGCMClient(); | 958 StartGCMClient(); |
961 } | 959 } |
962 | 960 |
963 TEST_F(GCMClientImplCheckinTest, GServicesSettingsAfterInitialCheckin) { | 961 TEST_F(GCMClientImplCheckinTest, GServicesSettingsAfterInitialCheckin) { |
964 std::map<std::string, std::string> settings; | 962 std::map<std::string, std::string> settings; |
965 settings["checkin_interval"] = base::Int64ToString(kSettingsCheckinInterval); | 963 settings["checkin_interval"] = base::Int64ToString(kSettingsCheckinInterval); |
966 settings["checkin_url"] = "http://alternative.url/checkin"; | 964 settings["checkin_url"] = "http://alternative.url/checkin"; |
967 settings["gcm_hostname"] = "alternative.gcm.host"; | 965 settings["gcm_hostname"] = "alternative.gcm.host"; |
968 settings["gcm_secure_port"] = "7777"; | 966 settings["gcm_secure_port"] = "7777"; |
969 settings["gcm_registration_url"] = "http://alternative.url/registration"; | 967 settings["gcm_registration_url"] = "http://alternative.url/registration"; |
970 CompleteCheckin(kDeviceAndroidId, | 968 ASSERT_NO_FATAL_FAILURE( |
971 kDeviceSecurityToken, | 969 CompleteCheckin(kDeviceAndroidId, kDeviceSecurityToken, |
972 GServicesSettings::CalculateDigest(settings), | 970 GServicesSettings::CalculateDigest(settings), settings)); |
973 settings); | |
974 EXPECT_EQ(base::TimeDelta::FromSeconds(kSettingsCheckinInterval), | 971 EXPECT_EQ(base::TimeDelta::FromSeconds(kSettingsCheckinInterval), |
975 gservices_settings().GetCheckinInterval()); | 972 gservices_settings().GetCheckinInterval()); |
976 EXPECT_EQ(GURL("http://alternative.url/checkin"), | 973 EXPECT_EQ(GURL("http://alternative.url/checkin"), |
977 gservices_settings().GetCheckinURL()); | 974 gservices_settings().GetCheckinURL()); |
978 EXPECT_EQ(GURL("http://alternative.url/registration"), | 975 EXPECT_EQ(GURL("http://alternative.url/registration"), |
979 gservices_settings().GetRegistrationURL()); | 976 gservices_settings().GetRegistrationURL()); |
980 EXPECT_EQ(GURL("https://alternative.gcm.host:7777"), | 977 EXPECT_EQ(GURL("https://alternative.gcm.host:7777"), |
981 gservices_settings().GetMCSMainEndpoint()); | 978 gservices_settings().GetMCSMainEndpoint()); |
982 EXPECT_EQ(GURL("https://alternative.gcm.host:443"), | 979 EXPECT_EQ(GURL("https://alternative.gcm.host:443"), |
983 gservices_settings().GetMCSFallbackEndpoint()); | 980 gservices_settings().GetMCSFallbackEndpoint()); |
984 } | 981 } |
985 | 982 |
986 // This test only checks that periodic checkin happens. | 983 // This test only checks that periodic checkin happens. |
987 TEST_F(GCMClientImplCheckinTest, PeriodicCheckin) { | 984 TEST_F(GCMClientImplCheckinTest, PeriodicCheckin) { |
988 std::map<std::string, std::string> settings; | 985 std::map<std::string, std::string> settings; |
989 settings["checkin_interval"] = base::Int64ToString(kSettingsCheckinInterval); | 986 settings["checkin_interval"] = base::Int64ToString(kSettingsCheckinInterval); |
990 settings["checkin_url"] = "http://alternative.url/checkin"; | 987 settings["checkin_url"] = "http://alternative.url/checkin"; |
991 settings["gcm_hostname"] = "alternative.gcm.host"; | 988 settings["gcm_hostname"] = "alternative.gcm.host"; |
992 settings["gcm_secure_port"] = "7777"; | 989 settings["gcm_secure_port"] = "7777"; |
993 settings["gcm_registration_url"] = "http://alternative.url/registration"; | 990 settings["gcm_registration_url"] = "http://alternative.url/registration"; |
994 CompleteCheckin(kDeviceAndroidId, | 991 ASSERT_NO_FATAL_FAILURE( |
995 kDeviceSecurityToken, | 992 CompleteCheckin(kDeviceAndroidId, kDeviceSecurityToken, |
996 GServicesSettings::CalculateDigest(settings), | 993 GServicesSettings::CalculateDigest(settings), settings)); |
997 settings); | |
998 | 994 |
999 EXPECT_EQ(2, clock()->call_count()); | 995 EXPECT_EQ(2, clock()->call_count()); |
1000 | 996 |
1001 PumpLoopUntilIdle(); | 997 PumpLoopUntilIdle(); |
1002 CompleteCheckin(kDeviceAndroidId, | 998 ASSERT_NO_FATAL_FAILURE( |
1003 kDeviceSecurityToken, | 999 CompleteCheckin(kDeviceAndroidId, kDeviceSecurityToken, |
1004 GServicesSettings::CalculateDigest(settings), | 1000 GServicesSettings::CalculateDigest(settings), settings)); |
1005 settings); | |
1006 } | 1001 } |
1007 | 1002 |
1008 TEST_F(GCMClientImplCheckinTest, LoadGSettingsFromStore) { | 1003 TEST_F(GCMClientImplCheckinTest, LoadGSettingsFromStore) { |
1009 std::map<std::string, std::string> settings; | 1004 std::map<std::string, std::string> settings; |
1010 settings["checkin_interval"] = base::Int64ToString(kSettingsCheckinInterval); | 1005 settings["checkin_interval"] = base::Int64ToString(kSettingsCheckinInterval); |
1011 settings["checkin_url"] = "http://alternative.url/checkin"; | 1006 settings["checkin_url"] = "http://alternative.url/checkin"; |
1012 settings["gcm_hostname"] = "alternative.gcm.host"; | 1007 settings["gcm_hostname"] = "alternative.gcm.host"; |
1013 settings["gcm_secure_port"] = "7777"; | 1008 settings["gcm_secure_port"] = "7777"; |
1014 settings["gcm_registration_url"] = "http://alternative.url/registration"; | 1009 settings["gcm_registration_url"] = "http://alternative.url/registration"; |
1015 CompleteCheckin(kDeviceAndroidId, | 1010 ASSERT_NO_FATAL_FAILURE( |
1016 kDeviceSecurityToken, | 1011 CompleteCheckin(kDeviceAndroidId, kDeviceSecurityToken, |
1017 GServicesSettings::CalculateDigest(settings), | 1012 GServicesSettings::CalculateDigest(settings), settings)); |
1018 settings); | |
1019 | 1013 |
1020 BuildGCMClient(base::TimeDelta()); | 1014 BuildGCMClient(base::TimeDelta()); |
1021 InitializeGCMClient(); | 1015 InitializeGCMClient(); |
1022 StartGCMClient(); | 1016 StartGCMClient(); |
1023 | 1017 |
1024 EXPECT_EQ(base::TimeDelta::FromSeconds(kSettingsCheckinInterval), | 1018 EXPECT_EQ(base::TimeDelta::FromSeconds(kSettingsCheckinInterval), |
1025 gservices_settings().GetCheckinInterval()); | 1019 gservices_settings().GetCheckinInterval()); |
1026 EXPECT_EQ(GURL("http://alternative.url/checkin"), | 1020 EXPECT_EQ(GURL("http://alternative.url/checkin"), |
1027 gservices_settings().GetCheckinURL()); | 1021 gservices_settings().GetCheckinURL()); |
1028 EXPECT_EQ(GURL("http://alternative.url/registration"), | 1022 EXPECT_EQ(GURL("http://alternative.url/registration"), |
1029 gservices_settings().GetRegistrationURL()); | 1023 gservices_settings().GetRegistrationURL()); |
1030 EXPECT_EQ(GURL("https://alternative.gcm.host:7777"), | 1024 EXPECT_EQ(GURL("https://alternative.gcm.host:7777"), |
1031 gservices_settings().GetMCSMainEndpoint()); | 1025 gservices_settings().GetMCSMainEndpoint()); |
1032 EXPECT_EQ(GURL("https://alternative.gcm.host:443"), | 1026 EXPECT_EQ(GURL("https://alternative.gcm.host:443"), |
1033 gservices_settings().GetMCSFallbackEndpoint()); | 1027 gservices_settings().GetMCSFallbackEndpoint()); |
1034 } | 1028 } |
1035 | 1029 |
1036 // This test only checks that periodic checkin happens. | 1030 // This test only checks that periodic checkin happens. |
1037 TEST_F(GCMClientImplCheckinTest, CheckinWithAccounts) { | 1031 TEST_F(GCMClientImplCheckinTest, CheckinWithAccounts) { |
1038 std::map<std::string, std::string> settings; | 1032 std::map<std::string, std::string> settings; |
1039 settings["checkin_interval"] = base::Int64ToString(kSettingsCheckinInterval); | 1033 settings["checkin_interval"] = base::Int64ToString(kSettingsCheckinInterval); |
1040 settings["checkin_url"] = "http://alternative.url/checkin"; | 1034 settings["checkin_url"] = "http://alternative.url/checkin"; |
1041 settings["gcm_hostname"] = "alternative.gcm.host"; | 1035 settings["gcm_hostname"] = "alternative.gcm.host"; |
1042 settings["gcm_secure_port"] = "7777"; | 1036 settings["gcm_secure_port"] = "7777"; |
1043 settings["gcm_registration_url"] = "http://alternative.url/registration"; | 1037 settings["gcm_registration_url"] = "http://alternative.url/registration"; |
1044 CompleteCheckin(kDeviceAndroidId, | 1038 ASSERT_NO_FATAL_FAILURE( |
1045 kDeviceSecurityToken, | 1039 CompleteCheckin(kDeviceAndroidId, kDeviceSecurityToken, |
1046 GServicesSettings::CalculateDigest(settings), | 1040 GServicesSettings::CalculateDigest(settings), settings)); |
1047 settings); | |
1048 | 1041 |
1049 std::vector<GCMClient::AccountTokenInfo> account_tokens; | 1042 std::vector<GCMClient::AccountTokenInfo> account_tokens; |
1050 account_tokens.push_back(MakeAccountToken("test_user1@gmail.com", "token1")); | 1043 account_tokens.push_back(MakeAccountToken("test_user1@gmail.com", "token1")); |
1051 account_tokens.push_back(MakeAccountToken("test_user2@gmail.com", "token2")); | 1044 account_tokens.push_back(MakeAccountToken("test_user2@gmail.com", "token2")); |
1052 gcm_client()->SetAccountTokens(account_tokens); | 1045 gcm_client()->SetAccountTokens(account_tokens); |
1053 | 1046 |
1054 EXPECT_TRUE(device_checkin_info().last_checkin_accounts.empty()); | 1047 EXPECT_TRUE(device_checkin_info().last_checkin_accounts.empty()); |
1055 EXPECT_TRUE(device_checkin_info().accounts_set); | 1048 EXPECT_TRUE(device_checkin_info().accounts_set); |
1056 EXPECT_EQ(MakeEmailToTokenMap(account_tokens), | 1049 EXPECT_EQ(MakeEmailToTokenMap(account_tokens), |
1057 device_checkin_info().account_tokens); | 1050 device_checkin_info().account_tokens); |
1058 | 1051 |
1059 PumpLoopUntilIdle(); | 1052 PumpLoopUntilIdle(); |
1060 CompleteCheckin(kDeviceAndroidId, | 1053 ASSERT_NO_FATAL_FAILURE( |
1061 kDeviceSecurityToken, | 1054 CompleteCheckin(kDeviceAndroidId, kDeviceSecurityToken, |
1062 GServicesSettings::CalculateDigest(settings), | 1055 GServicesSettings::CalculateDigest(settings), settings)); |
1063 settings); | |
1064 | 1056 |
1065 std::set<std::string> accounts; | 1057 std::set<std::string> accounts; |
1066 accounts.insert("test_user1@gmail.com"); | 1058 accounts.insert("test_user1@gmail.com"); |
1067 accounts.insert("test_user2@gmail.com"); | 1059 accounts.insert("test_user2@gmail.com"); |
1068 EXPECT_EQ(accounts, device_checkin_info().last_checkin_accounts); | 1060 EXPECT_EQ(accounts, device_checkin_info().last_checkin_accounts); |
1069 EXPECT_TRUE(device_checkin_info().accounts_set); | 1061 EXPECT_TRUE(device_checkin_info().accounts_set); |
1070 EXPECT_EQ(MakeEmailToTokenMap(account_tokens), | 1062 EXPECT_EQ(MakeEmailToTokenMap(account_tokens), |
1071 device_checkin_info().account_tokens); | 1063 device_checkin_info().account_tokens); |
1072 } | 1064 } |
1073 | 1065 |
1074 // This test only checks that periodic checkin happens. | 1066 // This test only checks that periodic checkin happens. |
1075 TEST_F(GCMClientImplCheckinTest, CheckinWhenAccountRemoved) { | 1067 TEST_F(GCMClientImplCheckinTest, CheckinWhenAccountRemoved) { |
1076 std::map<std::string, std::string> settings; | 1068 std::map<std::string, std::string> settings; |
1077 settings["checkin_interval"] = base::Int64ToString(kSettingsCheckinInterval); | 1069 settings["checkin_interval"] = base::Int64ToString(kSettingsCheckinInterval); |
1078 settings["checkin_url"] = "http://alternative.url/checkin"; | 1070 settings["checkin_url"] = "http://alternative.url/checkin"; |
1079 settings["gcm_hostname"] = "alternative.gcm.host"; | 1071 settings["gcm_hostname"] = "alternative.gcm.host"; |
1080 settings["gcm_secure_port"] = "7777"; | 1072 settings["gcm_secure_port"] = "7777"; |
1081 settings["gcm_registration_url"] = "http://alternative.url/registration"; | 1073 settings["gcm_registration_url"] = "http://alternative.url/registration"; |
1082 CompleteCheckin(kDeviceAndroidId, | 1074 ASSERT_NO_FATAL_FAILURE( |
1083 kDeviceSecurityToken, | 1075 CompleteCheckin(kDeviceAndroidId, kDeviceSecurityToken, |
1084 GServicesSettings::CalculateDigest(settings), | 1076 GServicesSettings::CalculateDigest(settings), settings)); |
1085 settings); | |
1086 | 1077 |
1087 std::vector<GCMClient::AccountTokenInfo> account_tokens; | 1078 std::vector<GCMClient::AccountTokenInfo> account_tokens; |
1088 account_tokens.push_back(MakeAccountToken("test_user1@gmail.com", "token1")); | 1079 account_tokens.push_back(MakeAccountToken("test_user1@gmail.com", "token1")); |
1089 account_tokens.push_back(MakeAccountToken("test_user2@gmail.com", "token2")); | 1080 account_tokens.push_back(MakeAccountToken("test_user2@gmail.com", "token2")); |
1090 gcm_client()->SetAccountTokens(account_tokens); | 1081 gcm_client()->SetAccountTokens(account_tokens); |
1091 PumpLoopUntilIdle(); | 1082 PumpLoopUntilIdle(); |
1092 CompleteCheckin(kDeviceAndroidId, | 1083 ASSERT_NO_FATAL_FAILURE( |
1093 kDeviceSecurityToken, | 1084 CompleteCheckin(kDeviceAndroidId, kDeviceSecurityToken, |
1094 GServicesSettings::CalculateDigest(settings), | 1085 GServicesSettings::CalculateDigest(settings), settings)); |
1095 settings); | |
1096 | 1086 |
1097 EXPECT_EQ(2UL, device_checkin_info().last_checkin_accounts.size()); | 1087 EXPECT_EQ(2UL, device_checkin_info().last_checkin_accounts.size()); |
1098 EXPECT_TRUE(device_checkin_info().accounts_set); | 1088 EXPECT_TRUE(device_checkin_info().accounts_set); |
1099 EXPECT_EQ(MakeEmailToTokenMap(account_tokens), | 1089 EXPECT_EQ(MakeEmailToTokenMap(account_tokens), |
1100 device_checkin_info().account_tokens); | 1090 device_checkin_info().account_tokens); |
1101 | 1091 |
1102 account_tokens.erase(account_tokens.begin() + 1); | 1092 account_tokens.erase(account_tokens.begin() + 1); |
1103 gcm_client()->SetAccountTokens(account_tokens); | 1093 gcm_client()->SetAccountTokens(account_tokens); |
1104 | 1094 |
1105 PumpLoopUntilIdle(); | 1095 PumpLoopUntilIdle(); |
1106 CompleteCheckin(kDeviceAndroidId, | 1096 ASSERT_NO_FATAL_FAILURE( |
1107 kDeviceSecurityToken, | 1097 CompleteCheckin(kDeviceAndroidId, kDeviceSecurityToken, |
1108 GServicesSettings::CalculateDigest(settings), | 1098 GServicesSettings::CalculateDigest(settings), settings)); |
1109 settings); | |
1110 | 1099 |
1111 std::set<std::string> accounts; | 1100 std::set<std::string> accounts; |
1112 accounts.insert("test_user1@gmail.com"); | 1101 accounts.insert("test_user1@gmail.com"); |
1113 EXPECT_EQ(accounts, device_checkin_info().last_checkin_accounts); | 1102 EXPECT_EQ(accounts, device_checkin_info().last_checkin_accounts); |
1114 EXPECT_TRUE(device_checkin_info().accounts_set); | 1103 EXPECT_TRUE(device_checkin_info().accounts_set); |
1115 EXPECT_EQ(MakeEmailToTokenMap(account_tokens), | 1104 EXPECT_EQ(MakeEmailToTokenMap(account_tokens), |
1116 device_checkin_info().account_tokens); | 1105 device_checkin_info().account_tokens); |
1117 } | 1106 } |
1118 | 1107 |
1119 // This test only checks that periodic checkin happens. | 1108 // This test only checks that periodic checkin happens. |
1120 TEST_F(GCMClientImplCheckinTest, CheckinWhenAccountReplaced) { | 1109 TEST_F(GCMClientImplCheckinTest, CheckinWhenAccountReplaced) { |
1121 std::map<std::string, std::string> settings; | 1110 std::map<std::string, std::string> settings; |
1122 settings["checkin_interval"] = base::Int64ToString(kSettingsCheckinInterval); | 1111 settings["checkin_interval"] = base::Int64ToString(kSettingsCheckinInterval); |
1123 settings["checkin_url"] = "http://alternative.url/checkin"; | 1112 settings["checkin_url"] = "http://alternative.url/checkin"; |
1124 settings["gcm_hostname"] = "alternative.gcm.host"; | 1113 settings["gcm_hostname"] = "alternative.gcm.host"; |
1125 settings["gcm_secure_port"] = "7777"; | 1114 settings["gcm_secure_port"] = "7777"; |
1126 settings["gcm_registration_url"] = "http://alternative.url/registration"; | 1115 settings["gcm_registration_url"] = "http://alternative.url/registration"; |
1127 CompleteCheckin(kDeviceAndroidId, | 1116 ASSERT_NO_FATAL_FAILURE( |
1128 kDeviceSecurityToken, | 1117 CompleteCheckin(kDeviceAndroidId, kDeviceSecurityToken, |
1129 GServicesSettings::CalculateDigest(settings), | 1118 GServicesSettings::CalculateDigest(settings), settings)); |
1130 settings); | |
1131 | 1119 |
1132 std::vector<GCMClient::AccountTokenInfo> account_tokens; | 1120 std::vector<GCMClient::AccountTokenInfo> account_tokens; |
1133 account_tokens.push_back(MakeAccountToken("test_user1@gmail.com", "token1")); | 1121 account_tokens.push_back(MakeAccountToken("test_user1@gmail.com", "token1")); |
1134 gcm_client()->SetAccountTokens(account_tokens); | 1122 gcm_client()->SetAccountTokens(account_tokens); |
1135 | 1123 |
1136 PumpLoopUntilIdle(); | 1124 PumpLoopUntilIdle(); |
1137 CompleteCheckin(kDeviceAndroidId, | 1125 ASSERT_NO_FATAL_FAILURE( |
1138 kDeviceSecurityToken, | 1126 CompleteCheckin(kDeviceAndroidId, kDeviceSecurityToken, |
1139 GServicesSettings::CalculateDigest(settings), | 1127 GServicesSettings::CalculateDigest(settings), settings)); |
1140 settings); | |
1141 | 1128 |
1142 std::set<std::string> accounts; | 1129 std::set<std::string> accounts; |
1143 accounts.insert("test_user1@gmail.com"); | 1130 accounts.insert("test_user1@gmail.com"); |
1144 EXPECT_EQ(accounts, device_checkin_info().last_checkin_accounts); | 1131 EXPECT_EQ(accounts, device_checkin_info().last_checkin_accounts); |
1145 | 1132 |
1146 // This should trigger another checkin, because the list of accounts is | 1133 // This should trigger another checkin, because the list of accounts is |
1147 // different. | 1134 // different. |
1148 account_tokens.clear(); | 1135 account_tokens.clear(); |
1149 account_tokens.push_back(MakeAccountToken("test_user2@gmail.com", "token2")); | 1136 account_tokens.push_back(MakeAccountToken("test_user2@gmail.com", "token2")); |
1150 gcm_client()->SetAccountTokens(account_tokens); | 1137 gcm_client()->SetAccountTokens(account_tokens); |
1151 | 1138 |
1152 PumpLoopUntilIdle(); | 1139 PumpLoopUntilIdle(); |
1153 CompleteCheckin(kDeviceAndroidId, | 1140 ASSERT_NO_FATAL_FAILURE( |
1154 kDeviceSecurityToken, | 1141 CompleteCheckin(kDeviceAndroidId, kDeviceSecurityToken, |
1155 GServicesSettings::CalculateDigest(settings), | 1142 GServicesSettings::CalculateDigest(settings), settings)); |
1156 settings); | |
1157 | 1143 |
1158 accounts.clear(); | 1144 accounts.clear(); |
1159 accounts.insert("test_user2@gmail.com"); | 1145 accounts.insert("test_user2@gmail.com"); |
1160 EXPECT_EQ(accounts, device_checkin_info().last_checkin_accounts); | 1146 EXPECT_EQ(accounts, device_checkin_info().last_checkin_accounts); |
1161 EXPECT_TRUE(device_checkin_info().accounts_set); | 1147 EXPECT_TRUE(device_checkin_info().accounts_set); |
1162 EXPECT_EQ(MakeEmailToTokenMap(account_tokens), | 1148 EXPECT_EQ(MakeEmailToTokenMap(account_tokens), |
1163 device_checkin_info().account_tokens); | 1149 device_checkin_info().account_tokens); |
1164 } | 1150 } |
1165 | 1151 |
1166 class GCMClientImplStartAndStopTest : public GCMClientImplTest { | 1152 class GCMClientImplStartAndStopTest : public GCMClientImplTest { |
(...skipping 14 matching lines...) Expand all Loading... |
1181 | 1167 |
1182 void GCMClientImplStartAndStopTest::SetUp() { | 1168 void GCMClientImplStartAndStopTest::SetUp() { |
1183 testing::Test::SetUp(); | 1169 testing::Test::SetUp(); |
1184 ASSERT_TRUE(CreateUniqueTempDir()); | 1170 ASSERT_TRUE(CreateUniqueTempDir()); |
1185 BuildGCMClient(base::TimeDelta()); | 1171 BuildGCMClient(base::TimeDelta()); |
1186 InitializeGCMClient(); | 1172 InitializeGCMClient(); |
1187 } | 1173 } |
1188 | 1174 |
1189 void GCMClientImplStartAndStopTest::DefaultCompleteCheckin() { | 1175 void GCMClientImplStartAndStopTest::DefaultCompleteCheckin() { |
1190 SetUpUrlFetcherFactory(); | 1176 SetUpUrlFetcherFactory(); |
1191 CompleteCheckin(kDeviceAndroidId, | 1177 ASSERT_NO_FATAL_FAILURE( |
1192 kDeviceSecurityToken, | 1178 CompleteCheckin(kDeviceAndroidId, kDeviceSecurityToken, std::string(), |
1193 std::string(), | 1179 std::map<std::string, std::string>())); |
1194 std::map<std::string, std::string>()); | |
1195 PumpLoopUntilIdle(); | 1180 PumpLoopUntilIdle(); |
1196 } | 1181 } |
1197 | 1182 |
1198 TEST_F(GCMClientImplStartAndStopTest, StartStopAndRestart) { | 1183 TEST_F(GCMClientImplStartAndStopTest, StartStopAndRestart) { |
1199 // GCMClientImpl should be in INITIALIZED state at first. | 1184 // GCMClientImpl should be in INITIALIZED state at first. |
1200 EXPECT_EQ(GCMClientImpl::INITIALIZED, gcm_client_state()); | 1185 EXPECT_EQ(GCMClientImpl::INITIALIZED, gcm_client_state()); |
1201 | 1186 |
1202 // Delay start the GCM. | 1187 // Delay start the GCM. |
1203 gcm_client()->Start(GCMClient::DELAYED_START); | 1188 gcm_client()->Start(GCMClient::DELAYED_START); |
1204 PumpLoopUntilIdle(); | 1189 PumpLoopUntilIdle(); |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1262 } | 1247 } |
1263 | 1248 |
1264 TEST_F(GCMClientImplStartAndStopTest, ImmediateStartAndThenImmediateStart) { | 1249 TEST_F(GCMClientImplStartAndStopTest, ImmediateStartAndThenImmediateStart) { |
1265 // GCMClientImpl should be in INITIALIZED state at first. | 1250 // GCMClientImpl should be in INITIALIZED state at first. |
1266 EXPECT_EQ(GCMClientImpl::INITIALIZED, gcm_client_state()); | 1251 EXPECT_EQ(GCMClientImpl::INITIALIZED, gcm_client_state()); |
1267 | 1252 |
1268 // Start the GCM immediately and complete the checkin. | 1253 // Start the GCM immediately and complete the checkin. |
1269 gcm_client()->Start(GCMClient::IMMEDIATE_START); | 1254 gcm_client()->Start(GCMClient::IMMEDIATE_START); |
1270 PumpLoopUntilIdle(); | 1255 PumpLoopUntilIdle(); |
1271 EXPECT_EQ(GCMClientImpl::INITIAL_DEVICE_CHECKIN, gcm_client_state()); | 1256 EXPECT_EQ(GCMClientImpl::INITIAL_DEVICE_CHECKIN, gcm_client_state()); |
1272 DefaultCompleteCheckin(); | 1257 ASSERT_NO_FATAL_FAILURE(DefaultCompleteCheckin()); |
1273 EXPECT_EQ(GCMClientImpl::READY, gcm_client_state()); | 1258 EXPECT_EQ(GCMClientImpl::READY, gcm_client_state()); |
1274 | 1259 |
1275 // Stop the GCM. | 1260 // Stop the GCM. |
1276 gcm_client()->Stop(); | 1261 gcm_client()->Stop(); |
1277 PumpLoopUntilIdle(); | 1262 PumpLoopUntilIdle(); |
1278 EXPECT_EQ(GCMClientImpl::INITIALIZED, gcm_client_state()); | 1263 EXPECT_EQ(GCMClientImpl::INITIALIZED, gcm_client_state()); |
1279 | 1264 |
1280 // Start the GCM immediately. GCMClientImpl should be in READY state. | 1265 // Start the GCM immediately. GCMClientImpl should be in READY state. |
1281 BuildGCMClient(base::TimeDelta()); | 1266 BuildGCMClient(base::TimeDelta()); |
1282 InitializeGCMClient(); | 1267 InitializeGCMClient(); |
1283 gcm_client()->Start(GCMClient::IMMEDIATE_START); | 1268 gcm_client()->Start(GCMClient::IMMEDIATE_START); |
1284 PumpLoopUntilIdle(); | 1269 PumpLoopUntilIdle(); |
1285 EXPECT_EQ(GCMClientImpl::READY, gcm_client_state()); | 1270 EXPECT_EQ(GCMClientImpl::READY, gcm_client_state()); |
1286 } | 1271 } |
1287 | 1272 |
1288 TEST_F(GCMClientImplStartAndStopTest, ImmediateStartAndThenDelayStart) { | 1273 TEST_F(GCMClientImplStartAndStopTest, ImmediateStartAndThenDelayStart) { |
1289 // GCMClientImpl should be in INITIALIZED state at first. | 1274 // GCMClientImpl should be in INITIALIZED state at first. |
1290 EXPECT_EQ(GCMClientImpl::INITIALIZED, gcm_client_state()); | 1275 EXPECT_EQ(GCMClientImpl::INITIALIZED, gcm_client_state()); |
1291 | 1276 |
1292 // Start the GCM immediately and complete the checkin. | 1277 // Start the GCM immediately and complete the checkin. |
1293 gcm_client()->Start(GCMClient::IMMEDIATE_START); | 1278 gcm_client()->Start(GCMClient::IMMEDIATE_START); |
1294 PumpLoopUntilIdle(); | 1279 PumpLoopUntilIdle(); |
1295 EXPECT_EQ(GCMClientImpl::INITIAL_DEVICE_CHECKIN, gcm_client_state()); | 1280 EXPECT_EQ(GCMClientImpl::INITIAL_DEVICE_CHECKIN, gcm_client_state()); |
1296 DefaultCompleteCheckin(); | 1281 ASSERT_NO_FATAL_FAILURE(DefaultCompleteCheckin()); |
1297 EXPECT_EQ(GCMClientImpl::READY, gcm_client_state()); | 1282 EXPECT_EQ(GCMClientImpl::READY, gcm_client_state()); |
1298 | 1283 |
1299 // Stop the GCM. | 1284 // Stop the GCM. |
1300 gcm_client()->Stop(); | 1285 gcm_client()->Stop(); |
1301 PumpLoopUntilIdle(); | 1286 PumpLoopUntilIdle(); |
1302 EXPECT_EQ(GCMClientImpl::INITIALIZED, gcm_client_state()); | 1287 EXPECT_EQ(GCMClientImpl::INITIALIZED, gcm_client_state()); |
1303 | 1288 |
1304 // Delay start the GCM. GCMClientImpl should be in LOADED state. | 1289 // Delay start the GCM. GCMClientImpl should be in LOADED state. |
1305 BuildGCMClient(base::TimeDelta()); | 1290 BuildGCMClient(base::TimeDelta()); |
1306 InitializeGCMClient(); | 1291 InitializeGCMClient(); |
1307 gcm_client()->Start(GCMClient::DELAYED_START); | 1292 gcm_client()->Start(GCMClient::DELAYED_START); |
1308 PumpLoopUntilIdle(); | 1293 PumpLoopUntilIdle(); |
1309 EXPECT_EQ(GCMClientImpl::LOADED, gcm_client_state()); | 1294 EXPECT_EQ(GCMClientImpl::LOADED, gcm_client_state()); |
1310 } | 1295 } |
1311 | 1296 |
1312 TEST_F(GCMClientImplStartAndStopTest, DelayedStartRace) { | 1297 TEST_F(GCMClientImplStartAndStopTest, DelayedStartRace) { |
1313 // GCMClientImpl should be in INITIALIZED state at first. | 1298 // GCMClientImpl should be in INITIALIZED state at first. |
1314 EXPECT_EQ(GCMClientImpl::INITIALIZED, gcm_client_state()); | 1299 EXPECT_EQ(GCMClientImpl::INITIALIZED, gcm_client_state()); |
1315 | 1300 |
1316 // Delay start the GCM, then start it immediately while it's still loading. | 1301 // Delay start the GCM, then start it immediately while it's still loading. |
1317 gcm_client()->Start(GCMClient::DELAYED_START); | 1302 gcm_client()->Start(GCMClient::DELAYED_START); |
1318 gcm_client()->Start(GCMClient::IMMEDIATE_START); | 1303 gcm_client()->Start(GCMClient::IMMEDIATE_START); |
1319 PumpLoopUntilIdle(); | 1304 PumpLoopUntilIdle(); |
1320 EXPECT_EQ(GCMClientImpl::INITIAL_DEVICE_CHECKIN, gcm_client_state()); | 1305 EXPECT_EQ(GCMClientImpl::INITIAL_DEVICE_CHECKIN, gcm_client_state()); |
1321 DefaultCompleteCheckin(); | 1306 ASSERT_NO_FATAL_FAILURE(DefaultCompleteCheckin()); |
1322 EXPECT_EQ(GCMClientImpl::READY, gcm_client_state()); | 1307 EXPECT_EQ(GCMClientImpl::READY, gcm_client_state()); |
1323 } | 1308 } |
1324 | 1309 |
1325 TEST_F(GCMClientImplStartAndStopTest, DelayedStart) { | 1310 TEST_F(GCMClientImplStartAndStopTest, DelayedStart) { |
1326 // GCMClientImpl should be in INITIALIZED state at first. | 1311 // GCMClientImpl should be in INITIALIZED state at first. |
1327 EXPECT_EQ(GCMClientImpl::INITIALIZED, gcm_client_state()); | 1312 EXPECT_EQ(GCMClientImpl::INITIALIZED, gcm_client_state()); |
1328 | 1313 |
1329 // Delay start the GCM. The store will not be loaded and GCMClientImpl should | 1314 // Delay start the GCM. The store will not be loaded and GCMClientImpl should |
1330 // still be in INITIALIZED state. | 1315 // still be in INITIALIZED state. |
1331 gcm_client()->Start(GCMClient::DELAYED_START); | 1316 gcm_client()->Start(GCMClient::DELAYED_START); |
1332 PumpLoopUntilIdle(); | 1317 PumpLoopUntilIdle(); |
1333 EXPECT_EQ(GCMClientImpl::INITIALIZED, gcm_client_state()); | 1318 EXPECT_EQ(GCMClientImpl::INITIALIZED, gcm_client_state()); |
1334 | 1319 |
1335 // Start the GCM immediately and complete the checkin. | 1320 // Start the GCM immediately and complete the checkin. |
1336 gcm_client()->Start(GCMClient::IMMEDIATE_START); | 1321 gcm_client()->Start(GCMClient::IMMEDIATE_START); |
1337 PumpLoopUntilIdle(); | 1322 PumpLoopUntilIdle(); |
1338 EXPECT_EQ(GCMClientImpl::INITIAL_DEVICE_CHECKIN, gcm_client_state()); | 1323 EXPECT_EQ(GCMClientImpl::INITIAL_DEVICE_CHECKIN, gcm_client_state()); |
1339 DefaultCompleteCheckin(); | 1324 ASSERT_NO_FATAL_FAILURE(DefaultCompleteCheckin()); |
1340 EXPECT_EQ(GCMClientImpl::READY, gcm_client_state()); | 1325 EXPECT_EQ(GCMClientImpl::READY, gcm_client_state()); |
1341 | 1326 |
1342 // Registration. | 1327 // Registration. |
1343 std::vector<std::string> senders; | 1328 std::vector<std::string> senders; |
1344 senders.push_back("sender"); | 1329 senders.push_back("sender"); |
1345 Register(kAppId, senders); | 1330 Register(kAppId, senders); |
1346 CompleteRegistration("reg_id"); | 1331 ASSERT_NO_FATAL_FAILURE(CompleteRegistration("reg_id")); |
1347 EXPECT_EQ(GCMClientImpl::READY, gcm_client_state()); | 1332 EXPECT_EQ(GCMClientImpl::READY, gcm_client_state()); |
1348 | 1333 |
1349 // Stop the GCM. | 1334 // Stop the GCM. |
1350 gcm_client()->Stop(); | 1335 gcm_client()->Stop(); |
1351 PumpLoopUntilIdle(); | 1336 PumpLoopUntilIdle(); |
1352 EXPECT_EQ(GCMClientImpl::INITIALIZED, gcm_client_state()); | 1337 EXPECT_EQ(GCMClientImpl::INITIALIZED, gcm_client_state()); |
1353 | 1338 |
1354 // Delay start the GCM. GCM is indeed started without delay because the | 1339 // Delay start the GCM. GCM is indeed started without delay because the |
1355 // registration record has been found. | 1340 // registration record has been found. |
1356 BuildGCMClient(base::TimeDelta()); | 1341 BuildGCMClient(base::TimeDelta()); |
1357 InitializeGCMClient(); | 1342 InitializeGCMClient(); |
1358 gcm_client()->Start(GCMClient::DELAYED_START); | 1343 gcm_client()->Start(GCMClient::DELAYED_START); |
1359 PumpLoopUntilIdle(); | 1344 PumpLoopUntilIdle(); |
1360 EXPECT_EQ(GCMClientImpl::READY, gcm_client_state()); | 1345 EXPECT_EQ(GCMClientImpl::READY, gcm_client_state()); |
1361 } | 1346 } |
1362 | 1347 |
1363 // Test for known account mappings and last token fetching time being passed | 1348 // Test for known account mappings and last token fetching time being passed |
1364 // to OnGCMReady. | 1349 // to OnGCMReady. |
1365 TEST_F(GCMClientImplStartAndStopTest, OnGCMReadyAccountsAndTokenFetchingTime) { | 1350 TEST_F(GCMClientImplStartAndStopTest, OnGCMReadyAccountsAndTokenFetchingTime) { |
1366 // Start the GCM and wait until it is ready. | 1351 // Start the GCM and wait until it is ready. |
1367 gcm_client()->Start(GCMClient::IMMEDIATE_START); | 1352 gcm_client()->Start(GCMClient::IMMEDIATE_START); |
1368 PumpLoopUntilIdle(); | 1353 PumpLoopUntilIdle(); |
1369 DefaultCompleteCheckin(); | 1354 ASSERT_NO_FATAL_FAILURE(DefaultCompleteCheckin()); |
1370 | 1355 |
1371 base::Time expected_time = base::Time::Now(); | 1356 base::Time expected_time = base::Time::Now(); |
1372 gcm_client()->SetLastTokenFetchTime(expected_time); | 1357 gcm_client()->SetLastTokenFetchTime(expected_time); |
1373 AccountMapping expected_mapping; | 1358 AccountMapping expected_mapping; |
1374 expected_mapping.account_id = "accId"; | 1359 expected_mapping.account_id = "accId"; |
1375 expected_mapping.email = "email@gmail.com"; | 1360 expected_mapping.email = "email@gmail.com"; |
1376 expected_mapping.status = AccountMapping::MAPPED; | 1361 expected_mapping.status = AccountMapping::MAPPED; |
1377 expected_mapping.status_change_timestamp = expected_time; | 1362 expected_mapping.status_change_timestamp = expected_time; |
1378 gcm_client()->UpdateAccountMapping(expected_mapping); | 1363 gcm_client()->UpdateAccountMapping(expected_mapping); |
1379 PumpLoopUntilIdle(); | 1364 PumpLoopUntilIdle(); |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1479 return gcm_client()->registrations_.count( | 1464 return gcm_client()->registrations_.count( |
1480 make_linked_ptr<RegistrationInfo>(instance_id_info.release())) > 0; | 1465 make_linked_ptr<RegistrationInfo>(instance_id_info.release())) > 0; |
1481 } | 1466 } |
1482 | 1467 |
1483 TEST_F(GCMClientInstanceIDTest, GetToken) { | 1468 TEST_F(GCMClientInstanceIDTest, GetToken) { |
1484 AddInstanceID(kAppId, kInstanceID); | 1469 AddInstanceID(kAppId, kInstanceID); |
1485 | 1470 |
1486 // Get a token. | 1471 // Get a token. |
1487 EXPECT_FALSE(ExistsToken(kAppId, kSender, kScope)); | 1472 EXPECT_FALSE(ExistsToken(kAppId, kSender, kScope)); |
1488 GetToken(kAppId, kSender, kScope); | 1473 GetToken(kAppId, kSender, kScope); |
1489 CompleteRegistration("token1"); | 1474 ASSERT_NO_FATAL_FAILURE(CompleteRegistration("token1")); |
1490 | 1475 |
1491 EXPECT_EQ(REGISTRATION_COMPLETED, last_event()); | 1476 EXPECT_EQ(REGISTRATION_COMPLETED, last_event()); |
1492 EXPECT_EQ(kAppId, last_app_id()); | 1477 EXPECT_EQ(kAppId, last_app_id()); |
1493 EXPECT_EQ("token1", last_registration_id()); | 1478 EXPECT_EQ("token1", last_registration_id()); |
1494 EXPECT_EQ(GCMClient::SUCCESS, last_result()); | 1479 EXPECT_EQ(GCMClient::SUCCESS, last_result()); |
1495 EXPECT_TRUE(ExistsToken(kAppId, kSender, kScope)); | 1480 EXPECT_TRUE(ExistsToken(kAppId, kSender, kScope)); |
1496 | 1481 |
1497 // Get another token. | 1482 // Get another token. |
1498 EXPECT_FALSE(ExistsToken(kAppId, kSender2, kScope)); | 1483 EXPECT_FALSE(ExistsToken(kAppId, kSender2, kScope)); |
1499 GetToken(kAppId, kSender2, kScope); | 1484 GetToken(kAppId, kSender2, kScope); |
1500 CompleteRegistration("token2"); | 1485 ASSERT_NO_FATAL_FAILURE(CompleteRegistration("token2")); |
1501 | 1486 |
1502 EXPECT_EQ(REGISTRATION_COMPLETED, last_event()); | 1487 EXPECT_EQ(REGISTRATION_COMPLETED, last_event()); |
1503 EXPECT_EQ(kAppId, last_app_id()); | 1488 EXPECT_EQ(kAppId, last_app_id()); |
1504 EXPECT_EQ("token2", last_registration_id()); | 1489 EXPECT_EQ("token2", last_registration_id()); |
1505 EXPECT_EQ(GCMClient::SUCCESS, last_result()); | 1490 EXPECT_EQ(GCMClient::SUCCESS, last_result()); |
1506 EXPECT_TRUE(ExistsToken(kAppId, kSender2, kScope)); | 1491 EXPECT_TRUE(ExistsToken(kAppId, kSender2, kScope)); |
1507 // The 1st token still exists. | 1492 // The 1st token still exists. |
1508 EXPECT_TRUE(ExistsToken(kAppId, kSender, kScope)); | 1493 EXPECT_TRUE(ExistsToken(kAppId, kSender, kScope)); |
1509 } | 1494 } |
1510 | 1495 |
(...skipping 18 matching lines...) Expand all Loading... |
1529 EXPECT_EQ(kAppId, last_app_id()); | 1514 EXPECT_EQ(kAppId, last_app_id()); |
1530 EXPECT_EQ(GCMClient::INVALID_PARAMETER, last_result()); | 1515 EXPECT_EQ(GCMClient::INVALID_PARAMETER, last_result()); |
1531 } | 1516 } |
1532 | 1517 |
1533 TEST_F(GCMClientInstanceIDTest, DeleteSingleToken) { | 1518 TEST_F(GCMClientInstanceIDTest, DeleteSingleToken) { |
1534 AddInstanceID(kAppId, kInstanceID); | 1519 AddInstanceID(kAppId, kInstanceID); |
1535 | 1520 |
1536 // Get a token. | 1521 // Get a token. |
1537 EXPECT_FALSE(ExistsToken(kAppId, kSender, kScope)); | 1522 EXPECT_FALSE(ExistsToken(kAppId, kSender, kScope)); |
1538 GetToken(kAppId, kSender, kScope); | 1523 GetToken(kAppId, kSender, kScope); |
1539 CompleteRegistration("token1"); | 1524 ASSERT_NO_FATAL_FAILURE(CompleteRegistration("token1")); |
1540 | 1525 |
1541 EXPECT_EQ(REGISTRATION_COMPLETED, last_event()); | 1526 EXPECT_EQ(REGISTRATION_COMPLETED, last_event()); |
1542 EXPECT_EQ(kAppId, last_app_id()); | 1527 EXPECT_EQ(kAppId, last_app_id()); |
1543 EXPECT_EQ("token1", last_registration_id()); | 1528 EXPECT_EQ("token1", last_registration_id()); |
1544 EXPECT_EQ(GCMClient::SUCCESS, last_result()); | 1529 EXPECT_EQ(GCMClient::SUCCESS, last_result()); |
1545 EXPECT_TRUE(ExistsToken(kAppId, kSender, kScope)); | 1530 EXPECT_TRUE(ExistsToken(kAppId, kSender, kScope)); |
1546 | 1531 |
1547 reset_last_event(); | 1532 reset_last_event(); |
1548 | 1533 |
1549 // Get another token. | 1534 // Get another token. |
1550 EXPECT_FALSE(ExistsToken(kAppId, kSender2, kScope)); | 1535 EXPECT_FALSE(ExistsToken(kAppId, kSender2, kScope)); |
1551 GetToken(kAppId, kSender2, kScope); | 1536 GetToken(kAppId, kSender2, kScope); |
1552 CompleteRegistration("token2"); | 1537 ASSERT_NO_FATAL_FAILURE(CompleteRegistration("token2")); |
1553 | 1538 |
1554 EXPECT_EQ(REGISTRATION_COMPLETED, last_event()); | 1539 EXPECT_EQ(REGISTRATION_COMPLETED, last_event()); |
1555 EXPECT_EQ(kAppId, last_app_id()); | 1540 EXPECT_EQ(kAppId, last_app_id()); |
1556 EXPECT_EQ("token2", last_registration_id()); | 1541 EXPECT_EQ("token2", last_registration_id()); |
1557 EXPECT_EQ(GCMClient::SUCCESS, last_result()); | 1542 EXPECT_EQ(GCMClient::SUCCESS, last_result()); |
1558 EXPECT_TRUE(ExistsToken(kAppId, kSender2, kScope)); | 1543 EXPECT_TRUE(ExistsToken(kAppId, kSender2, kScope)); |
1559 // The 1st token still exists. | 1544 // The 1st token still exists. |
1560 EXPECT_TRUE(ExistsToken(kAppId, kSender, kScope)); | 1545 EXPECT_TRUE(ExistsToken(kAppId, kSender, kScope)); |
1561 | 1546 |
1562 reset_last_event(); | 1547 reset_last_event(); |
1563 | 1548 |
1564 // Delete the 2nd token. | 1549 // Delete the 2nd token. |
1565 DeleteToken(kAppId, kSender2, kScope); | 1550 DeleteToken(kAppId, kSender2, kScope); |
1566 CompleteDeleteToken(); | 1551 ASSERT_NO_FATAL_FAILURE(CompleteDeleteToken()); |
1567 | 1552 |
1568 EXPECT_EQ(UNREGISTRATION_COMPLETED, last_event()); | 1553 EXPECT_EQ(UNREGISTRATION_COMPLETED, last_event()); |
1569 EXPECT_EQ(kAppId, last_app_id()); | 1554 EXPECT_EQ(kAppId, last_app_id()); |
1570 EXPECT_EQ(GCMClient::SUCCESS, last_result()); | 1555 EXPECT_EQ(GCMClient::SUCCESS, last_result()); |
1571 // The 2nd token is gone while the 1st token still exists. | 1556 // The 2nd token is gone while the 1st token still exists. |
1572 EXPECT_TRUE(ExistsToken(kAppId, kSender, kScope)); | 1557 EXPECT_TRUE(ExistsToken(kAppId, kSender, kScope)); |
1573 EXPECT_FALSE(ExistsToken(kAppId, kSender2, kScope)); | 1558 EXPECT_FALSE(ExistsToken(kAppId, kSender2, kScope)); |
1574 | 1559 |
1575 reset_last_event(); | 1560 reset_last_event(); |
1576 | 1561 |
1577 // Delete the 1st token. | 1562 // Delete the 1st token. |
1578 DeleteToken(kAppId, kSender, kScope); | 1563 DeleteToken(kAppId, kSender, kScope); |
1579 CompleteDeleteToken(); | 1564 ASSERT_NO_FATAL_FAILURE(CompleteDeleteToken()); |
1580 | 1565 |
1581 EXPECT_EQ(UNREGISTRATION_COMPLETED, last_event()); | 1566 EXPECT_EQ(UNREGISTRATION_COMPLETED, last_event()); |
1582 EXPECT_EQ(kAppId, last_app_id()); | 1567 EXPECT_EQ(kAppId, last_app_id()); |
1583 EXPECT_EQ(GCMClient::SUCCESS, last_result()); | 1568 EXPECT_EQ(GCMClient::SUCCESS, last_result()); |
1584 // Both tokens are gone now. | 1569 // Both tokens are gone now. |
1585 EXPECT_FALSE(ExistsToken(kAppId, kSender, kScope)); | 1570 EXPECT_FALSE(ExistsToken(kAppId, kSender, kScope)); |
1586 EXPECT_FALSE(ExistsToken(kAppId, kSender, kScope)); | 1571 EXPECT_FALSE(ExistsToken(kAppId, kSender, kScope)); |
1587 | 1572 |
1588 reset_last_event(); | 1573 reset_last_event(); |
1589 | 1574 |
1590 // Trying to delete the token again will get an error. | 1575 // Trying to delete the token again will get an error. |
1591 DeleteToken(kAppId, kSender, kScope); | 1576 DeleteToken(kAppId, kSender, kScope); |
1592 PumpLoopUntilIdle(); | 1577 PumpLoopUntilIdle(); |
1593 | 1578 |
1594 EXPECT_EQ(UNREGISTRATION_COMPLETED, last_event()); | 1579 EXPECT_EQ(UNREGISTRATION_COMPLETED, last_event()); |
1595 EXPECT_EQ(kAppId, last_app_id()); | 1580 EXPECT_EQ(kAppId, last_app_id()); |
1596 EXPECT_EQ(GCMClient::INVALID_PARAMETER, last_result()); | 1581 EXPECT_EQ(GCMClient::INVALID_PARAMETER, last_result()); |
1597 } | 1582 } |
1598 | 1583 |
1599 TEST_F(GCMClientInstanceIDTest, DeleteAllTokens) { | 1584 TEST_F(GCMClientInstanceIDTest, DeleteAllTokens) { |
1600 AddInstanceID(kAppId, kInstanceID); | 1585 AddInstanceID(kAppId, kInstanceID); |
1601 | 1586 |
1602 // Get a token. | 1587 // Get a token. |
1603 EXPECT_FALSE(ExistsToken(kAppId, kSender, kScope)); | 1588 EXPECT_FALSE(ExistsToken(kAppId, kSender, kScope)); |
1604 GetToken(kAppId, kSender, kScope); | 1589 GetToken(kAppId, kSender, kScope); |
1605 CompleteRegistration("token1"); | 1590 ASSERT_NO_FATAL_FAILURE(CompleteRegistration("token1")); |
1606 | 1591 |
1607 EXPECT_EQ(REGISTRATION_COMPLETED, last_event()); | 1592 EXPECT_EQ(REGISTRATION_COMPLETED, last_event()); |
1608 EXPECT_EQ(kAppId, last_app_id()); | 1593 EXPECT_EQ(kAppId, last_app_id()); |
1609 EXPECT_EQ("token1", last_registration_id()); | 1594 EXPECT_EQ("token1", last_registration_id()); |
1610 EXPECT_EQ(GCMClient::SUCCESS, last_result()); | 1595 EXPECT_EQ(GCMClient::SUCCESS, last_result()); |
1611 EXPECT_TRUE(ExistsToken(kAppId, kSender, kScope)); | 1596 EXPECT_TRUE(ExistsToken(kAppId, kSender, kScope)); |
1612 | 1597 |
1613 reset_last_event(); | 1598 reset_last_event(); |
1614 | 1599 |
1615 // Get another token. | 1600 // Get another token. |
1616 EXPECT_FALSE(ExistsToken(kAppId, kSender2, kScope)); | 1601 EXPECT_FALSE(ExistsToken(kAppId, kSender2, kScope)); |
1617 GetToken(kAppId, kSender2, kScope); | 1602 GetToken(kAppId, kSender2, kScope); |
1618 CompleteRegistration("token2"); | 1603 ASSERT_NO_FATAL_FAILURE(CompleteRegistration("token2")); |
1619 | 1604 |
1620 EXPECT_EQ(REGISTRATION_COMPLETED, last_event()); | 1605 EXPECT_EQ(REGISTRATION_COMPLETED, last_event()); |
1621 EXPECT_EQ(kAppId, last_app_id()); | 1606 EXPECT_EQ(kAppId, last_app_id()); |
1622 EXPECT_EQ("token2", last_registration_id()); | 1607 EXPECT_EQ("token2", last_registration_id()); |
1623 EXPECT_EQ(GCMClient::SUCCESS, last_result()); | 1608 EXPECT_EQ(GCMClient::SUCCESS, last_result()); |
1624 EXPECT_TRUE(ExistsToken(kAppId, kSender2, kScope)); | 1609 EXPECT_TRUE(ExistsToken(kAppId, kSender2, kScope)); |
1625 // The 1st token still exists. | 1610 // The 1st token still exists. |
1626 EXPECT_TRUE(ExistsToken(kAppId, kSender, kScope)); | 1611 EXPECT_TRUE(ExistsToken(kAppId, kSender, kScope)); |
1627 | 1612 |
1628 reset_last_event(); | 1613 reset_last_event(); |
1629 | 1614 |
1630 // Delete all tokens. | 1615 // Delete all tokens. |
1631 DeleteToken(kAppId, "*", "*"); | 1616 DeleteToken(kAppId, "*", "*"); |
1632 CompleteDeleteToken(); | 1617 ASSERT_NO_FATAL_FAILURE(CompleteDeleteToken()); |
1633 | 1618 |
1634 EXPECT_EQ(UNREGISTRATION_COMPLETED, last_event()); | 1619 EXPECT_EQ(UNREGISTRATION_COMPLETED, last_event()); |
1635 EXPECT_EQ(kAppId, last_app_id()); | 1620 EXPECT_EQ(kAppId, last_app_id()); |
1636 EXPECT_EQ(GCMClient::SUCCESS, last_result()); | 1621 EXPECT_EQ(GCMClient::SUCCESS, last_result()); |
1637 // All tokens are gone now. | 1622 // All tokens are gone now. |
1638 EXPECT_FALSE(ExistsToken(kAppId, kSender, kScope)); | 1623 EXPECT_FALSE(ExistsToken(kAppId, kSender, kScope)); |
1639 EXPECT_FALSE(ExistsToken(kAppId, kSender, kScope)); | 1624 EXPECT_FALSE(ExistsToken(kAppId, kSender, kScope)); |
1640 } | 1625 } |
1641 | 1626 |
1642 TEST_F(GCMClientInstanceIDTest, DeleteAllTokensBeforeGetAnyToken) { | 1627 TEST_F(GCMClientInstanceIDTest, DeleteAllTokensBeforeGetAnyToken) { |
1643 AddInstanceID(kAppId, kInstanceID); | 1628 AddInstanceID(kAppId, kInstanceID); |
1644 | 1629 |
1645 // Delete all tokens without getting a token first. | 1630 // Delete all tokens without getting a token first. |
1646 DeleteToken(kAppId, "*", "*"); | 1631 DeleteToken(kAppId, "*", "*"); |
1647 // No need to call CompleteDeleteToken since unregistration request should | 1632 // No need to call CompleteDeleteToken since unregistration request should |
1648 // not be triggered. | 1633 // not be triggered. |
1649 PumpLoopUntilIdle(); | 1634 PumpLoopUntilIdle(); |
1650 | 1635 |
1651 EXPECT_EQ(UNREGISTRATION_COMPLETED, last_event()); | 1636 EXPECT_EQ(UNREGISTRATION_COMPLETED, last_event()); |
1652 EXPECT_EQ(kAppId, last_app_id()); | 1637 EXPECT_EQ(kAppId, last_app_id()); |
1653 EXPECT_EQ(GCMClient::SUCCESS, last_result()); | 1638 EXPECT_EQ(GCMClient::SUCCESS, last_result()); |
1654 } | 1639 } |
1655 | 1640 |
1656 } // namespace gcm | 1641 } // namespace gcm |
OLD | NEW |