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

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

Issue 392373002: [safe browsing] Mobile requests different malware and phishing lists. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Change hard-coded default lists for Android tests. Created 6 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 | Annotate | Revision Log
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/time/time.h" 8 #include "base/time/time.h"
8 #include "chrome/browser/safe_browsing/protocol_parser.h" 9 #include "chrome/browser/safe_browsing/protocol_parser.h"
9 #include "chrome/browser/safe_browsing/safe_browsing_util.h" 10 #include "chrome/browser/safe_browsing/safe_browsing_util.h"
10 #include "testing/gtest/include/gtest/gtest.h" 11 #include "testing/gtest/include/gtest/gtest.h"
11 12
13 namespace {
14
15 #if defined(OS_ANDROID)
16 const char kDefaultPhishList[] = "goog-mobilephish-shavar";
17 const char kDefaultMalwareList[] = "goog-mobilemalware-shavar";
18 #else
19 const char kDefaultPhishList[] = "goog-phish-shavar";
20 const char kDefaultMalwareList[] = "goog-malware-shavar";
21 #endif
22
12 // Test parsing one add chunk. 23 // Test parsing one add chunk.
13 TEST(SafeBrowsingProtocolParsingTest, TestAddChunk) { 24 TEST(SafeBrowsingProtocolParsingTest, TestAddChunk) {
14 const char kRawAddChunk[] = { 25 const char kRawAddChunk[] = {
15 '\0', '\0', '\0', '\x1C', // 32-bit payload length in network byte order. 26 '\0', '\0', '\0', '\x1C', // 32-bit payload length in network byte order.
16 '\x08', // field 1, wire format varint 27 '\x08', // field 1, wire format varint
17 '\x01', // chunk_number varint 1 28 '\x01', // chunk_number varint 1
18 '\x22', // field 4, wire format length-delimited 29 '\x22', // field 4, wire format length-delimited
19 '\x18', // varint length 24 30 '\x18', // varint length 24
20 '1', '1', '1', '1', // 4-byte prefixes 31 '1', '1', '1', '1', // 4-byte prefixes
21 '2', '2', '2', '2', 32 '2', '2', '2', '2',
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after
316 deletes.clear(); 327 deletes.clear();
317 urls.clear(); 328 urls.clear();
318 add_del = "n:1700\nad:1-7,43-597,44444,99999\ni:malware\nsd:4,21-27171717\n"; 329 add_del = "n:1700\nad:1-7,43-597,44444,99999\ni:malware\nsd:4,21-27171717\n";
319 EXPECT_FALSE(safe_browsing::ParseUpdate(add_del.data(), add_del.length(), 330 EXPECT_FALSE(safe_browsing::ParseUpdate(add_del.data(), add_del.length(),
320 &next_query_sec, &reset, 331 &next_query_sec, &reset,
321 &deletes, &urls)); 332 &deletes, &urls));
322 } 333 }
323 334
324 // Test parsing the SafeBrowsing update response. 335 // Test parsing the SafeBrowsing update response.
325 TEST(SafeBrowsingProtocolParsingTest, TestRedirects) { 336 TEST(SafeBrowsingProtocolParsingTest, TestRedirects) {
326 std::string redirects("i:goog-malware-shavar\n" 337 const std::string redirects(base::StringPrintf(
327 "u:cache.googlevideo.com/safebrowsing/rd/goog-malware-shavar_s_1\n" 338 "i:%s\n"
328 "u:cache.googlevideo.com/safebrowsing/rd/goog-malware-shavar_s_2\n" 339 "u:cache.googlevideo.com/safebrowsing/rd/goog-malware-shavar_s_1\n"
329 "u:cache.googlevideo.com/safebrowsing/rd/goog-malware-shavar_s_3\n" 340 "u:cache.googlevideo.com/safebrowsing/rd/goog-malware-shavar_s_2\n"
330 "u:s.ytimg.com/safebrowsing/rd/goog-phish-shavar_a_8641-8800:8641-8689," 341 "u:cache.googlevideo.com/safebrowsing/rd/goog-malware-shavar_s_3\n"
331 "8691-8731,8733-8786\n"); 342 "u:s.ytimg.com/safebrowsing/rd/goog-phish-shavar_a_8641-8800:8641-8689,"
343 "8691-8731,8733-8786\n",
344 kDefaultMalwareList));
332 345
333 size_t next_query_sec = 0; 346 size_t next_query_sec = 0;
334 bool reset = false; 347 bool reset = false;
335 std::vector<SBChunkDelete> deletes; 348 std::vector<SBChunkDelete> deletes;
336 std::vector<ChunkUrl> urls; 349 std::vector<ChunkUrl> urls;
337 EXPECT_TRUE(safe_browsing::ParseUpdate(redirects.data(), redirects.length(), 350 EXPECT_TRUE(safe_browsing::ParseUpdate(redirects.data(), redirects.length(),
338 &next_query_sec, &reset, 351 &next_query_sec, &reset,
339 &deletes, &urls)); 352 &deletes, &urls));
340 EXPECT_FALSE(reset); 353 EXPECT_FALSE(reset);
341 EXPECT_EQ(0U, next_query_sec); 354 EXPECT_EQ(0U, next_query_sec);
(...skipping 23 matching lines...) Expand all
365 &deletes, &urls)); 378 &deletes, &urls));
366 379
367 EXPECT_EQ(1800U, next_query_sec); 380 EXPECT_EQ(1800U, next_query_sec);
368 EXPECT_FALSE(reset); 381 EXPECT_FALSE(reset);
369 EXPECT_TRUE(deletes.empty()); 382 EXPECT_TRUE(deletes.empty());
370 EXPECT_TRUE(urls.empty()); 383 EXPECT_TRUE(urls.empty());
371 } 384 }
372 385
373 // Test parsing data from a GetHashRequest 386 // Test parsing data from a GetHashRequest
374 TEST(SafeBrowsingProtocolParsingTest, TestGetHash) { 387 TEST(SafeBrowsingProtocolParsingTest, TestGetHash) {
375 std::string get_hash("45\n" 388 const std::string get_hash(base::StringPrintf(
376 "goog-phish-shavar:32:3\n" 389 "45\n"
377 "00112233445566778899aabbccddeeff" 390 "%s:32:3\n"
378 "00001111222233334444555566667777" 391 "00112233445566778899aabbccddeeff"
379 "ffffeeeeddddccccbbbbaaaa99998888"); 392 "00001111222233334444555566667777"
393 "ffffeeeeddddccccbbbbaaaa99998888",
394 kDefaultPhishList));
380 std::vector<SBFullHashResult> full_hashes; 395 std::vector<SBFullHashResult> full_hashes;
381 base::TimeDelta cache_lifetime; 396 base::TimeDelta cache_lifetime;
382 EXPECT_TRUE(safe_browsing::ParseGetHash(get_hash.data(), get_hash.length(), 397 EXPECT_TRUE(safe_browsing::ParseGetHash(get_hash.data(), get_hash.length(),
383 &cache_lifetime, &full_hashes)); 398 &cache_lifetime, &full_hashes));
384 399
385 ASSERT_EQ(3U, full_hashes.size()); 400 ASSERT_EQ(3U, full_hashes.size());
386 EXPECT_EQ(memcmp(&full_hashes[0].hash, 401 EXPECT_EQ(memcmp(&full_hashes[0].hash,
387 "00112233445566778899aabbccddeeff", 402 "00112233445566778899aabbccddeeff",
388 sizeof(SBFullHash)), 0); 403 sizeof(SBFullHash)), 0);
389 EXPECT_EQ(safe_browsing_util::PHISH, full_hashes[0].list_id); 404 EXPECT_EQ(safe_browsing_util::PHISH, full_hashes[0].list_id);
390 EXPECT_EQ(memcmp(&full_hashes[1].hash, 405 EXPECT_EQ(memcmp(&full_hashes[1].hash,
391 "00001111222233334444555566667777", 406 "00001111222233334444555566667777",
392 sizeof(SBFullHash)), 0); 407 sizeof(SBFullHash)), 0);
393 EXPECT_EQ(safe_browsing_util::PHISH, full_hashes[1].list_id); 408 EXPECT_EQ(safe_browsing_util::PHISH, full_hashes[1].list_id);
394 EXPECT_EQ(memcmp(&full_hashes[2].hash, 409 EXPECT_EQ(memcmp(&full_hashes[2].hash,
395 "ffffeeeeddddccccbbbbaaaa99998888", 410 "ffffeeeeddddccccbbbbaaaa99998888",
396 sizeof(SBFullHash)), 0); 411 sizeof(SBFullHash)), 0);
397 EXPECT_EQ(safe_browsing_util::PHISH, full_hashes[2].list_id); 412 EXPECT_EQ(safe_browsing_util::PHISH, full_hashes[2].list_id);
398 413
399 // Test multiple lists in the GetHash results. 414 // Test multiple lists in the GetHash results.
400 std::string get_hash2("45\n" 415 const std::string get_hash2(base::StringPrintf(
401 "goog-phish-shavar:32:1\n" 416 "45\n"
402 "00112233445566778899aabbccddeeff" 417 "%s:32:1\n"
403 "goog-malware-shavar:32:2\n" 418 "00112233445566778899aabbccddeeff"
404 "cafebeefcafebeefdeaddeaddeaddead" 419 "%s:32:2\n"
405 "zzzzyyyyxxxxwwwwvvvvuuuuttttssss"); 420 "cafebeefcafebeefdeaddeaddeaddead"
421 "zzzzyyyyxxxxwwwwvvvvuuuuttttssss",
422 kDefaultPhishList,
423 kDefaultMalwareList));
406 EXPECT_TRUE(safe_browsing::ParseGetHash(get_hash2.data(), get_hash2.length(), 424 EXPECT_TRUE(safe_browsing::ParseGetHash(get_hash2.data(), get_hash2.length(),
407 &cache_lifetime, &full_hashes)); 425 &cache_lifetime, &full_hashes));
408 426
409 ASSERT_EQ(3U, full_hashes.size()); 427 ASSERT_EQ(3U, full_hashes.size());
410 EXPECT_EQ(memcmp(&full_hashes[0].hash, 428 EXPECT_EQ(memcmp(&full_hashes[0].hash,
411 "00112233445566778899aabbccddeeff", 429 "00112233445566778899aabbccddeeff",
412 sizeof(SBFullHash)), 0); 430 sizeof(SBFullHash)), 0);
413 EXPECT_EQ(safe_browsing_util::PHISH, full_hashes[0].list_id); 431 EXPECT_EQ(safe_browsing_util::PHISH, full_hashes[0].list_id);
414 EXPECT_EQ(memcmp(&full_hashes[1].hash, 432 EXPECT_EQ(memcmp(&full_hashes[1].hash,
415 "cafebeefcafebeefdeaddeaddeaddead", 433 "cafebeefcafebeefdeaddeaddeaddead",
416 sizeof(SBFullHash)), 0); 434 sizeof(SBFullHash)), 0);
417 EXPECT_EQ(safe_browsing_util::MALWARE, full_hashes[1].list_id); 435 EXPECT_EQ(safe_browsing_util::MALWARE, full_hashes[1].list_id);
418 EXPECT_EQ(memcmp(&full_hashes[2].hash, 436 EXPECT_EQ(memcmp(&full_hashes[2].hash,
419 "zzzzyyyyxxxxwwwwvvvvuuuuttttssss", 437 "zzzzyyyyxxxxwwwwvvvvuuuuttttssss",
420 sizeof(SBFullHash)), 0); 438 sizeof(SBFullHash)), 0);
421 EXPECT_EQ(safe_browsing_util::MALWARE, full_hashes[2].list_id); 439 EXPECT_EQ(safe_browsing_util::MALWARE, full_hashes[2].list_id);
422 440
423 // Test metadata parsing. 441 // Test metadata parsing.
424 // TODO(shess): Currently the code doesn't actually put the metadata anywhere, 442 // TODO(shess): Currently the code doesn't actually put the metadata anywhere,
425 // this is just testing that metadata doesn't break parsing. 443 // this is just testing that metadata doesn't break parsing.
426 std::string get_hash3("45\n" 444 const std::string get_hash3(base::StringPrintf(
427 "goog-malware-shavar:32:2:m\n" 445 "45\n"
428 "zzzzyyyyxxxxwwwwvvvvuuuuttttssss" 446 "%s:32:2:m\n"
429 "00112233445566778899aabbccddeeff" 447 "zzzzyyyyxxxxwwwwvvvvuuuuttttssss"
430 "2\nab2\nxy" 448 "00112233445566778899aabbccddeeff"
431 "goog-phish-shavar:32:1\n" 449 "2\nab2\nxy"
432 "cafebeefcafebeefdeaddeaddeaddead"); 450 "%s:32:1\n"
451 "cafebeefcafebeefdeaddeaddeaddead",
452 kDefaultMalwareList,
453 kDefaultPhishList));
433 EXPECT_TRUE(safe_browsing::ParseGetHash(get_hash3.data(), get_hash3.length(), 454 EXPECT_TRUE(safe_browsing::ParseGetHash(get_hash3.data(), get_hash3.length(),
434 &cache_lifetime, &full_hashes)); 455 &cache_lifetime, &full_hashes));
435 456
436 ASSERT_EQ(3U, full_hashes.size()); 457 ASSERT_EQ(3U, full_hashes.size());
437 EXPECT_EQ(memcmp(&full_hashes[0].hash, 458 EXPECT_EQ(memcmp(&full_hashes[0].hash,
438 "zzzzyyyyxxxxwwwwvvvvuuuuttttssss", 459 "zzzzyyyyxxxxwwwwvvvvuuuuttttssss",
439 sizeof(SBFullHash)), 0); 460 sizeof(SBFullHash)), 0);
440 EXPECT_EQ(safe_browsing_util::MALWARE, full_hashes[0].list_id); 461 EXPECT_EQ(safe_browsing_util::MALWARE, full_hashes[0].list_id);
441 EXPECT_EQ(memcmp(&full_hashes[1].hash, 462 EXPECT_EQ(memcmp(&full_hashes[1].hash,
442 "00112233445566778899aabbccddeeff", 463 "00112233445566778899aabbccddeeff",
443 sizeof(SBFullHash)), 0); 464 sizeof(SBFullHash)), 0);
444 EXPECT_EQ(safe_browsing_util::MALWARE, full_hashes[1].list_id); 465 EXPECT_EQ(safe_browsing_util::MALWARE, full_hashes[1].list_id);
445 EXPECT_EQ(memcmp(&full_hashes[2].hash, 466 EXPECT_EQ(memcmp(&full_hashes[2].hash,
446 "cafebeefcafebeefdeaddeaddeaddead", 467 "cafebeefcafebeefdeaddeaddeaddead",
447 sizeof(SBFullHash)), 0); 468 sizeof(SBFullHash)), 0);
448 EXPECT_EQ(safe_browsing_util::PHISH, full_hashes[2].list_id); 469 EXPECT_EQ(safe_browsing_util::PHISH, full_hashes[2].list_id);
449 } 470 }
450 471
451 TEST(SafeBrowsingProtocolParsingTest, TestGetHashWithUnknownList) { 472 TEST(SafeBrowsingProtocolParsingTest, TestGetHashWithUnknownList) {
452 std::string hash_response = "45\n" 473 std::string hash_response(base::StringPrintf(
453 "goog-phish-shavar:32:1\n" 474 "45\n"
454 "12345678901234567890123456789012" 475 "%s:32:1\n"
455 "googpub-phish-shavar:32:1\n" 476 "12345678901234567890123456789012"
456 "09876543210987654321098765432109"; 477 "googpub-phish-shavar:32:1\n"
478 "09876543210987654321098765432109",
479 kDefaultPhishList));
457 std::vector<SBFullHashResult> full_hashes; 480 std::vector<SBFullHashResult> full_hashes;
458 base::TimeDelta cache_lifetime; 481 base::TimeDelta cache_lifetime;
459 EXPECT_TRUE(safe_browsing::ParseGetHash(hash_response.data(), 482 EXPECT_TRUE(safe_browsing::ParseGetHash(hash_response.data(),
460 hash_response.size(), 483 hash_response.size(),
461 &cache_lifetime, 484 &cache_lifetime,
462 &full_hashes)); 485 &full_hashes));
463 486
464 ASSERT_EQ(1U, full_hashes.size()); 487 ASSERT_EQ(1U, full_hashes.size());
465 EXPECT_EQ(memcmp("12345678901234567890123456789012", 488 EXPECT_EQ(memcmp("12345678901234567890123456789012",
466 &full_hashes[0].hash, sizeof(SBFullHash)), 0); 489 &full_hashes[0].hash, sizeof(SBFullHash)), 0);
467 EXPECT_EQ(safe_browsing_util::PHISH, full_hashes[0].list_id); 490 EXPECT_EQ(safe_browsing_util::PHISH, full_hashes[0].list_id);
468 491
469 hash_response += "goog-malware-shavar:32:1\n" 492 hash_response += base::StringPrintf(
470 "abcdefghijklmnopqrstuvwxyz123457"; 493 "%s:32:1\n"
494 "abcdefghijklmnopqrstuvwxyz123457",
495 kDefaultMalwareList);
471 full_hashes.clear(); 496 full_hashes.clear();
472 EXPECT_TRUE(safe_browsing::ParseGetHash(hash_response.data(), 497 EXPECT_TRUE(safe_browsing::ParseGetHash(hash_response.data(),
473 hash_response.size(), 498 hash_response.size(),
474 &cache_lifetime, 499 &cache_lifetime,
475 &full_hashes)); 500 &full_hashes));
476 501
477 EXPECT_EQ(2U, full_hashes.size()); 502 EXPECT_EQ(2U, full_hashes.size());
478 EXPECT_EQ(memcmp("12345678901234567890123456789012", 503 EXPECT_EQ(memcmp("12345678901234567890123456789012",
479 &full_hashes[0].hash, sizeof(SBFullHash)), 0); 504 &full_hashes[0].hash, sizeof(SBFullHash)), 0);
480 EXPECT_EQ(safe_browsing_util::PHISH, full_hashes[0].list_id); 505 EXPECT_EQ(safe_browsing_util::PHISH, full_hashes[0].list_id);
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
658 683
659 EXPECT_EQ(3, chunks[2]->ChunkNumber()); 684 EXPECT_EQ(3, chunks[2]->ChunkNumber());
660 EXPECT_FALSE(chunks[0]->IsAdd()); 685 EXPECT_FALSE(chunks[0]->IsAdd());
661 EXPECT_TRUE(chunks[0]->IsSub()); 686 EXPECT_TRUE(chunks[0]->IsSub());
662 EXPECT_TRUE(chunks[2]->IsPrefix()); 687 EXPECT_TRUE(chunks[2]->IsPrefix());
663 EXPECT_FALSE(chunks[2]->IsFullHash()); 688 EXPECT_FALSE(chunks[2]->IsFullHash());
664 ASSERT_EQ(1U, chunks[2]->PrefixCount()); 689 ASSERT_EQ(1U, chunks[2]->PrefixCount());
665 EXPECT_EQ(0x70707070U, chunks[2]->PrefixAt(0)); // pppp 690 EXPECT_EQ(0x70707070U, chunks[2]->PrefixAt(0)); // pppp
666 EXPECT_EQ(11, chunks[2]->AddChunkNumberAt(0)); 691 EXPECT_EQ(11, chunks[2]->AddChunkNumberAt(0));
667 } 692 }
693
694 } // namespace
OLDNEW
« no previous file with comments | « chrome/browser/safe_browsing/protocol_manager_unittest.cc ('k') | chrome/browser/safe_browsing/safe_browsing_database.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698