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

Side by Side Diff: components/safe_browsing_db/safe_browsing_api_handler_unittest.cc

Issue 1726403006: Switch Safe Browsing's metadata from string to struct. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix mattm's comments Created 4 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "components/safe_browsing_db/metadata.pb.h" 5 #include "components/safe_browsing_db/metadata.pb.h"
6 #include "components/safe_browsing_db/safe_browsing_api_handler_util.h" 6 #include "components/safe_browsing_db/safe_browsing_api_handler_util.h"
7 #include "components/safe_browsing_db/testing_util.h"
7 #include "components/safe_browsing_db/util.h" 8 #include "components/safe_browsing_db/util.h"
8 #include "testing/gtest/include/gtest/gtest.h" 9 #include "testing/gtest/include/gtest/gtest.h"
9 10
10 namespace safe_browsing { 11 namespace safe_browsing {
11 12
12 class SafeBrowsingApiHandlerUtilTest : public ::testing::Test { 13 class SafeBrowsingApiHandlerUtilTest : public ::testing::Test {
13 protected: 14 protected:
14 SBThreatType threat_; 15 SBThreatType threat_;
15 std::string pb_str_; 16 ThreatMetadata meta_;
17 const ThreatMetadata empty_meta_;
16 18
17 UmaRemoteCallResult ResetAndParseJson(const std::string& json) { 19 UmaRemoteCallResult ResetAndParseJson(const std::string& json) {
18 threat_ = SB_THREAT_TYPE_EXTENSION; // Should never be seen 20 threat_ = SB_THREAT_TYPE_EXTENSION; // Should never be seen
19 pb_str_ = "unitialized value"; 21 meta_ = ThreatMetadata();
20 return ParseJsonToThreatAndPB(json, &threat_, &pb_str_); 22 return ParseJson(json, &threat_, &meta_);
mattm 2016/02/26 23:23:19 missed this one I don't understand why this is ca
Nathan Parker 2016/02/26 23:34:52 Done. Huh. I don't see where its picking that up
mattm 2016/02/26 23:43:23 yeah, it's weird. Maybe file an infra bug about it
21 } 23 }
22 24
23 MalwarePatternType::PATTERN_TYPE ParsePatternType() {
24 MalwarePatternType proto;
25 EXPECT_TRUE(proto.ParseFromString(pb_str_));
26 return proto.pattern_type();
27 }
28 }; 25 };
29 26
30 TEST_F(SafeBrowsingApiHandlerUtilTest, BadJson) { 27 TEST_F(SafeBrowsingApiHandlerUtilTest, BadJson) {
31 EXPECT_EQ(UMA_STATUS_JSON_EMPTY, ResetAndParseJson("")); 28 EXPECT_EQ(UMA_STATUS_JSON_EMPTY, ResetAndParseJson(""));
32 EXPECT_EQ(SB_THREAT_TYPE_SAFE, threat_); 29 EXPECT_EQ(SB_THREAT_TYPE_SAFE, threat_);
33 EXPECT_TRUE(pb_str_.empty()); 30 EXPECT_EQ(empty_meta_, meta_);
34 31
35 EXPECT_EQ(UMA_STATUS_JSON_FAILED_TO_PARSE, ResetAndParseJson("{")); 32 EXPECT_EQ(UMA_STATUS_JSON_FAILED_TO_PARSE, ResetAndParseJson("{"));
36 EXPECT_EQ(SB_THREAT_TYPE_SAFE, threat_); 33 EXPECT_EQ(SB_THREAT_TYPE_SAFE, threat_);
37 EXPECT_TRUE(pb_str_.empty()); 34 EXPECT_EQ(empty_meta_, meta_);
38 35
39 EXPECT_EQ(UMA_STATUS_JSON_FAILED_TO_PARSE, ResetAndParseJson("[]")); 36 EXPECT_EQ(UMA_STATUS_JSON_FAILED_TO_PARSE, ResetAndParseJson("[]"));
40 EXPECT_EQ(SB_THREAT_TYPE_SAFE, threat_); 37 EXPECT_EQ(SB_THREAT_TYPE_SAFE, threat_);
41 EXPECT_TRUE(pb_str_.empty()); 38 EXPECT_EQ(empty_meta_, meta_);
42 39
43 EXPECT_EQ(UMA_STATUS_JSON_FAILED_TO_PARSE, 40 EXPECT_EQ(UMA_STATUS_JSON_FAILED_TO_PARSE,
44 ResetAndParseJson("{\"matches\":\"foo\"}")); 41 ResetAndParseJson("{\"matches\":\"foo\"}"));
45 EXPECT_EQ(SB_THREAT_TYPE_SAFE, threat_); 42 EXPECT_EQ(SB_THREAT_TYPE_SAFE, threat_);
46 EXPECT_TRUE(pb_str_.empty()); 43 EXPECT_EQ(empty_meta_, meta_);
47 44
48 EXPECT_EQ(UMA_STATUS_JSON_UNKNOWN_THREAT, 45 EXPECT_EQ(UMA_STATUS_JSON_UNKNOWN_THREAT,
49 ResetAndParseJson("{\"matches\":[{}]}")); 46 ResetAndParseJson("{\"matches\":[{}]}"));
50 EXPECT_EQ(SB_THREAT_TYPE_SAFE, threat_); 47 EXPECT_EQ(SB_THREAT_TYPE_SAFE, threat_);
51 EXPECT_TRUE(pb_str_.empty()); 48 EXPECT_EQ(empty_meta_, meta_);
52 49
53 EXPECT_EQ(UMA_STATUS_JSON_UNKNOWN_THREAT, 50 EXPECT_EQ(UMA_STATUS_JSON_UNKNOWN_THREAT,
54 ResetAndParseJson("{\"matches\":[{\"threat_type\":\"junk\"}]}")); 51 ResetAndParseJson("{\"matches\":[{\"threat_type\":\"junk\"}]}"));
55 EXPECT_EQ(SB_THREAT_TYPE_SAFE, threat_); 52 EXPECT_EQ(SB_THREAT_TYPE_SAFE, threat_);
56 EXPECT_TRUE(pb_str_.empty()); 53 EXPECT_EQ(empty_meta_, meta_);
57 54
58 EXPECT_EQ(UMA_STATUS_JSON_UNKNOWN_THREAT, 55 EXPECT_EQ(UMA_STATUS_JSON_UNKNOWN_THREAT,
59 ResetAndParseJson("{\"matches\":[{\"threat_type\":\"999\"}]}")); 56 ResetAndParseJson("{\"matches\":[{\"threat_type\":\"999\"}]}"));
60 EXPECT_EQ(SB_THREAT_TYPE_SAFE, threat_); 57 EXPECT_EQ(SB_THREAT_TYPE_SAFE, threat_);
61 EXPECT_TRUE(pb_str_.empty()); 58 EXPECT_EQ(empty_meta_, meta_);
62 } 59 }
63 60
64 TEST_F(SafeBrowsingApiHandlerUtilTest, BasicThreats) { 61 TEST_F(SafeBrowsingApiHandlerUtilTest, BasicThreats) {
65 EXPECT_EQ(UMA_STATUS_UNSAFE, 62 EXPECT_EQ(UMA_STATUS_UNSAFE,
66 ResetAndParseJson("{\"matches\":[{\"threat_type\":\"4\"}]}")); 63 ResetAndParseJson("{\"matches\":[{\"threat_type\":\"4\"}]}"));
67 EXPECT_EQ(SB_THREAT_TYPE_URL_MALWARE, threat_); 64 EXPECT_EQ(SB_THREAT_TYPE_URL_MALWARE, threat_);
68 EXPECT_TRUE(pb_str_.empty()); 65 EXPECT_EQ(empty_meta_, meta_);
69 66
70 EXPECT_EQ(UMA_STATUS_UNSAFE, 67 EXPECT_EQ(UMA_STATUS_UNSAFE,
71 ResetAndParseJson("{\"matches\":[{\"threat_type\":\"5\"}]}")); 68 ResetAndParseJson("{\"matches\":[{\"threat_type\":\"5\"}]}"));
72 EXPECT_EQ(SB_THREAT_TYPE_URL_PHISHING, threat_); 69 EXPECT_EQ(SB_THREAT_TYPE_URL_PHISHING, threat_);
73 EXPECT_TRUE(pb_str_.empty()); 70 EXPECT_EQ(empty_meta_, meta_);
74 } 71 }
75 72
76 TEST_F(SafeBrowsingApiHandlerUtilTest, MultipleThreats) { 73 TEST_F(SafeBrowsingApiHandlerUtilTest, MultipleThreats) {
77 EXPECT_EQ( 74 EXPECT_EQ(
78 UMA_STATUS_UNSAFE, 75 UMA_STATUS_UNSAFE,
79 ResetAndParseJson( 76 ResetAndParseJson(
80 "{\"matches\":[{\"threat_type\":\"4\"}, {\"threat_type\":\"5\"}]}")); 77 "{\"matches\":[{\"threat_type\":\"4\"}, {\"threat_type\":\"5\"}]}"));
81 EXPECT_EQ(SB_THREAT_TYPE_URL_MALWARE, threat_); 78 EXPECT_EQ(SB_THREAT_TYPE_URL_MALWARE, threat_);
82 EXPECT_TRUE(pb_str_.empty()); 79 EXPECT_EQ(empty_meta_, meta_);
83 } 80 }
84 81
85 TEST_F(SafeBrowsingApiHandlerUtilTest, PhaSubType) { 82 TEST_F(SafeBrowsingApiHandlerUtilTest, PhaSubType) {
83 ThreatMetadata expected;
84
86 EXPECT_EQ(UMA_STATUS_UNSAFE, 85 EXPECT_EQ(UMA_STATUS_UNSAFE,
87 ResetAndParseJson("{\"matches\":[{\"threat_type\":\"4\", " 86 ResetAndParseJson("{\"matches\":[{\"threat_type\":\"4\", "
88 "\"pha_pattern_type\":\"LANDING\"}]}")); 87 "\"pha_pattern_type\":\"LANDING\"}]}"));
89 EXPECT_EQ(SB_THREAT_TYPE_URL_MALWARE, threat_); 88 EXPECT_EQ(SB_THREAT_TYPE_URL_MALWARE, threat_);
90 EXPECT_EQ(MalwarePatternType::LANDING, ParsePatternType()); 89 expected.threat_pattern_type = ThreatPatternType::LANDING;
90 EXPECT_EQ(expected, meta_);
91 // Test the ThreatMetadata comparitor for this field.
92 EXPECT_NE(empty_meta_, meta_);
91 93
92 EXPECT_EQ(UMA_STATUS_UNSAFE, 94 EXPECT_EQ(UMA_STATUS_UNSAFE,
93 ResetAndParseJson("{\"matches\":[{\"threat_type\":\"4\", " 95 ResetAndParseJson("{\"matches\":[{\"threat_type\":\"4\", "
94 "\"pha_pattern_type\":\"DISTRIBUTION\"}]}")); 96 "\"pha_pattern_type\":\"DISTRIBUTION\"}]}"));
95 EXPECT_EQ(SB_THREAT_TYPE_URL_MALWARE, threat_); 97 EXPECT_EQ(SB_THREAT_TYPE_URL_MALWARE, threat_);
96 EXPECT_EQ(MalwarePatternType::DISTRIBUTION, ParsePatternType()); 98 expected.threat_pattern_type = ThreatPatternType::DISTRIBUTION;
99 EXPECT_EQ(expected, meta_);
97 100
98 EXPECT_EQ(UMA_STATUS_UNSAFE, 101 EXPECT_EQ(UMA_STATUS_UNSAFE,
99 ResetAndParseJson("{\"matches\":[{\"threat_type\":\"4\", " 102 ResetAndParseJson("{\"matches\":[{\"threat_type\":\"4\", "
100 "\"pha_pattern_type\":\"junk\"}]}")); 103 "\"pha_pattern_type\":\"junk\"}]}"));
101 EXPECT_TRUE(pb_str_.empty()); 104 EXPECT_EQ(empty_meta_, meta_);
102 } 105 }
103 106
104 TEST_F(SafeBrowsingApiHandlerUtilTest, SocialEngineeringSubType) { 107 TEST_F(SafeBrowsingApiHandlerUtilTest, SocialEngineeringSubType) {
108 ThreatMetadata expected;
109
105 EXPECT_EQ(UMA_STATUS_UNSAFE, 110 EXPECT_EQ(UMA_STATUS_UNSAFE,
106 ResetAndParseJson("{\"matches\":[{\"threat_type\":\"5\", " 111 ResetAndParseJson("{\"matches\":[{\"threat_type\":\"5\", "
107 "\"se_pattern_type\":\"LANDING\"}]}")); 112 "\"se_pattern_type\":\"LANDING\"}]}"));
108 EXPECT_EQ(SB_THREAT_TYPE_URL_PHISHING, threat_); 113 EXPECT_EQ(SB_THREAT_TYPE_URL_PHISHING, threat_);
109 EXPECT_EQ(MalwarePatternType::LANDING, ParsePatternType()); 114 expected.threat_pattern_type = ThreatPatternType::LANDING;
115 EXPECT_EQ(expected, meta_);
110 116
111 EXPECT_EQ(UMA_STATUS_UNSAFE, 117 EXPECT_EQ(UMA_STATUS_UNSAFE,
112 ResetAndParseJson("{\"matches\":[{\"threat_type\":\"5\", " 118 ResetAndParseJson("{\"matches\":[{\"threat_type\":\"5\", "
113 "\"se_pattern_type\":\"DISTRIBUTION\"}]}")); 119 "\"se_pattern_type\":\"DISTRIBUTION\"}]}"));
114 EXPECT_EQ(SB_THREAT_TYPE_URL_PHISHING, threat_); 120 EXPECT_EQ(SB_THREAT_TYPE_URL_PHISHING, threat_);
115 EXPECT_EQ(MalwarePatternType::DISTRIBUTION, ParsePatternType()); 121 expected.threat_pattern_type = ThreatPatternType::DISTRIBUTION;
122 EXPECT_EQ(expected, meta_);
116 123
117 EXPECT_EQ(UMA_STATUS_UNSAFE, 124 EXPECT_EQ(UMA_STATUS_UNSAFE,
118 ResetAndParseJson("{\"matches\":[{\"threat_type\":\"5\", " 125 ResetAndParseJson("{\"matches\":[{\"threat_type\":\"5\", "
119 "\"se_pattern_type\":\"junk\"}]}")); 126 "\"se_pattern_type\":\"junk\"}]}"));
120 EXPECT_TRUE(pb_str_.empty()); 127 EXPECT_EQ(empty_meta_, meta_);
128 }
129
130 TEST_F(SafeBrowsingApiHandlerUtilTest, PopulationId) {
131 ThreatMetadata expected;
132
133 EXPECT_EQ(UMA_STATUS_UNSAFE,
134 ResetAndParseJson("{\"matches\":[{\"threat_type\":\"4\", "
135 "\"UserPopulation\":\"foobarbazz\"}]}"));
136 EXPECT_EQ(SB_THREAT_TYPE_URL_MALWARE, threat_);
137 expected.population_id = "foobarbazz";
138 EXPECT_EQ(expected, meta_);
139 // Test the ThreatMetadata comparator for this field.
140 EXPECT_NE(empty_meta_, meta_);
121 } 141 }
122 142
123 } // namespace safe_browsing 143 } // namespace safe_browsing
OLDNEW
« no previous file with comments | « components/safe_browsing_db/safe_browsing_api_handler.cc ('k') | components/safe_browsing_db/safe_browsing_api_handler_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698