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
17 #include "access_core.h"
18 #include "uv_fs_mock.h"
19
20 #include <gtest/gtest.h>
21
22 namespace OHOS::FileManagement::ModuleFileIO::Test {
23 using namespace testing;
24 using namespace testing::ext;
25 using namespace std;
26
27 class AccessCoreMockTest : public testing::Test {
28 public:
29 static void SetUpTestCase(void);
30 static void TearDownTestCase(void);
31 void SetUp();
32 void TearDown();
33 static inline std::shared_ptr<UvfsMock> uvMock = nullptr;
34 const string DISTRIBUTED_FILE_PREFIX = "/data/storage/el2/distributedfiles";
35 };
36
SetUpTestCase(void)37 void AccessCoreMockTest::SetUpTestCase(void)
38 {
39 GTEST_LOG_(INFO) << "SetUpTestCase";
40 uvMock = std::make_shared<UvfsMock>();
41 Uvfs::ins = uvMock;
42 }
43
TearDownTestCase(void)44 void AccessCoreMockTest::TearDownTestCase(void)
45 {
46 Uvfs::ins = nullptr;
47 uvMock = nullptr;
48 GTEST_LOG_(INFO) << "TearDownTestCase";
49 }
50
SetUp(void)51 void AccessCoreMockTest::SetUp(void)
52 {
53 GTEST_LOG_(INFO) << "SetUp";
54 }
55
TearDown(void)56 void AccessCoreMockTest::TearDown(void)
57 {
58 GTEST_LOG_(INFO) << "TearDown";
59 }
60
61 /**
62 * @tc.name: AccessCoreMockTest_DoAccess_001
63 * @tc.desc: Test function of AccessCore::ValidAccessArgs interface for FALSE.
64 * @tc.size: MEDIUM
65 * @tc.type: FUNC
66 * @tc.level Level 1
67 */
68 HWTEST_F(AccessCoreMockTest, AccessCoreMockTest_DoAccess_001, testing::ext::TestSize.Level1)
69 {
70 GTEST_LOG_(INFO) << "AccessCoreMockTest-begin AccessCoreMockTest_DoAccess_001";
71
72 std::string path = "TEST";
73 std::optional<AccessModeType> mode;
74
75 EXPECT_CALL(*uvMock, uv_fs_access(_, _, _, _, _)).WillOnce(Return(-1));
76 auto res = AccessCore::DoAccess(path, mode);
77 EXPECT_EQ(res.IsSuccess(), false);
78
79 GTEST_LOG_(INFO) << "AccessCoreMockTest-end AccessCoreMockTest_DoAccess_001";
80 }
81
82 /**
83 * @tc.name: AccessCoreMockTest_DoAccess_002
84 * @tc.desc: Test function of AccessCore::ValidAccessArgs interface for SUCCESS.
85 * @tc.size: MEDIUM
86 * @tc.type: FUNC
87 * @tc.level Level 1
88 */
89 HWTEST_F(AccessCoreMockTest, AccessCoreMockTest_DoAccess_002, testing::ext::TestSize.Level1)
90 {
91 GTEST_LOG_(INFO) << "AccessCoreMockTest-begin AccessCoreMockTest_DoAccess_002";
92
93 std::string path = "TEST";
94 std::optional<AccessModeType> mode;
95
96 EXPECT_CALL(*uvMock, uv_fs_access(_, _, _, _, _)).WillOnce(Return(0));
97
98 auto res = AccessCore::DoAccess(path, mode);
99 EXPECT_EQ(res.IsSuccess(), true);
100
101 GTEST_LOG_(INFO) << "AccessCoreMockTest-end AccessCoreMockTest_DoAccess_002";
102 }
103
104 /**
105 * @tc.name: AccessCoreMockTest_DoAccess_003
106 * @tc.desc: Test function of AccessCore::DoAccess interface for FALSE.
107 * @tc.size: MEDIUM
108 * @tc.type: FUNC
109 * @tc.level Level 1
110 */
111 HWTEST_F(AccessCoreMockTest, AccessCoreMockTest_DoAccess_003, testing::ext::TestSize.Level1)
112 {
113 GTEST_LOG_(INFO) << "AccessCoreMockTest-begin AccessCoreMockTest_DoAccess_003";
114
115 std::string path = "TEST";
116 AccessModeType mode = AccessModeType::EXIST;
117 AccessFlag flag = DEFAULT_FLAG;
118
119 EXPECT_CALL(*uvMock, uv_fs_access(_, _, _, _, _)).WillOnce(Return(-1));
120 auto res = AccessCore::DoAccess(path, mode, flag);
121 EXPECT_EQ(res.IsSuccess(), false);
122
123 GTEST_LOG_(INFO) << "AccessCoreMockTest-end AccessCoreMockTest_DoAccess_003";
124 }
125
126 /**
127 * @tc.name: AccessCoreMockTest_DoAccess_004
128 * @tc.desc: Test function of AccessCore::DoAccess interface for SUCCESS.
129 * @tc.size: MEDIUM
130 * @tc.type: FUNC
131 * @tc.level Level 1
132 */
133 HWTEST_F(AccessCoreMockTest, AccessCoreMockTest_DoAccess_004, testing::ext::TestSize.Level1)
134 {
135 GTEST_LOG_(INFO) << "AccessCoreMockTest-begin AccessCoreMockTest_DoAccess_004";
136
137 std::string path = "TEST";
138 AccessModeType mode = AccessModeType::EXIST;
139 AccessFlag flag = DEFAULT_FLAG;
140
141 EXPECT_CALL(*uvMock, uv_fs_access(_, _, _, _, _)).WillOnce(Return(0));
142
143 auto res = AccessCore::DoAccess(path, mode, flag);
144 EXPECT_EQ(res.IsSuccess(), true);
145
146 GTEST_LOG_(INFO) << "AccessCoreMockTest-end AccessCoreMockTest_DoAccess_004";
147 }
148
149 } // OHOS::FileManagement::ModuleFileIO::Test