1 /*
2 * Copyright (C) 2025 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "rmdir_core.h"
17
18 #include <filesystem>
19 #include <fstream>
20 #include <gtest/gtest.h>
21
22
23 namespace OHOS::FileManagement::ModuleFileIO::Test {
24 using namespace testing;
25 using namespace testing::ext;
26 using namespace std;
27
28 class RmdirCoreTest : public testing::Test {
29 public:
30 static void SetUpTestCase(void);
31 static void TearDownTestCase(void);
32 void SetUp();
33 void TearDown();
34 };
35
SetUpTestCase(void)36 void RmdirCoreTest::SetUpTestCase(void)
37 {
38 GTEST_LOG_(INFO) << "SetUpTestCase";
39 }
40
TearDownTestCase(void)41 void RmdirCoreTest::TearDownTestCase(void)
42 {
43 GTEST_LOG_(INFO) << "TearDownTestCase";
44 }
45
SetUp(void)46 void RmdirCoreTest::SetUp(void)
47 {
48 GTEST_LOG_(INFO) << "SetUp";
49 }
50
TearDown(void)51 void RmdirCoreTest::TearDown(void)
52 {
53 GTEST_LOG_(INFO) << "TearDown";
54 }
55
56 /**
57 * @tc.name: RmdirCoreTest_DoRmdirent_001
58 * @tc.desc: Test function of RmdirCore::DoRmdirent interface for Failed.
59 * @tc.size: MEDIUM
60 * @tc.type: FUNC
61 * @tc.level Level 1
62 */
63 HWTEST_F(RmdirCoreTest, RmdirCoreTest_DoRmdirent_001, testing::ext::TestSize.Level1)
64 {
65 GTEST_LOG_(INFO) << "RmdirCoreTest-begin RmdirCoreTest_DoRmdirent_001";
66 std::string fpath;
67 auto res = RmdirentCore::DoRmdirent(fpath);
68
69 EXPECT_EQ(res.IsSuccess(), false);
70
71 GTEST_LOG_(INFO) << "RmdirCoreTest-end RmdirCoreTest_DoRmdirent_001";
72 }
73
74 /**
75 * @tc.name: RmdirCoreTest_DoRmdirent_002
76 * @tc.desc: Test function of RmdirCore::DoRmdirent interface for Failed.
77 * @tc.size: MEDIUM
78 * @tc.type: FUNC
79 * @tc.level Level 1
80 */
81 HWTEST_F(RmdirCoreTest, RmdirCoreTest_DoRmdirent_002, testing::ext::TestSize.Level1)
82 {
83 GTEST_LOG_(INFO) << "RmdirCoreTest-begin RmdirCoreTest_DoRmdirent_002";
84 std::string fpath = "invalid?path";
85 auto res = RmdirentCore::DoRmdirent(fpath);
86
87 EXPECT_EQ(res.IsSuccess(), false);
88
89 GTEST_LOG_(INFO) << "RmdirCoreTest-end RmdirCoreTest_DoRmdirent_002";
90 }
91
92 /**
93 * @tc.name: RmdirCoreTest_DoRmdirent_003
94 * @tc.desc: Test function of RmdirCore::DoRmdirent interface for Failed.
95 * @tc.size: MEDIUM
96 * @tc.type: FUNC
97 * @tc.level Level 1
98 */
99 HWTEST_F(RmdirCoreTest, RmdirCoreTest_DoRmdirent_003, testing::ext::TestSize.Level1)
100 {
101 GTEST_LOG_(INFO) << "RmdirCoreTest-begin RmdirCoreTest_DoRmdirent_003";
102 std::string fpath = "/dir";
103 auto res = RmdirentCore::DoRmdirent(fpath);
104
105 EXPECT_EQ(res.IsSuccess(), false);
106
107 GTEST_LOG_(INFO) << "RmdirCoreTest-end RmdirCoreTest_DoRmdirent_003";
108 }
109
110 /**
111 * @tc.name: RmdirCoreTest_DoRmdirent_004
112 * @tc.desc: Test function of RmdirCore::DoRmdirent interface for Failed.
113 * @tc.size: MEDIUM
114 * @tc.type: FUNC
115 * @tc.level Level 1
116 */
117 HWTEST_F(RmdirCoreTest, RmdirCoreTest_DoRmdirent_004, testing::ext::TestSize.Level1)
118 {
119 GTEST_LOG_(INFO) << "RmdirCoreTest-begin RmdirCoreTest_DoRmdirent_004";
120
121 std::filesystem::create_directories("test_dir");
122 std::ofstream("test_dir/test_file.txt") << "test";
123
124 std::filesystem::permissions("test_dir",
125 std::filesystem::perms::owner_write | std::filesystem::perms::owner_exec,
126 std::filesystem::perm_options::replace);
127
128 auto res = RmdirentCore::DoRmdirent("test_dir");
129 EXPECT_EQ(res.IsSuccess(), true);
130
131 try {
132 std::filesystem::permissions("test_dir",
133 std::filesystem::perms::owner_all,
134 std::filesystem::perm_options::replace);
135 } catch (...) {}
136 std::filesystem::remove_all("test_dir");
137
138 GTEST_LOG_(INFO) << "RmdirCoreTest-end RmdirCoreTest_DoRmdirent_004";
139 }
140
141 /**
142 * @tc.name: RmdirCoreTest_DoRmdirent_005
143 * @tc.desc: Test function of RmdirCore::DoRmdirent interface for SUCCESS.
144 * @tc.size: MEDIUM
145 * @tc.type: FUNC
146 * @tc.level Level 1
147 */
148 HWTEST_F(RmdirCoreTest, RmdirCoreTest_DoRmdirent_005, testing::ext::TestSize.Level1)
149 {
150 GTEST_LOG_(INFO) << "RmdirCoreTest-begin RmdirCoreTest_DoRmdirent_005";
151
152 std::filesystem::create_directories("test_dir");
153 std::ofstream("test_dir/test_file.txt") << "test";
154
155 auto res = RmdirentCore::DoRmdirent("test_dir");
156 EXPECT_EQ(res.IsSuccess(), true);
157
158 try {
159 std::filesystem::permissions("test_dir",
160 std::filesystem::perms::owner_all,
161 std::filesystem::perm_options::replace);
162 } catch (...) {}
163 std::filesystem::remove_all("test_dir");
164
165 GTEST_LOG_(INFO) << "RmdirCoreTest-end RmdirCoreTest_DoRmdirent_005";
166 }
167
168 } // namespace OHOS::FileManagement::ModuleFileIO::Test