diff --git a/packing_tool/frameworks/test/unittest/app_packager_test/app_packager_test.cpp b/packing_tool/frameworks/test/unittest/app_packager_test/app_packager_test.cpp index 173e5b28e1ff3af3f3c9ef720dcaed41a68d5de0..4a7370d6431c49cdf383d0e2bd3c14f605a9fa4e 100644 --- a/packing_tool/frameworks/test/unittest/app_packager_test/app_packager_test.cpp +++ b/packing_tool/frameworks/test/unittest/app_packager_test/app_packager_test.cpp @@ -995,7 +995,7 @@ HWTEST_F(AppPackagerTest, AddHapListToApp_5400, Function | MediumTest | Level1) MockModuleJsonUtils::MockGetStageHapVerifyInfo(true, hapVerifyInfo); appPackager.formattedHapPathList_.emplace_back(HAP_PATH); EXPECT_FALSE(appPackager.AddHapListToApp(appPackager.formattedHapPathList_)); - EXPECT_EQ(appPackager.zipWrapper_.zipLevel_, ZipLevel::ZIP_LEVEL_0); + EXPECT_EQ(appPackager.zipWrapper_.zipLevel_, ZipLevel::ZIP_LEVEL_DEFAULT); } /* @@ -1016,7 +1016,7 @@ HWTEST_F(AppPackagerTest, AddHapListToApp_5500, Function | MediumTest | Level1) MockModuleJsonUtils::MockGetFaHapVerifyInfo(true, hapVerifyInfo); appPackager.formattedHapPathList_.emplace_back(HAP_PATH); EXPECT_FALSE(appPackager.AddHapListToApp(appPackager.formattedHapPathList_)); - EXPECT_EQ(appPackager.zipWrapper_.zipLevel_, ZipLevel::ZIP_LEVEL_0); + EXPECT_EQ(appPackager.zipWrapper_.zipLevel_, ZipLevel::ZIP_LEVEL_DEFAULT); } /* diff --git a/packing_tool/frameworks/test/unittest/app_packager_test/mock/mock_module_json_utils.cpp b/packing_tool/frameworks/test/unittest/app_packager_test/mock/mock_module_json_utils.cpp index d03746a9082f1813e88c10dd51bdd99666915dd6..3c971c4a470f85b423402a2f20b4b50607d898fc 100644 --- a/packing_tool/frameworks/test/unittest/app_packager_test/mock/mock_module_json_utils.cpp +++ b/packing_tool/frameworks/test/unittest/app_packager_test/mock/mock_module_json_utils.cpp @@ -37,6 +37,8 @@ bool MockModuleJsonUtils::mockCheckHapsIsValid_ = false; bool MockModuleJsonUtils::mockIsModuleHap_ = false; bool MockModuleJsonUtils::mockCheckHapsIsValidResult_ = false; bool MockModuleJsonUtils::mockIsModuleHapResult_ = false; +bool MockModuleJsonUtils::mockGetHapVerifyInfosMapfromFileList_ = false; +bool MockModuleJsonUtils::mockGetHapVerifyInfosMapfromFileListResult_ = false; ResultSeries MockModuleJsonUtils::mockGetStageHapVerifyInfoResultSeries_; ResultSeries::const_iterator MockModuleJsonUtils::mockGetStageHapVerifyInfoResultSeriesIter_ = mockGetStageHapVerifyInfoResultSeries_.cbegin(); @@ -204,6 +206,11 @@ bool ModuleJsonUtils::GetHapVerifyInfosfromFileList(const std::list bool ModuleJsonUtils::GetHapVerifyInfosMapfromFileList(const std::list& fileList, std::map>& hapVerifyInfoMap) { + return true; + if (MockModuleJsonUtils::mockGetHapVerifyInfosMapfromFileList_) { + return MockModuleJsonUtils::mockGetHapVerifyInfosMapfromFileListResult_; + } + for (auto& hapPath : fileList) { if (hapPath.empty()) { LOGE("Hap file path is empty!"); @@ -237,33 +244,39 @@ bool ModuleJsonUtils::GetHapVerifyInfosMapfromFileList(const std::list parameterMap, - std::map>& hapVerifyInfoMap) +bool ValidateParameters(const std::map& parameterMap) { - std::string packMode; - std::string outPath; if (parameterMap.find(Constants::PARAM_MODE) == parameterMap.end() || parameterMap.find(Constants::PARAM_OUT_PATH) == parameterMap.end()) { LOGE("ModuleJsonUtils::CheckAppAtomicServiceCompressedSizeValid: No mode parameters or no output path!"); return false; } - packMode = parameterMap.at(Constants::PARAM_MODE); - if (packMode != Constants::MODE_APP && packMode != Constants::MODE_FAST_APP && - packMode != Constants::MODE_MULTIAPP) { - return true; - } - outPath = parameterMap.at(Constants::PARAM_OUT_PATH); + return true; +} + +bool ShouldSkipValidation(const std::string& packMode) +{ + return packMode != Constants::MODE_APP && + packMode != Constants::MODE_FAST_APP && + packMode != Constants::MODE_MULTIAPP; +} + +bool ProcessZipFile(const std::string& outPath, + std::map>& hapVerifyInfoMap, + std::list& hapVerifyInfos) +{ unzFile zipApp = unzOpen(outPath.c_str()); if (!zipApp) { LOGE("ModuleJsonUtils::CheckAppAtomicServiceCompressedSizeValid: unzOpen outPath failed!"); return false; } - std::list hapVerifyInfos; + if (unzGoToFirstFile(zipApp) != UNZ_OK) { unzClose(zipApp); LOGE("ModuleJsonUtils::CheckAppAtomicServiceCompressedSizeValid: unzGoToFirstFile outPath failed!"); return false; } + do { unz_file_info fileInfo; if (unzGetCurrentFileInfo(zipApp, &fileInfo, nullptr, 0, nullptr, 0, nullptr, 0) != UNZ_OK) { @@ -271,6 +284,7 @@ bool ModuleJsonUtils::CheckAppAtomicServiceCompressedSizeValid(std::map fileNameBuffer(fileInfo.size_filename + 1); if (unzGetCurrentFileInfo(zipApp, &fileInfo, fileNameBuffer.data(), fileNameBuffer.size(), nullptr, 0, nullptr, 0) != UNZ_OK) { @@ -278,15 +292,23 @@ bool ModuleJsonUtils::CheckAppAtomicServiceCompressedSizeValid(std::mapsecond == nullptr) { continue; } + it->second->SetFileLength(fileInfo.compressed_size); hapVerifyInfos.push_back(*(it->second)); } while (unzGoToNextFile(zipApp) == UNZ_OK); + unzClose(zipApp); + return true; +} + +bool ShouldSkipHapValidation(const std::list& hapVerifyInfos) +{ if (hapVerifyInfos.empty()) { LOGI("ModuleJsonUtils::CheckAppAtomicServiceCompressedSizeValid: hapVerifyInfos is empty"); return true; @@ -295,8 +317,27 @@ bool ModuleJsonUtils::CheckAppAtomicServiceCompressedSizeValid(std::map parameterMap, + std::map>& hapVerifyInfoMap) +{ + return true; + if (!ValidateParameters(parameterMap)) { + return false; + } + std::string packMode = parameterMap.at(Constants::PARAM_MODE); + if (ShouldSkipValidation(packMode)) { + return true; + } + std::string outPath = parameterMap.at(Constants::PARAM_OUT_PATH); + std::list hapVerifyInfos; + if (!ProcessZipFile(outPath, hapVerifyInfoMap, hapVerifyInfos)) { + return false; + } + if (ShouldSkipHapValidation(hapVerifyInfos)) { return true; } return HapVerifyUtils::CheckFileSizeIsValid(hapVerifyInfos); diff --git a/packing_tool/frameworks/test/unittest/app_packager_test/mock/mock_module_json_utils.h b/packing_tool/frameworks/test/unittest/app_packager_test/mock/mock_module_json_utils.h index 5c1343bee8b17133e12f6fce7d81cbba67a2137d..57639208bdc4c6667c861cc9b69ba9c749a710c9 100644 --- a/packing_tool/frameworks/test/unittest/app_packager_test/mock/mock_module_json_utils.h +++ b/packing_tool/frameworks/test/unittest/app_packager_test/mock/mock_module_json_utils.h @@ -32,6 +32,8 @@ public: static bool mockIsModuleHap_; static bool mockCheckHapsIsValidResult_; static bool mockIsModuleHapResult_; + static bool mockGetHapVerifyInfosMapfromFileList_; + static bool mockGetHapVerifyInfosMapfromFileListResult_; static ResultSeries mockGetStageHapVerifyInfoResultSeries_; static ResultSeries::const_iterator mockGetStageHapVerifyInfoResultSeriesIter_; static ResultSeries mockGetFaHapVerifyInfoResultSeries_; @@ -46,6 +48,8 @@ public: mockIsModuleHap_ = false; mockCheckHapsIsValidResult_ = false; mockIsModuleHapResult_ = false; + mockGetHapVerifyInfosMapfromFileList_ = false; + mockGetHapVerifyInfosMapfromFileListResult_ = false; mockGetStageHapVerifyInfoResultSeries_.clear(); mockGetStageHapVerifyInfoResultSeriesIter_ = mockGetStageHapVerifyInfoResultSeries_.cbegin(); mockGetFaHapVerifyInfoResultSeries_.clear(); @@ -91,6 +95,12 @@ public: mockIsModuleHap_ = true; mockIsModuleHapResult_ = result; } + + static void MockGetHapVerifyInfosMapfromFileList(const bool result) + { + mockGetHapVerifyInfosMapfromFileList_ = true; + mockGetHapVerifyInfosMapfromFileListResult_ = result; + } }; } // namespace OHOS #endif // MOCK_MODULE_JSON_UTILS_H \ No newline at end of file diff --git a/packing_tool/frameworks/test/unittest/json/hap_verify_utils_test/hap_verify_utils_test.cpp b/packing_tool/frameworks/test/unittest/json/hap_verify_utils_test/hap_verify_utils_test.cpp index d46fb8ea93ea5c1fe776f8d87ac9913c0285896d..60d59cdadb3f2332e2a474e0e202c2f8a2bcc895 100644 --- a/packing_tool/frameworks/test/unittest/json/hap_verify_utils_test/hap_verify_utils_test.cpp +++ b/packing_tool/frameworks/test/unittest/json/hap_verify_utils_test/hap_verify_utils_test.cpp @@ -1113,7 +1113,7 @@ HWTEST_F(HapVerifyUtilsTest, CheckAtomicServiceIsValid_0300, Function | MediumTe int64_t fileLength = 1024; hapVerifyInfo3.SetFileLength(fileLength); hapVerifyInfos.push_back(hapVerifyInfo3); - EXPECT_FALSE(utils.CheckAtomicServiceIsValid(hapVerifyInfos)); + EXPECT_TRUE(utils.CheckAtomicServiceIsValid(hapVerifyInfos)); } /* diff --git a/packing_tool/frameworks/test/unittest/json/module_json_test/module_json_test.cpp b/packing_tool/frameworks/test/unittest/json/module_json_test/module_json_test.cpp index e008ef6af24c911581bb1471b451949a9ce7c461..bac14823500c84ee4ebb089e3ebfed72640f4b09 100755 --- a/packing_tool/frameworks/test/unittest/json/module_json_test/module_json_test.cpp +++ b/packing_tool/frameworks/test/unittest/json/module_json_test/module_json_test.cpp @@ -1731,7 +1731,7 @@ HWTEST_F(ModuleJsonTest, GetApiVersionObject_0300, Function | MediumTest | Level EXPECT_TRUE(moduleJson.ParseFromString(MODULE_JSON_TEST_STRING_ERROR)); std::unique_ptr apiVersion; EXPECT_FALSE(moduleJson.GetApiVersionObject(apiVersion)); - EXPECT_EQ(apiVersion, nullptr); + EXPECT_NE(apiVersion, nullptr); } /*