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

Side by Side Diff: components/gcm_driver/gcm_client_impl_unittest.cc

Issue 594383003: [GCM] Passing GCMClient::AccountTokenInfo list to GCMDriver (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@account-mapper
Patch Set: Addressing CR comments 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 | « components/gcm_driver/gcm_client_impl.cc ('k') | components/gcm_driver/gcm_driver.h » ('j') | 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 "components/gcm_driver/gcm_client_impl.h" 5 #include "components/gcm_driver/gcm_client_impl.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/files/scoped_temp_dir.h" 8 #include "base/files/scoped_temp_dir.h"
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "base/run_loop.h" 10 #include "base/run_loop.h"
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 for (std::map<std::string, std::string>::const_iterator iter = data.begin(); 61 for (std::map<std::string, std::string>::const_iterator iter = data.begin();
62 iter != data.end(); 62 iter != data.end();
63 ++iter) { 63 ++iter) {
64 mcs_proto::AppData* app_data = data_message.add_app_data(); 64 mcs_proto::AppData* app_data = data_message.add_app_data();
65 app_data->set_key(iter->first); 65 app_data->set_key(iter->first);
66 app_data->set_value(iter->second); 66 app_data->set_value(iter->second);
67 } 67 }
68 return MCSMessage(kDataMessageStanzaTag, data_message); 68 return MCSMessage(kDataMessageStanzaTag, data_message);
69 } 69 }
70 70
71 GCMClient::AccountTokenInfo MakeAccountToken(const std::string& email,
72 const std::string& token) {
73 GCMClient::AccountTokenInfo account_token;
74 account_token.email = email;
75 account_token.access_token = token;
76 return account_token;
77 }
78
79 std::map<std::string, std::string> MakeEmailToTokenMap(
80 const std::vector<GCMClient::AccountTokenInfo>& account_tokens) {
81 std::map<std::string, std::string> email_token_map;
82 for (std::vector<GCMClient::AccountTokenInfo>::const_iterator iter =
83 account_tokens.begin(); iter != account_tokens.end(); ++iter) {
84 email_token_map[iter->email] = iter->access_token;
85 }
86 return email_token_map;
87 }
88
71 class FakeMCSClient : public MCSClient { 89 class FakeMCSClient : public MCSClient {
72 public: 90 public:
73 FakeMCSClient(base::Clock* clock, 91 FakeMCSClient(base::Clock* clock,
74 ConnectionFactory* connection_factory, 92 ConnectionFactory* connection_factory,
75 GCMStore* gcm_store, 93 GCMStore* gcm_store,
76 GCMStatsRecorder* recorder); 94 GCMStatsRecorder* recorder);
77 virtual ~FakeMCSClient(); 95 virtual ~FakeMCSClient();
78 virtual void Login(uint64 android_id, uint64 security_token) OVERRIDE; 96 virtual void Login(uint64 android_id, uint64 security_token) OVERRIDE;
79 virtual void SendMessage(const MCSMessage& message) OVERRIDE; 97 virtual void SendMessage(const MCSMessage& message) OVERRIDE;
80 98
(...skipping 755 matching lines...) Expand 10 before | Expand all | Expand 10 after
836 settings["checkin_interval"] = base::IntToString(kSettingsCheckinInterval); 854 settings["checkin_interval"] = base::IntToString(kSettingsCheckinInterval);
837 settings["checkin_url"] = "http://alternative.url/checkin"; 855 settings["checkin_url"] = "http://alternative.url/checkin";
838 settings["gcm_hostname"] = "alternative.gcm.host"; 856 settings["gcm_hostname"] = "alternative.gcm.host";
839 settings["gcm_secure_port"] = "7777"; 857 settings["gcm_secure_port"] = "7777";
840 settings["gcm_registration_url"] = "http://alternative.url/registration"; 858 settings["gcm_registration_url"] = "http://alternative.url/registration";
841 CompleteCheckin(kDeviceAndroidId, 859 CompleteCheckin(kDeviceAndroidId,
842 kDeviceSecurityToken, 860 kDeviceSecurityToken,
843 GServicesSettings::CalculateDigest(settings), 861 GServicesSettings::CalculateDigest(settings),
844 settings); 862 settings);
845 863
846 std::map<std::string, std::string> account_tokens; 864 std::vector<GCMClient::AccountTokenInfo> account_tokens;
847 account_tokens["test_user1@gmail.com"] = "token1"; 865 account_tokens.push_back(MakeAccountToken("test_user1@gmail.com", "token1"));
848 account_tokens["test_user2@gmail.com"] = "token2"; 866 account_tokens.push_back(MakeAccountToken("test_user2@gmail.com", "token2"));
849 gcm_client()->SetAccountsForCheckin(account_tokens); 867 gcm_client()->SetAccountTokens(account_tokens);
850 868
851 EXPECT_TRUE(device_checkin_info().last_checkin_accounts.empty()); 869 EXPECT_TRUE(device_checkin_info().last_checkin_accounts.empty());
852 EXPECT_TRUE(device_checkin_info().accounts_set); 870 EXPECT_TRUE(device_checkin_info().accounts_set);
853 EXPECT_EQ(account_tokens, device_checkin_info().account_tokens); 871 EXPECT_EQ(MakeEmailToTokenMap(account_tokens),
872 device_checkin_info().account_tokens);
854 873
855 PumpLoopUntilIdle(); 874 PumpLoopUntilIdle();
856 CompleteCheckin(kDeviceAndroidId, 875 CompleteCheckin(kDeviceAndroidId,
857 kDeviceSecurityToken, 876 kDeviceSecurityToken,
858 GServicesSettings::CalculateDigest(settings), 877 GServicesSettings::CalculateDigest(settings),
859 settings); 878 settings);
860 879
861 std::set<std::string> accounts; 880 std::set<std::string> accounts;
862 accounts.insert("test_user1@gmail.com"); 881 accounts.insert("test_user1@gmail.com");
863 accounts.insert("test_user2@gmail.com"); 882 accounts.insert("test_user2@gmail.com");
864 EXPECT_EQ(accounts, device_checkin_info().last_checkin_accounts); 883 EXPECT_EQ(accounts, device_checkin_info().last_checkin_accounts);
865 EXPECT_TRUE(device_checkin_info().accounts_set); 884 EXPECT_TRUE(device_checkin_info().accounts_set);
866 EXPECT_EQ(account_tokens, device_checkin_info().account_tokens); 885 EXPECT_EQ(MakeEmailToTokenMap(account_tokens),
886 device_checkin_info().account_tokens);
867 } 887 }
868 888
869 // This test only checks that periodic checkin happens. 889 // This test only checks that periodic checkin happens.
870 TEST_F(GCMClientImplCheckinTest, CheckinWhenAccountRemoved) { 890 TEST_F(GCMClientImplCheckinTest, CheckinWhenAccountRemoved) {
871 std::map<std::string, std::string> settings; 891 std::map<std::string, std::string> settings;
872 settings["checkin_interval"] = base::IntToString(kSettingsCheckinInterval); 892 settings["checkin_interval"] = base::IntToString(kSettingsCheckinInterval);
873 settings["checkin_url"] = "http://alternative.url/checkin"; 893 settings["checkin_url"] = "http://alternative.url/checkin";
874 settings["gcm_hostname"] = "alternative.gcm.host"; 894 settings["gcm_hostname"] = "alternative.gcm.host";
875 settings["gcm_secure_port"] = "7777"; 895 settings["gcm_secure_port"] = "7777";
876 settings["gcm_registration_url"] = "http://alternative.url/registration"; 896 settings["gcm_registration_url"] = "http://alternative.url/registration";
877 CompleteCheckin(kDeviceAndroidId, 897 CompleteCheckin(kDeviceAndroidId,
878 kDeviceSecurityToken, 898 kDeviceSecurityToken,
879 GServicesSettings::CalculateDigest(settings), 899 GServicesSettings::CalculateDigest(settings),
880 settings); 900 settings);
881 901
882 std::map<std::string, std::string> account_tokens; 902 std::vector<GCMClient::AccountTokenInfo> account_tokens;
883 account_tokens["test_user1@gmail.com"] = "token1"; 903 account_tokens.push_back(MakeAccountToken("test_user1@gmail.com", "token1"));
884 account_tokens["test_user2@gmail.com"] = "token2"; 904 account_tokens.push_back(MakeAccountToken("test_user2@gmail.com", "token2"));
885 gcm_client()->SetAccountsForCheckin(account_tokens); 905 gcm_client()->SetAccountTokens(account_tokens);
886 PumpLoopUntilIdle(); 906 PumpLoopUntilIdle();
887 CompleteCheckin(kDeviceAndroidId, 907 CompleteCheckin(kDeviceAndroidId,
888 kDeviceSecurityToken, 908 kDeviceSecurityToken,
889 GServicesSettings::CalculateDigest(settings), 909 GServicesSettings::CalculateDigest(settings),
890 settings); 910 settings);
891 911
892 EXPECT_EQ(2UL, device_checkin_info().last_checkin_accounts.size()); 912 EXPECT_EQ(2UL, device_checkin_info().last_checkin_accounts.size());
893 EXPECT_TRUE(device_checkin_info().accounts_set); 913 EXPECT_TRUE(device_checkin_info().accounts_set);
894 EXPECT_EQ(account_tokens, device_checkin_info().account_tokens); 914 EXPECT_EQ(MakeEmailToTokenMap(account_tokens),
915 device_checkin_info().account_tokens);
895 916
896 account_tokens.erase(account_tokens.find("test_user2@gmail.com")); 917 account_tokens.erase(account_tokens.begin() + 1);
897 gcm_client()->SetAccountsForCheckin(account_tokens); 918 gcm_client()->SetAccountTokens(account_tokens);
898 919
899 PumpLoopUntilIdle(); 920 PumpLoopUntilIdle();
900 CompleteCheckin(kDeviceAndroidId, 921 CompleteCheckin(kDeviceAndroidId,
901 kDeviceSecurityToken, 922 kDeviceSecurityToken,
902 GServicesSettings::CalculateDigest(settings), 923 GServicesSettings::CalculateDigest(settings),
903 settings); 924 settings);
904 925
905 std::set<std::string> accounts; 926 std::set<std::string> accounts;
906 accounts.insert("test_user1@gmail.com"); 927 accounts.insert("test_user1@gmail.com");
907 EXPECT_EQ(accounts, device_checkin_info().last_checkin_accounts); 928 EXPECT_EQ(accounts, device_checkin_info().last_checkin_accounts);
908 EXPECT_TRUE(device_checkin_info().accounts_set); 929 EXPECT_TRUE(device_checkin_info().accounts_set);
909 EXPECT_EQ(account_tokens, device_checkin_info().account_tokens); 930 EXPECT_EQ(MakeEmailToTokenMap(account_tokens),
931 device_checkin_info().account_tokens);
910 } 932 }
911 933
912 // This test only checks that periodic checkin happens. 934 // This test only checks that periodic checkin happens.
913 TEST_F(GCMClientImplCheckinTest, CheckinWhenAccountReplaced) { 935 TEST_F(GCMClientImplCheckinTest, CheckinWhenAccountReplaced) {
914 std::map<std::string, std::string> settings; 936 std::map<std::string, std::string> settings;
915 settings["checkin_interval"] = base::IntToString(kSettingsCheckinInterval); 937 settings["checkin_interval"] = base::IntToString(kSettingsCheckinInterval);
916 settings["checkin_url"] = "http://alternative.url/checkin"; 938 settings["checkin_url"] = "http://alternative.url/checkin";
917 settings["gcm_hostname"] = "alternative.gcm.host"; 939 settings["gcm_hostname"] = "alternative.gcm.host";
918 settings["gcm_secure_port"] = "7777"; 940 settings["gcm_secure_port"] = "7777";
919 settings["gcm_registration_url"] = "http://alternative.url/registration"; 941 settings["gcm_registration_url"] = "http://alternative.url/registration";
920 CompleteCheckin(kDeviceAndroidId, 942 CompleteCheckin(kDeviceAndroidId,
921 kDeviceSecurityToken, 943 kDeviceSecurityToken,
922 GServicesSettings::CalculateDigest(settings), 944 GServicesSettings::CalculateDigest(settings),
923 settings); 945 settings);
924 946
925 std::map<std::string, std::string> account_tokens; 947 std::vector<GCMClient::AccountTokenInfo> account_tokens;
926 account_tokens["test_user1@gmail.com"] = "token1"; 948 account_tokens.push_back(MakeAccountToken("test_user1@gmail.com", "token1"));
927 gcm_client()->SetAccountsForCheckin(account_tokens); 949 gcm_client()->SetAccountTokens(account_tokens);
928 950
929 PumpLoopUntilIdle(); 951 PumpLoopUntilIdle();
930 CompleteCheckin(kDeviceAndroidId, 952 CompleteCheckin(kDeviceAndroidId,
931 kDeviceSecurityToken, 953 kDeviceSecurityToken,
932 GServicesSettings::CalculateDigest(settings), 954 GServicesSettings::CalculateDigest(settings),
933 settings); 955 settings);
934 956
935 std::set<std::string> accounts; 957 std::set<std::string> accounts;
936 accounts.insert("test_user1@gmail.com"); 958 accounts.insert("test_user1@gmail.com");
937 EXPECT_EQ(accounts, device_checkin_info().last_checkin_accounts); 959 EXPECT_EQ(accounts, device_checkin_info().last_checkin_accounts);
938 960
939 // This should trigger another checkin, because the list of accounts is 961 // This should trigger another checkin, because the list of accounts is
940 // different. 962 // different.
941 account_tokens.erase(account_tokens.find("test_user1@gmail.com")); 963 account_tokens.clear();
942 account_tokens["test_user2@gmail.com"] = "token2"; 964 account_tokens.push_back(MakeAccountToken("test_user2@gmail.com", "token2"));
943 gcm_client()->SetAccountsForCheckin(account_tokens); 965 gcm_client()->SetAccountTokens(account_tokens);
944 966
945 PumpLoopUntilIdle(); 967 PumpLoopUntilIdle();
946 CompleteCheckin(kDeviceAndroidId, 968 CompleteCheckin(kDeviceAndroidId,
947 kDeviceSecurityToken, 969 kDeviceSecurityToken,
948 GServicesSettings::CalculateDigest(settings), 970 GServicesSettings::CalculateDigest(settings),
949 settings); 971 settings);
950 972
951 accounts.clear(); 973 accounts.clear();
952 accounts.insert("test_user2@gmail.com"); 974 accounts.insert("test_user2@gmail.com");
953 EXPECT_EQ(accounts, device_checkin_info().last_checkin_accounts); 975 EXPECT_EQ(accounts, device_checkin_info().last_checkin_accounts);
954 EXPECT_TRUE(device_checkin_info().accounts_set); 976 EXPECT_TRUE(device_checkin_info().accounts_set);
955 EXPECT_EQ(account_tokens, device_checkin_info().account_tokens); 977 EXPECT_EQ(MakeEmailToTokenMap(account_tokens),
978 device_checkin_info().account_tokens);
956 } 979 }
957 980
958 class GCMClientImplStartAndStopTest : public GCMClientImplTest { 981 class GCMClientImplStartAndStopTest : public GCMClientImplTest {
959 public: 982 public:
960 GCMClientImplStartAndStopTest(); 983 GCMClientImplStartAndStopTest();
961 virtual ~GCMClientImplStartAndStopTest(); 984 virtual ~GCMClientImplStartAndStopTest();
962 985
963 virtual void SetUp() OVERRIDE; 986 virtual void SetUp() OVERRIDE;
964 }; 987 };
965 988
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
1002 TEST_F(GCMClientImplStartAndStopTest, StartStopAndRestartImmediately) { 1025 TEST_F(GCMClientImplStartAndStopTest, StartStopAndRestartImmediately) {
1003 // Start the GCM and then stop and restart it immediately. 1026 // Start the GCM and then stop and restart it immediately.
1004 gcm_client()->Start(); 1027 gcm_client()->Start();
1005 gcm_client()->Stop(); 1028 gcm_client()->Stop();
1006 gcm_client()->Start(); 1029 gcm_client()->Start();
1007 1030
1008 PumpLoopUntilIdle(); 1031 PumpLoopUntilIdle();
1009 } 1032 }
1010 1033
1011 } // namespace gcm 1034 } // namespace gcm
OLDNEW
« no previous file with comments | « components/gcm_driver/gcm_client_impl.cc ('k') | components/gcm_driver/gcm_driver.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698