Chromium Code Reviews| Index: components/safe_browsing_db/v4_store_unittest.cc |
| diff --git a/components/safe_browsing_db/v4_store_unittest.cc b/components/safe_browsing_db/v4_store_unittest.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..9824742f62e377a378a8f016a70ff68173f7abb2 |
| --- /dev/null |
| +++ b/components/safe_browsing_db/v4_store_unittest.cc |
| @@ -0,0 +1,142 @@ |
| +// Copyright 2016 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 "base/files/file_util.h" |
| +#include "base/run_loop.h" |
| +#include "base/test/test_simple_task_runner.h" |
| +#include "components/safe_browsing_db/v4_store.h" |
| +#include "components/safe_browsing_db/v4_store.pb.h" |
| +#include "content/public/test/test_browser_thread_bundle.h" |
| +#include "testing/platform_test.h" |
| + |
| +namespace safe_browsing { |
| + |
| +class V4StoreTest : public PlatformTest { |
| + public: |
| + V4StoreTest() : task_runner_(new base::TestSimpleTaskRunner) {} |
| + |
| + void TearDown() override { |
| + base::DeleteFile(store_path_, false); |
| + PlatformTest::TearDown(); |
| + } |
| + |
| + scoped_refptr<base::TestSimpleTaskRunner> task_runner_; |
| + base::FilePath store_path_; |
| + content::TestBrowserThreadBundle thread_bundle_; |
| +}; |
| + |
| +TEST_F(V4StoreTest, TestReadFromEmptyFile) { |
| + base::CreateAndOpenTemporaryFile(&store_path_); |
| + |
| + V4Store* store = new V4Store(task_runner_, store_path_); |
|
Nathan Parker
2016/06/16 00:07:50
Leaked ptr, here an below. Could just put these o
vakh (use Gerrit instead)
2016/06/16 08:25:19
Done.
|
| + EXPECT_EQ(FILE_EMPTY_FAILURE, store->ReadFromDisk()); |
| +} |
| + |
| +TEST_F(V4StoreTest, TestReadFromAbsentFile) { |
| + base::CreateAndOpenTemporaryFile(&store_path_); |
| + base::DeleteFile(store_path_, false); |
| + |
| + V4Store* store = new V4Store(task_runner_, store_path_); |
| + EXPECT_EQ(FILE_UNREADABLE_FAILURE, store->ReadFromDisk()); |
| +} |
| + |
| +TEST_F(V4StoreTest, TestReadFromInvalidContentsFile) { |
| + base::CreateAndOpenTemporaryFile(&store_path_); |
| + std::string invalid_contents = "Chromium"; |
| + base::WriteFile(store_path_, invalid_contents.c_str(), |
| + invalid_contents.size()); |
| + |
| + V4Store* store = new V4Store(task_runner_, store_path_); |
| + EXPECT_EQ(PROTO_PARSING_FAILURE, store->ReadFromDisk()); |
| +} |
| + |
| +TEST_F(V4StoreTest, TestReadFromUnexpectedMagicFile) { |
| + base::CreateAndOpenTemporaryFile(&store_path_); |
| + |
| + V4StoreFileFormat file_format; |
| + file_format.set_magic_number(111); |
| + std::string file_format_string; |
| + file_format.SerializeToString(&file_format_string); |
| + base::WriteFile(store_path_, file_format_string.c_str(), |
| + file_format_string.size()); |
| + V4Store* store = new V4Store(task_runner_, store_path_); |
| + EXPECT_EQ(UNEXPECTED_MAGIC_NUMBER_FAILURE, store->ReadFromDisk()); |
| +} |
| + |
| +TEST_F(V4StoreTest, TestReadFromLowVersionFile) { |
| + base::CreateAndOpenTemporaryFile(&store_path_); |
| + |
| + V4StoreFileFormat file_format; |
| + file_format.set_magic_number(0x600D71FE); |
| + file_format.set_version_number(2); |
| + std::string file_format_string; |
| + file_format.SerializeToString(&file_format_string); |
| + base::WriteFile(store_path_, file_format_string.c_str(), |
| + file_format_string.size()); |
| + V4Store* store = new V4Store(task_runner_, store_path_); |
| + EXPECT_EQ(FILE_VERSION_TOO_LOW_FAILURE, store->ReadFromDisk()); |
| +} |
| + |
| +TEST_F(V4StoreTest, TestReadFromNoHashPrefixInfoFile) { |
| + base::CreateAndOpenTemporaryFile(&store_path_); |
| + |
| + V4StoreFileFormat file_format; |
| + file_format.set_magic_number(0x600D71FE); |
| + file_format.set_version_number(9); |
| + std::string file_format_string; |
| + file_format.SerializeToString(&file_format_string); |
| + base::WriteFile(store_path_, file_format_string.c_str(), |
| + file_format_string.size()); |
| + V4Store* store = new V4Store(task_runner_, store_path_); |
| + EXPECT_EQ(HASH_PREFIX_INFO_MISSING_FAILURE, store->ReadFromDisk()); |
| +} |
| + |
| +TEST_F(V4StoreTest, TestReadFromNoHashPrefixesFile) { |
| + base::CreateAndOpenTemporaryFile(&store_path_); |
| + |
| + V4StoreFileFormat file_format; |
| + file_format.set_magic_number(0x600D71FE); |
| + file_format.set_version_number(9); |
| + ListUpdateResponse* list_update_response = |
| + file_format.mutable_list_update_response(); |
| + list_update_response->set_platform_type(LINUX_PLATFORM); |
| + |
| + std::string file_format_string; |
| + file_format.SerializeToString(&file_format_string); |
| + base::WriteFile(store_path_, file_format_string.c_str(), |
| + file_format_string.size()); |
| + V4Store* store = new V4Store(task_runner_, store_path_); |
| + EXPECT_EQ(SUCCESS, store->ReadFromDisk()); |
| +} |
| + |
| +TEST_F(V4StoreTest, TestWriteNoResponseType) { |
| + base::CreateAndOpenTemporaryFile(&store_path_); |
| + |
| + ListUpdateResponse list_update_response; |
| + V4Store* store = new V4Store(task_runner_, store_path_); |
| + EXPECT_FALSE(store->WriteToDisk(list_update_response)); |
| +} |
| + |
| +TEST_F(V4StoreTest, TestWritePartialResponseType) { |
| + base::CreateAndOpenTemporaryFile(&store_path_); |
| + |
| + ListUpdateResponse list_update_response; |
| + list_update_response.set_response_type(ListUpdateResponse::PARTIAL_UPDATE); |
| + V4Store* store = new V4Store(task_runner_, store_path_); |
| + EXPECT_FALSE(store->WriteToDisk(list_update_response)); |
| +} |
| + |
| +TEST_F(V4StoreTest, TestWriteFullResponseType) { |
| + base::CreateAndOpenTemporaryFile(&store_path_); |
| + |
| + ListUpdateResponse list_update_response; |
| + list_update_response.set_response_type(ListUpdateResponse::FULL_UPDATE); |
| + V4Store* written_store = new V4Store(task_runner_, store_path_); |
| + EXPECT_TRUE(written_store->WriteToDisk(list_update_response)); |
| + |
| + V4Store* read_store = new V4Store(task_runner_, store_path_); |
| + EXPECT_EQ(SUCCESS, read_store->ReadFromDisk()); |
|
Nathan Parker
2016/06/16 00:07:50
If you're going to test writing+reading you might
vakh (use Gerrit instead)
2016/06/16 08:25:19
Done. Verifying that the state read back from disk
|
| +} |
| + |
| +} // namespace safe_browsing |