OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |