| // Copyright 2015 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "chrome/common/safe_browsing/binary_feature_extractor.h" |
| |
| #include "base/files/file_path.h" |
| #include "base/path_service.h" |
| #include "chrome/common/chrome_paths.h" |
| #include "components/safe_browsing/proto/csd.pb.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| |
| namespace safe_browsing { |
| namespace { |
| |
| class BinaryFeatureExtractorMacTest : public testing::Test { |
| protected: |
| void SetUp() override { |
| ASSERT_TRUE(base::PathService::Get(chrome::DIR_TEST_DATA, &test_data_)); |
| feature_extractor_ = new BinaryFeatureExtractor(); |
| } |
| |
| base::FilePath GetPath(const char* file_name) { |
| return test_data_.AppendASCII("safe_browsing") |
| .AppendASCII("mach_o") |
| .AppendASCII(file_name); |
| } |
| |
| BinaryFeatureExtractor* feature_extractor() { |
| return feature_extractor_.get(); |
| } |
| |
| private: |
| base::FilePath test_data_; |
| scoped_refptr<BinaryFeatureExtractor> feature_extractor_; |
| }; |
| |
| TEST_F(BinaryFeatureExtractorMacTest, UnsignedMachOThin) { |
| ClientDownloadRequest_ImageHeaders image_headers; |
| google::protobuf::RepeatedPtrField<std::string> signed_data; |
| |
| base::FilePath path = GetPath("lib32.dylib"); |
| ASSERT_TRUE(feature_extractor()->ExtractImageFeatures( |
| path, 0, &image_headers, &signed_data)); |
| |
| EXPECT_EQ(1, image_headers.mach_o_headers().size()); |
| EXPECT_EQ(0, signed_data.size()); |
| } |
| |
| TEST_F(BinaryFeatureExtractorMacTest, SignedMachOFat) { |
| ClientDownloadRequest_ImageHeaders image_headers; |
| google::protobuf::RepeatedPtrField<std::string> signed_data; |
| |
| base::FilePath path = GetPath("signedexecutablefat"); |
| ASSERT_TRUE(feature_extractor()->ExtractImageFeatures( |
| path, 0, &image_headers, &signed_data)); |
| |
| EXPECT_EQ(2, image_headers.mach_o_headers().size()); |
| EXPECT_EQ(2, signed_data.size()); |
| } |
| |
| TEST_F(BinaryFeatureExtractorMacTest, NotMachO) { |
| ClientDownloadRequest_ImageHeaders image_headers; |
| google::protobuf::RepeatedPtrField<std::string> signed_data; |
| |
| base::FilePath path = GetPath("src.c"); |
| EXPECT_FALSE(feature_extractor()->ExtractImageFeatures( |
| path, 0, &image_headers, &signed_data)); |
| |
| EXPECT_EQ(0, image_headers.mach_o_headers().size()); |
| EXPECT_EQ(0, signed_data.size()); |
| } |
| |
| } // namespace |
| } // namespace safe_browsing |