Index: extensions/utility/unpacker_unittest.cc |
diff --git a/extensions/utility/unpacker_unittest.cc b/extensions/utility/unpacker_unittest.cc |
index 8954b1846bcd41cc2435017c7b46fb93b305b907..25dc87946688194f2f01a0a2ddbb9ce8d6ad73d1 100644 |
--- a/extensions/utility/unpacker_unittest.cc |
+++ b/extensions/utility/unpacker_unittest.cc |
@@ -195,4 +195,38 @@ TEST_F(UnpackerTest, ImageDecodingError) { |
<< unpacker_->error_message() << "\""; |
} |
+base::FilePath CreateEmptyTestFile(const base::FilePath& test_dir, |
+ const base::FilePath& file_path) { |
+ base::FilePath test_file(test_dir.Append(file_path)); |
+ base::FilePath temp_file; |
+ EXPECT_TRUE(base::CreateTemporaryFileInDir(test_dir, &temp_file)); |
+ EXPECT_TRUE(base::Move(temp_file, test_file)); |
+ return test_file; |
+} |
+ |
+TEST_F(UnpackerTest, BlockedFileTypes) { |
+ const struct { |
+ const base::FilePath::CharType* input; |
+ bool expected; |
+ } cases[] = { |
+ {FILE_PATH_LITERAL("foo"), true}, |
+ {FILE_PATH_LITERAL("foo.nexe"), true}, |
+ {FILE_PATH_LITERAL("foo.dll"), true}, |
+ {FILE_PATH_LITERAL("foo.jpg.exe"), false}, |
+ {FILE_PATH_LITERAL("foo.exe"), false}, |
+ {FILE_PATH_LITERAL("foo.EXE"), false}, |
+ }; |
+ |
+ base::ScopedTempDir temp_dir; |
+ ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); |
+ |
+ for (size_t i = 0; i < arraysize(cases); ++i) { |
+ base::FilePath input(cases[i].input); |
+ base::FilePath test_file(CreateEmptyTestFile(temp_dir.path(), input)); |
+ bool observed = Unpacker::ShouldExtractFile(test_file); |
+ EXPECT_EQ(cases[i].expected, observed) << "i: " << i |
+ << ", input: " << test_file.value(); |
+ } |
+} |
+ |
} // namespace extensions |