Popular sites on the NTP: check that experiment group StartsWith (rather than IS...
[chromium-blink-merge.git] / chrome / browser / chromeos / drive / write_on_cache_file_unittest.cc
blob1bca4fc319f327b738845ca0990dfa10ca6c6e23
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "chrome/browser/chromeos/drive/write_on_cache_file.h"
7 #include "base/bind.h"
8 #include "components/drive/dummy_file_system.h"
9 #include "content/public/test/test_browser_thread_bundle.h"
10 #include "content/public/test/test_utils.h"
11 #include "google_apis/drive/test_util.h"
12 #include "testing/gtest/include/gtest/gtest.h"
14 namespace drive {
16 namespace {
18 const base::FilePath::CharType kDrivePath[] =
19 FILE_PATH_LITERAL("drive/root/file.txt");
20 const base::FilePath::CharType kInvalidPath[] =
21 FILE_PATH_LITERAL("drive/invalid/path");
22 const base::FilePath::CharType kLocalPath[] =
23 FILE_PATH_LITERAL("/tmp/local.txt");
25 class TestFileSystem : public DummyFileSystem {
26 public:
27 TestFileSystem() : num_closed_(0) {
30 int num_closed() const { return num_closed_; }
32 // Mimics OpenFile. It fails if the |file_path| points to a hosted document.
33 void OpenFile(const base::FilePath& file_path,
34 OpenMode open_mode,
35 const std::string& mime_type,
36 const OpenFileCallback& callback) override {
37 EXPECT_EQ(OPEN_OR_CREATE_FILE, open_mode);
39 // Emulate a case of opening a hosted document.
40 if (file_path == base::FilePath(kInvalidPath)) {
41 callback.Run(FILE_ERROR_INVALID_OPERATION, base::FilePath(),
42 base::Closure());
43 return;
46 callback.Run(FILE_ERROR_OK, base::FilePath(kLocalPath),
47 base::Bind(&TestFileSystem::CloseFile,
48 base::Unretained(this)));
51 private:
53 void CloseFile() {
54 ++num_closed_;
57 int num_closed_;
60 } // namespace
62 TEST(WriteOnCacheFileTest, PrepareFileForWritingSuccess) {
63 content::TestBrowserThreadBundle thread_bundle;
64 TestFileSystem test_file_system;
66 FileError error = FILE_ERROR_FAILED;
67 base::FilePath path;
68 // The file should successfully be opened.
69 WriteOnCacheFile(
70 &test_file_system,
71 base::FilePath(kDrivePath),
72 std::string(), // mime_type
73 google_apis::test_util::CreateCopyResultCallback(&error, &path));
74 content::RunAllBlockingPoolTasksUntilIdle();
76 EXPECT_EQ(FILE_ERROR_OK, error);
77 EXPECT_EQ(kLocalPath, path.value());
79 // Make sure that the file is actually closed.
80 EXPECT_EQ(1, test_file_system.num_closed());
83 TEST(WriteOnCacheFileTest, PrepareFileForWritingCreateFail) {
84 content::TestBrowserThreadBundle thread_bundle;
85 TestFileSystem test_file_system;
87 FileError error = FILE_ERROR_FAILED;
88 base::FilePath path;
89 // Access to kInvalidPath should fail, and FileWriteHelper should not try to
90 // open or close the file.
91 WriteOnCacheFile(
92 &test_file_system,
93 base::FilePath(kInvalidPath),
94 std::string(), // mime_type
95 google_apis::test_util::CreateCopyResultCallback(&error, &path));
96 content::RunAllBlockingPoolTasksUntilIdle();
98 EXPECT_EQ(FILE_ERROR_INVALID_OPERATION, error);
99 EXPECT_TRUE(path.empty());
102 } // namespace drive