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

Side by Side Diff: net/ssl/default_channel_id_store_unittest.cc

Issue 2095523002: Make //crypto factories return std::unique_ptr<>s (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: I'm blind Created 4 years, 5 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 | « net/ssl/default_channel_id_store.cc ('k') | sync/util/nigori.cc » ('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 "net/ssl/default_channel_id_store.h" 5 #include "net/ssl/default_channel_id_store.h"
6 6
7 #include <map> 7 #include <map>
8 #include <memory> 8 #include <memory>
9 #include <string> 9 #include <string>
10 #include <utility> 10 #include <utility>
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 bool DomainNotEquals(const std::string& domain1, const std::string& domain2) { 125 bool DomainNotEquals(const std::string& domain1, const std::string& domain2) {
126 return !DomainEquals(domain1, domain2); 126 return !DomainEquals(domain1, domain2);
127 } 127 }
128 128
129 } // namespace 129 } // namespace
130 130
131 TEST(DefaultChannelIDStoreTest, TestLoading) { 131 TEST(DefaultChannelIDStoreTest, TestLoading) {
132 scoped_refptr<MockPersistentStore> persistent_store(new MockPersistentStore); 132 scoped_refptr<MockPersistentStore> persistent_store(new MockPersistentStore);
133 133
134 persistent_store->AddChannelID(DefaultChannelIDStore::ChannelID( 134 persistent_store->AddChannelID(DefaultChannelIDStore::ChannelID(
135 "google.com", base::Time(), 135 "google.com", base::Time(), crypto::ECPrivateKey::Create()));
136 base::WrapUnique(crypto::ECPrivateKey::Create())));
137 persistent_store->AddChannelID(DefaultChannelIDStore::ChannelID( 136 persistent_store->AddChannelID(DefaultChannelIDStore::ChannelID(
138 "verisign.com", base::Time(), 137 "verisign.com", base::Time(), crypto::ECPrivateKey::Create()));
139 base::WrapUnique(crypto::ECPrivateKey::Create())));
140 138
141 // Make sure channel_ids load properly. 139 // Make sure channel_ids load properly.
142 DefaultChannelIDStore store(persistent_store.get()); 140 DefaultChannelIDStore store(persistent_store.get());
143 // Load has not occurred yet. 141 // Load has not occurred yet.
144 EXPECT_EQ(0, store.GetChannelIDCount()); 142 EXPECT_EQ(0, store.GetChannelIDCount());
145 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID( 143 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID(
146 "verisign.com", base::Time(), 144 "verisign.com", base::Time(), crypto::ECPrivateKey::Create())));
147 base::WrapUnique(crypto::ECPrivateKey::Create()))));
148 // Wait for load & queued set task. 145 // Wait for load & queued set task.
149 base::RunLoop().RunUntilIdle(); 146 base::RunLoop().RunUntilIdle();
150 EXPECT_EQ(2, store.GetChannelIDCount()); 147 EXPECT_EQ(2, store.GetChannelIDCount());
151 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID( 148 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID(
152 "twitter.com", base::Time(), 149 "twitter.com", base::Time(), crypto::ECPrivateKey::Create())));
153 base::WrapUnique(crypto::ECPrivateKey::Create()))));
154 // Set should be synchronous now that load is done. 150 // Set should be synchronous now that load is done.
155 EXPECT_EQ(3, store.GetChannelIDCount()); 151 EXPECT_EQ(3, store.GetChannelIDCount());
156 } 152 }
157 153
158 //TODO(mattm): add more tests of without a persistent store? 154 //TODO(mattm): add more tests of without a persistent store?
159 TEST(DefaultChannelIDStoreTest, TestSettingAndGetting) { 155 TEST(DefaultChannelIDStoreTest, TestSettingAndGetting) {
160 // No persistent store, all calls will be synchronous. 156 // No persistent store, all calls will be synchronous.
161 DefaultChannelIDStore store(NULL); 157 DefaultChannelIDStore store(NULL);
162 std::unique_ptr<crypto::ECPrivateKey> expected_key( 158 std::unique_ptr<crypto::ECPrivateKey> expected_key(
163 crypto::ECPrivateKey::Create()); 159 crypto::ECPrivateKey::Create());
164 160
165 std::unique_ptr<crypto::ECPrivateKey> key; 161 std::unique_ptr<crypto::ECPrivateKey> key;
166 EXPECT_EQ(0, store.GetChannelIDCount()); 162 EXPECT_EQ(0, store.GetChannelIDCount());
167 EXPECT_EQ(ERR_FILE_NOT_FOUND, 163 EXPECT_EQ(ERR_FILE_NOT_FOUND,
168 store.GetChannelID("verisign.com", &key, 164 store.GetChannelID("verisign.com", &key,
169 base::Bind(&GetChannelIDCallbackNotCalled))); 165 base::Bind(&GetChannelIDCallbackNotCalled)));
170 EXPECT_FALSE(key); 166 EXPECT_FALSE(key);
171 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID( 167 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID(
172 "verisign.com", base::Time::FromInternalValue(123), 168 "verisign.com", base::Time::FromInternalValue(123),
173 base::WrapUnique(expected_key->Copy())))); 169 expected_key->Copy())));
174 EXPECT_EQ(OK, store.GetChannelID("verisign.com", &key, 170 EXPECT_EQ(OK, store.GetChannelID("verisign.com", &key,
175 base::Bind(&GetChannelIDCallbackNotCalled))); 171 base::Bind(&GetChannelIDCallbackNotCalled)));
176 EXPECT_TRUE(KeysEqual(expected_key.get(), key.get())); 172 EXPECT_TRUE(KeysEqual(expected_key.get(), key.get()));
177 } 173 }
178 174
179 TEST(DefaultChannelIDStoreTest, TestDuplicateChannelIds) { 175 TEST(DefaultChannelIDStoreTest, TestDuplicateChannelIds) {
180 scoped_refptr<MockPersistentStore> persistent_store(new MockPersistentStore); 176 scoped_refptr<MockPersistentStore> persistent_store(new MockPersistentStore);
181 DefaultChannelIDStore store(persistent_store.get()); 177 DefaultChannelIDStore store(persistent_store.get());
182 std::unique_ptr<crypto::ECPrivateKey> expected_key( 178 std::unique_ptr<crypto::ECPrivateKey> expected_key(
183 crypto::ECPrivateKey::Create()); 179 crypto::ECPrivateKey::Create());
184 180
185 std::unique_ptr<crypto::ECPrivateKey> key; 181 std::unique_ptr<crypto::ECPrivateKey> key;
186 EXPECT_EQ(0, store.GetChannelIDCount()); 182 EXPECT_EQ(0, store.GetChannelIDCount());
187 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID( 183 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID(
188 "verisign.com", base::Time::FromInternalValue(123), 184 "verisign.com", base::Time::FromInternalValue(123),
189 base::WrapUnique(crypto::ECPrivateKey::Create())))); 185 crypto::ECPrivateKey::Create())));
190 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID( 186 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID(
191 "verisign.com", base::Time::FromInternalValue(456), 187 "verisign.com", base::Time::FromInternalValue(456),
192 base::WrapUnique(expected_key->Copy())))); 188 expected_key->Copy())));
193 189
194 // Wait for load & queued set tasks. 190 // Wait for load & queued set tasks.
195 base::RunLoop().RunUntilIdle(); 191 base::RunLoop().RunUntilIdle();
196 EXPECT_EQ(1, store.GetChannelIDCount()); 192 EXPECT_EQ(1, store.GetChannelIDCount());
197 EXPECT_EQ(OK, store.GetChannelID("verisign.com", &key, 193 EXPECT_EQ(OK, store.GetChannelID("verisign.com", &key,
198 base::Bind(&GetChannelIDCallbackNotCalled))); 194 base::Bind(&GetChannelIDCallbackNotCalled)));
199 EXPECT_TRUE(KeysEqual(expected_key.get(), key.get())); 195 EXPECT_TRUE(KeysEqual(expected_key.get(), key.get()));
200 } 196 }
201 197
202 TEST(DefaultChannelIDStoreTest, TestAsyncGet) { 198 TEST(DefaultChannelIDStoreTest, TestAsyncGet) {
203 scoped_refptr<MockPersistentStore> persistent_store(new MockPersistentStore); 199 scoped_refptr<MockPersistentStore> persistent_store(new MockPersistentStore);
204 std::unique_ptr<crypto::ECPrivateKey> expected_key( 200 std::unique_ptr<crypto::ECPrivateKey> expected_key(
205 crypto::ECPrivateKey::Create()); 201 crypto::ECPrivateKey::Create());
206 persistent_store->AddChannelID(ChannelIDStore::ChannelID( 202 persistent_store->AddChannelID(ChannelIDStore::ChannelID(
207 "verisign.com", base::Time::FromInternalValue(123), 203 "verisign.com", base::Time::FromInternalValue(123),
208 base::WrapUnique(expected_key->Copy()))); 204 expected_key->Copy()));
209 205
210 DefaultChannelIDStore store(persistent_store.get()); 206 DefaultChannelIDStore store(persistent_store.get());
211 AsyncGetChannelIDHelper helper; 207 AsyncGetChannelIDHelper helper;
212 std::unique_ptr<crypto::ECPrivateKey> key; 208 std::unique_ptr<crypto::ECPrivateKey> key;
213 EXPECT_EQ(0, store.GetChannelIDCount()); 209 EXPECT_EQ(0, store.GetChannelIDCount());
214 EXPECT_EQ(ERR_IO_PENDING, 210 EXPECT_EQ(ERR_IO_PENDING,
215 store.GetChannelID("verisign.com", &key, 211 store.GetChannelID("verisign.com", &key,
216 base::Bind(&AsyncGetChannelIDHelper::Callback, 212 base::Bind(&AsyncGetChannelIDHelper::Callback,
217 base::Unretained(&helper)))); 213 base::Unretained(&helper))));
218 214
219 // Wait for load & queued get tasks. 215 // Wait for load & queued get tasks.
220 base::RunLoop().RunUntilIdle(); 216 base::RunLoop().RunUntilIdle();
221 EXPECT_EQ(1, store.GetChannelIDCount()); 217 EXPECT_EQ(1, store.GetChannelIDCount());
222 EXPECT_FALSE(key); 218 EXPECT_FALSE(key);
223 EXPECT_TRUE(helper.called_); 219 EXPECT_TRUE(helper.called_);
224 EXPECT_EQ(OK, helper.err_); 220 EXPECT_EQ(OK, helper.err_);
225 EXPECT_EQ("verisign.com", helper.server_identifier_); 221 EXPECT_EQ("verisign.com", helper.server_identifier_);
226 EXPECT_TRUE(KeysEqual(expected_key.get(), helper.key_.get())); 222 EXPECT_TRUE(KeysEqual(expected_key.get(), helper.key_.get()));
227 } 223 }
228 224
229 TEST(DefaultChannelIDStoreTest, TestDeleteAll) { 225 TEST(DefaultChannelIDStoreTest, TestDeleteAll) {
230 scoped_refptr<MockPersistentStore> persistent_store(new MockPersistentStore); 226 scoped_refptr<MockPersistentStore> persistent_store(new MockPersistentStore);
231 DefaultChannelIDStore store(persistent_store.get()); 227 DefaultChannelIDStore store(persistent_store.get());
232 228
233 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID( 229 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID(
234 "verisign.com", base::Time(), 230 "verisign.com", base::Time(), crypto::ECPrivateKey::Create())));
235 base::WrapUnique(crypto::ECPrivateKey::Create()))));
236 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID( 231 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID(
237 "google.com", base::Time(), 232 "google.com", base::Time(), crypto::ECPrivateKey::Create())));
238 base::WrapUnique(crypto::ECPrivateKey::Create()))));
239 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID( 233 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID(
240 "harvard.com", base::Time(), 234 "harvard.com", base::Time(), crypto::ECPrivateKey::Create())));
241 base::WrapUnique(crypto::ECPrivateKey::Create()))));
242 // Wait for load & queued set tasks. 235 // Wait for load & queued set tasks.
243 base::RunLoop().RunUntilIdle(); 236 base::RunLoop().RunUntilIdle();
244 237
245 EXPECT_EQ(3, store.GetChannelIDCount()); 238 EXPECT_EQ(3, store.GetChannelIDCount());
246 int delete_finished = 0; 239 int delete_finished = 0;
247 store.DeleteAll(base::Bind(&CallCounter, &delete_finished)); 240 store.DeleteAll(base::Bind(&CallCounter, &delete_finished));
248 ASSERT_EQ(1, delete_finished); 241 ASSERT_EQ(1, delete_finished);
249 EXPECT_EQ(0, store.GetChannelIDCount()); 242 EXPECT_EQ(0, store.GetChannelIDCount());
250 } 243 }
251 244
252 TEST(DefaultChannelIDStoreTest, TestDeleteForDomains) { 245 TEST(DefaultChannelIDStoreTest, TestDeleteForDomains) {
253 scoped_refptr<MockPersistentStore> persistent_store(new MockPersistentStore); 246 scoped_refptr<MockPersistentStore> persistent_store(new MockPersistentStore);
254 DefaultChannelIDStore store(persistent_store.get()); 247 DefaultChannelIDStore store(persistent_store.get());
255 248
256 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID( 249 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID(
257 "verisign.com", base::Time(), 250 "verisign.com", base::Time(), crypto::ECPrivateKey::Create())));
258 base::WrapUnique(crypto::ECPrivateKey::Create()))));
259 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID( 251 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID(
260 "google.com", base::Time(), 252 "google.com", base::Time(), crypto::ECPrivateKey::Create())));
261 base::WrapUnique(crypto::ECPrivateKey::Create()))));
262 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID( 253 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID(
263 "harvard.com", base::Time(), 254 "harvard.com", base::Time(), crypto::ECPrivateKey::Create())));
264 base::WrapUnique(crypto::ECPrivateKey::Create()))));
265 // Wait for load & queued set tasks. 255 // Wait for load & queued set tasks.
266 base::RunLoop().RunUntilIdle(); 256 base::RunLoop().RunUntilIdle();
267 EXPECT_EQ(3, store.GetChannelIDCount()); 257 EXPECT_EQ(3, store.GetChannelIDCount());
268 258
269 // Whitelist deletion. 259 // Whitelist deletion.
270 int deletions_finished = 0; 260 int deletions_finished = 0;
271 store.DeleteForDomainsCreatedBetween( 261 store.DeleteForDomainsCreatedBetween(
272 base::Bind(&DomainEquals, base::ConstRef(std::string("verisign.com"))), 262 base::Bind(&DomainEquals, base::ConstRef(std::string("verisign.com"))),
273 base::Time(), base::Time(), 263 base::Time(), base::Time(),
274 base::Bind(&CallCounter, &deletions_finished)); 264 base::Bind(&CallCounter, &deletions_finished));
(...skipping 11 matching lines...) Expand all
286 base::Bind(&CallCounter, &deletions_finished)); 276 base::Bind(&CallCounter, &deletions_finished));
287 ASSERT_EQ(2, deletions_finished); 277 ASSERT_EQ(2, deletions_finished);
288 EXPECT_EQ(1, store.GetChannelIDCount()); 278 EXPECT_EQ(1, store.GetChannelIDCount());
289 store.GetAllChannelIDs(base::Bind(GetAllCallback, &channel_ids)); 279 store.GetAllChannelIDs(base::Bind(GetAllCallback, &channel_ids));
290 EXPECT_EQ("google.com", channel_ids.begin()->server_identifier()); 280 EXPECT_EQ("google.com", channel_ids.begin()->server_identifier());
291 } 281 }
292 282
293 TEST(DefaultChannelIDStoreTest, TestAsyncGetAndDeleteAll) { 283 TEST(DefaultChannelIDStoreTest, TestAsyncGetAndDeleteAll) {
294 scoped_refptr<MockPersistentStore> persistent_store(new MockPersistentStore); 284 scoped_refptr<MockPersistentStore> persistent_store(new MockPersistentStore);
295 persistent_store->AddChannelID(ChannelIDStore::ChannelID( 285 persistent_store->AddChannelID(ChannelIDStore::ChannelID(
296 "verisign.com", base::Time(), 286 "verisign.com", base::Time(), crypto::ECPrivateKey::Create()));
297 base::WrapUnique(crypto::ECPrivateKey::Create())));
298 persistent_store->AddChannelID(ChannelIDStore::ChannelID( 287 persistent_store->AddChannelID(ChannelIDStore::ChannelID(
299 "google.com", base::Time(), 288 "google.com", base::Time(), crypto::ECPrivateKey::Create()));
300 base::WrapUnique(crypto::ECPrivateKey::Create())));
301 289
302 ChannelIDStore::ChannelIDList pre_channel_ids; 290 ChannelIDStore::ChannelIDList pre_channel_ids;
303 ChannelIDStore::ChannelIDList post_channel_ids; 291 ChannelIDStore::ChannelIDList post_channel_ids;
304 int delete_finished = 0; 292 int delete_finished = 0;
305 DefaultChannelIDStore store(persistent_store.get()); 293 DefaultChannelIDStore store(persistent_store.get());
306 294
307 store.GetAllChannelIDs(base::Bind(GetAllCallback, &pre_channel_ids)); 295 store.GetAllChannelIDs(base::Bind(GetAllCallback, &pre_channel_ids));
308 store.DeleteAll(base::Bind(&CallCounter, &delete_finished)); 296 store.DeleteAll(base::Bind(&CallCounter, &delete_finished));
309 store.GetAllChannelIDs(base::Bind(GetAllCallback, &post_channel_ids)); 297 store.GetAllChannelIDs(base::Bind(GetAllCallback, &post_channel_ids));
310 // Tasks have not run yet. 298 // Tasks have not run yet.
311 EXPECT_EQ(0u, pre_channel_ids.size()); 299 EXPECT_EQ(0u, pre_channel_ids.size());
312 // Wait for load & queued tasks. 300 // Wait for load & queued tasks.
313 base::RunLoop().RunUntilIdle(); 301 base::RunLoop().RunUntilIdle();
314 EXPECT_EQ(0, store.GetChannelIDCount()); 302 EXPECT_EQ(0, store.GetChannelIDCount());
315 EXPECT_EQ(2u, pre_channel_ids.size()); 303 EXPECT_EQ(2u, pre_channel_ids.size());
316 EXPECT_EQ(0u, post_channel_ids.size()); 304 EXPECT_EQ(0u, post_channel_ids.size());
317 } 305 }
318 306
319 TEST(DefaultChannelIDStoreTest, TestDelete) { 307 TEST(DefaultChannelIDStoreTest, TestDelete) {
320 scoped_refptr<MockPersistentStore> persistent_store(new MockPersistentStore); 308 scoped_refptr<MockPersistentStore> persistent_store(new MockPersistentStore);
321 DefaultChannelIDStore store(persistent_store.get()); 309 DefaultChannelIDStore store(persistent_store.get());
322 310
323 std::unique_ptr<crypto::ECPrivateKey> key; 311 std::unique_ptr<crypto::ECPrivateKey> key;
324 EXPECT_EQ(0, store.GetChannelIDCount()); 312 EXPECT_EQ(0, store.GetChannelIDCount());
325 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID( 313 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID(
326 "verisign.com", base::Time(), 314 "verisign.com", base::Time(), crypto::ECPrivateKey::Create())));
327 base::WrapUnique(crypto::ECPrivateKey::Create()))));
328 // Wait for load & queued set task. 315 // Wait for load & queued set task.
329 base::RunLoop().RunUntilIdle(); 316 base::RunLoop().RunUntilIdle();
330 317
331 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID( 318 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID(
332 "google.com", base::Time(), 319 "google.com", base::Time(), crypto::ECPrivateKey::Create())));
333 base::WrapUnique(crypto::ECPrivateKey::Create()))));
334 320
335 EXPECT_EQ(2, store.GetChannelIDCount()); 321 EXPECT_EQ(2, store.GetChannelIDCount());
336 int delete_finished = 0; 322 int delete_finished = 0;
337 store.DeleteChannelID("verisign.com", 323 store.DeleteChannelID("verisign.com",
338 base::Bind(&CallCounter, &delete_finished)); 324 base::Bind(&CallCounter, &delete_finished));
339 ASSERT_EQ(1, delete_finished); 325 ASSERT_EQ(1, delete_finished);
340 EXPECT_EQ(1, store.GetChannelIDCount()); 326 EXPECT_EQ(1, store.GetChannelIDCount());
341 EXPECT_EQ(ERR_FILE_NOT_FOUND, 327 EXPECT_EQ(ERR_FILE_NOT_FOUND,
342 store.GetChannelID("verisign.com", &key, 328 store.GetChannelID("verisign.com", &key,
343 base::Bind(&GetChannelIDCallbackNotCalled))); 329 base::Bind(&GetChannelIDCallbackNotCalled)));
344 EXPECT_EQ(OK, store.GetChannelID("google.com", &key, 330 EXPECT_EQ(OK, store.GetChannelID("google.com", &key,
345 base::Bind(&GetChannelIDCallbackNotCalled))); 331 base::Bind(&GetChannelIDCallbackNotCalled)));
346 int delete2_finished = 0; 332 int delete2_finished = 0;
347 store.DeleteChannelID("google.com", 333 store.DeleteChannelID("google.com",
348 base::Bind(&CallCounter, &delete2_finished)); 334 base::Bind(&CallCounter, &delete2_finished));
349 ASSERT_EQ(1, delete2_finished); 335 ASSERT_EQ(1, delete2_finished);
350 EXPECT_EQ(0, store.GetChannelIDCount()); 336 EXPECT_EQ(0, store.GetChannelIDCount());
351 EXPECT_EQ(ERR_FILE_NOT_FOUND, 337 EXPECT_EQ(ERR_FILE_NOT_FOUND,
352 store.GetChannelID("google.com", &key, 338 store.GetChannelID("google.com", &key,
353 base::Bind(&GetChannelIDCallbackNotCalled))); 339 base::Bind(&GetChannelIDCallbackNotCalled)));
354 } 340 }
355 341
356 TEST(DefaultChannelIDStoreTest, TestAsyncDelete) { 342 TEST(DefaultChannelIDStoreTest, TestAsyncDelete) {
357 scoped_refptr<MockPersistentStore> persistent_store(new MockPersistentStore); 343 scoped_refptr<MockPersistentStore> persistent_store(new MockPersistentStore);
358 std::unique_ptr<crypto::ECPrivateKey> expected_key( 344 std::unique_ptr<crypto::ECPrivateKey> expected_key(
359 crypto::ECPrivateKey::Create()); 345 crypto::ECPrivateKey::Create());
346 persistent_store->AddChannelID(
347 ChannelIDStore::ChannelID("a.com", base::Time::FromInternalValue(1),
348 crypto::ECPrivateKey::Create()));
360 persistent_store->AddChannelID(ChannelIDStore::ChannelID( 349 persistent_store->AddChannelID(ChannelIDStore::ChannelID(
361 "a.com", base::Time::FromInternalValue(1), 350 "b.com", base::Time::FromInternalValue(3), expected_key->Copy()));
362 base::WrapUnique(crypto::ECPrivateKey::Create())));
363 persistent_store->AddChannelID(
364 ChannelIDStore::ChannelID("b.com", base::Time::FromInternalValue(3),
365 base::WrapUnique(expected_key->Copy())));
366 DefaultChannelIDStore store(persistent_store.get()); 351 DefaultChannelIDStore store(persistent_store.get());
367 int delete_finished = 0; 352 int delete_finished = 0;
368 store.DeleteChannelID("a.com", 353 store.DeleteChannelID("a.com",
369 base::Bind(&CallCounter, &delete_finished)); 354 base::Bind(&CallCounter, &delete_finished));
370 355
371 AsyncGetChannelIDHelper a_helper; 356 AsyncGetChannelIDHelper a_helper;
372 AsyncGetChannelIDHelper b_helper; 357 AsyncGetChannelIDHelper b_helper;
373 std::unique_ptr<crypto::ECPrivateKey> key; 358 std::unique_ptr<crypto::ECPrivateKey> key;
374 EXPECT_EQ(0, store.GetChannelIDCount()); 359 EXPECT_EQ(0, store.GetChannelIDCount());
375 EXPECT_EQ(ERR_IO_PENDING, 360 EXPECT_EQ(ERR_IO_PENDING,
(...skipping 22 matching lines...) Expand all
398 EXPECT_EQ("b.com", b_helper.server_identifier_); 383 EXPECT_EQ("b.com", b_helper.server_identifier_);
399 EXPECT_TRUE(KeysEqual(expected_key.get(), b_helper.key_.get())); 384 EXPECT_TRUE(KeysEqual(expected_key.get(), b_helper.key_.get()));
400 } 385 }
401 386
402 TEST(DefaultChannelIDStoreTest, TestGetAll) { 387 TEST(DefaultChannelIDStoreTest, TestGetAll) {
403 scoped_refptr<MockPersistentStore> persistent_store(new MockPersistentStore); 388 scoped_refptr<MockPersistentStore> persistent_store(new MockPersistentStore);
404 DefaultChannelIDStore store(persistent_store.get()); 389 DefaultChannelIDStore store(persistent_store.get());
405 390
406 EXPECT_EQ(0, store.GetChannelIDCount()); 391 EXPECT_EQ(0, store.GetChannelIDCount());
407 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID( 392 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID(
408 "verisign.com", base::Time(), 393 "verisign.com", base::Time(), crypto::ECPrivateKey::Create())));
409 base::WrapUnique(crypto::ECPrivateKey::Create()))));
410 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID( 394 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID(
411 "google.com", base::Time(), 395 "google.com", base::Time(), crypto::ECPrivateKey::Create())));
412 base::WrapUnique(crypto::ECPrivateKey::Create()))));
413 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID( 396 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID(
414 "harvard.com", base::Time(), 397 "harvard.com", base::Time(), crypto::ECPrivateKey::Create())));
415 base::WrapUnique(crypto::ECPrivateKey::Create()))));
416 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID( 398 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID(
417 "mit.com", base::Time(), 399 "mit.com", base::Time(), crypto::ECPrivateKey::Create())));
418 base::WrapUnique(crypto::ECPrivateKey::Create()))));
419 // Wait for load & queued set tasks. 400 // Wait for load & queued set tasks.
420 base::RunLoop().RunUntilIdle(); 401 base::RunLoop().RunUntilIdle();
421 402
422 EXPECT_EQ(4, store.GetChannelIDCount()); 403 EXPECT_EQ(4, store.GetChannelIDCount());
423 ChannelIDStore::ChannelIDList channel_ids; 404 ChannelIDStore::ChannelIDList channel_ids;
424 store.GetAllChannelIDs(base::Bind(GetAllCallback, &channel_ids)); 405 store.GetAllChannelIDs(base::Bind(GetAllCallback, &channel_ids));
425 EXPECT_EQ(4u, channel_ids.size()); 406 EXPECT_EQ(4u, channel_ids.size());
426 } 407 }
427 408
428 TEST(DefaultChannelIDStoreTest, TestInitializeFrom) { 409 TEST(DefaultChannelIDStoreTest, TestInitializeFrom) {
429 scoped_refptr<MockPersistentStore> persistent_store(new MockPersistentStore); 410 scoped_refptr<MockPersistentStore> persistent_store(new MockPersistentStore);
430 DefaultChannelIDStore store(persistent_store.get()); 411 DefaultChannelIDStore store(persistent_store.get());
431 std::unique_ptr<crypto::ECPrivateKey> preexisting_key( 412 std::unique_ptr<crypto::ECPrivateKey> preexisting_key(
432 crypto::ECPrivateKey::Create()); 413 crypto::ECPrivateKey::Create());
433 std::unique_ptr<crypto::ECPrivateKey> both_key( 414 std::unique_ptr<crypto::ECPrivateKey> both_key(
434 crypto::ECPrivateKey::Create()); 415 crypto::ECPrivateKey::Create());
435 std::unique_ptr<crypto::ECPrivateKey> copied_key( 416 std::unique_ptr<crypto::ECPrivateKey> copied_key(
436 crypto::ECPrivateKey::Create()); 417 crypto::ECPrivateKey::Create());
437 418
438 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID( 419 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID(
439 "preexisting.com", base::Time(), 420 "preexisting.com", base::Time(), preexisting_key->Copy())));
440 base::WrapUnique(preexisting_key->Copy()))));
441 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID( 421 store.SetChannelID(base::WrapUnique(new ChannelIDStore::ChannelID(
442 "both.com", base::Time(), 422 "both.com", base::Time(), crypto::ECPrivateKey::Create())));
443 base::WrapUnique(crypto::ECPrivateKey::Create()))));
444 // Wait for load & queued set tasks. 423 // Wait for load & queued set tasks.
445 base::RunLoop().RunUntilIdle(); 424 base::RunLoop().RunUntilIdle();
446 EXPECT_EQ(2, store.GetChannelIDCount()); 425 EXPECT_EQ(2, store.GetChannelIDCount());
447 426
448 ChannelIDStore::ChannelIDList source_channel_ids; 427 ChannelIDStore::ChannelIDList source_channel_ids;
449 source_channel_ids.push_back(ChannelIDStore::ChannelID( 428 source_channel_ids.push_back(ChannelIDStore::ChannelID(
450 "both.com", base::Time(), 429 "both.com", base::Time(),
451 // Key differs from above to test that existing entries are overwritten. 430 // Key differs from above to test that existing entries are overwritten.
452 base::WrapUnique(both_key->Copy()))); 431 both_key->Copy()));
453 source_channel_ids.push_back(ChannelIDStore::ChannelID( 432 source_channel_ids.push_back(ChannelIDStore::ChannelID(
454 "copied.com", base::Time(), base::WrapUnique(copied_key->Copy()))); 433 "copied.com", base::Time(), copied_key->Copy()));
455 store.InitializeFrom(source_channel_ids); 434 store.InitializeFrom(source_channel_ids);
456 EXPECT_EQ(3, store.GetChannelIDCount()); 435 EXPECT_EQ(3, store.GetChannelIDCount());
457 436
458 ChannelIDStore::ChannelIDList channel_ids; 437 ChannelIDStore::ChannelIDList channel_ids;
459 store.GetAllChannelIDs(base::Bind(GetAllCallback, &channel_ids)); 438 store.GetAllChannelIDs(base::Bind(GetAllCallback, &channel_ids));
460 ASSERT_EQ(3u, channel_ids.size()); 439 ASSERT_EQ(3u, channel_ids.size());
461 440
462 ChannelIDStore::ChannelIDList::iterator channel_id = channel_ids.begin(); 441 ChannelIDStore::ChannelIDList::iterator channel_id = channel_ids.begin();
463 EXPECT_EQ("both.com", channel_id->server_identifier()); 442 EXPECT_EQ("both.com", channel_id->server_identifier());
464 EXPECT_TRUE(KeysEqual(both_key.get(), channel_id->key())); 443 EXPECT_TRUE(KeysEqual(both_key.get(), channel_id->key()));
465 444
466 ++channel_id; 445 ++channel_id;
467 EXPECT_EQ("copied.com", channel_id->server_identifier()); 446 EXPECT_EQ("copied.com", channel_id->server_identifier());
468 EXPECT_TRUE(KeysEqual(copied_key.get(), channel_id->key())); 447 EXPECT_TRUE(KeysEqual(copied_key.get(), channel_id->key()));
469 448
470 ++channel_id; 449 ++channel_id;
471 EXPECT_EQ("preexisting.com", channel_id->server_identifier()); 450 EXPECT_EQ("preexisting.com", channel_id->server_identifier());
472 EXPECT_TRUE(KeysEqual(preexisting_key.get(), channel_id->key())); 451 EXPECT_TRUE(KeysEqual(preexisting_key.get(), channel_id->key()));
473 } 452 }
474 453
475 TEST(DefaultChannelIDStoreTest, TestAsyncInitializeFrom) { 454 TEST(DefaultChannelIDStoreTest, TestAsyncInitializeFrom) {
476 scoped_refptr<MockPersistentStore> persistent_store(new MockPersistentStore); 455 scoped_refptr<MockPersistentStore> persistent_store(new MockPersistentStore);
477 std::unique_ptr<crypto::ECPrivateKey> preexisting_key( 456 std::unique_ptr<crypto::ECPrivateKey> preexisting_key(
478 crypto::ECPrivateKey::Create()); 457 crypto::ECPrivateKey::Create());
479 std::unique_ptr<crypto::ECPrivateKey> both_key( 458 std::unique_ptr<crypto::ECPrivateKey> both_key(
480 crypto::ECPrivateKey::Create()); 459 crypto::ECPrivateKey::Create());
481 std::unique_ptr<crypto::ECPrivateKey> copied_key( 460 std::unique_ptr<crypto::ECPrivateKey> copied_key(
482 crypto::ECPrivateKey::Create()); 461 crypto::ECPrivateKey::Create());
483 462
484 persistent_store->AddChannelID(
485 ChannelIDStore::ChannelID("preexisting.com", base::Time(),
486 base::WrapUnique(preexisting_key->Copy())));
487 persistent_store->AddChannelID(ChannelIDStore::ChannelID( 463 persistent_store->AddChannelID(ChannelIDStore::ChannelID(
488 "both.com", base::Time(), 464 "preexisting.com", base::Time(), preexisting_key->Copy()));
489 base::WrapUnique(crypto::ECPrivateKey::Create()))); 465 persistent_store->AddChannelID(ChannelIDStore::ChannelID(
466 "both.com", base::Time(), crypto::ECPrivateKey::Create()));
490 467
491 DefaultChannelIDStore store(persistent_store.get()); 468 DefaultChannelIDStore store(persistent_store.get());
492 ChannelIDStore::ChannelIDList source_channel_ids; 469 ChannelIDStore::ChannelIDList source_channel_ids;
493 source_channel_ids.push_back(ChannelIDStore::ChannelID( 470 source_channel_ids.push_back(ChannelIDStore::ChannelID(
494 "both.com", base::Time(), 471 "both.com", base::Time(),
495 // Key differs from above to test that existing entries are overwritten. 472 // Key differs from above to test that existing entries are overwritten.
496 base::WrapUnique(both_key->Copy()))); 473 both_key->Copy()));
497 source_channel_ids.push_back(ChannelIDStore::ChannelID( 474 source_channel_ids.push_back(ChannelIDStore::ChannelID(
498 "copied.com", base::Time(), base::WrapUnique(copied_key->Copy()))); 475 "copied.com", base::Time(), copied_key->Copy()));
499 store.InitializeFrom(source_channel_ids); 476 store.InitializeFrom(source_channel_ids);
500 EXPECT_EQ(0, store.GetChannelIDCount()); 477 EXPECT_EQ(0, store.GetChannelIDCount());
501 // Wait for load & queued tasks. 478 // Wait for load & queued tasks.
502 base::RunLoop().RunUntilIdle(); 479 base::RunLoop().RunUntilIdle();
503 EXPECT_EQ(3, store.GetChannelIDCount()); 480 EXPECT_EQ(3, store.GetChannelIDCount());
504 481
505 ChannelIDStore::ChannelIDList channel_ids; 482 ChannelIDStore::ChannelIDList channel_ids;
506 store.GetAllChannelIDs(base::Bind(GetAllCallback, &channel_ids)); 483 store.GetAllChannelIDs(base::Bind(GetAllCallback, &channel_ids));
507 ASSERT_EQ(3u, channel_ids.size()); 484 ASSERT_EQ(3u, channel_ids.size());
508 485
509 ChannelIDStore::ChannelIDList::iterator channel_id = channel_ids.begin(); 486 ChannelIDStore::ChannelIDList::iterator channel_id = channel_ids.begin();
510 EXPECT_EQ("both.com", channel_id->server_identifier()); 487 EXPECT_EQ("both.com", channel_id->server_identifier());
511 EXPECT_TRUE(KeysEqual(both_key.get(), channel_id->key())); 488 EXPECT_TRUE(KeysEqual(both_key.get(), channel_id->key()));
512 489
513 ++channel_id; 490 ++channel_id;
514 EXPECT_EQ("copied.com", channel_id->server_identifier()); 491 EXPECT_EQ("copied.com", channel_id->server_identifier());
515 EXPECT_TRUE(KeysEqual(copied_key.get(), channel_id->key())); 492 EXPECT_TRUE(KeysEqual(copied_key.get(), channel_id->key()));
516 493
517 ++channel_id; 494 ++channel_id;
518 EXPECT_EQ("preexisting.com", channel_id->server_identifier()); 495 EXPECT_EQ("preexisting.com", channel_id->server_identifier());
519 EXPECT_TRUE(KeysEqual(preexisting_key.get(), channel_id->key())); 496 EXPECT_TRUE(KeysEqual(preexisting_key.get(), channel_id->key()));
520 } 497 }
521 498
522 } // namespace net 499 } // namespace net
OLDNEW
« no previous file with comments | « net/ssl/default_channel_id_store.cc ('k') | sync/util/nigori.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698