1 // Copyright (c) 2011 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.
4
5 #include "base/files/file_util.h"
6 #include "base/files/scoped_temp_dir.h"
7 #include "net/disk_cache/cache_util.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9 #include "testing/platform_test.h"
10
11 namespace disk_cache {
12
13 class CacheUtilTest : public PlatformTest {
14 public:
SetUp()15 virtual void SetUp() {
16 PlatformTest::SetUp();
17 ASSERT_TRUE(tmp_dir_.CreateUniqueTempDir());
18 cache_dir_ = tmp_dir_.path().Append(FILE_PATH_LITERAL("Cache"));
19 file1_ = base::FilePath(cache_dir_.Append(FILE_PATH_LITERAL("file01")));
20 file2_ = base::FilePath(cache_dir_.Append(FILE_PATH_LITERAL(".file02")));
21 dir1_ = base::FilePath(cache_dir_.Append(FILE_PATH_LITERAL("dir01")));
22 file3_ = base::FilePath(dir1_.Append(FILE_PATH_LITERAL("file03")));
23 ASSERT_TRUE(base::CreateDirectory(cache_dir_));
24 FILE *fp = base::OpenFile(file1_, "w");
25 ASSERT_TRUE(fp != NULL);
26 base::CloseFile(fp);
27 fp = base::OpenFile(file2_, "w");
28 ASSERT_TRUE(fp != NULL);
29 base::CloseFile(fp);
30 ASSERT_TRUE(base::CreateDirectory(dir1_));
31 fp = base::OpenFile(file3_, "w");
32 ASSERT_TRUE(fp != NULL);
33 base::CloseFile(fp);
34 dest_dir_ = tmp_dir_.path().Append(FILE_PATH_LITERAL("old_Cache_001"));
35 dest_file1_ = base::FilePath(dest_dir_.Append(FILE_PATH_LITERAL("file01")));
36 dest_file2_ =
37 base::FilePath(dest_dir_.Append(FILE_PATH_LITERAL(".file02")));
38 dest_dir1_ = base::FilePath(dest_dir_.Append(FILE_PATH_LITERAL("dir01")));
39 }
40
41 protected:
42 base::ScopedTempDir tmp_dir_;
43 base::FilePath cache_dir_;
44 base::FilePath file1_;
45 base::FilePath file2_;
46 base::FilePath dir1_;
47 base::FilePath file3_;
48 base::FilePath dest_dir_;
49 base::FilePath dest_file1_;
50 base::FilePath dest_file2_;
51 base::FilePath dest_dir1_;
52 };
53
TEST_F(CacheUtilTest,MoveCache)54 TEST_F(CacheUtilTest, MoveCache) {
55 EXPECT_TRUE(disk_cache::MoveCache(cache_dir_, dest_dir_));
56 EXPECT_TRUE(base::PathExists(dest_dir_));
57 EXPECT_TRUE(base::PathExists(dest_file1_));
58 EXPECT_TRUE(base::PathExists(dest_file2_));
59 EXPECT_TRUE(base::PathExists(dest_dir1_));
60 #if defined(OS_CHROMEOS)
61 EXPECT_TRUE(base::PathExists(cache_dir_)); // old cache dir stays
62 #else
63 EXPECT_FALSE(base::PathExists(cache_dir_)); // old cache is gone
64 #endif
65 EXPECT_FALSE(base::PathExists(file1_));
66 EXPECT_FALSE(base::PathExists(file2_));
67 EXPECT_FALSE(base::PathExists(dir1_));
68 }
69
TEST_F(CacheUtilTest,DeleteCache)70 TEST_F(CacheUtilTest, DeleteCache) {
71 disk_cache::DeleteCache(cache_dir_, false);
72 EXPECT_TRUE(base::PathExists(cache_dir_)); // cache dir stays
73 EXPECT_FALSE(base::PathExists(dir1_));
74 EXPECT_FALSE(base::PathExists(file1_));
75 EXPECT_FALSE(base::PathExists(file2_));
76 EXPECT_FALSE(base::PathExists(file3_));
77 }
78
TEST_F(CacheUtilTest,DeleteCacheAndDir)79 TEST_F(CacheUtilTest, DeleteCacheAndDir) {
80 disk_cache::DeleteCache(cache_dir_, true);
81 EXPECT_FALSE(base::PathExists(cache_dir_)); // cache dir is gone
82 EXPECT_FALSE(base::PathExists(dir1_));
83 EXPECT_FALSE(base::PathExists(file1_));
84 EXPECT_FALSE(base::PathExists(file2_));
85 EXPECT_FALSE(base::PathExists(file3_));
86 }
87
TEST_F(CacheUtilTest,DeleteCacheFile)88 TEST_F(CacheUtilTest, DeleteCacheFile) {
89 EXPECT_TRUE(disk_cache::DeleteCacheFile(file1_));
90 EXPECT_FALSE(base::PathExists(file1_));
91 EXPECT_TRUE(base::PathExists(cache_dir_)); // cache dir stays
92 EXPECT_TRUE(base::PathExists(dir1_));
93 EXPECT_TRUE(base::PathExists(file3_));
94 }
95
96 } // namespace disk_cache
97