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

Side by Side Diff: chrome/common/safe_browsing/file_type_policies_unittest.cc

Issue 1979153002: Use FileTypePolicies for is_archive and is_supported classifications. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@split_by_platform
Patch Set: Fix comment, per asanka's review Created 4 years, 7 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "chrome/common/safe_browsing/file_type_policies.h" 5 #include "chrome/common/safe_browsing/file_type_policies.h"
6 6
7 #include <string.h> 7 #include <string.h>
8 8
9 #include <memory> 9 #include <memory>
10 10
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 // that gen_file_type_proto.py does its job. 47 // that gen_file_type_proto.py does its job.
48 // 48 //
49 // NOTE: If the settings for these change in download_file_types.asciipb, 49 // NOTE: If the settings for these change in download_file_types.asciipb,
50 // then you'll need to change them here as well. 50 // then you'll need to change them here as well.
51 51
52 // Lookup .exe that varies on OS_WIN. 52 // Lookup .exe that varies on OS_WIN.
53 base::FilePath exe_file(FILE_PATH_LITERAL("a/foo.exe")); 53 base::FilePath exe_file(FILE_PATH_LITERAL("a/foo.exe"));
54 DownloadFileType file_type = policies_.PolicyForFile(exe_file); 54 DownloadFileType file_type = policies_.PolicyForFile(exe_file);
55 EXPECT_EQ("exe", file_type.extension()); 55 EXPECT_EQ("exe", file_type.extension());
56 EXPECT_EQ(0l, file_type.uma_value()); 56 EXPECT_EQ(0l, file_type.uma_value());
57 EXPECT_EQ(false, file_type.is_archive()); 57 EXPECT_FALSE(file_type.is_archive());
58 EXPECT_EQ(DownloadFileType::FULL_PING, file_type.ping_setting()); 58 EXPECT_EQ(DownloadFileType::FULL_PING, file_type.ping_setting());
59 #if defined(OS_WIN) 59 #if defined(OS_WIN)
60 EXPECT_EQ(DownloadFileType::ALLOW_ON_USER_GESTURE, 60 EXPECT_EQ(DownloadFileType::ALLOW_ON_USER_GESTURE,
61 file_type.platform_settings(0).danger_level()); 61 file_type.platform_settings(0).danger_level());
62 EXPECT_EQ(DownloadFileType::DISALLOW_AUTO_OPEN, 62 EXPECT_EQ(DownloadFileType::DISALLOW_AUTO_OPEN,
63 file_type.platform_settings(0).auto_open_hint()); 63 file_type.platform_settings(0).auto_open_hint());
64 #else 64 #else
65 EXPECT_EQ(DownloadFileType::NOT_DANGEROUS, 65 EXPECT_EQ(DownloadFileType::NOT_DANGEROUS,
66 file_type.platform_settings(0).danger_level()); 66 file_type.platform_settings(0).danger_level());
67 EXPECT_EQ(DownloadFileType::ALLOW_AUTO_OPEN, 67 EXPECT_EQ(DownloadFileType::ALLOW_AUTO_OPEN,
68 file_type.platform_settings(0).auto_open_hint()); 68 file_type.platform_settings(0).auto_open_hint());
69 #endif 69 #endif
70 70
71 // Lookup .class that varies on OS_CHROMEOS, and also has a 71 // Lookup .class that varies on OS_CHROMEOS, and also has a
72 // default setting set. 72 // default setting set.
73 base::FilePath class_file(FILE_PATH_LITERAL("foo.class")); 73 base::FilePath class_file(FILE_PATH_LITERAL("foo.class"));
74 file_type = policies_.PolicyForFile(class_file); 74 file_type = policies_.PolicyForFile(class_file);
75 EXPECT_EQ("class", file_type.extension()); 75 EXPECT_EQ("class", file_type.extension());
76 EXPECT_EQ(13l, file_type.uma_value()); 76 EXPECT_EQ(13l, file_type.uma_value());
77 EXPECT_EQ(false, file_type.is_archive()); 77 EXPECT_FALSE(file_type.is_archive());
78 EXPECT_EQ(DownloadFileType::FULL_PING, file_type.ping_setting()); 78 EXPECT_EQ(DownloadFileType::FULL_PING, file_type.ping_setting());
79 #if defined(OS_CHROMEOS) 79 #if defined(OS_CHROMEOS)
80 EXPECT_EQ(DownloadFileType::NOT_DANGEROUS, 80 EXPECT_EQ(DownloadFileType::NOT_DANGEROUS,
81 file_type.platform_settings(0).danger_level()); 81 file_type.platform_settings(0).danger_level());
82 EXPECT_EQ(DownloadFileType::ALLOW_AUTO_OPEN, 82 EXPECT_EQ(DownloadFileType::ALLOW_AUTO_OPEN,
83 file_type.platform_settings(0).auto_open_hint()); 83 file_type.platform_settings(0).auto_open_hint());
84 #else 84 #else
85 EXPECT_EQ(DownloadFileType::DANGEROUS, 85 EXPECT_EQ(DownloadFileType::DANGEROUS,
86 file_type.platform_settings(0).danger_level()); 86 file_type.platform_settings(0).danger_level());
87 EXPECT_EQ(DownloadFileType::DISALLOW_AUTO_OPEN, 87 EXPECT_EQ(DownloadFileType::DISALLOW_AUTO_OPEN,
88 file_type.platform_settings(0).auto_open_hint()); 88 file_type.platform_settings(0).auto_open_hint());
89 #endif 89 #endif
90 90
91 // Lookup .dmg that varies on OS_MACOS 91 // Lookup .dmg that varies on OS_MACOS
92 base::FilePath dmg_file(FILE_PATH_LITERAL("foo.dmg")); 92 base::FilePath dmg_file(FILE_PATH_LITERAL("foo.dmg"));
93 file_type = policies_.PolicyForFile(dmg_file); 93 file_type = policies_.PolicyForFile(dmg_file);
94 EXPECT_EQ("dmg", file_type.extension()); 94 EXPECT_EQ("dmg", file_type.extension());
95 EXPECT_EQ(21, file_type.uma_value()); 95 EXPECT_EQ(21, file_type.uma_value());
96 EXPECT_EQ(false, file_type.is_archive()); 96 EXPECT_FALSE(file_type.is_archive());
97 EXPECT_EQ(DownloadFileType::FULL_PING, file_type.ping_setting()); 97 EXPECT_EQ(DownloadFileType::FULL_PING, file_type.ping_setting());
98 #if defined(OS_MACOSX) 98 #if defined(OS_MACOSX)
99 EXPECT_EQ(DownloadFileType::ALLOW_ON_USER_GESTURE, 99 EXPECT_EQ(DownloadFileType::ALLOW_ON_USER_GESTURE,
100 file_type.platform_settings(0).danger_level()); 100 file_type.platform_settings(0).danger_level());
101 EXPECT_EQ(DownloadFileType::DISALLOW_AUTO_OPEN, 101 EXPECT_EQ(DownloadFileType::DISALLOW_AUTO_OPEN,
102 file_type.platform_settings(0).auto_open_hint()); 102 file_type.platform_settings(0).auto_open_hint());
103 #else 103 #else
104 EXPECT_EQ(DownloadFileType::NOT_DANGEROUS, 104 EXPECT_EQ(DownloadFileType::NOT_DANGEROUS,
105 file_type.platform_settings(0).danger_level()); 105 file_type.platform_settings(0).danger_level());
106 EXPECT_EQ(DownloadFileType::ALLOW_AUTO_OPEN, 106 EXPECT_EQ(DownloadFileType::ALLOW_AUTO_OPEN,
107 file_type.platform_settings(0).auto_open_hint()); 107 file_type.platform_settings(0).auto_open_hint());
108 #endif 108 #endif
109 109
110 // Lookup .dex that varies on OS_ANDROID 110 // Lookup .dex that varies on OS_ANDROID
111 base::FilePath dex_file(FILE_PATH_LITERAL("foo.dex")); 111 base::FilePath dex_file(FILE_PATH_LITERAL("foo.dex"));
112 file_type = policies_.PolicyForFile(dex_file); 112 file_type = policies_.PolicyForFile(dex_file);
113 EXPECT_EQ("dex", file_type.extension()); 113 EXPECT_EQ("dex", file_type.extension());
114 EXPECT_EQ(143, file_type.uma_value()); 114 EXPECT_EQ(143, file_type.uma_value());
115 EXPECT_EQ(false, file_type.is_archive()); 115 EXPECT_FALSE(file_type.is_archive());
116 EXPECT_EQ(DownloadFileType::FULL_PING, file_type.ping_setting()); 116 EXPECT_EQ(DownloadFileType::FULL_PING, file_type.ping_setting());
117 #if defined(OS_ANDROID) 117 #if defined(OS_ANDROID)
118 EXPECT_EQ(DownloadFileType::ALLOW_ON_USER_GESTURE, 118 EXPECT_EQ(DownloadFileType::ALLOW_ON_USER_GESTURE,
119 file_type.platform_settings(0).danger_level()); 119 file_type.platform_settings(0).danger_level());
120 EXPECT_EQ(DownloadFileType::DISALLOW_AUTO_OPEN, 120 EXPECT_EQ(DownloadFileType::DISALLOW_AUTO_OPEN,
121 file_type.platform_settings(0).auto_open_hint()); 121 file_type.platform_settings(0).auto_open_hint());
122 #else 122 #else
123 EXPECT_EQ(DownloadFileType::NOT_DANGEROUS, 123 EXPECT_EQ(DownloadFileType::NOT_DANGEROUS,
124 file_type.platform_settings(0).danger_level()); 124 file_type.platform_settings(0).danger_level());
125 EXPECT_EQ(DownloadFileType::ALLOW_AUTO_OPEN, 125 EXPECT_EQ(DownloadFileType::ALLOW_AUTO_OPEN,
126 file_type.platform_settings(0).auto_open_hint()); 126 file_type.platform_settings(0).auto_open_hint());
127 #endif 127 #endif
128 128
129 // Lookup .rpm that varies on OS_LINUX 129 // Lookup .rpm that varies on OS_LINUX
130 base::FilePath rpm_file(FILE_PATH_LITERAL("foo.rpm")); 130 base::FilePath rpm_file(FILE_PATH_LITERAL("foo.rpm"));
131 file_type = policies_.PolicyForFile(rpm_file); 131 file_type = policies_.PolicyForFile(rpm_file);
132 EXPECT_EQ("rpm", file_type.extension()); 132 EXPECT_EQ("rpm", file_type.extension());
133 EXPECT_EQ(142, file_type.uma_value()); 133 EXPECT_EQ(142, file_type.uma_value());
134 EXPECT_EQ(false, file_type.is_archive()); 134 EXPECT_FALSE(file_type.is_archive());
135 EXPECT_EQ(DownloadFileType::FULL_PING, file_type.ping_setting()); 135 EXPECT_EQ(DownloadFileType::FULL_PING, file_type.ping_setting());
136 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) 136 #if defined(OS_LINUX) && !defined(OS_CHROMEOS)
137 EXPECT_EQ(DownloadFileType::ALLOW_ON_USER_GESTURE, 137 EXPECT_EQ(DownloadFileType::ALLOW_ON_USER_GESTURE,
138 file_type.platform_settings(0).danger_level()); 138 file_type.platform_settings(0).danger_level());
139 EXPECT_EQ(DownloadFileType::DISALLOW_AUTO_OPEN, 139 EXPECT_EQ(DownloadFileType::DISALLOW_AUTO_OPEN,
140 file_type.platform_settings(0).auto_open_hint()); 140 file_type.platform_settings(0).auto_open_hint());
141 #else 141 #else
142 EXPECT_EQ(DownloadFileType::NOT_DANGEROUS, 142 EXPECT_EQ(DownloadFileType::NOT_DANGEROUS,
143 file_type.platform_settings(0).danger_level()); 143 file_type.platform_settings(0).danger_level());
144 EXPECT_EQ(DownloadFileType::ALLOW_AUTO_OPEN, 144 EXPECT_EQ(DownloadFileType::ALLOW_AUTO_OPEN,
145 file_type.platform_settings(0).auto_open_hint()); 145 file_type.platform_settings(0).auto_open_hint());
146 #endif 146 #endif
147 147
148 // Look .zip, an archive. The same on all platforms. 148 // Look .zip, an archive. The same on all platforms.
149 base::FilePath zip_file(FILE_PATH_LITERAL("b/bar.txt.zip")); 149 base::FilePath zip_file(FILE_PATH_LITERAL("b/bar.txt.zip"));
150 file_type = policies_.PolicyForFile(zip_file); 150 file_type = policies_.PolicyForFile(zip_file);
151 EXPECT_EQ("zip", file_type.extension()); 151 EXPECT_EQ("zip", file_type.extension());
152 EXPECT_EQ(7l, file_type.uma_value()); 152 EXPECT_EQ(7l, file_type.uma_value());
153 EXPECT_EQ(true, file_type.is_archive()); 153 EXPECT_TRUE(file_type.is_archive());
154 EXPECT_EQ(DownloadFileType::FULL_PING, file_type.ping_setting()); 154 EXPECT_EQ(DownloadFileType::FULL_PING, file_type.ping_setting());
155 EXPECT_EQ(DownloadFileType::NOT_DANGEROUS, 155 EXPECT_EQ(DownloadFileType::NOT_DANGEROUS,
156 file_type.platform_settings(0).danger_level()); 156 file_type.platform_settings(0).danger_level());
157 157
158 // Check other accessors 158 // Check other accessors
159 EXPECT_EQ(7l, policies_.UmaValueForFile(zip_file)); 159 EXPECT_EQ(7l, policies_.UmaValueForFile(zip_file));
160 EXPECT_EQ(true, policies_.IsFileAnArchive(zip_file)); 160 EXPECT_TRUE(policies_.IsArchiveFile(zip_file));
161 EXPECT_FALSE(policies_.IsArchiveFile(exe_file));
161 162
162 // Verify settings on the default type. 163 // Verify settings on the default type.
163 file_type = policies_.PolicyForFile( 164 file_type = policies_.PolicyForFile(
164 base::FilePath(FILE_PATH_LITERAL("a/foo.fooobar"))); 165 base::FilePath(FILE_PATH_LITERAL("a/foo.fooobar")));
165 EXPECT_EQ("", file_type.extension()); 166 EXPECT_EQ("", file_type.extension());
166 EXPECT_EQ(18l, file_type.uma_value()); 167 EXPECT_EQ(18l, file_type.uma_value());
167 EXPECT_EQ(false, file_type.is_archive()); 168 EXPECT_FALSE(file_type.is_archive());
168 EXPECT_EQ(DownloadFileType::SAMPLED_PING, file_type.ping_setting()); 169 EXPECT_EQ(DownloadFileType::SAMPLED_PING, file_type.ping_setting());
169 EXPECT_EQ(DownloadFileType::NOT_DANGEROUS, 170 EXPECT_EQ(DownloadFileType::NOT_DANGEROUS,
170 file_type.platform_settings(0).danger_level()); 171 file_type.platform_settings(0).danger_level());
171 EXPECT_EQ(DownloadFileType::ALLOW_AUTO_OPEN, 172 EXPECT_EQ(DownloadFileType::ALLOW_AUTO_OPEN,
172 file_type.platform_settings(0).auto_open_hint()); 173 file_type.platform_settings(0).auto_open_hint());
173 } 174 }
174 175
175 TEST_F(FileTypePoliciesTest, BadProto) { 176 TEST_F(FileTypePoliciesTest, BadProto) {
177 base::AutoLock lock(policies_.lock_);
176 EXPECT_EQ(FileTypePolicies::UpdateResult::FAILED_EMPTY, 178 EXPECT_EQ(FileTypePolicies::UpdateResult::FAILED_EMPTY,
177 policies_.PopulateFromBinaryPb(std::string())); 179 policies_.PopulateFromBinaryPb(std::string()));
178 180
179 EXPECT_EQ(FileTypePolicies::UpdateResult::FAILED_PROTO_PARSE, 181 EXPECT_EQ(FileTypePolicies::UpdateResult::FAILED_PROTO_PARSE,
180 policies_.PopulateFromBinaryPb("foobar")); 182 policies_.PopulateFromBinaryPb("foobar"));
181 183
182 DownloadFileTypeConfig cfg; 184 DownloadFileTypeConfig cfg;
183 cfg.set_sampled_ping_probability(0.1f); 185 cfg.set_sampled_ping_probability(0.1f);
184 EXPECT_EQ(FileTypePolicies::UpdateResult::FAILED_DEFAULT_SETTING_SET, 186 EXPECT_EQ(FileTypePolicies::UpdateResult::FAILED_DEFAULT_SETTING_SET,
185 policies_.PopulateFromBinaryPb(cfg.SerializeAsString())); 187 policies_.PopulateFromBinaryPb(cfg.SerializeAsString()));
186 188
187 cfg.mutable_default_file_type()->add_platform_settings(); 189 cfg.mutable_default_file_type()->add_platform_settings();
188 auto file_type = cfg.add_file_types(); // This is missing a platform_setting. 190 auto file_type = cfg.add_file_types(); // This is missing a platform_setting.
189 EXPECT_EQ(FileTypePolicies::UpdateResult::FAILED_WRONG_SETTINGS_COUNT, 191 EXPECT_EQ(FileTypePolicies::UpdateResult::FAILED_WRONG_SETTINGS_COUNT,
190 policies_.PopulateFromBinaryPb(cfg.SerializeAsString())); 192 policies_.PopulateFromBinaryPb(cfg.SerializeAsString()));
191 193
192 file_type->add_platform_settings(); 194 file_type->add_platform_settings();
193 EXPECT_EQ(FileTypePolicies::UpdateResult::SUCCESS, 195 EXPECT_EQ(FileTypePolicies::UpdateResult::SUCCESS,
194 policies_.PopulateFromBinaryPb(cfg.SerializeAsString())); 196 policies_.PopulateFromBinaryPb(cfg.SerializeAsString()));
195 } 197 }
196 198
197 TEST_F(FileTypePoliciesTest, BadUpdateFromExisting) { 199 TEST_F(FileTypePoliciesTest, BadUpdateFromExisting) {
200 base::AutoLock lock(policies_.lock_);
198 // Make a minimum viable config 201 // Make a minimum viable config
199 DownloadFileTypeConfig cfg; 202 DownloadFileTypeConfig cfg;
200 cfg.mutable_default_file_type()->add_platform_settings(); 203 cfg.mutable_default_file_type()->add_platform_settings();
201 cfg.add_file_types()->add_platform_settings(); 204 cfg.add_file_types()->add_platform_settings();
202 cfg.set_version_id(2); 205 cfg.set_version_id(2);
203 EXPECT_EQ(FileTypePolicies::UpdateResult::SUCCESS, 206 EXPECT_EQ(FileTypePolicies::UpdateResult::SUCCESS,
204 policies_.PopulateFromBinaryPb(cfg.SerializeAsString())); 207 policies_.PopulateFromBinaryPb(cfg.SerializeAsString()));
205 208
206 // Can't update to the same version 209 // Can't update to the same version
207 EXPECT_EQ(FileTypePolicies::UpdateResult::FAILED_VERSION_CHECK, 210 EXPECT_EQ(FileTypePolicies::UpdateResult::FAILED_VERSION_CHECK,
208 policies_.PopulateFromBinaryPb(cfg.SerializeAsString())); 211 policies_.PopulateFromBinaryPb(cfg.SerializeAsString()));
209 212
210 // Can't go backward 213 // Can't go backward
211 cfg.set_version_id(1); 214 cfg.set_version_id(1);
212 EXPECT_EQ(FileTypePolicies::UpdateResult::FAILED_VERSION_CHECK, 215 EXPECT_EQ(FileTypePolicies::UpdateResult::FAILED_VERSION_CHECK,
213 policies_.PopulateFromBinaryPb(cfg.SerializeAsString())); 216 policies_.PopulateFromBinaryPb(cfg.SerializeAsString()));
214 } 217 }
215 } // namespace safe_browsing 218 } // namespace safe_browsing
OLDNEW
« no previous file with comments | « chrome/common/safe_browsing/file_type_policies.cc ('k') | chrome/common/safe_browsing/zip_analyzer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698