1 /* 2 * Copyright (c) 2022 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 <gtest/gtest.h> 17 #include <singleton.h> 18 #include <cassert> 19 #include <sys/types.h> 20 #include <sys/stat.h> 21 #include <fcntl.h> 22 #include <string> 23 24 #include "remote_file_share.h" 25 26 namespace { 27 using namespace std; 28 using namespace OHOS::AppFileService::ModuleRemoteFileShare; 29 30 const int E_INVALID_ARGUMENT = 22; 31 const int E_OK = 0; 32 33 class RemoteFileShareTest : public testing::Test { 34 public: SetUpTestCase(void)35 static void SetUpTestCase(void) {}; TearDownTestCase()36 static void TearDownTestCase() {}; SetUp()37 void SetUp() {}; TearDown()38 void TearDown() {}; 39 }; 40 41 /** 42 * @tc.name: remote_file_share_test_0000 43 * @tc.desc: Test function of RemoteFileShare() interface for SUCCESS. 44 * @tc.size: MEDIUM 45 * @tc.type: FUNC 46 * @tc.level Level 1 47 * @tc.require: SR000H63TL 48 */ 49 HWTEST_F(RemoteFileShareTest, Remote_file_share_RemoteFileShare_0000, testing::ext::TestSize.Level1) 50 { 51 GTEST_LOG_(INFO) << "RemoteFileShareTest-begin Remote_file_share_RemoteFileShare_0000"; 52 RemoteFileShare* test = new RemoteFileShare; 53 ASSERT_TRUE(test != nullptr) << "RemoteFileShare Construct Failed!"; 54 delete test; 55 GTEST_LOG_(INFO) << "RemoteFileShareTest-end Remote_file_share_RemoteFileShare_0000"; 56 } 57 58 /** 59 * @tc.name: remote_file_share_test_0001 60 * @tc.desc: Test function of CreateSharePath() interface for SUCCESS. 61 * @tc.size: MEDIUM 62 * @tc.type: FUNC 63 * @tc.level Level 1 64 * @tc.require: SR000H63TL 65 */ 66 HWTEST_F(RemoteFileShareTest, Remote_file_share_CreateSharePath_0001, testing::ext::TestSize.Level1) 67 { 68 GTEST_LOG_(INFO) << "RemoteFileShareTest-begin Remote_file_share_CreateSharePath_0001"; 69 const int fd = -1; 70 const int userId = 100; 71 const string deviceId = "0"; 72 string sharePath = ""; 73 int ret = RemoteFileShare::CreateSharePath(fd, sharePath, userId, deviceId); 74 EXPECT_EQ(ret, E_INVALID_ARGUMENT); 75 GTEST_LOG_(INFO) << "RemoteFileShareTest-end Remote_file_share_CreateSharePath_0001"; 76 } 77 78 /** 79 * @tc.name: remote_file_share_test_0002 80 * @tc.desc: Test function of CreateSharePath() interface for SUCCESS. 81 * @tc.size: MEDIUM 82 * @tc.type: FUNC 83 * @tc.level Level 1 84 * @tc.require: SR000H63TL 85 */ 86 HWTEST_F(RemoteFileShareTest, Remote_file_share_CreateSharePath_0002, testing::ext::TestSize.Level1) 87 { 88 GTEST_LOG_(INFO) << "RemoteFileShareTest-begin Remote_file_share_CreateSharePath_0002"; 89 const int fd = 10; 90 const int userId = 90; 91 const string deviceId = "0"; 92 string sharePath = ""; 93 int ret = RemoteFileShare::CreateSharePath(fd, sharePath, userId, deviceId); 94 EXPECT_EQ(ret, E_INVALID_ARGUMENT); 95 GTEST_LOG_(INFO) << "RemoteFileShareTest-end Remote_file_share_CreateSharePath_0002"; 96 } 97 98 /** 99 * @tc.name: remote_file_share_test_0003 100 * @tc.desc: Test function of CreateSharePath() interface for SUCCESS. 101 * @tc.size: MEDIUM 102 * @tc.type: FUNC 103 * @tc.level Level 1 104 * @tc.require: SR000H63TL 105 */ 106 HWTEST_F(RemoteFileShareTest, Remote_file_share_CreateSharePath_0003, testing::ext::TestSize.Level1) 107 { 108 GTEST_LOG_(INFO) << "RemoteFileShareTest-begin Remote_file_share_CreateSharePath_0003"; 109 const int fd = 10; 110 const int userId = 100; 111 const string deviceId = "00"; 112 string sharePath = ""; 113 int ret = RemoteFileShare::CreateSharePath(fd, sharePath, userId, deviceId); 114 EXPECT_EQ(ret, E_INVALID_ARGUMENT); 115 GTEST_LOG_(INFO) << "RemoteFileShareTest-end Remote_file_share_CreateSharePath_0003"; 116 } 117 118 /** 119 * @tc.name: remote_file_share_test_0004 120 * @tc.desc: Test function of CreateSharePath() interface for SUCCESS. 121 * @tc.size: MEDIUM 122 * @tc.type: FUNC 123 * @tc.level Level 1 124 * @tc.require: SR000H63TL 125 */ 126 HWTEST_F(RemoteFileShareTest, Remote_file_share_CreateSharePath_0004, testing::ext::TestSize.Level1) 127 { 128 GTEST_LOG_(INFO) << "RemoteFileShareTest-begin Remote_file_share_CreateSharePath_0004"; 129 const string fileStr = "/data/test/remote_file_share_test.txt"; 130 int fd = open(fileStr.c_str(), O_RDWR); 131 ASSERT_TRUE(fd != -1) << "RemoteFileShareTest Create File Failed!"; 132 const int userId = 100; 133 const string deviceId = "0"; 134 string sharePath = ""; 135 int ret = RemoteFileShare::CreateSharePath(fd, sharePath, userId, deviceId); 136 close(fd); 137 EXPECT_EQ(ret, E_OK); 138 GTEST_LOG_(INFO) << "RemoteFileShareTest Create Share Path " << sharePath; 139 GTEST_LOG_(INFO) << "RemoteFileShareTest-end Remote_file_share_CreateSharePath_0004"; 140 } 141 142 /** 143 * @tc.name: remote_file_share_test_0005 144 * @tc.desc: Test function of CreateSharePath() interface for SUCCESS. 145 * @tc.size: MEDIUM 146 * @tc.type: FUNC 147 * @tc.level Level 1 148 * @tc.require: SR000H63TL 149 */ 150 HWTEST_F(RemoteFileShareTest, Remote_file_share_CreateSharePath_0005, testing::ext::TestSize.Level1) 151 { 152 GTEST_LOG_(INFO) << "RemoteFileShareTest-begin Remote_file_share_CreateSharePath_0005"; 153 const string fileStr = "/data/test/remote_file_share_test.txt"; 154 int fd = open(fileStr.c_str(), O_RDWR); 155 ASSERT_TRUE(fd != -1) << "RemoteFileShareTest Create File Failed!"; 156 const int userId = 100; 157 const string deviceId = "0"; 158 string sharePath = ""; 159 char pthreadName[PATH_MAX]; 160 int ret = pthread_getname_np(pthread_self(), pthreadName, sizeof(pthreadName)); 161 EXPECT_EQ(ret, E_OK); 162 string pthreadNameStr = pthreadName; 163 string errPthreadName = "../test"; 164 ret = pthread_setname_np(pthread_self(), errPthreadName.c_str()); 165 EXPECT_EQ(ret, E_OK); 166 ret = RemoteFileShare::CreateSharePath(fd, sharePath, userId, deviceId); 167 close(fd); 168 EXPECT_NE(ret, E_OK); 169 ret = pthread_setname_np(pthread_self(), pthreadNameStr.c_str()); 170 EXPECT_EQ(ret, E_OK); 171 GTEST_LOG_(INFO) << "RemoteFileShareTest Create Share Path " << sharePath; 172 GTEST_LOG_(INFO) << "RemoteFileShareTest-end Remote_file_share_CreateSharePath_0005"; 173 } 174 175 /** 176 * @tc.name: remote_file_share_test_0005 177 * @tc.desc: Test function of GetDfsUriFromLocal() interface for SUCCESS. 178 * @tc.size: MEDIUM 179 * @tc.type: FUNC 180 * @tc.level Level 1 181 * @tc.require: I7KDF7 182 */ 183 HWTEST_F(RemoteFileShareTest, Remote_file_share_GetDfsUriFromLocal_0005, testing::ext::TestSize.Level1) 184 { 185 GTEST_LOG_(INFO) << "RemoteFileShareTest-begin Remote_file_share_GetDfsUriFromLocal_0005"; 186 const string dirPath = "/data/app/el2/100/base/com.demo.a/"; 187 const string uriStr = "file://com.demo.a/data/storage/el2/base/remote_file_share_test.txt"; 188 const string fileStr = "/data/app/el2/100/base/com.demo.a/remote_file_share_test.txt"; 189 const int userId = 100; 190 191 int ret = mkdir(dirPath.c_str(), S_IRWXU | S_IRWXG | S_IXOTH); 192 ASSERT_TRUE((ret != -1) || (ret == -1 && errno == EEXIST)) << "RemoteFileShareTest mkdir failed! " << errno; 193 194 int fd = open(fileStr.c_str(), O_RDWR | O_CREAT); 195 ASSERT_TRUE(fd != -1) << "RemoteFileShareTest open file failed! " << errno; 196 close(fd); 197 198 HmdfsUriInfo hui; 199 ret = RemoteFileShare::GetDfsUriFromLocal(uriStr, userId, hui); 200 EXPECT_EQ(ret, E_OK); 201 202 ret = unlink(fileStr.c_str()); 203 ASSERT_TRUE(ret != -1) << "RemoteFileShareTest delete file failed! " << errno; 204 205 ret = rmdir(dirPath.c_str()); 206 ASSERT_TRUE(ret != -1) << "RemoteFileShareTest rmdir failed! " << errno; 207 GTEST_LOG_(INFO) << "RemoteFileShareTest uri is " << hui.uriStr; 208 GTEST_LOG_(INFO) << "RemoteFileShareTest file size is " << hui.fileSize; 209 GTEST_LOG_(INFO) << "RemoteFileShareTest-end Remote_file_share_GetDfsUriFromLocal_0005"; 210 } 211 212 /** 213 * @tc.name: remote_file_share_test_0006 214 * @tc.desc: Test function of GetDfsUriFromLocal() interface for FAILURE. 215 * @tc.size: MEDIUM 216 * @tc.type: FUNC 217 * @tc.level Level 1 218 * @tc.require: I7KDF7 219 */ 220 HWTEST_F(RemoteFileShareTest, Remote_file_share_GetDfsUriFromLocal_0006, testing::ext::TestSize.Level1) 221 { 222 GTEST_LOG_(INFO) << "RemoteFileShareTest-begin Remote_file_share_GetDfsUriFromLocal_0006"; 223 const string uriStr = ""; 224 const int userId = 100; 225 HmdfsUriInfo hui; 226 int ret = RemoteFileShare::GetDfsUriFromLocal(uriStr, userId, hui); 227 EXPECT_EQ(ret, -EINVAL); 228 GTEST_LOG_(INFO) << "RemoteFileShareTest uri is " << hui.uriStr; 229 GTEST_LOG_(INFO) << "RemoteFileShareTest file size is " << hui.fileSize; 230 GTEST_LOG_(INFO) << "RemoteFileShareTest-end Remote_file_share_GetDfsUriFromLocal_0006"; 231 } 232 233 /** 234 * @tc.name: remote_file_share_test_0007 235 * @tc.desc: Test function of GetDfsUriFromLocal() interface for FAILURE. 236 * @tc.size: MEDIUM 237 * @tc.type: FUNC 238 * @tc.level Level 1 239 * @tc.require: I7KDF7 240 */ 241 HWTEST_F(RemoteFileShareTest, Remote_file_share_GetDfsUriFromLocal_0007, testing::ext::TestSize.Level1) 242 { 243 GTEST_LOG_(INFO) << "RemoteFileShareTest-begin Remote_file_share_GetDfsUriFromLocal_0007"; 244 const string uriStr = "file://com.demo.a/./data/storage/el2/base/remote_file_share_test.txt"; 245 const int userId = 100; 246 HmdfsUriInfo hui; 247 int ret = RemoteFileShare::GetDfsUriFromLocal(uriStr, userId, hui); 248 EXPECT_EQ(ret, -EINVAL); 249 GTEST_LOG_(INFO) << "RemoteFileShareTest uri is " << hui.uriStr; 250 GTEST_LOG_(INFO) << "RemoteFileShareTest file size is " << hui.fileSize; 251 GTEST_LOG_(INFO) << "RemoteFileShareTest-end Remote_file_share_GetDfsUriFromLocal_0007"; 252 } 253 254 /** 255 * @tc.name: remote_file_share_test_0008 256 * @tc.desc: Test function of GetDfsUriFromLocal() interface for FAILURE. 257 * @tc.size: MEDIUM 258 * @tc.type: FUNC 259 * @tc.level Level 1 260 * @tc.require: I7KDF7 261 */ 262 HWTEST_F(RemoteFileShareTest, Remote_file_share_GetDfsUriFromLocal_0008, testing::ext::TestSize.Level1) 263 { 264 GTEST_LOG_(INFO) << "RemoteFileShareTest-begin Remote_file_share_GetDfsUriFromLocal_0008"; 265 const string uriStr = "file://com.demo.a/../data/storage/el2/base/remote_file_share_test.txt"; 266 const int userId = 100; 267 HmdfsUriInfo hui; 268 int ret = RemoteFileShare::GetDfsUriFromLocal(uriStr, userId, hui); 269 EXPECT_EQ(ret, -EINVAL); 270 GTEST_LOG_(INFO) << "RemoteFileShareTest uri is " << hui.uriStr; 271 GTEST_LOG_(INFO) << "RemoteFileShareTest file size is " << hui.fileSize; 272 GTEST_LOG_(INFO) << "RemoteFileShareTest-end Remote_file_share_GetDfsUriFromLocal_0008"; 273 } 274 275 /** 276 * @tc.name: remote_file_share_test_0009 277 * @tc.desc: Test function of GetDfsUriFromLocal() interface for FAILURE. 278 * @tc.size: MEDIUM 279 * @tc.type: FUNC 280 * @tc.level Level 1 281 * @tc.require: I7KDF7 282 */ 283 HWTEST_F(RemoteFileShareTest, Remote_file_share_GetDfsUriFromLocal_0009, testing::ext::TestSize.Level1) 284 { 285 GTEST_LOG_(INFO) << "RemoteFileShareTest-begin Remote_file_share_GetDfsUriFromLocal_0009"; 286 const string uriStr = "file://com.demo.a/data/storage/el3/base/remote_file_share_test.txt"; 287 const int userId = 100; 288 HmdfsUriInfo hui; 289 int ret = RemoteFileShare::GetDfsUriFromLocal(uriStr, userId, hui); 290 EXPECT_EQ(ret, -EINVAL); 291 GTEST_LOG_(INFO) << "RemoteFileShareTest uri is " << hui.uriStr; 292 GTEST_LOG_(INFO) << "RemoteFileShareTest file size is " << hui.fileSize; 293 GTEST_LOG_(INFO) << "RemoteFileShareTest-end Remote_file_share_GetDfsUriFromLocal_0009"; 294 } 295 296 /** 297 * @tc.name: remote_file_share_test_0010 298 * @tc.desc: Test function of GetDfsUriFromLocal() interface for FAILURE. 299 * @tc.size: MEDIUM 300 * @tc.type: FUNC 301 * @tc.level Level 1 302 * @tc.require: I7KDF7 303 */ 304 HWTEST_F(RemoteFileShareTest, Remote_file_share_GetDfsUriFromLocal_0010, testing::ext::TestSize.Level1) 305 { 306 GTEST_LOG_(INFO) << "RemoteFileShareTest-begin Remote_file_share_GetDfsUriFromLocal_0010"; 307 const string uriStr = "file://com.demo.a/data/storage/el2/base/notExistFile.txt"; 308 const int userId = 100; 309 HmdfsUriInfo hui; 310 int ret = RemoteFileShare::GetDfsUriFromLocal(uriStr, userId, hui); 311 EXPECT_NE(ret, E_OK); 312 GTEST_LOG_(INFO) << "RemoteFileShareTest uri is " << hui.uriStr; 313 GTEST_LOG_(INFO) << "RemoteFileShareTest file size is " << hui.fileSize; 314 GTEST_LOG_(INFO) << "RemoteFileShareTest-end Remote_file_share_GetDfsUriFromLocal_0010"; 315 } 316 317 /** 318 * @tc.name: remote_file_share_test_0011 319 * @tc.desc: Test function of GetDfsUriFromLocal() interface for SUCCESS. 320 * the file name is chinese which has been encoded 321 * @tc.size: MEDIUM 322 * @tc.type: FUNC 323 * @tc.level Level 1 324 * @tc.require: I7KDF7 325 */ 326 HWTEST_F(RemoteFileShareTest, Remote_file_share_GetDfsUriFromLocal_0011, testing::ext::TestSize.Level1) 327 { 328 GTEST_LOG_(INFO) << "RemoteFileShareTest-begin Remote_file_share_GetDfsUriFromLocal_0011"; 329 const string dirPath = "/data/app/el2/100/base/com.demo.a/"; 330 const string uriStr = "file://com.demo.a/data/storage/el2/base/" 331 "%E5%85%B1%20%E4%BA%AB%20%E6%96%87%20%E4%BB%B6%20%E6%B5%8B%20%E8%AF%95.txt"; 332 const string fileStr = "/data/app/el2/100/base/com.demo.a/共 享 文 件 测 试.txt"; 333 const int userId = 100; 334 335 int ret = mkdir(dirPath.c_str(), S_IRWXU | S_IRWXG | S_IXOTH); 336 ASSERT_TRUE((ret != -1) || (ret == -1 && errno == EEXIST)) << "RemoteFileShareTest mkdir failed! " << errno; 337 338 int fd = open(fileStr.c_str(), O_RDWR | O_CREAT); 339 ASSERT_TRUE(fd != -1) << "RemoteFileShareTest open file failed! " << errno; 340 close(fd); 341 342 HmdfsUriInfo hui; 343 ret = RemoteFileShare::GetDfsUriFromLocal(uriStr, userId, hui); 344 EXPECT_EQ(ret, E_OK); 345 346 ret = unlink(fileStr.c_str()); 347 ASSERT_TRUE(ret != -1) << "RemoteFileShareTest delete file failed! " << errno; 348 349 ret = rmdir(dirPath.c_str()); 350 ASSERT_TRUE(ret != -1) << "RemoteFileShareTest rmdir failed! " << errno; 351 GTEST_LOG_(INFO) << "RemoteFileShareTest uri is " << hui.uriStr; 352 GTEST_LOG_(INFO) << "RemoteFileShareTest file size is " << hui.fileSize; 353 GTEST_LOG_(INFO) << "RemoteFileShareTest-end Remote_file_share_GetDfsUriFromLocal_0011"; 354 } 355 } 356