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

Side by Side Diff: chrome/browser/safe_browsing/protocol_parser_unittest.cc

Issue 1420123003: Move more declarations from c/b/sb/sb_util.h to components. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@01_components
Patch Set: Making 1415923004 the base issue, instead of 1399843003 which was reverted. Created 5 years, 1 month 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <string> 5 #include <string>
6 6
7 #include "base/strings/stringprintf.h" 7 #include "base/strings/stringprintf.h"
8 #include "base/time/time.h" 8 #include "base/time/time.h"
9 #include "chrome/browser/safe_browsing/protocol_parser.h" 9 #include "chrome/browser/safe_browsing/protocol_parser.h"
10 #include "chrome/browser/safe_browsing/safe_browsing_util.h" 10 #include "chrome/browser/safe_browsing/safe_browsing_util.h"
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 EXPECT_TRUE(safe_browsing::ParseChunk(kRawAddChunk, sizeof(kRawAddChunk), 86 EXPECT_TRUE(safe_browsing::ParseChunk(kRawAddChunk, sizeof(kRawAddChunk),
87 &chunks)); 87 &chunks));
88 ASSERT_EQ(1U, chunks.size()); 88 ASSERT_EQ(1U, chunks.size());
89 EXPECT_EQ(1, chunks[0]->ChunkNumber()); 89 EXPECT_EQ(1, chunks[0]->ChunkNumber());
90 EXPECT_TRUE(chunks[0]->IsAdd()); 90 EXPECT_TRUE(chunks[0]->IsAdd());
91 EXPECT_FALSE(chunks[0]->IsSub()); 91 EXPECT_FALSE(chunks[0]->IsSub());
92 EXPECT_FALSE(chunks[0]->IsPrefix()); 92 EXPECT_FALSE(chunks[0]->IsPrefix());
93 EXPECT_TRUE(chunks[0]->IsFullHash()); 93 EXPECT_TRUE(chunks[0]->IsFullHash());
94 94
95 ASSERT_EQ(2U, chunks[0]->FullHashCount()); 95 ASSERT_EQ(2U, chunks[0]->FullHashCount());
96 EXPECT_TRUE(SBFullHashEqual(chunks[0]->FullHashAt(0), full_hash1)); 96 EXPECT_TRUE(
97 EXPECT_TRUE(SBFullHashEqual(chunks[0]->FullHashAt(1), full_hash2)); 97 safe_browsing::SBFullHashEqual(chunks[0]->FullHashAt(0), full_hash1));
98 EXPECT_TRUE(
99 safe_browsing::SBFullHashEqual(chunks[0]->FullHashAt(1), full_hash2));
98 } 100 }
99 101
100 // Test parsing multiple add chunks. We'll use the same chunk as above, and add 102 // Test parsing multiple add chunks. We'll use the same chunk as above, and add
101 // one more after it. 103 // one more after it.
102 TEST(SafeBrowsingProtocolParsingTest, TestAddChunks) { 104 TEST(SafeBrowsingProtocolParsingTest, TestAddChunks) {
103 const char kRawAddChunk[] = { 105 const char kRawAddChunk[] = {
104 '\0', '\0', '\0', '\x1C', // 32-bit payload length in network byte order. 106 '\0', '\0', '\0', '\x1C', // 32-bit payload length in network byte order.
105 '\x08', // field 1, wire format varint 107 '\x08', // field 1, wire format varint
106 '\x01', // chunk_number varint 1 108 '\x01', // chunk_number varint 1
107 '\x22', // field 4, wire format length-delimited 109 '\x22', // field 4, wire format length-delimited
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
280 EXPECT_TRUE(safe_browsing::ParseChunk(kRawSubChunk, sizeof(kRawSubChunk), 282 EXPECT_TRUE(safe_browsing::ParseChunk(kRawSubChunk, sizeof(kRawSubChunk),
281 &chunks)); 283 &chunks));
282 ASSERT_EQ(1U, chunks.size()); 284 ASSERT_EQ(1U, chunks.size());
283 EXPECT_EQ(2, chunks[0]->ChunkNumber()); 285 EXPECT_EQ(2, chunks[0]->ChunkNumber());
284 EXPECT_FALSE(chunks[0]->IsAdd()); 286 EXPECT_FALSE(chunks[0]->IsAdd());
285 EXPECT_TRUE(chunks[0]->IsSub()); 287 EXPECT_TRUE(chunks[0]->IsSub());
286 EXPECT_FALSE(chunks[0]->IsPrefix()); 288 EXPECT_FALSE(chunks[0]->IsPrefix());
287 EXPECT_TRUE(chunks[0]->IsFullHash()); 289 EXPECT_TRUE(chunks[0]->IsFullHash());
288 290
289 ASSERT_EQ(2U, chunks[0]->FullHashCount()); 291 ASSERT_EQ(2U, chunks[0]->FullHashCount());
290 EXPECT_TRUE(SBFullHashEqual(chunks[0]->FullHashAt(0), full_hash1)); 292 EXPECT_TRUE(
293 safe_browsing::SBFullHashEqual(chunks[0]->FullHashAt(0), full_hash1));
291 EXPECT_EQ(7, chunks[0]->AddChunkNumberAt(0)); 294 EXPECT_EQ(7, chunks[0]->AddChunkNumberAt(0));
292 EXPECT_TRUE(SBFullHashEqual(chunks[0]->FullHashAt(1), full_hash2)); 295 EXPECT_TRUE(
296 safe_browsing::SBFullHashEqual(chunks[0]->FullHashAt(1), full_hash2));
293 EXPECT_EQ(9, chunks[0]->AddChunkNumberAt(1)); 297 EXPECT_EQ(9, chunks[0]->AddChunkNumberAt(1));
294 } 298 }
295 299
296 // Test parsing the SafeBrowsing update response. 300 // Test parsing the SafeBrowsing update response.
297 TEST(SafeBrowsingProtocolParsingTest, TestChunkDelete) { 301 TEST(SafeBrowsingProtocolParsingTest, TestChunkDelete) {
298 std::string add_del("n:1700\ni:phishy\nad:1-7,43-597,44444,99999\n" 302 std::string add_del("n:1700\ni:phishy\nad:1-7,43-597,44444,99999\n"
299 "i:malware\nsd:21-27,42,171717\n"); 303 "i:malware\nsd:21-27,42,171717\n");
300 304
301 size_t next_query_sec = 0; 305 size_t next_query_sec = 0;
302 bool reset = false; 306 bool reset = false;
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
394 kDefaultPhishList)); 398 kDefaultPhishList));
395 std::vector<SBFullHashResult> full_hashes; 399 std::vector<SBFullHashResult> full_hashes;
396 base::TimeDelta cache_lifetime; 400 base::TimeDelta cache_lifetime;
397 EXPECT_TRUE(safe_browsing::ParseGetHash(get_hash.data(), get_hash.length(), 401 EXPECT_TRUE(safe_browsing::ParseGetHash(get_hash.data(), get_hash.length(),
398 &cache_lifetime, &full_hashes)); 402 &cache_lifetime, &full_hashes));
399 403
400 ASSERT_EQ(3U, full_hashes.size()); 404 ASSERT_EQ(3U, full_hashes.size());
401 EXPECT_EQ(memcmp(&full_hashes[0].hash, 405 EXPECT_EQ(memcmp(&full_hashes[0].hash,
402 "00112233445566778899aabbccddeeff", 406 "00112233445566778899aabbccddeeff",
403 sizeof(SBFullHash)), 0); 407 sizeof(SBFullHash)), 0);
404 EXPECT_EQ(safe_browsing_util::PHISH, full_hashes[0].list_id); 408 EXPECT_EQ(safe_browsing::PHISH, full_hashes[0].list_id);
405 EXPECT_EQ(memcmp(&full_hashes[1].hash, 409 EXPECT_EQ(memcmp(&full_hashes[1].hash,
406 "00001111222233334444555566667777", 410 "00001111222233334444555566667777",
407 sizeof(SBFullHash)), 0); 411 sizeof(SBFullHash)), 0);
408 EXPECT_EQ(safe_browsing_util::PHISH, full_hashes[1].list_id); 412 EXPECT_EQ(safe_browsing::PHISH, full_hashes[1].list_id);
409 EXPECT_EQ(memcmp(&full_hashes[2].hash, 413 EXPECT_EQ(memcmp(&full_hashes[2].hash,
410 "ffffeeeeddddccccbbbbaaaa99998888", 414 "ffffeeeeddddccccbbbbaaaa99998888",
411 sizeof(SBFullHash)), 0); 415 sizeof(SBFullHash)), 0);
412 EXPECT_EQ(safe_browsing_util::PHISH, full_hashes[2].list_id); 416 EXPECT_EQ(safe_browsing::PHISH, full_hashes[2].list_id);
413 417
414 // Test multiple lists in the GetHash results. 418 // Test multiple lists in the GetHash results.
415 const std::string get_hash2(base::StringPrintf( 419 const std::string get_hash2(base::StringPrintf(
416 "45\n" 420 "45\n"
417 "%s:32:1\n" 421 "%s:32:1\n"
418 "00112233445566778899aabbccddeeff" 422 "00112233445566778899aabbccddeeff"
419 "%s:32:2\n" 423 "%s:32:2\n"
420 "cafebeefcafebeefdeaddeaddeaddead" 424 "cafebeefcafebeefdeaddeaddeaddead"
421 "zzzzyyyyxxxxwwwwvvvvuuuuttttssss", 425 "zzzzyyyyxxxxwwwwvvvvuuuuttttssss",
422 kDefaultPhishList, 426 kDefaultPhishList,
423 kDefaultMalwareList)); 427 kDefaultMalwareList));
424 EXPECT_TRUE(safe_browsing::ParseGetHash(get_hash2.data(), get_hash2.length(), 428 EXPECT_TRUE(safe_browsing::ParseGetHash(get_hash2.data(), get_hash2.length(),
425 &cache_lifetime, &full_hashes)); 429 &cache_lifetime, &full_hashes));
426 430
427 ASSERT_EQ(3U, full_hashes.size()); 431 ASSERT_EQ(3U, full_hashes.size());
428 EXPECT_EQ(memcmp(&full_hashes[0].hash, 432 EXPECT_EQ(memcmp(&full_hashes[0].hash,
429 "00112233445566778899aabbccddeeff", 433 "00112233445566778899aabbccddeeff",
430 sizeof(SBFullHash)), 0); 434 sizeof(SBFullHash)), 0);
431 EXPECT_EQ(safe_browsing_util::PHISH, full_hashes[0].list_id); 435 EXPECT_EQ(safe_browsing::PHISH, full_hashes[0].list_id);
432 EXPECT_EQ(memcmp(&full_hashes[1].hash, 436 EXPECT_EQ(memcmp(&full_hashes[1].hash,
433 "cafebeefcafebeefdeaddeaddeaddead", 437 "cafebeefcafebeefdeaddeaddeaddead",
434 sizeof(SBFullHash)), 0); 438 sizeof(SBFullHash)), 0);
435 EXPECT_EQ(safe_browsing_util::MALWARE, full_hashes[1].list_id); 439 EXPECT_EQ(safe_browsing::MALWARE, full_hashes[1].list_id);
436 EXPECT_EQ(memcmp(&full_hashes[2].hash, 440 EXPECT_EQ(memcmp(&full_hashes[2].hash,
437 "zzzzyyyyxxxxwwwwvvvvuuuuttttssss", 441 "zzzzyyyyxxxxwwwwvvvvuuuuttttssss",
438 sizeof(SBFullHash)), 0); 442 sizeof(SBFullHash)), 0);
439 EXPECT_EQ(safe_browsing_util::MALWARE, full_hashes[2].list_id); 443 EXPECT_EQ(safe_browsing::MALWARE, full_hashes[2].list_id);
440 444
441 // Test metadata parsing. 445 // Test metadata parsing.
442 const std::string get_hash3(base::StringPrintf( 446 const std::string get_hash3(base::StringPrintf(
443 "45\n" 447 "45\n"
444 "%s:32:2:m\n" 448 "%s:32:2:m\n"
445 "zzzzyyyyxxxxwwwwvvvvuuuuttttssss" 449 "zzzzyyyyxxxxwwwwvvvvuuuuttttssss"
446 "00112233445566778899aabbccddeeff" 450 "00112233445566778899aabbccddeeff"
447 "2\nab2\nxy" 451 "2\nab2\nxy"
448 "%s:32:1\n" 452 "%s:32:1\n"
449 "cafebeefcafebeefdeaddeaddeaddead", 453 "cafebeefcafebeefdeaddeaddeaddead",
450 kDefaultMalwareList, 454 kDefaultMalwareList,
451 kDefaultPhishList)); 455 kDefaultPhishList));
452 EXPECT_TRUE(safe_browsing::ParseGetHash(get_hash3.data(), get_hash3.length(), 456 EXPECT_TRUE(safe_browsing::ParseGetHash(get_hash3.data(), get_hash3.length(),
453 &cache_lifetime, &full_hashes)); 457 &cache_lifetime, &full_hashes));
454 458
455 ASSERT_EQ(3U, full_hashes.size()); 459 ASSERT_EQ(3U, full_hashes.size());
456 EXPECT_EQ(memcmp(&full_hashes[0].hash, 460 EXPECT_EQ(memcmp(&full_hashes[0].hash,
457 "zzzzyyyyxxxxwwwwvvvvuuuuttttssss", 461 "zzzzyyyyxxxxwwwwvvvvuuuuttttssss",
458 sizeof(SBFullHash)), 0); 462 sizeof(SBFullHash)), 0);
459 EXPECT_EQ(safe_browsing_util::MALWARE, full_hashes[0].list_id); 463 EXPECT_EQ(safe_browsing::MALWARE, full_hashes[0].list_id);
460 EXPECT_EQ(std::string("ab"), full_hashes[0].metadata); 464 EXPECT_EQ(std::string("ab"), full_hashes[0].metadata);
461 EXPECT_EQ(memcmp(&full_hashes[1].hash, 465 EXPECT_EQ(memcmp(&full_hashes[1].hash,
462 "00112233445566778899aabbccddeeff", 466 "00112233445566778899aabbccddeeff",
463 sizeof(SBFullHash)), 0); 467 sizeof(SBFullHash)), 0);
464 EXPECT_EQ(safe_browsing_util::MALWARE, full_hashes[1].list_id); 468 EXPECT_EQ(safe_browsing::MALWARE, full_hashes[1].list_id);
465 EXPECT_EQ(std::string("xy"), full_hashes[1].metadata); 469 EXPECT_EQ(std::string("xy"), full_hashes[1].metadata);
466 EXPECT_EQ(memcmp(&full_hashes[2].hash, 470 EXPECT_EQ(memcmp(&full_hashes[2].hash,
467 "cafebeefcafebeefdeaddeaddeaddead", 471 "cafebeefcafebeefdeaddeaddeaddead",
468 sizeof(SBFullHash)), 0); 472 sizeof(SBFullHash)), 0);
469 EXPECT_EQ(safe_browsing_util::PHISH, full_hashes[2].list_id); 473 EXPECT_EQ(safe_browsing::PHISH, full_hashes[2].list_id);
470 EXPECT_EQ(std::string(), full_hashes[2].metadata); 474 EXPECT_EQ(std::string(), full_hashes[2].metadata);
471 } 475 }
472 476
473 TEST(SafeBrowsingProtocolParsingTest, TestGetHashWithUnknownList) { 477 TEST(SafeBrowsingProtocolParsingTest, TestGetHashWithUnknownList) {
474 std::string hash_response(base::StringPrintf( 478 std::string hash_response(base::StringPrintf(
475 "45\n" 479 "45\n"
476 "%s:32:1\n" 480 "%s:32:1\n"
477 "12345678901234567890123456789012" 481 "12345678901234567890123456789012"
478 "googpub-phish-shavar:32:1\n" 482 "googpub-phish-shavar:32:1\n"
479 "09876543210987654321098765432109", 483 "09876543210987654321098765432109",
480 kDefaultPhishList)); 484 kDefaultPhishList));
481 std::vector<SBFullHashResult> full_hashes; 485 std::vector<SBFullHashResult> full_hashes;
482 base::TimeDelta cache_lifetime; 486 base::TimeDelta cache_lifetime;
483 EXPECT_TRUE(safe_browsing::ParseGetHash(hash_response.data(), 487 EXPECT_TRUE(safe_browsing::ParseGetHash(hash_response.data(),
484 hash_response.size(), 488 hash_response.size(),
485 &cache_lifetime, 489 &cache_lifetime,
486 &full_hashes)); 490 &full_hashes));
487 491
488 ASSERT_EQ(1U, full_hashes.size()); 492 ASSERT_EQ(1U, full_hashes.size());
489 EXPECT_EQ(memcmp("12345678901234567890123456789012", 493 EXPECT_EQ(memcmp("12345678901234567890123456789012",
490 &full_hashes[0].hash, sizeof(SBFullHash)), 0); 494 &full_hashes[0].hash, sizeof(SBFullHash)), 0);
491 EXPECT_EQ(safe_browsing_util::PHISH, full_hashes[0].list_id); 495 EXPECT_EQ(safe_browsing::PHISH, full_hashes[0].list_id);
492 496
493 hash_response += base::StringPrintf( 497 hash_response += base::StringPrintf(
494 "%s:32:1\n" 498 "%s:32:1\n"
495 "abcdefghijklmnopqrstuvwxyz123457", 499 "abcdefghijklmnopqrstuvwxyz123457",
496 kDefaultMalwareList); 500 kDefaultMalwareList);
497 full_hashes.clear(); 501 full_hashes.clear();
498 EXPECT_TRUE(safe_browsing::ParseGetHash(hash_response.data(), 502 EXPECT_TRUE(safe_browsing::ParseGetHash(hash_response.data(),
499 hash_response.size(), 503 hash_response.size(),
500 &cache_lifetime, 504 &cache_lifetime,
501 &full_hashes)); 505 &full_hashes));
502 506
503 EXPECT_EQ(2U, full_hashes.size()); 507 EXPECT_EQ(2U, full_hashes.size());
504 EXPECT_EQ(memcmp("12345678901234567890123456789012", 508 EXPECT_EQ(memcmp("12345678901234567890123456789012",
505 &full_hashes[0].hash, sizeof(SBFullHash)), 0); 509 &full_hashes[0].hash, sizeof(SBFullHash)), 0);
506 EXPECT_EQ(safe_browsing_util::PHISH, full_hashes[0].list_id); 510 EXPECT_EQ(safe_browsing::PHISH, full_hashes[0].list_id);
507 EXPECT_EQ(memcmp("abcdefghijklmnopqrstuvwxyz123457", 511 EXPECT_EQ(memcmp("abcdefghijklmnopqrstuvwxyz123457",
508 &full_hashes[1].hash, sizeof(SBFullHash)), 0); 512 &full_hashes[1].hash, sizeof(SBFullHash)), 0);
509 EXPECT_EQ(safe_browsing_util::MALWARE, full_hashes[1].list_id); 513 EXPECT_EQ(safe_browsing::MALWARE, full_hashes[1].list_id);
510 } 514 }
511 515
512 TEST(SafeBrowsingProtocolParsingTest, TestGetHashWithUnknownListAndMetadata) { 516 TEST(SafeBrowsingProtocolParsingTest, TestGetHashWithUnknownListAndMetadata) {
513 std::vector<SBFullHashResult> full_hashes; 517 std::vector<SBFullHashResult> full_hashes;
514 base::TimeDelta cache_lifetime; 518 base::TimeDelta cache_lifetime;
515 // Test skipping over a hashentry with an unrecognized listname that also has 519 // Test skipping over a hashentry with an unrecognized listname that also has
516 // metadata. 520 // metadata.
517 const std::string get_hash3(base::StringPrintf( 521 const std::string get_hash3(base::StringPrintf(
518 "600\n" 522 "600\n"
519 "BADLISTNAME:32:1:m\n" 523 "BADLISTNAME:32:1:m\n"
520 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" 524 "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
521 "8\nMETADATA" 525 "8\nMETADATA"
522 "%s:32:1\n" 526 "%s:32:1\n"
523 "0123456789hashhashhashhashhashha", 527 "0123456789hashhashhashhashhashha",
524 kDefaultMalwareList)); 528 kDefaultMalwareList));
525 EXPECT_TRUE(safe_browsing::ParseGetHash(get_hash3.data(), get_hash3.length(), 529 EXPECT_TRUE(safe_browsing::ParseGetHash(get_hash3.data(), get_hash3.length(),
526 &cache_lifetime, &full_hashes)); 530 &cache_lifetime, &full_hashes));
527 ASSERT_EQ(1U, full_hashes.size()); 531 ASSERT_EQ(1U, full_hashes.size());
528 EXPECT_EQ(memcmp(&full_hashes[0].hash, 532 EXPECT_EQ(memcmp(&full_hashes[0].hash,
529 "0123456789hashhashhashhashhashha", 533 "0123456789hashhashhashhashhashha",
530 sizeof(SBFullHash)), 0); 534 sizeof(SBFullHash)), 0);
531 EXPECT_EQ(safe_browsing_util::MALWARE, full_hashes[0].list_id); 535 EXPECT_EQ(safe_browsing::MALWARE, full_hashes[0].list_id);
532 EXPECT_EQ(std::string(), full_hashes[0].metadata); 536 EXPECT_EQ(std::string(), full_hashes[0].metadata);
533 } 537 }
534 538
535 TEST(SafeBrowsingProtocolParsingTest, TestFormatHash) { 539 TEST(SafeBrowsingProtocolParsingTest, TestFormatHash) {
536 std::vector<SBPrefix> prefixes; 540 std::vector<SBPrefix> prefixes;
537 prefixes.push_back(0x34333231); 541 prefixes.push_back(0x34333231);
538 prefixes.push_back(0x64636261); 542 prefixes.push_back(0x64636261);
539 prefixes.push_back(0x73727170); 543 prefixes.push_back(0x73727170);
540 544
541 EXPECT_EQ("4:12\n1234abcdpqrs", safe_browsing::FormatGetHash(prefixes)); 545 EXPECT_EQ("4:12\n1234abcdpqrs", safe_browsing::FormatGetHash(prefixes));
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
709 EXPECT_FALSE(chunks[0]->IsAdd()); 713 EXPECT_FALSE(chunks[0]->IsAdd());
710 EXPECT_TRUE(chunks[0]->IsSub()); 714 EXPECT_TRUE(chunks[0]->IsSub());
711 EXPECT_TRUE(chunks[2]->IsPrefix()); 715 EXPECT_TRUE(chunks[2]->IsPrefix());
712 EXPECT_FALSE(chunks[2]->IsFullHash()); 716 EXPECT_FALSE(chunks[2]->IsFullHash());
713 ASSERT_EQ(1U, chunks[2]->PrefixCount()); 717 ASSERT_EQ(1U, chunks[2]->PrefixCount());
714 EXPECT_EQ(0x70707070U, chunks[2]->PrefixAt(0)); // pppp 718 EXPECT_EQ(0x70707070U, chunks[2]->PrefixAt(0)); // pppp
715 EXPECT_EQ(11, chunks[2]->AddChunkNumberAt(0)); 719 EXPECT_EQ(11, chunks[2]->AddChunkNumberAt(0));
716 } 720 }
717 721
718 } // namespace 722 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698