From ac963728b782c9a4f705700ea9a9c2857a695365 Mon Sep 17 00:00:00 2001 From: wangpggg Date: Tue, 4 Jun 2024 10:45:26 +0800 Subject: [PATCH] add ut to improve coverage Signed-off-by: wangpeng --- .../js_file_access_ext_ability_ex_test.cpp | 2049 +++++++++++++++++ .../js_file_access_ext_ability_test.cpp | 52 +- test/unittest/mock/assistant.h | 14 + test/unittest/mock/js_native_api_mock.cpp | 35 + 4 files changed, 2148 insertions(+), 2 deletions(-) create mode 100644 test/unittest/js_file_access_ext_ability_ex_test.cpp diff --git a/test/unittest/js_file_access_ext_ability_ex_test.cpp b/test/unittest/js_file_access_ext_ability_ex_test.cpp new file mode 100644 index 00000000..7e0d4035 --- /dev/null +++ b/test/unittest/js_file_access_ext_ability_ex_test.cpp @@ -0,0 +1,2049 @@ +/* + * Copyright (c) 2024 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @tc.number: user_file_service_js_file_access_ext_ability_ListFile_0000 + * @tc.name: js_file_access_ext_ability_ListFile_0000 + * @tc.desc: Test function of ListFile interface for uri、nativeOffset or nativeMaxCount failure branch. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 3 + * @tc.require: issuesI8ZE8T + */ +HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_ListFile_0000, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_ListFile_0000"; + try { + napi_value rslt = nullptr; + FileInfo fileInfo; + int64_t offset = 0; + int64_t maxCount = 0; + FileFilter filter; + vector fileInfoVec; + + // 模拟获取uri为空 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)).WillOnce(Return(napi_ok)); + auto result = ability->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec); + EXPECT_EQ(result, ERR_OK); + + // 模拟获取nativeOffset为空 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_create_int64(_, _, _)).WillOnce(Return(napi_ok)); + result = ability->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec); + EXPECT_EQ(result, ERR_OK); + + // 模拟获取nativeMaxCount为空 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_create_int64(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(Return(napi_ok)); + result = ability->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec); + EXPECT_EQ(result, ERR_OK); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; + } + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_ListFile_0000"; +} + +/** + * @tc.number: user_file_service_js_file_access_ext_ability_ListFile_0001 + * @tc.name: js_file_access_ext_ability_ListFile_0001 + * @tc.desc: Test function of ListFile interface for nativeFilter failure/success branch. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 3 + * @tc.require: issuesI8ZE8T + */ +HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_ListFile_0001, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_ListFile_0001"; + try { + napi_value rslt = nullptr; + FileInfo fileInfo; + int64_t offset = 0; + int64_t maxCount = 0; + FileFilter filter; + vector fileInfoVec; + + // 模拟获取nativeFilter为空 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_create_int64(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_null(_, _)).WillOnce(Return(napi_ok)); + auto result = ability->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec); + EXPECT_EQ(result, ERR_OK); + + // 模拟获取nativeFilter成功 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_create_int64(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_null(_, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _)).WillOnce(Return(napi_ok)); + result = ability->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec); + EXPECT_EQ(result, ERR_OK); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; + } + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_ListFile_0001"; +} + +/** + * @tc.number: user_file_service_js_file_access_ext_ability_ListFile_0002 + * @tc.name: js_file_access_ext_ability_ListFile_0002 + * @tc.desc: Test function of ListFile interface for nativeFilter or fileFilter.suffixArray + * failure/success branch. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 3 + * @tc.require: issuesI8ZE8T + */ +HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_ListFile_0002, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_ListFile_0002"; + try { + napi_value rslt = nullptr; + FileInfo fileInfo; + int64_t offset = 0; + int64_t maxCount = 0; + FileFilter filter; + filter.SetHasFilter(true); + vector fileInfoVec; + + // 模拟创建nativeFilter失败 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_create_int64(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_create_object(_, _)).WillOnce(Return(napi_ok)); + auto result = ability->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec); + EXPECT_EQ(result, ERR_OK); + + // 模拟设置fileFilter.suffixArray失败 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_create_int64(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_create_object(_, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_create_array_with_length(_, _, _)).WillOnce(Return(napi_ok)); + result = ability->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec); + EXPECT_EQ(result, ERR_OK); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; + } + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_ListFile_0002"; +} + +static void CallListFileHeadSucceed(shared_ptr insMoc) +{ + napi_value rslt = nullptr; + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_create_int64(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_create_object(_, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); +} + +/** + * @tc.number: user_file_service_js_file_access_ext_ability_ListFile_0003 + * @tc.name: js_file_access_ext_ability_ListFile_0003 + * @tc.desc: Test function of ListFile interface for fileFilter.displayNameArray and fileFilter.mimeTypeArray + * failure/success branch. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 3 + * @tc.require: issuesI8ZE8T + */ +HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_ListFile_0003, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_ListFile_0003"; + try { + napi_value rslt = nullptr; + FileInfo fileInfo; + int64_t offset = 0; + int64_t maxCount = 0; + FileFilter filter; + filter.SetHasFilter(true); + vector fileInfoVec; + + // 模拟获取fileFilter.displayNameArray失败 + CallListFileHeadSucceed(insMoc); + EXPECT_CALL(*insMoc, napi_create_array_with_length(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(Return(napi_ok)); + auto result = ability->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec); + EXPECT_EQ(result, ERR_OK); + + // 模拟获取fileFilter.mimeTypeArray失败 + CallListFileHeadSucceed(insMoc); + EXPECT_CALL(*insMoc, napi_create_array_with_length(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(Return(napi_ok)); + result = ability->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec); + EXPECT_EQ(result, ERR_OK); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; + } + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_ListFile_0003"; +} + +/** + * @tc.number: user_file_service_js_file_access_ext_ability_ListFile_0004 + * @tc.name: js_file_access_ext_ability_ListFile_0004 + * @tc.desc: Test function of ListFile interface for fileFilter.nativeFileSizeOver and + * fileFilter.nativeLastModifiedAfter failure/success branch. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 3 + * @tc.require: issuesI8ZE8T + */ +HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_ListFile_0004, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_ListFile_0004"; + try { + napi_value rslt = nullptr; + FileInfo fileInfo; + int64_t offset = 0; + int64_t maxCount = 0; + FileFilter filter; + filter.SetHasFilter(true); + vector fileInfoVec; + + // 模拟获取fileFilter.nativeFileSizeOver失败 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_create_int64(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_create_object(_, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_create_array_with_length(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + auto result = ability->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec); + EXPECT_EQ(result, ERR_OK); + + // 模拟获取fileFilter.nativeLastModifiedAfter失败 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_create_int64(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_create_object(_, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_create_array_with_length(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_create_double(_, _, _)).WillOnce(Return(napi_ok)); + result = ability->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec); + EXPECT_EQ(result, ERR_OK); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; + } + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_ListFile_0004"; +} + +static void CallCreateNativeValueSucceed(shared_ptr insMoc) +{ + // 模拟调用CreateNativeValue成功 + napi_value rslt = nullptr; + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_create_int64(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_create_object(_, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_create_array_with_length(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_create_double(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_boolean(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); +} + +/** + * @tc.number: user_file_service_js_file_access_ext_ability_ListFile_0005 + * @tc.name: js_file_access_ext_ability_ListFile_0005 + * @tc.desc: Test function of ListFile interface for fileFilter.nativeExcludeMedia、fileFilter.suffixArray and + * fileFilter.displayNameArray failure/success branch. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 3 + * @tc.require: issuesI8ZE8T + */ +HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_ListFile_0005, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_ListFile_0005"; + try { + napi_value rslt = nullptr; + FileInfo fileInfo; + int64_t offset = 0; + int64_t maxCount = 0; + FileFilter filter; + filter.SetHasFilter(true); + vector fileInfoVec; + + // 模拟获取fileFilter.nativeExcludeMedia失败 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_create_int64(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_create_object(_, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_create_array_with_length(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_create_double(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_boolean(_, _, _)).WillOnce(Return(napi_ok)); + auto result = ability->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec); + EXPECT_EQ(result, ERR_OK); + + // 模拟设置fileFilter.suffixArray失败 + CallCreateNativeValueSucceed(insMoc); + EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _)).WillOnce(Return(napi_invalid_arg)); + result = ability->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec); + EXPECT_EQ(result, ERR_OK); + + // 模拟设置fileFilter.displayNameArray失败 + CallCreateNativeValueSucceed(insMoc); + EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _)) + .WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_invalid_arg)); + result = ability->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec); + EXPECT_EQ(result, ERR_OK); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; + } + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_ListFile_0005"; +} + +/** + * @tc.number: user_file_service_js_file_access_ext_ability_ListFile_0006 + * @tc.name: js_file_access_ext_ability_ListFile_0006 + * @tc.desc: Test function of ListFile interface for fileFilter.mimeTypeArray、fileFilter.nativeFileSizeOver + * fileFilter.nativeLastModifiedAfter and fileFilter.nativeExcludeMedia failure/success branch. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 3 + * @tc.require: issuesI8ZE8T + */ +HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_ListFile_0006, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_ListFile_0006"; + try { + FileInfo fileInfo; + int64_t offset = 0; + int64_t maxCount = 0; + FileFilter filter; + filter.SetHasFilter(true); + vector fileInfoVec; + + // 模拟设置fileFilter.mimeTypeArray失败 + CallCreateNativeValueSucceed(insMoc); + EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _)) + .WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_invalid_arg)); + auto result = ability->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec); + EXPECT_EQ(result, ERR_OK); + + // 模拟设置fileFilter.nativeFileSizeOver失败 + CallCreateNativeValueSucceed(insMoc); + EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _)) + .WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_invalid_arg)); + result = ability->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec); + EXPECT_EQ(result, ERR_OK); + + // 模拟设置fileFilter.nativeLastModifiedAfter失败 + CallCreateNativeValueSucceed(insMoc); + EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _)) + .WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_invalid_arg)); + result = ability->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec); + EXPECT_EQ(result, ERR_OK); + + // 模拟设置fileFilter.nativeExcludeMedia失败 + CallCreateNativeValueSucceed(insMoc); + EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _)) + .WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_invalid_arg)); + result = ability->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec); + EXPECT_EQ(result, ERR_OK); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; + } + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_ListFile_0006"; +} + +/** + * @tc.number: user_file_service_js_file_access_ext_ability_ListFile_0007 + * @tc.name: js_file_access_ext_ability_ListFile_0007 + * @tc.desc: Test function of ListFile interface for code、nativeArray failure/success branch. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 3 + * @tc.require: issuesI8ZE8T + */ +HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_ListFile_0007, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_ListFile_0007"; + try { + napi_value rslt = nullptr; + FileInfo fileInfo; + int64_t offset = 0; + int64_t maxCount = 0; + FileFilter filter; + filter.SetHasFilter(true); + vector fileInfoVec; + + // 模拟获取code失败 + CallCreateNativeValueSucceed(insMoc); + EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_invalid_arg)); + auto result = ability->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec); + EXPECT_EQ(result, ERR_OK); + + // 模拟获取nativeArray失败 + CallCreateNativeValueSucceed(insMoc); + EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_create_array(_, _)).WillOnce(Return(napi_ok)); + result = ability->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec); + EXPECT_EQ(result, ERR_OK); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; + } + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_ListFile_0007"; +} + +/** + * @tc.number: user_file_service_js_file_access_ext_ability_ListFile_0008 + * @tc.name: js_file_access_ext_ability_ListFile_0008 + * @tc.desc: Test function of ListFile interface for length failure/success branch. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 3 + * @tc.require: issuesI8ZE8T + */ +HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_ListFile_0008, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_ListFile_0008"; + try { + napi_value rslt = nullptr; + FileInfo fileInfo; + int64_t offset = 0; + int64_t maxCount = 0; + FileFilter filter; + filter.SetHasFilter(true); + vector fileInfoVec; + + // 模拟获取length失败 + CallCreateNativeValueSucceed(insMoc); + EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(Return(napi_ok)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_create_array(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_array_length(_, _, _)).WillOnce(Return(napi_invalid_arg)); + auto result = ability->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec); + EXPECT_EQ(result, ERR_OK); + + // 模拟获取length成功 + CallCreateNativeValueSucceed(insMoc); + EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(Return(napi_ok)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_create_array(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_array_length(_, _, _)).WillOnce(Return(napi_ok)); + result = ability->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec); + EXPECT_EQ(result, ERR_OK); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; + } + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_ListFile_0008"; +} + +/** + * @tc.number: user_file_service_js_file_access_ext_ability_ListFile_0009 + * @tc.name: js_file_access_ext_ability_ListFile_0009 + * @tc.desc: Test function of ListFile interface for CallJsMethod and value->code failure/success branch. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 3 + * @tc.require: issuesI8ZE8T + */ +HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_ListFile_0009, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_ListFile_0009"; + try { + int status = napi_invalid_arg; + napi_value rslt = nullptr; + FileInfo fileInfo; + int64_t offset = 0; + int64_t maxCount = 0; + FileFilter filter; + filter.SetHasFilter(true); + vector fileInfoVec; + + // 模拟调用CallJsMethod失败 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_invalid_arg)); + auto result = ability->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec); + EXPECT_EQ(result, EINVAL); + + // 模拟获取value->code失败 + CallCreateNativeValueSucceed(insMoc); + EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(Return(napi_ok)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)) + .WillOnce(DoAll(SetArgPointee(status), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_create_array(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_array_length(_, _, _)).WillOnce(Return(napi_ok)); + result = ability->ListFile(fileInfo, offset, maxCount, filter, fileInfoVec); + EXPECT_EQ(result, napi_invalid_arg); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; + } + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_ListFile_0009"; +} + +/** + * @tc.number: user_file_service_js_file_access_ext_ability_ScanFile_0000 + * @tc.name: js_file_access_ext_ability_ScanFile_0000 + * @tc.desc: Test function of ScanFile interface for uri、nativeOffset or nativeMaxCount failure branch. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 3 + * @tc.require: issuesI8ZE8T + */ +HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_ScanFile_0000, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_ScanFile_0000"; + try { + napi_value rslt = nullptr; + FileInfo fileInfo; + int64_t offset = 0; + int64_t maxCount = 0; + FileFilter filter; + vector fileInfoVec; + + // 模拟获取uri为空 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)).WillOnce(Return(napi_ok)); + auto result = ability->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec); + EXPECT_EQ(result, ERR_OK); + + // 模拟获取nativeOffset为空 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_create_int64(_, _, _)).WillOnce(Return(napi_ok)); + result = ability->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec); + EXPECT_EQ(result, ERR_OK); + + // 模拟获取nativeMaxCount为空 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_create_int64(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(Return(napi_ok)); + result = ability->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec); + EXPECT_EQ(result, ERR_OK); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; + } + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_ScanFile_0000"; +} + +/** + * @tc.number: user_file_service_js_file_access_ext_ability_ScanFile_0001 + * @tc.name: js_file_access_ext_ability_ScanFile_0001 + * @tc.desc: Test function of ScanFile interface for nativeFilter failure/success branch. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 3 + * @tc.require: issuesI8ZE8T + */ +HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_ScanFile_0001, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_ScanFile_0001"; + try { + napi_value rslt = nullptr; + FileInfo fileInfo; + int64_t offset = 0; + int64_t maxCount = 0; + FileFilter filter; + vector fileInfoVec; + + // 模拟获取nativeFilter为空 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_create_int64(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_null(_, _)).WillOnce(Return(napi_ok)); + auto result = ability->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec); + EXPECT_EQ(result, ERR_OK); + + // 模拟获取nativeFilter成功 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_create_int64(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_null(_, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _)).WillOnce(Return(napi_ok)); + result = ability->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec); + EXPECT_EQ(result, ERR_OK); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; + } + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_ScanFile_0001"; +} + +/** + * @tc.number: user_file_service_js_file_access_ext_ability_ScanFile_0002 + * @tc.name: js_file_access_ext_ability_ScanFile_0002 + * @tc.desc: Test function of ScanFile interface for nativeFilter or fileFilter.suffixArray + * failure/success branch. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 3 + * @tc.require: issuesI8ZE8T + */ +HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_ScanFile_0002, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_ScanFile_0002"; + try { + napi_value rslt = nullptr; + FileInfo fileInfo; + int64_t offset = 0; + int64_t maxCount = 0; + FileFilter filter; + filter.SetHasFilter(true); + vector fileInfoVec; + + // 模拟创建nativeFilter失败 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_create_int64(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_create_object(_, _)).WillOnce(Return(napi_ok)); + auto result = ability->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec); + EXPECT_EQ(result, ERR_OK); + + // 模拟设置fileFilter.suffixArray失败 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_create_int64(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_create_object(_, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_create_array_with_length(_, _, _)).WillOnce(Return(napi_ok)); + result = ability->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec); + EXPECT_EQ(result, ERR_OK); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; + } + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_ScanFile_0002"; +} + +/** + * @tc.number: user_file_service_js_file_access_ext_ability_ScanFile_0003 + * @tc.name: js_file_access_ext_ability_ScanFile_0003 + * @tc.desc: Test function of ScanFile interface for fileFilter.displayNameArray and fileFilter.mimeTypeArray + * failure/success branch. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 3 + * @tc.require: issuesI8ZE8T + */ +HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_ScanFile_0003, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_ScanFile_0003"; + try { + napi_value rslt = nullptr; + FileInfo fileInfo; + int64_t offset = 0; + int64_t maxCount = 0; + FileFilter filter; + filter.SetHasFilter(true); + vector fileInfoVec; + + // 模拟获取fileFilter.displayNameArray失败 + CallListFileHeadSucceed(insMoc); + EXPECT_CALL(*insMoc, napi_create_array_with_length(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(Return(napi_ok)); + auto result = ability->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec); + EXPECT_EQ(result, ERR_OK); + + // 模拟获取fileFilter.mimeTypeArray失败 + CallListFileHeadSucceed(insMoc); + EXPECT_CALL(*insMoc, napi_create_array_with_length(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(Return(napi_ok)); + result = ability->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec); + EXPECT_EQ(result, ERR_OK); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; + } + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_ScanFile_0003"; +} + +/** + * @tc.number: user_file_service_js_file_access_ext_ability_ScanFile_0004 + * @tc.name: js_file_access_ext_ability_ScanFile_0004 + * @tc.desc: Test function of ScanFile interface for fileFilter.nativeFileSizeOver and + * fileFilter.nativeLastModifiedAfter failure/success branch. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 3 + * @tc.require: issuesI8ZE8T + */ +HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_ScanFile_0004, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_ScanFile_0004"; + try { + napi_value rslt = nullptr; + FileInfo fileInfo; + int64_t offset = 0; + int64_t maxCount = 0; + FileFilter filter; + filter.SetHasFilter(true); + vector fileInfoVec; + + // 模拟获取fileFilter.nativeFileSizeOver失败 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_create_int64(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_create_object(_, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_create_array_with_length(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + auto result = ability->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec); + EXPECT_EQ(result, ERR_OK); + + // 模拟获取fileFilter.nativeLastModifiedAfter失败 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_create_int64(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_create_object(_, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_create_array_with_length(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_create_double(_, _, _)).WillOnce(Return(napi_ok)); + result = ability->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec); + EXPECT_EQ(result, ERR_OK); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; + } + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_ScanFile_0004"; +} + +/** + * @tc.number: user_file_service_js_file_access_ext_ability_ScanFile_0005 + * @tc.name: js_file_access_ext_ability_ScanFile_0005 + * @tc.desc: Test function of ScanFile interface for fileFilter.nativeExcludeMedia、fileFilter.suffixArray and + * fileFilter.displayNameArray failure/success branch. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 3 + * @tc.require: issuesI8ZE8T + */ +HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_ScanFile_0005, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_ScanFile_0005"; + try { + napi_value rslt = nullptr; + FileInfo fileInfo; + int64_t offset = 0; + int64_t maxCount = 0; + FileFilter filter; + filter.SetHasFilter(true); + vector fileInfoVec; + + // 模拟获取fileFilter.nativeExcludeMedia失败 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_create_int64(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_create_object(_, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_create_array_with_length(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_create_double(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_boolean(_, _, _)).WillOnce(Return(napi_ok)); + auto result = ability->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec); + EXPECT_EQ(result, ERR_OK); + + // 模拟设置fileFilter.suffixArray失败 + CallCreateNativeValueSucceed(insMoc); + EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _)).WillOnce(Return(napi_invalid_arg)); + result = ability->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec); + EXPECT_EQ(result, ERR_OK); + + // 模拟设置fileFilter.displayNameArray失败 + CallCreateNativeValueSucceed(insMoc); + EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _)) + .WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_invalid_arg)); + result = ability->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec); + EXPECT_EQ(result, ERR_OK); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; + } + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_ScanFile_0005"; +} + +/** + * @tc.number: user_file_service_js_file_access_ext_ability_ScanFile_0006 + * @tc.name: js_file_access_ext_ability_ScanFile_0006 + * @tc.desc: Test function of ScanFile interface for fileFilter.mimeTypeArray、fileFilter.nativeFileSizeOver + * fileFilter.nativeLastModifiedAfter and fileFilter.nativeExcludeMedia failure/success branch. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 3 + * @tc.require: issuesI8ZE8T + */ +HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_ScanFile_0006, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_ScanFile_0006"; + try { + FileInfo fileInfo; + int64_t offset = 0; + int64_t maxCount = 0; + FileFilter filter; + filter.SetHasFilter(true); + vector fileInfoVec; + + // 模拟设置fileFilter.mimeTypeArray失败 + CallCreateNativeValueSucceed(insMoc); + EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _)) + .WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_invalid_arg)); + auto result = ability->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec); + EXPECT_EQ(result, ERR_OK); + + // 模拟设置fileFilter.nativeFileSizeOver失败 + CallCreateNativeValueSucceed(insMoc); + EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _)) + .WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_invalid_arg)); + result = ability->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec); + EXPECT_EQ(result, ERR_OK); + + // 模拟设置fileFilter.nativeLastModifiedAfter失败 + CallCreateNativeValueSucceed(insMoc); + EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _)) + .WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_invalid_arg)); + result = ability->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec); + EXPECT_EQ(result, ERR_OK); + + // 模拟设置fileFilter.nativeExcludeMedia失败 + CallCreateNativeValueSucceed(insMoc); + EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _)) + .WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_invalid_arg)); + result = ability->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec); + EXPECT_EQ(result, ERR_OK); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; + } + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_ScanFile_0006"; +} + +/** + * @tc.number: user_file_service_js_file_access_ext_ability_ScanFile_0007 + * @tc.name: js_file_access_ext_ability_ScanFile_0007 + * @tc.desc: Test function of ScanFile interface for code、nativeArray failure/success branch. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 3 + * @tc.require: issuesI8ZE8T + */ +HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_ScanFile_0007, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_ScanFile_0007"; + try { + napi_value rslt = nullptr; + FileInfo fileInfo; + int64_t offset = 0; + int64_t maxCount = 0; + FileFilter filter; + filter.SetHasFilter(true); + vector fileInfoVec; + + // 模拟获取code失败 + CallCreateNativeValueSucceed(insMoc); + EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_invalid_arg)); + auto result = ability->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec); + EXPECT_EQ(result, ERR_OK); + + // 模拟获取nativeArray失败 + CallCreateNativeValueSucceed(insMoc); + EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_create_array(_, _)).WillOnce(Return(napi_ok)); + result = ability->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec); + EXPECT_EQ(result, ERR_OK); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; + } + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_ScanFile_0007"; +} + +/** + * @tc.number: user_file_service_js_file_access_ext_ability_ScanFile_0008 + * @tc.name: js_file_access_ext_ability_ScanFile_0008 + * @tc.desc: Test function of ScanFile interface for length failure/success branch. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 3 + * @tc.require: issuesI8ZE8T + */ +HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_ScanFile_0008, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_ScanFile_0008"; + try { + napi_value rslt = nullptr; + FileInfo fileInfo; + int64_t offset = 0; + int64_t maxCount = 0; + FileFilter filter; + filter.SetHasFilter(true); + vector fileInfoVec; + + // 模拟获取length失败 + CallCreateNativeValueSucceed(insMoc); + EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(Return(napi_ok)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_create_array(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_array_length(_, _, _)).WillOnce(Return(napi_invalid_arg)); + auto result = ability->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec); + EXPECT_EQ(result, ERR_OK); + + // 模拟获取length成功 + CallCreateNativeValueSucceed(insMoc); + EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(Return(napi_ok)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_create_array(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_array_length(_, _, _)).WillOnce(Return(napi_ok)); + result = ability->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec); + EXPECT_EQ(result, ERR_OK); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; + } + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_ScanFile_0008"; +} + +/** + * @tc.number: user_file_service_js_file_access_ext_ability_ScanFile_0009 + * @tc.name: js_file_access_ext_ability_ScanFile_0009 + * @tc.desc: Test function of ScanFile interface for CallJsMethod and value->code failure/success branch. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 3 + * @tc.require: issuesI8ZE8T + */ +HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_ScanFile_0009, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_ScanFile_0009"; + try { + int status = napi_invalid_arg; + napi_value rslt = nullptr; + FileInfo fileInfo; + int64_t offset = 0; + int64_t maxCount = 0; + FileFilter filter; + filter.SetHasFilter(true); + vector fileInfoVec; + + // 模拟调用CallJsMethod失败 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_invalid_arg)); + auto result = ability->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec); + EXPECT_EQ(result, EINVAL); + + // 模拟获取value->code失败 + CallCreateNativeValueSucceed(insMoc); + EXPECT_CALL(*insMoc, napi_set_named_property(_, _, _, _)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(Return(napi_ok)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)) + .WillOnce(DoAll(SetArgPointee(status), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_create_array(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_array_length(_, _, _)).WillOnce(Return(napi_ok)); + result = ability->ScanFile(fileInfo, offset, maxCount, filter, fileInfoVec); + EXPECT_EQ(result, napi_invalid_arg); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; + } + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_ScanFile_0009"; +} + +/** + * @tc.number: user_file_service_js_file_access_ext_ability_GetFileInfoFromUri_0000 + * @tc.name: js_file_access_ext_ability_GetFileInfoFromUri_0000 + * @tc.desc: Test function of GetFileInfoFromUri interface for nativeUri and value->code failure/success branch. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 3 + * @tc.require: issuesI8ZE8T + */ +HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_GetFileInfoFromUri_0000, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_GetFileInfoFromUri_0000"; + try { + napi_value rslt = nullptr; + Uri selectFile(""); + FileInfo fileInfo; + + // 模拟获取nativeUri为空 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)).WillOnce(Return(napi_ok)); + auto result = ability->GetFileInfoFromUri(selectFile, fileInfo); + EXPECT_EQ(result, ERR_OK); + + // 模拟获取code失败 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_invalid_arg)); + result = ability->GetFileInfoFromUri(selectFile, fileInfo); + EXPECT_EQ(result, ERR_OK); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; + } + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_GetFileInfoFromUri_0000"; +} + +/** + * @tc.number: user_file_service_js_file_access_ext_ability_GetFileInfoFromUri_0001 + * @tc.name: js_file_access_ext_ability_GetFileInfoFromUri_0001 + * @tc.desc: Test function of GetFileInfoFromUri interface for fileInfo and fileInfo.uri failure/success branch. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 3 + * @tc.require: issuesI8ZE8T + */ +HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_GetFileInfoFromUri_0001, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_GetFileInfoFromUri_0001"; + try { + napi_value rslt = nullptr; + Uri selectFile(""); + FileInfo fileInfo; + + // 模拟获取fileInfo失败 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_invalid_arg)); + EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok)); + auto result = ability->GetFileInfoFromUri(selectFile, fileInfo); + EXPECT_EQ(result, ERR_OK); + + // 模拟获取fileInfo.uri失败 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_invalid_arg)); + result = ability->GetFileInfoFromUri(selectFile, fileInfo); + EXPECT_EQ(result, ERR_OK); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; + } + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_GetFileInfoFromUri_0001"; +} + +/** + * @tc.number: user_file_service_js_file_access_ext_ability_GetFileInfoFromUri_0002 + * @tc.name: js_file_access_ext_ability_GetFileInfoFromUri_0002 + * @tc.desc: Test function of GetFileInfoFromUri interface for fileInfo.relativePath and fileInfo.fileName + * failure/success branch. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 3 + * @tc.require: issuesI8ZE8T + */ +HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_GetFileInfoFromUri_0002, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_GetFileInfoFromUri_0002"; + try { + napi_value rslt = nullptr; + Uri selectFile(""); + FileInfo fileInfo; + + // 模拟获取fileInfo.relativePath失败 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_invalid_arg)); + auto result = ability->GetFileInfoFromUri(selectFile, fileInfo); + EXPECT_EQ(result, ERR_OK); + + // 模拟获取fileInfo.fileName失败 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_invalid_arg)); + result = ability->GetFileInfoFromUri(selectFile, fileInfo); + EXPECT_EQ(result, ERR_OK); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; + } + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_GetFileInfoFromUri_0002"; +} + +/** + * @tc.number: user_file_service_js_file_access_ext_ability_GetFileInfoFromUri_0003 + * @tc.name: js_file_access_ext_ability_GetFileInfoFromUri_0003 + * @tc.desc: Test function of GetFileInfoFromUri interface for fileInfo.mode failure/success branch. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 3 + * @tc.require: issuesI8ZE8T + */ +HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_GetFileInfoFromUri_0003, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_GetFileInfoFromUri_0003"; + try { + napi_value rslt = nullptr; + Uri selectFile(""); + FileInfo fileInfo; + + // 模拟获取fileInfo.mode失败 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_invalid_arg)); + EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)); + auto result = ability->GetFileInfoFromUri(selectFile, fileInfo); + EXPECT_EQ(result, ERR_OK); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; + } + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_GetFileInfoFromUri_0003"; +} + +/** + * @tc.number: user_file_service_js_file_access_ext_ability_GetFileInfoFromUri_0004 + * @tc.name: js_file_access_ext_ability_GetFileInfoFromUri_0004 + * @tc.desc: Test function of GetFileInfoFromUri interface for fileInfo.size failure/success branch. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 3 + * @tc.require: issuesI8ZE8T + */ +HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_GetFileInfoFromUri_0004, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_GetFileInfoFromUri_0004"; + try { + napi_value rslt = nullptr; + Uri selectFile(""); + FileInfo fileInfo; + + // 模拟获取fileInfo.size失败 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_int64(_, _, _)).WillOnce(Return(napi_invalid_arg)); + auto result = ability->GetFileInfoFromUri(selectFile, fileInfo); + EXPECT_EQ(result, ERR_OK); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; + } + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_GetFileInfoFromUri_0004"; +} + +/** + * @tc.number: user_file_service_js_file_access_ext_ability_GetFileInfoFromUri_0005 + * @tc.name: js_file_access_ext_ability_GetFileInfoFromUri_0005 + * @tc.desc: Test function of GetFileInfoFromUri interface for fileInfo.mtime failure/success branch. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 3 + * @tc.require: issuesI8ZE8T + */ +HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_GetFileInfoFromUri_0005, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_GetFileInfoFromUri_0005"; + try { + napi_value rslt = nullptr; + Uri selectFile(""); + FileInfo fileInfo; + + // 模拟获取fileInfo.size失败 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_int64(_, _, _)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_invalid_arg)); + auto result = ability->GetFileInfoFromUri(selectFile, fileInfo); + EXPECT_EQ(result, ERR_OK); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; + } + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_GetFileInfoFromUri_0005"; +} + +/** + * @tc.number: user_file_service_js_file_access_ext_ability_GetFileInfoFromUri_0006 + * @tc.name: js_file_access_ext_ability_GetFileInfoFromUri_0006 + * @tc.desc: Test function of GetFileInfoFromUri interface for fileInfo.mimeType failure/success branch. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 3 + * @tc.require: issuesI8ZE8T + */ +HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_GetFileInfoFromUri_0006, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_GetFileInfoFromUri_0006"; + try { + napi_value rslt = nullptr; + Uri selectFile(""); + FileInfo fileInfo; + + // 模拟获取fileInfo.mimeType失败 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_invalid_arg)); + EXPECT_CALL(*insMoc, napi_get_value_int64(_, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)); + auto result = ability->GetFileInfoFromUri(selectFile, fileInfo); + EXPECT_EQ(result, ERR_OK); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; + } + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_GetFileInfoFromUri_0006"; +} + +/** + * @tc.number: user_file_service_js_file_access_ext_ability_GetFileInfoFromUri_0007 + * @tc.name: js_file_access_ext_ability_GetFileInfoFromUri_0007 + * @tc.desc: Test function of GetFileInfoFromUri interface for CallJsMethod and value->code failure/success branch. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 3 + * @tc.require: issuesI8ZE8T + */ +HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_GetFileInfoFromUri_0007, testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_GetFileInfoFromUri_0007"; + try { + int status = napi_invalid_arg; + napi_value rslt = nullptr; + Uri selectFile(""); + FileInfo fileInfo; + + // 模拟调用CallJsMethod失败 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_invalid_arg)); + auto result = ability->GetFileInfoFromUri(selectFile, fileInfo); + EXPECT_EQ(result, EINVAL); + + // 模拟获取value->code失败 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)) + .WillOnce(DoAll(SetArgPointee(status), Return(napi_ok))).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_int64(_, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)); + result = ability->GetFileInfoFromUri(selectFile, fileInfo); + EXPECT_EQ(result, napi_invalid_arg); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; + } + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_GetFileInfoFromUri_0007"; +} + +/** + * @tc.number: user_file_service_js_file_access_ext_ability_GetFileInfoFromRelativePath_0000 + * @tc.name: js_file_access_ext_ability_GetFileInfoFromRelativePath_0000 + * @tc.desc: Test function of GetFileInfoFromRelativePath interface for nativePath and value->code + * failure/success branch. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 3 + * @tc.require: issuesI8ZE8T + */ +HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_GetFileInfoFromRelativePath_0000, + testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_GetFileInfoFromRelativePath_0000"; + try { + napi_value rslt = nullptr; + string selectFileRealtivePath; + FileInfo fileInfo; + + // 模拟获取nativePath为空 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)).WillOnce(Return(napi_ok)); + auto result = ability->GetFileInfoFromRelativePath(selectFileRealtivePath, fileInfo); + EXPECT_EQ(result, ERR_OK); + + // 模拟获取code失败 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_invalid_arg)); + result = ability->GetFileInfoFromRelativePath(selectFileRealtivePath, fileInfo); + EXPECT_EQ(result, ERR_OK); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; + } + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_GetFileInfoFromRelativePath_0000"; +} + +/** + * @tc.number: user_file_service_js_file_access_ext_ability_GetFileInfoFromRelativePath_0001 + * @tc.name: js_file_access_ext_ability_GetFileInfoFromRelativePath_0001 + * @tc.desc: Test function of GetFileInfoFromRelativePath interface for fileInfo and fileInfo.uri + * failure/success branch. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 3 + * @tc.require: issuesI8ZE8T + */ +HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_GetFileInfoFromRelativePath_0001, + testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_GetFileInfoFromRelativePath_0001"; + try { + napi_value rslt = nullptr; + string selectFileRealtivePath; + FileInfo fileInfo; + + // 模拟获取fileInfo失败 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_invalid_arg)); + EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok)); + auto result = ability->GetFileInfoFromRelativePath(selectFileRealtivePath, fileInfo); + EXPECT_EQ(result, ERR_OK); + + // 模拟获取fileInfo.uri失败 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_invalid_arg)); + result = ability->GetFileInfoFromRelativePath(selectFileRealtivePath, fileInfo); + EXPECT_EQ(result, ERR_OK); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; + } + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_GetFileInfoFromRelativePath_0001"; +} + +/** + * @tc.number: user_file_service_js_file_access_ext_ability_GetFileInfoFromRelativePath_0002 + * @tc.name: js_file_access_ext_ability_GetFileInfoFromRelativePath_0002 + * @tc.desc: Test function of GetFileInfoFromRelativePath interface for fileInfo.relativePath and fileInfo.fileName + * failure/success branch. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 3 + * @tc.require: issuesI8ZE8T + */ +HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_GetFileInfoFromRelativePath_0002, + testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_GetFileInfoFromRelativePath_0002"; + try { + napi_value rslt = nullptr; + string selectFileRealtivePath; + FileInfo fileInfo; + + // 模拟获取fileInfo.relativePath失败 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_invalid_arg)); + auto result = ability->GetFileInfoFromRelativePath(selectFileRealtivePath, fileInfo); + EXPECT_EQ(result, ERR_OK); + + // 模拟获取fileInfo.fileName失败 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_invalid_arg)); + result = ability->GetFileInfoFromRelativePath(selectFileRealtivePath, fileInfo); + EXPECT_EQ(result, ERR_OK); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; + } + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_GetFileInfoFromRelativePath_0002"; +} + +/** + * @tc.number: user_file_service_js_file_access_ext_ability_GetFileInfoFromRelativePath_0003 + * @tc.name: js_file_access_ext_ability_GetFileInfoFromRelativePath_0003 + * @tc.desc: Test function of GetFileInfoFromRelativePath interface for fileInfo.mode failure/success branch. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 3 + * @tc.require: issuesI8ZE8T + */ +HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_GetFileInfoFromRelativePath_0003, + testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_GetFileInfoFromRelativePath_0003"; + try { + napi_value rslt = nullptr; + string selectFileRealtivePath; + FileInfo fileInfo; + + // 模拟获取fileInfo.mode失败 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_invalid_arg)); + EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)); + auto result = ability->GetFileInfoFromRelativePath(selectFileRealtivePath, fileInfo); + EXPECT_EQ(result, ERR_OK); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; + } + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_GetFileInfoFromRelativePath_0003"; +} + +/** + * @tc.number: user_file_service_js_file_access_ext_ability_GetFileInfoFromRelativePath_0004 + * @tc.name: js_file_access_ext_ability_GetFileInfoFromRelativePath_0004 + * @tc.desc: Test function of GetFileInfoFromRelativePath interface for fileInfo.size failure/success branch. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 3 + * @tc.require: issuesI8ZE8T + */ +HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_GetFileInfoFromRelativePath_0004, + testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_GetFileInfoFromRelativePath_0004"; + try { + napi_value rslt = nullptr; + string selectFileRealtivePath; + FileInfo fileInfo; + + // 模拟获取fileInfo.size失败 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_int64(_, _, _)).WillOnce(Return(napi_invalid_arg)); + auto result = ability->GetFileInfoFromRelativePath(selectFileRealtivePath, fileInfo); + EXPECT_EQ(result, ERR_OK); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; + } + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_GetFileInfoFromRelativePath_0004"; +} + +/** + * @tc.number: user_file_service_js_file_access_ext_ability_GetFileInfoFromRelativePath_0005 + * @tc.name: js_file_access_ext_ability_GetFileInfoFromRelativePath_0005 + * @tc.desc: Test function of GetFileInfoFromRelativePath interface for fileInfo.mtime failure/success branch. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 3 + * @tc.require: issuesI8ZE8T + */ +HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_GetFileInfoFromRelativePath_0005, + testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_GetFileInfoFromRelativePath_0005"; + try { + napi_value rslt = nullptr; + string selectFileRealtivePath; + FileInfo fileInfo; + + // 模拟获取fileInfo.size失败 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_int64(_, _, _)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_invalid_arg)); + auto result = ability->GetFileInfoFromRelativePath(selectFileRealtivePath, fileInfo); + EXPECT_EQ(result, ERR_OK); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; + } + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_GetFileInfoFromRelativePath_0005"; +} + +/** + * @tc.number: user_file_service_js_file_access_ext_ability_GetFileInfoFromRelativePath_0006 + * @tc.name: js_file_access_ext_ability_GetFileInfoFromRelativePath_0006 + * @tc.desc: Test function of GetFileInfoFromRelativePath interface for fileInfo.mimeType failure/success branch. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 3 + * @tc.require: issuesI8ZE8T + */ +HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_GetFileInfoFromRelativePath_0006, + testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_GetFileInfoFromRelativePath_0006"; + try { + napi_value rslt = nullptr; + string selectFileRealtivePath; + FileInfo fileInfo; + + // 模拟获取fileInfo.mimeType失败 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_invalid_arg)); + EXPECT_CALL(*insMoc, napi_get_value_int64(_, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)); + auto result = ability->GetFileInfoFromRelativePath(selectFileRealtivePath, fileInfo); + EXPECT_EQ(result, ERR_OK); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; + } + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_GetFileInfoFromRelativePath_0006"; +} + +/** + * @tc.number: user_file_service_js_file_access_ext_ability_GetFileInfoFromRelativePath_0007 + * @tc.name: js_file_access_ext_ability_GetFileInfoFromRelativePath_0007 + * @tc.desc: Test function of GetFileInfoFromRelativePath interface for CallJsMethod and value->code + * failure/success branch. + * @tc.size: MEDIUM + * @tc.type: FUNC + * @tc.level Level 3 + * @tc.require: issuesI8ZE8T + */ +HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_GetFileInfoFromRelativePath_0007, + testing::ext::TestSize.Level1) +{ + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-begin js_file_access_ext_ability_GetFileInfoFromRelativePath_0007"; + try { + int status = napi_invalid_arg; + napi_value rslt = nullptr; + string selectFileRealtivePath; + FileInfo fileInfo; + + // 模拟调用CallJsMethod失败 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_invalid_arg)); + auto result = ability->GetFileInfoFromRelativePath(selectFileRealtivePath, fileInfo); + EXPECT_EQ(result, EINVAL); + + // 模拟获取value->code失败 + EXPECT_CALL(*insMoc, napi_get_uv_event_loop(_, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, uv_queue_work(_, _, _, _)).WillOnce(Return(0)); + EXPECT_CALL(*insMoc, napi_create_string_utf8(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_reference_value(_, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_get_named_property(_, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_call_function(_, _, _, _, _, _)) + .WillOnce(DoAll(SetArgPointee(reinterpret_cast(&rslt)), Return(napi_ok))); + EXPECT_CALL(*insMoc, napi_escape_handle(_, _, _, _)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)) + .WillOnce(DoAll(SetArgPointee(status), Return(napi_ok))).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_string_utf8(_, _, _, _, _)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)) + .WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)); + EXPECT_CALL(*insMoc, napi_get_value_int64(_, _, _)).WillOnce(Return(napi_ok)).WillOnce(Return(napi_ok)); + result = ability->GetFileInfoFromRelativePath(selectFileRealtivePath, fileInfo); + EXPECT_EQ(result, napi_invalid_arg); + } catch (...) { + EXPECT_TRUE(false); + GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; + } + GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_GetFileInfoFromRelativePath_0007"; +} \ No newline at end of file diff --git a/test/unittest/js_file_access_ext_ability_test.cpp b/test/unittest/js_file_access_ext_ability_test.cpp index c8329864..6cf813be 100644 --- a/test/unittest/js_file_access_ext_ability_test.cpp +++ b/test/unittest/js_file_access_ext_ability_test.cpp @@ -31,6 +31,7 @@ namespace OHOS::FileAccessFwk { using namespace std; using namespace testing; using namespace testing::ext; +const int ARG_INDEX_FIRST = 1; const int ARG_INDEX_SECOND = 2; const int ARG_INDEX_THIRD = 3; const int ARG_INDEX_FOUR = 4; @@ -159,6 +160,7 @@ HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_CallObjectMethod result = ability->CallObjectMethod(nullptr, nullptr, 0); EXPECT_TRUE(result == nullptr); } catch (...) { + EXPECT_TRUE(false); GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; } GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_CallObjectMethod_0000"; @@ -197,6 +199,7 @@ HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_CallJsMethod_000 result = ability->CallJsMethod(funcNameIn, *jsRuntime, jsObj, argParser, retParser); EXPECT_EQ(result, ERR_OK); } catch (...) { + EXPECT_TRUE(false); GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; } GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_CallJsMethod_0000"; @@ -251,6 +254,7 @@ HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_DoCallJsMethod_0 result = ability->CallJsMethod(funcNameIn, *jsRuntime, jsObj, argParser, retParser); EXPECT_EQ(result, EINVAL); } catch (...) { + EXPECT_TRUE(false); GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; } GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_DoCallJsMethod_0000"; @@ -298,6 +302,7 @@ HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_DoCallJsMethod_0 result = ability->CallJsMethod(funcNameIn, *jsRuntime, jsObj, argParser, retParser); EXPECT_EQ(result, EINVAL); } catch (...) { + EXPECT_TRUE(false); GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; } GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_DoCallJsMethod_0001"; @@ -324,6 +329,7 @@ HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_OpenFile_0000, t auto result = ability->OpenFile(uri, 0, fd); EXPECT_EQ(result, EINVAL); } catch (...) { + EXPECT_TRUE(false); GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; } GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_OpenFile_0000"; @@ -364,6 +370,7 @@ HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_OpenFile_0001, t result = ability->OpenFile(uri, 0, fd); EXPECT_EQ(result, ERR_OK); } catch (...) { + EXPECT_TRUE(false); GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; } GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_OpenFile_0001"; @@ -480,6 +487,7 @@ HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_OpenFile_0002, t result = ability->OpenFile(uri, 0, fd); EXPECT_EQ(result, E_GETRESULT); } catch (...) { + EXPECT_TRUE(false); GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; } GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_OpenFile_0002"; @@ -513,6 +521,7 @@ HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_OpenFile_0003, t auto result = ability->OpenFile(uri, 0, fd); EXPECT_EQ(result, ERR_OK); } catch (...) { + EXPECT_TRUE(false); GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; } GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_OpenFile_0003"; @@ -540,6 +549,7 @@ HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_CreateFile_0000, auto result = ability->CreateFile(parent, displayName, newFile); EXPECT_EQ(result, EINVAL); } catch (...) { + EXPECT_TRUE(false); GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; } GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_CreateFile_0000"; @@ -580,6 +590,7 @@ HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_CreateFile_0001, result = ability->CreateFile(parent, displayName, newFile); EXPECT_EQ(result, E_GETRESULT); } catch (...) { + EXPECT_TRUE(false); GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; } GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_CreateFile_0001"; @@ -626,6 +637,7 @@ HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_CreateFile_0002, result = ability->CreateFile(parent, displayName, newFile); EXPECT_EQ(result, E_GETRESULT); } catch (...) { + EXPECT_TRUE(false); GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; } GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_CreateFile_0002"; @@ -656,6 +668,7 @@ HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_CreateFile_0003, auto result = ability->CreateFile(parent, displayName, newFile); EXPECT_EQ(result, ERR_OK); } catch (...) { + EXPECT_TRUE(false); GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; } GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_CreateFile_0003"; @@ -683,6 +696,7 @@ HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Mkdir_0000, test auto result = ability->Mkdir(parent, displayName, newFile); EXPECT_EQ(result, EINVAL); } catch (...) { + EXPECT_TRUE(false); GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; } GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Mkdir_0000"; @@ -723,6 +737,7 @@ HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Mkdir_0001, test result = ability->Mkdir(parent, displayName, newFile); EXPECT_EQ(result, E_GETRESULT); } catch (...) { + EXPECT_TRUE(false); GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; } GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Mkdir_0001"; @@ -768,6 +783,7 @@ HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Mkdir_0002, test result = ability->Mkdir(parent, displayName, newFile); EXPECT_EQ(result, E_GETRESULT); } catch (...) { + EXPECT_TRUE(false); GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; } GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Mkdir_0002"; @@ -798,6 +814,7 @@ HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Mkdir_0003, test auto result = ability->Mkdir(parent, displayName, newFile); EXPECT_EQ(result, ERR_OK); } catch (...) { + EXPECT_TRUE(false); GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; } GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Mkdir_0003"; @@ -823,6 +840,7 @@ HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Delete_0000, tes auto result = ability->Delete(sourceFile); EXPECT_EQ(result, EINVAL); } catch (...) { + EXPECT_TRUE(false); GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; } GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Delete_0000"; @@ -870,6 +888,7 @@ HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Delete_0001, tes result = ability->Delete(sourceFile); EXPECT_EQ(result, E_IPCS); } catch (...) { + EXPECT_TRUE(false); GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; } GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Delete_0001"; @@ -910,6 +929,7 @@ HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Delete_0002, tes auto result = ability->Delete(sourceFile); EXPECT_EQ(result, ERR_OK); } catch (...) { + EXPECT_TRUE(false); GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; } GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Delete_0002"; @@ -937,6 +957,7 @@ HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Move_0000, testi auto result = ability->Move(sourceFile, targetParent, newFile); EXPECT_EQ(result, EINVAL); } catch (...) { + EXPECT_TRUE(false); GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; } GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Move_0000"; @@ -977,6 +998,7 @@ HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Move_0001, testi result = ability->Move(sourceFile, targetParent, newFile); EXPECT_EQ(result, E_GETRESULT); } catch (...) { + EXPECT_TRUE(false); GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; } GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Move_0001"; @@ -1023,6 +1045,7 @@ HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Move_0002, testi result = ability->Move(sourceFile, targetParent, newFile); EXPECT_EQ(result, E_GETRESULT); } catch (...) { + EXPECT_TRUE(false); GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; } GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Move_0002"; @@ -1053,6 +1076,7 @@ HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Move_0003, testi auto result = ability->Move(sourceFile, targetParent, newFile); EXPECT_EQ(result, ERR_OK); } catch (...) { + EXPECT_TRUE(false); GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; } GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Move_0003"; @@ -1081,6 +1105,7 @@ HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Copy_0000, testi auto result = ability->Copy(sourceUri, destUri, copyResult, force); EXPECT_EQ(result, EXCEPTION); } catch (...) { + EXPECT_TRUE(false); GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; } GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Copy_0000"; @@ -1134,6 +1159,7 @@ HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Copy_0001, testi result = ability->Copy(sourceUri, destUri, copyResult, force); EXPECT_EQ(result, EXCEPTION); } catch (...) { + EXPECT_TRUE(false); GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; } GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Copy_0001"; @@ -1169,6 +1195,7 @@ HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Copy_0002, testi auto result = ability->Copy(sourceUri, destUri, copyResult, force); EXPECT_EQ(result, EXCEPTION); } catch (...) { + EXPECT_TRUE(false); GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; } GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Copy_0002"; @@ -1207,6 +1234,7 @@ HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Copy_0003, testi auto result = ability->Copy(sourceUri, destUri, copyResult, force); EXPECT_EQ(result, EXCEPTION); } catch (...) { + EXPECT_TRUE(false); GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; } GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Copy_0003"; @@ -1246,6 +1274,7 @@ HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Copy_0004, testi auto result = ability->Copy(sourceUri, destUri, copyResult, force); EXPECT_EQ(result, ERR_OK); } catch (...) { + EXPECT_TRUE(false); GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; } GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Copy_0004"; @@ -1286,6 +1315,7 @@ HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Copy_0005, testi auto result = ability->Copy(sourceUri, destUri, copyResult, force); EXPECT_EQ(result, E_IPCS); } catch (...) { + EXPECT_TRUE(false); GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; } GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Copy_0005"; @@ -1324,11 +1354,13 @@ HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Copy_0006, testi EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)) .WillOnce(DoAll(SetArgPointee(E_IPCS), Return(napi_ok))); EXPECT_CALL(*insMoc, napi_create_array(_, _)) - .WillRepeatedly(DoAll(SetArgPointee<1>(reinterpret_cast(&rslt)), Return(napi_ok))); + .WillRepeatedly(DoAll(SetArgPointee(reinterpret_cast(&rslt)), + Return(napi_ok))); EXPECT_CALL(*insMoc, napi_get_array_length(_, _, _)).WillOnce(Return(napi_invalid_arg)); auto result = ability->Copy(sourceUri, destUri, copyResult, force); EXPECT_EQ(result, E_IPCS); } catch (...) { + EXPECT_TRUE(false); GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; } GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Copy_0006"; @@ -1367,13 +1399,15 @@ HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Copy_0007, testi EXPECT_CALL(*insMoc, napi_get_value_int32(_, _, _)) .WillOnce(DoAll(SetArgPointee(E_IPCS), Return(napi_ok))); EXPECT_CALL(*insMoc, napi_create_array(_, _)) - .WillRepeatedly(DoAll(SetArgPointee<1>(reinterpret_cast(&rslt)), Return(napi_ok))); + .WillRepeatedly(DoAll(SetArgPointee(reinterpret_cast(&rslt)), + Return(napi_ok))); EXPECT_CALL(*insMoc, napi_get_array_length(_, _, _)) .WillOnce(DoAll(SetArgPointee(1), Return(napi_ok))); EXPECT_CALL(*insMoc, napi_get_element(_, _, _, _)).WillOnce(Return(napi_ok)); auto result = ability->Copy(sourceUri, destUri, copyResult, force); EXPECT_EQ(result, E_IPCS); } catch (...) { + EXPECT_TRUE(false); GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; } GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Copy_0007"; @@ -1402,6 +1436,7 @@ HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_CopyFile_0000, t auto result = ability->CopyFile(sourceUri, destUri, fileName, newFileUri); EXPECT_EQ(result, EINVAL); } catch (...) { + EXPECT_TRUE(false); GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; } GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_CopyFile_0000"; @@ -1455,6 +1490,7 @@ HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_CopyFile_0001, t result = ability->CopyFile(sourceUri, destUri, fileName, newFileUri); EXPECT_EQ(result, E_GETRESULT); } catch (...) { + EXPECT_TRUE(false); GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; } GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_CopyFile_0001"; @@ -1500,6 +1536,7 @@ HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_CopyFile_0002, t auto result = ability->CopyFile(sourceUri, destUri, fileName, newFileUri); EXPECT_EQ(result, E_GETRESULT); } catch (...) { + EXPECT_TRUE(false); GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; } GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_CopyFile_0002"; @@ -1548,6 +1585,7 @@ HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_CopyFile_0003, t auto result = ability->CopyFile(sourceUri, destUri, fileName, newFileUri); EXPECT_EQ(result, ERR_OK); } catch (...) { + EXPECT_TRUE(false); GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; } GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_CopyFile_0003"; @@ -1599,6 +1637,7 @@ HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_CopyFile_0004, t auto result = ability->CopyFile(sourceUri, destUri, fileName, newFileUri); EXPECT_EQ(result, E_IPCS); } catch (...) { + EXPECT_TRUE(false); GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; } GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_CopyFile_0004"; @@ -1636,6 +1675,7 @@ HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_CopyFile_0005, t auto result = ability->CopyFile(sourceUri, destUri, fileName, newFileUri); EXPECT_EQ(result, E_IPCS); } catch (...) { + EXPECT_TRUE(false); GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; } GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_CopyFile_0005"; @@ -1679,6 +1719,7 @@ HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_CopyFile_0006, t result = ability->CopyFile(sourceUri, destUri, fileName, newFileUri); EXPECT_EQ(result, E_GETRESULT); } catch (...) { + EXPECT_TRUE(false); GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; } GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_CopyFile_0006"; @@ -1714,6 +1755,7 @@ HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_CopyFile_0007, t auto result = ability->CopyFile(sourceUri, destUri, fileName, newFileUri); EXPECT_EQ(result, ERR_OK); } catch (...) { + EXPECT_TRUE(false); GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; } GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_CopyFile_0007"; @@ -1741,6 +1783,7 @@ HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Rename_0000, tes auto result = ability->Rename(sourceFile, displayName, newFile); EXPECT_EQ(result, EINVAL); } catch (...) { + EXPECT_TRUE(false); GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; } GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Rename_0000"; @@ -1781,6 +1824,7 @@ HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Rename_0001, tes result = ability->Rename(sourceFile, displayName, newFile); EXPECT_EQ(result, E_GETRESULT); } catch (...) { + EXPECT_TRUE(false); GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; } GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Rename_0001"; @@ -1826,6 +1870,7 @@ HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Rename_0002, tes result = ability->Rename(sourceFile, displayName, newFile); EXPECT_EQ(result, E_GETRESULT); } catch (...) { + EXPECT_TRUE(false); GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; } GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Rename_0002"; @@ -1856,8 +1901,11 @@ HWTEST_F(JsFileAccessExtAbilityTest, js_file_access_ext_ability_Rename_0003, tes auto result = ability->Rename(sourceFile, displayName, newFile); EXPECT_EQ(result, ERR_OK); } catch (...) { + EXPECT_TRUE(false); GTEST_LOG_(ERROR) << "JsFileAccessExtAbilityTest occurs an exception."; } GTEST_LOG_(INFO) << "JsFileAccessExtAbilityTest-end js_file_access_ext_ability_Rename_0003"; } + +#include "js_file_access_ext_ability_ex_test.cpp" } \ No newline at end of file diff --git a/test/unittest/mock/assistant.h b/test/unittest/mock/assistant.h index a859eb7c..4cbd278b 100644 --- a/test/unittest/mock/assistant.h +++ b/test/unittest/mock/assistant.h @@ -41,14 +41,21 @@ public: virtual napi_status napi_get_named_property(napi_env, napi_value, const char*, napi_value*) = 0; virtual int uv_queue_work(uv_loop_t*, uv_work_t*, uv_work_cb, uv_after_work_cb) = 0; virtual napi_status napi_get_value_int32(napi_env, napi_value, int32_t*) = 0; + virtual napi_status napi_get_value_int64(napi_env, napi_value, int64_t*) = 0; virtual napi_status napi_create_string_utf8(napi_env, const char*, size_t, napi_value*) = 0; virtual napi_status napi_create_int32(napi_env, int32_t, napi_value*) = 0; + virtual napi_status napi_create_int64(napi_env, int64_t, napi_value*) = 0; virtual napi_status napi_get_value_string_utf8(napi_env, napi_value, char*, size_t, size_t*) = 0; virtual napi_status napi_get_boolean(napi_env, bool, napi_value*) = 0; virtual napi_status napi_create_array(napi_env, napi_value*) = 0; virtual napi_status napi_get_array_length(napi_env, napi_value, uint32_t*) = 0; virtual napi_status napi_get_element(napi_env, napi_value, uint32_t, napi_value*) = 0; virtual napi_status napi_escape_handle(napi_env, napi_escapable_handle_scope, napi_value, napi_value*) = 0; + virtual napi_status napi_get_null(napi_env, napi_value*) = 0; + virtual napi_status napi_create_object(napi_env, napi_value*) = 0; + virtual napi_status napi_create_array_with_length(napi_env, size_t, napi_value*) = 0; + virtual napi_status napi_create_double(napi_env, double, napi_value*) = 0; + virtual napi_status napi_set_named_property(napi_env, napi_value, const char*, napi_value) = 0; public: static inline std::shared_ptr ins_ = nullptr; }; @@ -65,14 +72,21 @@ public: MOCK_METHOD4(napi_get_named_property, napi_status(napi_env, napi_value, const char*, napi_value*)); MOCK_METHOD4(uv_queue_work, int(uv_loop_t*, uv_work_t*, uv_work_cb, uv_after_work_cb)); MOCK_METHOD3(napi_get_value_int32, napi_status(napi_env, napi_value, int32_t*)); + MOCK_METHOD3(napi_get_value_int64, napi_status(napi_env, napi_value, int64_t*)); MOCK_METHOD4(napi_create_string_utf8, napi_status(napi_env, const char*, size_t, napi_value*)); MOCK_METHOD3(napi_create_int32, napi_status(napi_env, int32_t, napi_value*)); + MOCK_METHOD3(napi_create_int64, napi_status(napi_env, int64_t, napi_value*)); MOCK_METHOD5(napi_get_value_string_utf8, napi_status(napi_env, napi_value, char*, size_t, size_t*)); MOCK_METHOD3(napi_get_boolean, napi_status(napi_env, bool, napi_value*)); MOCK_METHOD2(napi_create_array, napi_status(napi_env, napi_value*)); MOCK_METHOD3(napi_get_array_length, napi_status(napi_env, napi_value, uint32_t*)); MOCK_METHOD4(napi_get_element, napi_status(napi_env, napi_value, uint32_t, napi_value*)); MOCK_METHOD4(napi_escape_handle, napi_status(napi_env, napi_escapable_handle_scope, napi_value, napi_value*)); + MOCK_METHOD2(napi_get_null, napi_status(napi_env, napi_value*)); + MOCK_METHOD2(napi_create_object, napi_status(napi_env, napi_value*)); + MOCK_METHOD3(napi_create_array_with_length, napi_status(napi_env, size_t, napi_value*)); + MOCK_METHOD3(napi_create_double, napi_status(napi_env, double, napi_value*)); + MOCK_METHOD4(napi_set_named_property, napi_status(napi_env, napi_value, const char*, napi_value)); }; } // End of namespace FileAccessFwk diff --git a/test/unittest/mock/js_native_api_mock.cpp b/test/unittest/mock/js_native_api_mock.cpp index 366f1b0d..039aeb46 100644 --- a/test/unittest/mock/js_native_api_mock.cpp +++ b/test/unittest/mock/js_native_api_mock.cpp @@ -53,6 +53,11 @@ napi_status napi_get_value_int32(napi_env env, napi_value value, int32_t* result return OHOS::FileAccessFwk::Assistant::ins_->napi_get_value_int32(env, value, result); } +napi_status napi_get_value_int64(napi_env env, napi_value value, int64_t* result) +{ + return OHOS::FileAccessFwk::Assistant::ins_->napi_get_value_int64(env, value, result); +} + napi_status napi_create_string_utf8(napi_env env, const char* str, size_t length, napi_value* result) { return OHOS::FileAccessFwk::Assistant::ins_->napi_create_string_utf8(env, str, length, result); @@ -63,6 +68,11 @@ napi_status napi_create_int32(napi_env env, int32_t value, napi_value* result) return OHOS::FileAccessFwk::Assistant::ins_->napi_create_int32(env, value, result); } +napi_status napi_create_int64(napi_env env, int64_t value, napi_value* result) +{ + return OHOS::FileAccessFwk::Assistant::ins_->napi_create_int64(env, value, result); +} + napi_status napi_get_value_string_utf8(napi_env env, napi_value value, char* buf, size_t bufsize, size_t* result) { return OHOS::FileAccessFwk::Assistant::ins_->napi_get_value_string_utf8(env, value, buf, bufsize, result); @@ -91,4 +101,29 @@ napi_status napi_get_element(napi_env env, napi_value object, uint32_t index, na napi_status napi_escape_handle(napi_env env, napi_escapable_handle_scope scope, napi_value escapee, napi_value* result) { return OHOS::FileAccessFwk::Assistant::ins_->napi_escape_handle(env, scope, escapee, result); +} + +napi_status napi_get_null(napi_env env, napi_value* result) +{ + return OHOS::FileAccessFwk::Assistant::ins_->napi_get_null(env, result); +} + +napi_status napi_create_object(napi_env env, napi_value* result) +{ + return OHOS::FileAccessFwk::Assistant::ins_->napi_create_object(env, result); +} + +napi_status napi_create_array_with_length(napi_env env, size_t length, napi_value* result) +{ + return OHOS::FileAccessFwk::Assistant::ins_->napi_create_array_with_length(env, length, result); +} + +napi_status napi_create_double(napi_env env, double value, napi_value* result) +{ + return OHOS::FileAccessFwk::Assistant::ins_->napi_create_double(env, value, result); +} + +napi_status napi_set_named_property(napi_env env, napi_value object, const char* utf8Name, napi_value value) +{ + return OHOS::FileAccessFwk::Assistant::ins_->napi_set_named_property(env, object, utf8Name, value); } \ No newline at end of file -- Gitee