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

Side by Side Diff: google_apis/gcm/engine/gcm_store_impl_unittest.cc

Issue 207443002: [GCM] Move registration info persistence from extension state store to GCM store (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Patch to land 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 | « google_apis/gcm/engine/gcm_store_impl.cc ('k') | google_apis/gcm/engine/registration_info.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 "google_apis/gcm/engine/gcm_store_impl.h" 5 #include "google_apis/gcm/engine/gcm_store_impl.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
101 scoped_ptr<GCMStore> gcm_store(BuildGCMStore()); 101 scoped_ptr<GCMStore> gcm_store(BuildGCMStore());
102 scoped_ptr<GCMStore::LoadResult> load_result; 102 scoped_ptr<GCMStore::LoadResult> load_result;
103 gcm_store->Load(base::Bind( 103 gcm_store->Load(base::Bind(
104 &GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result)); 104 &GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result));
105 PumpLoop(); 105 PumpLoop();
106 106
107 EXPECT_EQ(0U, load_result->device_android_id); 107 EXPECT_EQ(0U, load_result->device_android_id);
108 EXPECT_EQ(0U, load_result->device_security_token); 108 EXPECT_EQ(0U, load_result->device_security_token);
109 EXPECT_TRUE(load_result->incoming_messages.empty()); 109 EXPECT_TRUE(load_result->incoming_messages.empty());
110 EXPECT_TRUE(load_result->outgoing_messages.empty()); 110 EXPECT_TRUE(load_result->outgoing_messages.empty());
111 EXPECT_EQ(1LL, load_result->serial_number_mappings.next_serial_number);
112 EXPECT_TRUE(load_result->serial_number_mappings.user_serial_numbers.empty());
113 } 111 }
114 112
115 TEST_F(GCMStoreImplTest, DeviceCredentials) { 113 TEST_F(GCMStoreImplTest, DeviceCredentials) {
116 scoped_ptr<GCMStore> gcm_store(BuildGCMStore()); 114 scoped_ptr<GCMStore> gcm_store(BuildGCMStore());
117 scoped_ptr<GCMStore::LoadResult> load_result; 115 scoped_ptr<GCMStore::LoadResult> load_result;
118 gcm_store->Load(base::Bind( 116 gcm_store->Load(base::Bind(
119 &GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result)); 117 &GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result));
120 PumpLoop(); 118 PumpLoop();
121 119
122 gcm_store->SetDeviceCredentials( 120 gcm_store->SetDeviceCredentials(
123 kDeviceId, 121 kDeviceId,
124 kDeviceToken, 122 kDeviceToken,
125 base::Bind(&GCMStoreImplTest::UpdateCallback, base::Unretained(this))); 123 base::Bind(&GCMStoreImplTest::UpdateCallback, base::Unretained(this)));
126 PumpLoop(); 124 PumpLoop();
127 125
128 gcm_store = BuildGCMStore().Pass(); 126 gcm_store = BuildGCMStore().Pass();
129 gcm_store->Load(base::Bind( 127 gcm_store->Load(base::Bind(
130 &GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result)); 128 &GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result));
131 PumpLoop(); 129 PumpLoop();
132 130
133 ASSERT_EQ(kDeviceId, load_result->device_android_id); 131 ASSERT_EQ(kDeviceId, load_result->device_android_id);
134 ASSERT_EQ(kDeviceToken, load_result->device_security_token); 132 ASSERT_EQ(kDeviceToken, load_result->device_security_token);
135 } 133 }
136 134
135 TEST_F(GCMStoreImplTest, Registrations) {
136 scoped_ptr<GCMStore> gcm_store(BuildGCMStore());
137 scoped_ptr<GCMStore::LoadResult> load_result;
138 gcm_store->Load(base::Bind(
139 &GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result));
140 PumpLoop();
141
142 // Add one registration with one sender.
143 linked_ptr<RegistrationInfo> registration1(new RegistrationInfo);
144 registration1->sender_ids.push_back("sender1");
145 registration1->registration_id = "registration1";
146 gcm_store->AddRegistration(
147 "app1",
148 registration1,
149 base::Bind(&GCMStoreImplTest::UpdateCallback, base::Unretained(this)));
150 PumpLoop();
151
152 // Add one registration with multiple senders.
153 linked_ptr<RegistrationInfo> registration2(new RegistrationInfo);
154 registration2->sender_ids.push_back("sender2_1");
155 registration2->sender_ids.push_back("sender2_2");
156 registration2->registration_id = "registration2";
157 gcm_store->AddRegistration(
158 "app2",
159 registration2,
160 base::Bind(&GCMStoreImplTest::UpdateCallback, base::Unretained(this)));
161 PumpLoop();
162
163 gcm_store = BuildGCMStore().Pass();
164 gcm_store->Load(base::Bind(
165 &GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result));
166 PumpLoop();
167
168 ASSERT_EQ(2, load_result->registrations.size());
169 ASSERT_TRUE(load_result->registrations.find("app1") !=
170 load_result->registrations.end());
171 EXPECT_EQ(registration1->registration_id,
172 load_result->registrations["app1"]->registration_id);
173 ASSERT_EQ(1, load_result->registrations["app1"]->sender_ids.size());
174 EXPECT_EQ(registration1->sender_ids[0],
175 load_result->registrations["app1"]->sender_ids[0]);
176 ASSERT_TRUE(load_result->registrations.find("app2") !=
177 load_result->registrations.end());
178 EXPECT_EQ(registration2->registration_id,
179 load_result->registrations["app2"]->registration_id);
180 ASSERT_EQ(2, load_result->registrations["app2"]->sender_ids.size());
181 EXPECT_EQ(registration2->sender_ids[0],
182 load_result->registrations["app2"]->sender_ids[0]);
183 EXPECT_EQ(registration2->sender_ids[1],
184 load_result->registrations["app2"]->sender_ids[1]);
185 }
186
137 // Verify saving some incoming messages, reopening the directory, and then 187 // Verify saving some incoming messages, reopening the directory, and then
138 // removing those incoming messages. 188 // removing those incoming messages.
139 TEST_F(GCMStoreImplTest, IncomingMessages) { 189 TEST_F(GCMStoreImplTest, IncomingMessages) {
140 scoped_ptr<GCMStore> gcm_store(BuildGCMStore()); 190 scoped_ptr<GCMStore> gcm_store(BuildGCMStore());
141 scoped_ptr<GCMStore::LoadResult> load_result; 191 scoped_ptr<GCMStore::LoadResult> load_result;
142 gcm_store->Load(base::Bind( 192 gcm_store->Load(base::Bind(
143 &GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result)); 193 &GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result));
144 PumpLoop(); 194 PumpLoop();
145 195
146 std::vector<std::string> persistent_ids; 196 std::vector<std::string> persistent_ids;
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
287 load_result->incoming_messages.clear(); 337 load_result->incoming_messages.clear();
288 load_result->outgoing_messages.clear(); 338 load_result->outgoing_messages.clear();
289 gcm_store->Load(base::Bind( 339 gcm_store->Load(base::Bind(
290 &GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result)); 340 &GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result));
291 PumpLoop(); 341 PumpLoop();
292 342
293 ASSERT_TRUE(load_result->incoming_messages.empty()); 343 ASSERT_TRUE(load_result->incoming_messages.empty());
294 ASSERT_TRUE(load_result->outgoing_messages.empty()); 344 ASSERT_TRUE(load_result->outgoing_messages.empty());
295 } 345 }
296 346
297 // Verify that the next serial number of persisted properly.
298 TEST_F(GCMStoreImplTest, NextSerialNumber) {
299 const int64 kNextSerialNumber = 77LL;
300 scoped_ptr<GCMStore> gcm_store(BuildGCMStore());
301 scoped_ptr<GCMStore::LoadResult> load_result;
302 gcm_store->Load(base::Bind(
303 &GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result));
304 PumpLoop();
305
306 gcm_store->SetNextSerialNumber(
307 kNextSerialNumber,
308 base::Bind(&GCMStoreImplTest::UpdateCallback, base::Unretained(this)));
309 PumpLoop();
310
311 gcm_store = BuildGCMStore().Pass();
312 gcm_store->Load(base::Bind(
313 &GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result));
314 PumpLoop();
315
316 EXPECT_EQ(kNextSerialNumber,
317 load_result->serial_number_mappings.next_serial_number);
318 }
319
320 // Verify that user serial number mappings are persisted properly.
321 TEST_F(GCMStoreImplTest, UserSerialNumberMappings) {
322 scoped_ptr<GCMStore> gcm_store(BuildGCMStore());
323 scoped_ptr<GCMStore::LoadResult> load_result;
324 gcm_store->Load(base::Bind(
325 &GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result));
326 PumpLoop();
327
328 std::string username1 = "username1";
329 int64 serial_number1 = 34LL;
330 gcm_store->AddUserSerialNumber(
331 username1,
332 serial_number1,
333 base::Bind(&GCMStoreImplTest::UpdateCallback, base::Unretained(this)));
334
335 std::string username2 = "username2";
336 int64 serial_number2 = 56LL;
337 gcm_store->AddUserSerialNumber(
338 username2,
339 serial_number2,
340 base::Bind(&GCMStoreImplTest::UpdateCallback, base::Unretained(this)));
341 PumpLoop();
342
343 gcm_store = BuildGCMStore().Pass();
344 gcm_store->Load(base::Bind(
345 &GCMStoreImplTest::LoadCallback, base::Unretained(this), &load_result));
346 PumpLoop();
347
348 ASSERT_EQ(2u, load_result->serial_number_mappings.user_serial_numbers.size());
349 ASSERT_NE(
350 load_result->serial_number_mappings.user_serial_numbers.end(),
351 load_result->serial_number_mappings.user_serial_numbers.find(username1));
352 EXPECT_EQ(serial_number1,
353 load_result->serial_number_mappings.user_serial_numbers[username1]);
354 ASSERT_NE(
355 load_result->serial_number_mappings.user_serial_numbers.end(),
356 load_result->serial_number_mappings.user_serial_numbers.find(username2));
357 EXPECT_EQ(serial_number2,
358 load_result->serial_number_mappings.user_serial_numbers[username2]);
359 }
360
361 // Test that per-app message limits are enforced, persisted across restarts, 347 // Test that per-app message limits are enforced, persisted across restarts,
362 // and updated as messages are removed. 348 // and updated as messages are removed.
363 TEST_F(GCMStoreImplTest, PerAppMessageLimits) { 349 TEST_F(GCMStoreImplTest, PerAppMessageLimits) {
364 scoped_ptr<GCMStore> gcm_store(BuildGCMStore()); 350 scoped_ptr<GCMStore> gcm_store(BuildGCMStore());
365 scoped_ptr<GCMStore::LoadResult> load_result; 351 scoped_ptr<GCMStore::LoadResult> load_result;
366 gcm_store->Load(base::Bind(&GCMStoreImplTest::LoadCallback, 352 gcm_store->Load(base::Bind(&GCMStoreImplTest::LoadCallback,
367 base::Unretained(this), 353 base::Unretained(this),
368 &load_result)); 354 &load_result));
369 355
370 // Add the initial (below app limit) messages. 356 // Add the initial (below app limit) messages.
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
478 464
479 gcm_store->Load(base::Bind(&GCMStoreImplTest::LoadCallback, 465 gcm_store->Load(base::Bind(&GCMStoreImplTest::LoadCallback,
480 base::Unretained(this), 466 base::Unretained(this),
481 &load_result)); 467 &load_result));
482 PumpLoop(); 468 PumpLoop();
483 } 469 }
484 470
485 } // namespace 471 } // namespace
486 472
487 } // namespace gcm 473 } // namespace gcm
OLDNEW
« no previous file with comments | « google_apis/gcm/engine/gcm_store_impl.cc ('k') | google_apis/gcm/engine/registration_info.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698