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

Side by Side Diff: chrome/browser/services/gcm/gcm_profile_service_unittest.cc

Issue 185933003: [GCM] Only allow the senders that the application is currently registered for (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebasing Created 6 years, 9 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 | « chrome/browser/services/gcm/gcm_profile_service.cc ('k') | google_apis/gcm/gcm_client.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 (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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 <algorithm> 5 #include <algorithm>
6 #include <map> 6 #include <map>
7 7
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
(...skipping 975 matching lines...) Expand 10 before | Expand all | Expand 10 after
986 EXPECT_EQ(FakeGCMEventRouter::SEND_ERROR_EVENT, 986 EXPECT_EQ(FakeGCMEventRouter::SEND_ERROR_EVENT,
987 consumer()->gcm_event_router()->received_event()); 987 consumer()->gcm_event_router()->received_event());
988 EXPECT_EQ(kTestingAppId, consumer()->gcm_event_router()->app_id()); 988 EXPECT_EQ(kTestingAppId, consumer()->gcm_event_router()->app_id());
989 EXPECT_EQ(consumer()->send_message_id(), 989 EXPECT_EQ(consumer()->send_message_id(),
990 consumer()->gcm_event_router()->send_message_id()); 990 consumer()->gcm_event_router()->send_message_id());
991 EXPECT_NE(GCMClient::SUCCESS, 991 EXPECT_NE(GCMClient::SUCCESS,
992 consumer()->gcm_event_router()->send_result()); 992 consumer()->gcm_event_router()->send_result());
993 } 993 }
994 994
995 TEST_F(GCMProfileServiceSingleProfileTest, MessageReceived) { 995 TEST_F(GCMProfileServiceSingleProfileTest, MessageReceived) {
996 consumer()->Register(kTestingAppId, "sender");
997 WaitUntilCompleted();
996 GCMClient::IncomingMessage message; 998 GCMClient::IncomingMessage message;
997 message.data["key1"] = "value1"; 999 message.data["key1"] = "value1";
998 message.data["key2"] = "value2"; 1000 message.data["key2"] = "value2";
1001 message.sender_id = "sender";
999 consumer()->GetGCMClient()->ReceiveMessage(kTestingAppId, message); 1002 consumer()->GetGCMClient()->ReceiveMessage(kTestingAppId, message);
1000 WaitUntilCompleted(); 1003 WaitUntilCompleted();
1001 EXPECT_EQ(FakeGCMEventRouter::MESSAGE_EVENT, 1004 EXPECT_EQ(FakeGCMEventRouter::MESSAGE_EVENT,
1002 consumer()->gcm_event_router()->received_event()); 1005 consumer()->gcm_event_router()->received_event());
1003 EXPECT_EQ(kTestingAppId, consumer()->gcm_event_router()->app_id()); 1006 EXPECT_EQ(kTestingAppId, consumer()->gcm_event_router()->app_id());
1004 EXPECT_TRUE(message.data == consumer()->gcm_event_router()->message().data); 1007 EXPECT_TRUE(message.data == consumer()->gcm_event_router()->message().data);
1005 EXPECT_TRUE(consumer()->gcm_event_router()->message().collapse_key.empty()); 1008 EXPECT_TRUE(consumer()->gcm_event_router()->message().collapse_key.empty());
1009 EXPECT_EQ(message.sender_id,
1010 consumer()->gcm_event_router()->message().sender_id);
1006 } 1011 }
1007 1012
1008 TEST_F(GCMProfileServiceSingleProfileTest, MessageWithCollapseKeyReceived) { 1013 TEST_F(GCMProfileServiceSingleProfileTest, MessageWithCollapseKeyReceived) {
1014 consumer()->Register(kTestingAppId, "sender");
1015 WaitUntilCompleted();
1009 GCMClient::IncomingMessage message; 1016 GCMClient::IncomingMessage message;
1010 message.data["key1"] = "value1"; 1017 message.data["key1"] = "value1";
1011 message.collapse_key = "collapse_key_value"; 1018 message.collapse_key = "collapse_key_value";
1019 message.sender_id = "sender";
1012 consumer()->GetGCMClient()->ReceiveMessage(kTestingAppId, message); 1020 consumer()->GetGCMClient()->ReceiveMessage(kTestingAppId, message);
1013 WaitUntilCompleted(); 1021 WaitUntilCompleted();
1014 EXPECT_EQ(FakeGCMEventRouter::MESSAGE_EVENT, 1022 EXPECT_EQ(FakeGCMEventRouter::MESSAGE_EVENT,
1015 consumer()->gcm_event_router()->received_event()); 1023 consumer()->gcm_event_router()->received_event());
1016 EXPECT_EQ(kTestingAppId, consumer()->gcm_event_router()->app_id()); 1024 EXPECT_EQ(kTestingAppId, consumer()->gcm_event_router()->app_id());
1017 EXPECT_TRUE(message.data == consumer()->gcm_event_router()->message().data); 1025 EXPECT_TRUE(message.data == consumer()->gcm_event_router()->message().data);
1018 EXPECT_EQ(message.collapse_key, 1026 EXPECT_EQ(message.collapse_key,
1019 consumer()->gcm_event_router()->message().collapse_key); 1027 consumer()->gcm_event_router()->message().collapse_key);
1028 EXPECT_EQ(message.sender_id,
1029 consumer()->gcm_event_router()->message().sender_id);
1030 }
1031
1032 TEST_F(GCMProfileServiceSingleProfileTest,
1033 MessageNotReceivedFromNotRegisteredSender) {
1034 // Explicitly not registering the sender here, so that message gets dropped.
1035 GCMClient::IncomingMessage message;
1036 message.data["key1"] = "value1";
1037 message.data["key2"] = "value2";
1038 message.sender_id = "sender";
1039 consumer()->GetGCMClient()->ReceiveMessage(kTestingAppId, message);
1040 PumpUILoop();
1041 EXPECT_EQ(FakeGCMEventRouter::NO_EVENT,
1042 consumer()->gcm_event_router()->received_event());
1043 consumer()->gcm_event_router()->clear_results();
1044
1045 // Register for the sedner and try to receive the message again, which should
1046 // work with no problems.
1047 consumer()->Register(kTestingAppId, "sender");
1048 WaitUntilCompleted();
1049 consumer()->GetGCMClient()->ReceiveMessage(kTestingAppId, message);
1050 WaitUntilCompleted();
1051 EXPECT_EQ(FakeGCMEventRouter::MESSAGE_EVENT,
1052 consumer()->gcm_event_router()->received_event());
1053 consumer()->gcm_event_router()->clear_results();
1054
1055 // Register for a different sender and try to receive the message again from
1056 // the old sender, which again should not create an event.
1057 consumer()->Register(kTestingAppId, "sender2");
1058 WaitUntilCompleted();
1059 consumer()->GetGCMClient()->ReceiveMessage(kTestingAppId, message);
1060 PumpUILoop();
1061 EXPECT_EQ(FakeGCMEventRouter::NO_EVENT,
1062 consumer()->gcm_event_router()->received_event());
1020 } 1063 }
1021 1064
1022 TEST_F(GCMProfileServiceSingleProfileTest, MessagesDeleted) { 1065 TEST_F(GCMProfileServiceSingleProfileTest, MessagesDeleted) {
1023 consumer()->GetGCMClient()->DeleteMessages(kTestingAppId); 1066 consumer()->GetGCMClient()->DeleteMessages(kTestingAppId);
1024 WaitUntilCompleted(); 1067 WaitUntilCompleted();
1025 EXPECT_EQ(FakeGCMEventRouter::MESSAGES_DELETED_EVENT, 1068 EXPECT_EQ(FakeGCMEventRouter::MESSAGES_DELETED_EVENT,
1026 consumer()->gcm_event_router()->received_event()); 1069 consumer()->gcm_event_router()->received_event());
1027 EXPECT_EQ(kTestingAppId, consumer()->gcm_event_router()->app_id()); 1070 EXPECT_EQ(kTestingAppId, consumer()->gcm_event_router()->app_id());
1028 } 1071 }
1029 1072
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
1121 message3.data["hello"] = "world"; 1164 message3.data["hello"] = "world";
1122 consumer2()->Send(kTestingAppId2, kUserId, message3); 1165 consumer2()->Send(kTestingAppId2, kUserId, message3);
1123 1166
1124 WaitUntilCompleted(); 1167 WaitUntilCompleted();
1125 1168
1126 EXPECT_EQ(consumer2()->send_message_id(), message3.id); 1169 EXPECT_EQ(consumer2()->send_message_id(), message3.id);
1127 EXPECT_EQ(GCMClient::SUCCESS, consumer()->send_result()); 1170 EXPECT_EQ(GCMClient::SUCCESS, consumer()->send_result());
1128 } 1171 }
1129 1172
1130 TEST_F(GCMProfileServiceMultiProfileTest, MessageReceived) { 1173 TEST_F(GCMProfileServiceMultiProfileTest, MessageReceived) {
1174 consumer()->Register(kTestingAppId, "sender");
1175 consumer2()->Register(kTestingAppId, "sender");
1176 consumer2()->Register(kTestingAppId2, "sender2");
1177 WaitUntilCompleted();
1178 WaitUntilCompleted();
1179 WaitUntilCompleted();
1180
1131 // Trigger an incoming message for an app in one profile. 1181 // Trigger an incoming message for an app in one profile.
1132 GCMClient::IncomingMessage message; 1182 GCMClient::IncomingMessage message;
1133 message.data["key1"] = "value1"; 1183 message.data["key1"] = "value1";
1134 message.data["key2"] = "value2"; 1184 message.data["key2"] = "value2";
1185 message.sender_id = "sender";
1135 consumer()->GetGCMClient()->ReceiveMessage(kTestingAppId, message); 1186 consumer()->GetGCMClient()->ReceiveMessage(kTestingAppId, message);
1136 1187
1137 // Trigger an incoming message for the same app in another profile. 1188 // Trigger an incoming message for the same app in another profile.
1138 GCMClient::IncomingMessage message2; 1189 GCMClient::IncomingMessage message2;
1139 message2.data["foo"] = "bar"; 1190 message2.data["foo"] = "bar";
1191 message2.sender_id = "sender";
1140 consumer2()->GetGCMClient()->ReceiveMessage(kTestingAppId, message2); 1192 consumer2()->GetGCMClient()->ReceiveMessage(kTestingAppId, message2);
1141 1193
1142 WaitUntilCompleted(); 1194 WaitUntilCompleted();
1143 WaitUntilCompleted(); 1195 WaitUntilCompleted();
1144 1196
1145 EXPECT_EQ(FakeGCMEventRouter::MESSAGE_EVENT, 1197 EXPECT_EQ(FakeGCMEventRouter::MESSAGE_EVENT,
1146 consumer()->gcm_event_router()->received_event()); 1198 consumer()->gcm_event_router()->received_event());
1147 EXPECT_EQ(kTestingAppId, consumer()->gcm_event_router()->app_id()); 1199 EXPECT_EQ(kTestingAppId, consumer()->gcm_event_router()->app_id());
1148 EXPECT_TRUE(message.data == consumer()->gcm_event_router()->message().data); 1200 EXPECT_TRUE(message.data == consumer()->gcm_event_router()->message().data);
1201 EXPECT_EQ("sender", consumer()->gcm_event_router()->message().sender_id);
1149 1202
1150 EXPECT_EQ(FakeGCMEventRouter::MESSAGE_EVENT, 1203 EXPECT_EQ(FakeGCMEventRouter::MESSAGE_EVENT,
1151 consumer2()->gcm_event_router()->received_event()); 1204 consumer2()->gcm_event_router()->received_event());
1152 EXPECT_EQ(kTestingAppId, consumer2()->gcm_event_router()->app_id()); 1205 EXPECT_EQ(kTestingAppId, consumer2()->gcm_event_router()->app_id());
1153 EXPECT_TRUE(message2.data == consumer2()->gcm_event_router()->message().data); 1206 EXPECT_TRUE(message2.data == consumer2()->gcm_event_router()->message().data);
1207 EXPECT_EQ("sender", consumer2()->gcm_event_router()->message().sender_id);
1154 1208
1155 // Trigger another incoming message for a different app in another profile. 1209 // Trigger another incoming message for a different app in another profile.
1156 GCMClient::IncomingMessage message3; 1210 GCMClient::IncomingMessage message3;
1157 message3.data["bar1"] = "foo1"; 1211 message3.data["bar1"] = "foo1";
1158 message3.data["bar2"] = "foo2"; 1212 message3.data["bar2"] = "foo2";
1213 message3.sender_id = "sender2";
1159 consumer2()->GetGCMClient()->ReceiveMessage(kTestingAppId2, message3); 1214 consumer2()->GetGCMClient()->ReceiveMessage(kTestingAppId2, message3);
1160 1215
1161 WaitUntilCompleted(); 1216 WaitUntilCompleted();
1162 1217
1163 EXPECT_EQ(FakeGCMEventRouter::MESSAGE_EVENT, 1218 EXPECT_EQ(FakeGCMEventRouter::MESSAGE_EVENT,
1164 consumer2()->gcm_event_router()->received_event()); 1219 consumer2()->gcm_event_router()->received_event());
1165 EXPECT_EQ(kTestingAppId2, consumer2()->gcm_event_router()->app_id()); 1220 EXPECT_EQ(kTestingAppId2, consumer2()->gcm_event_router()->app_id());
1166 EXPECT_TRUE(message3.data == consumer2()->gcm_event_router()->message().data); 1221 EXPECT_TRUE(message3.data == consumer2()->gcm_event_router()->message().data);
1222 EXPECT_EQ("sender2", consumer2()->gcm_event_router()->message().sender_id);
1167 } 1223 }
1168 1224
1169 // Test a set of GCM operations on multiple profiles. 1225 // Test a set of GCM operations on multiple profiles.
1170 // 1) Register 1 app in profile1 and register 2 apps in profile2; 1226 // 1) Register 1 app in profile1 and register 2 apps in profile2;
1171 // 2) Send a message from profile1; 1227 // 2) Send a message from profile1;
1172 // 3) Receive a message to an app in profile1 and receive a message for each of 1228 // 3) Receive a message to an app in profile1 and receive a message for each of
1173 // two apps in profile2; 1229 // two apps in profile2;
1174 // 4) Send a message foe ach of two apps in profile2; 1230 // 4) Send a message foe ach of two apps in profile2;
1175 // 5) Sign out of profile1. 1231 // 5) Sign out of profile1.
1176 // 6) Register/send stops working for profile1; 1232 // 6) Register/send stops working for profile1;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1208 1264
1209 WaitUntilCompleted(); 1265 WaitUntilCompleted();
1210 1266
1211 EXPECT_EQ(consumer()->send_message_id(), out_message.id); 1267 EXPECT_EQ(consumer()->send_message_id(), out_message.id);
1212 EXPECT_EQ(GCMClient::SUCCESS, consumer()->send_result()); 1268 EXPECT_EQ(GCMClient::SUCCESS, consumer()->send_result());
1213 1269
1214 // Trigger an incoming message for an app in one profile. 1270 // Trigger an incoming message for an app in one profile.
1215 GCMClient::IncomingMessage in_message; 1271 GCMClient::IncomingMessage in_message;
1216 in_message.data["in1"] = "in_data1"; 1272 in_message.data["in1"] = "in_data1";
1217 in_message.data["in1_2"] = "in_data1_2"; 1273 in_message.data["in1_2"] = "in_data1_2";
1274 in_message.sender_id = "sender1";
1218 consumer()->GetGCMClient()->ReceiveMessage(kTestingAppId, in_message); 1275 consumer()->GetGCMClient()->ReceiveMessage(kTestingAppId, in_message);
1219 1276
1220 WaitUntilCompleted(); 1277 WaitUntilCompleted();
1221 1278
1222 EXPECT_EQ(FakeGCMEventRouter::MESSAGE_EVENT, 1279 EXPECT_EQ(FakeGCMEventRouter::MESSAGE_EVENT,
1223 consumer()->gcm_event_router()->received_event()); 1280 consumer()->gcm_event_router()->received_event());
1224 EXPECT_EQ(kTestingAppId, consumer()->gcm_event_router()->app_id()); 1281 EXPECT_EQ(kTestingAppId, consumer()->gcm_event_router()->app_id());
1225 EXPECT_TRUE( 1282 EXPECT_TRUE(
1226 in_message.data == consumer()->gcm_event_router()->message().data); 1283 in_message.data == consumer()->gcm_event_router()->message().data);
1227 1284
1228 // Trigger 2 incoming messages, one for each app respectively, in another 1285 // Trigger 2 incoming messages, one for each app respectively, in another
1229 // profile. 1286 // profile.
1230 GCMClient::IncomingMessage in_message2; 1287 GCMClient::IncomingMessage in_message2;
1231 in_message2.data["in2"] = "in_data2"; 1288 in_message2.data["in2"] = "in_data2";
1289 in_message2.sender_id = "sender3";
1232 consumer2()->GetGCMClient()->ReceiveMessage(kTestingAppId2, in_message2); 1290 consumer2()->GetGCMClient()->ReceiveMessage(kTestingAppId2, in_message2);
1233 1291
1234 GCMClient::IncomingMessage in_message3; 1292 GCMClient::IncomingMessage in_message3;
1235 in_message3.data["in3"] = "in_data3"; 1293 in_message3.data["in3"] = "in_data3";
1236 in_message3.data["in3_2"] = "in_data3_2"; 1294 in_message3.data["in3_2"] = "in_data3_2";
1295 in_message3.sender_id = "sender2";
1237 consumer2()->GetGCMClient()->ReceiveMessage(kTestingAppId, in_message3); 1296 consumer2()->GetGCMClient()->ReceiveMessage(kTestingAppId, in_message3);
1238 1297
1239 consumer2()->gcm_event_router()->clear_results(); 1298 consumer2()->gcm_event_router()->clear_results();
1240 WaitUntilCompleted(); 1299 WaitUntilCompleted();
1241 1300
1242 EXPECT_EQ(FakeGCMEventRouter::MESSAGE_EVENT, 1301 EXPECT_EQ(FakeGCMEventRouter::MESSAGE_EVENT,
1243 consumer2()->gcm_event_router()->received_event()); 1302 consumer2()->gcm_event_router()->received_event());
1244 EXPECT_EQ(kTestingAppId2, consumer2()->gcm_event_router()->app_id()); 1303 EXPECT_EQ(kTestingAppId2, consumer2()->gcm_event_router()->app_id());
1245 EXPECT_TRUE( 1304 EXPECT_TRUE(
1246 in_message2.data == consumer2()->gcm_event_router()->message().data); 1305 in_message2.data == consumer2()->gcm_event_router()->message().data);
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
1315 consumer2()->gcm_event_router()->received_event()); 1374 consumer2()->gcm_event_router()->received_event());
1316 EXPECT_EQ(kTestingAppId, consumer2()->gcm_event_router()->app_id()); 1375 EXPECT_EQ(kTestingAppId, consumer2()->gcm_event_router()->app_id());
1317 EXPECT_EQ(consumer2()->send_message_id(), 1376 EXPECT_EQ(consumer2()->send_message_id(),
1318 consumer2()->gcm_event_router()->send_message_id()); 1377 consumer2()->gcm_event_router()->send_message_id());
1319 EXPECT_NE(GCMClient::SUCCESS, 1378 EXPECT_NE(GCMClient::SUCCESS,
1320 consumer2()->gcm_event_router()->send_result()); 1379 consumer2()->gcm_event_router()->send_result());
1321 1380
1322 // Sign in with a different user. 1381 // Sign in with a different user.
1323 consumer()->SignIn(kTestingUsername3); 1382 consumer()->SignIn(kTestingUsername3);
1324 1383
1384 // Signing out cleared all registrations so we need to register again.
1385 consumer()->Register(kTestingAppId, "sender1");
1386 WaitUntilCompleted();
1387
1325 // Incoming message will go through for the new signed-in user. 1388 // Incoming message will go through for the new signed-in user.
1326 GCMClient::IncomingMessage in_message5; 1389 GCMClient::IncomingMessage in_message5;
1327 in_message5.data["in5"] = "in_data5"; 1390 in_message5.data["in5"] = "in_data5";
1391 in_message5.sender_id = "sender1";
1328 consumer()->GetGCMClient()->ReceiveMessage(kTestingAppId, in_message5); 1392 consumer()->GetGCMClient()->ReceiveMessage(kTestingAppId, in_message5);
1329 1393
1330 consumer()->gcm_event_router()->clear_results(); 1394 consumer()->gcm_event_router()->clear_results();
1331 WaitUntilCompleted(); 1395 WaitUntilCompleted();
1332 1396
1333 EXPECT_EQ(FakeGCMEventRouter::MESSAGE_EVENT, 1397 EXPECT_EQ(FakeGCMEventRouter::MESSAGE_EVENT,
1334 consumer()->gcm_event_router()->received_event()); 1398 consumer()->gcm_event_router()->received_event());
1335 EXPECT_TRUE( 1399 EXPECT_TRUE(
1336 in_message5.data == consumer()->gcm_event_router()->message().data); 1400 in_message5.data == consumer()->gcm_event_router()->message().data);
1337 } 1401 }
1338 1402
1339 } // namespace gcm 1403 } // namespace gcm
OLDNEW
« no previous file with comments | « chrome/browser/services/gcm/gcm_profile_service.cc ('k') | google_apis/gcm/gcm_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698