17c804472Sopenharmony_ci/* 27c804472Sopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd. 37c804472Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 47c804472Sopenharmony_ci * you may not use this file except in compliance with the License. 57c804472Sopenharmony_ci * You may obtain a copy of the License at 67c804472Sopenharmony_ci * 77c804472Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 87c804472Sopenharmony_ci * 97c804472Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 107c804472Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 117c804472Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 127c804472Sopenharmony_ci * See the License for the specific language governing permissions and 137c804472Sopenharmony_ci * limitations under the License. 147c804472Sopenharmony_ci */ 157c804472Sopenharmony_ci 167c804472Sopenharmony_ci#include <map> 177c804472Sopenharmony_ci#include <string> 187c804472Sopenharmony_ci#include <iostream> 197c804472Sopenharmony_ci#include <fstream> 207c804472Sopenharmony_ci#include <filesystem> 217c804472Sopenharmony_ci#include "cJSON.h" 227c804472Sopenharmony_ci#include <gtest/gtest.h> 237c804472Sopenharmony_ci#include "secodeFuzz.h" 247c804472Sopenharmony_ci#include "StageContext.h" 257c804472Sopenharmony_ci#include "common.h" 267c804472Sopenharmony_ci#include "ChangeJsonUtil.h" 277c804472Sopenharmony_ci#define private public 287c804472Sopenharmony_ci#include "CommandParser.h" 297c804472Sopenharmony_ciusing namespace fuzztest; 307c804472Sopenharmony_ci 317c804472Sopenharmony_cinamespace { 327c804472Sopenharmony_cistd::string g_moduleJsonNoModule = R"({ 337c804472Sopenharmony_ci "app" : 347c804472Sopenharmony_ci { 357c804472Sopenharmony_ci "apiReleaseType" : "Beta1" 367c804472Sopenharmony_ci } 377c804472Sopenharmony_ci})"; 387c804472Sopenharmony_ci 397c804472Sopenharmony_cistd::string g_moduleJsonNoModuleName = R"({ 407c804472Sopenharmony_ci "module" : 417c804472Sopenharmony_ci { 427c804472Sopenharmony_ci "packageName" : "entry" 437c804472Sopenharmony_ci } 447c804472Sopenharmony_ci})"; 457c804472Sopenharmony_ci 467c804472Sopenharmony_cistd::string g_moduleJsonNoModulePackageName = R"({ 477c804472Sopenharmony_ci "module" : 487c804472Sopenharmony_ci { 497c804472Sopenharmony_ci "name" : "entry" 507c804472Sopenharmony_ci } 517c804472Sopenharmony_ci})"; 527c804472Sopenharmony_ci 537c804472Sopenharmony_cistd::string g_moduleJson = R"({ 547c804472Sopenharmony_ci "module" : 557c804472Sopenharmony_ci { 567c804472Sopenharmony_ci "name" : "entry", 577c804472Sopenharmony_ci "type" : "entry", 587c804472Sopenharmony_ci "description" : "$string:module_desc", 597c804472Sopenharmony_ci "mainElement" : "EntryAbility", 607c804472Sopenharmony_ci "deviceTypes" : 617c804472Sopenharmony_ci [ 627c804472Sopenharmony_ci "phone", 637c804472Sopenharmony_ci "tablet", 647c804472Sopenharmony_ci "2in1" 657c804472Sopenharmony_ci ], 667c804472Sopenharmony_ci "deliveryWithInstall" : true, 677c804472Sopenharmony_ci "installationFree" : false, 687c804472Sopenharmony_ci "pages" : "$profile:main_pages", 697c804472Sopenharmony_ci "extensionAbilities": [{"name": ""}], 707c804472Sopenharmony_ci "packageName": "entry", 717c804472Sopenharmony_ci "virtualMachine" : "ark11.0.2.0", 727c804472Sopenharmony_ci "compileMode" : "esmodule", 737c804472Sopenharmony_ci "descriptionId" : 16777220 747c804472Sopenharmony_ci } 757c804472Sopenharmony_ci})"; 767c804472Sopenharmony_ci 777c804472Sopenharmony_cistd::string g_pkgInfoJson = R"({ 787c804472Sopenharmony_ci "entry": { 797c804472Sopenharmony_ci "packageName": "entry", 807c804472Sopenharmony_ci "bundleName": "", 817c804472Sopenharmony_ci "moduleName": "", 827c804472Sopenharmony_ci "version": "", 837c804472Sopenharmony_ci "entryPath": "src/main/", 847c804472Sopenharmony_ci "isSO": false, 857c804472Sopenharmony_ci "dependencyAlias": "" 867c804472Sopenharmony_ci } 877c804472Sopenharmony_ci})"; 887c804472Sopenharmony_ci 897c804472Sopenharmony_ciTEST(SetPkgContextInfoFuzzTest, test_json) 907c804472Sopenharmony_ci{ 917c804472Sopenharmony_ci std::cout << "--> SetPkgContextInfoFuzzTest for common start <--" << std::endl; 927c804472Sopenharmony_ci DT_FUZZ_START(0, TEST_TIMES, (char*)"SetPkgContextInfoFuzzTest", 0) 937c804472Sopenharmony_ci { 947c804472Sopenharmony_ci std::map<std::string, std::string> pkgContextMap; 957c804472Sopenharmony_ci std::map<std::string, std::string> packageNameList; 967c804472Sopenharmony_ci CommandParser::GetInstance().appResourcePath = "."; 977c804472Sopenharmony_ci CommandParser::GetInstance().loaderJsonPath = "./loader.json"; 987c804472Sopenharmony_ci // 变化数据 997c804472Sopenharmony_ci std::string filePath = "module.json"; 1007c804472Sopenharmony_ci ChangeJsonUtil::WriteFile(filePath, g_moduleJsonNoModule); 1017c804472Sopenharmony_ci OHOS::Ide::StageContext::GetInstance().SetPkgContextInfo(pkgContextMap, packageNameList); 1027c804472Sopenharmony_ci ChangeJsonUtil::WriteFile(filePath, g_moduleJsonNoModuleName); 1037c804472Sopenharmony_ci OHOS::Ide::StageContext::GetInstance().SetPkgContextInfo(pkgContextMap, packageNameList); 1047c804472Sopenharmony_ci ChangeJsonUtil::WriteFile(filePath, g_moduleJsonNoModulePackageName); 1057c804472Sopenharmony_ci OHOS::Ide::StageContext::GetInstance().SetPkgContextInfo(pkgContextMap, packageNameList); 1067c804472Sopenharmony_ci uint64_t moduleIndex = 0; 1077c804472Sopenharmony_ci cJSON* moduleJsonArgs = cJSON_Parse(g_moduleJson.c_str()); 1087c804472Sopenharmony_ci ChangeJsonUtil::ModifyObject(moduleJsonArgs, moduleIndex); 1097c804472Sopenharmony_ci ChangeJsonUtil::WriteFile(filePath, moduleJsonArgs); 1107c804472Sopenharmony_ci cJSON_Delete(moduleJsonArgs); 1117c804472Sopenharmony_ci std::string pkgContextFilePath = "pkgContextInfo.json"; 1127c804472Sopenharmony_ci uint64_t pkgContextIndex = 0; 1137c804472Sopenharmony_ci cJSON* pkgContextJsonArgs = cJSON_Parse(g_pkgInfoJson.c_str()); 1147c804472Sopenharmony_ci ChangeJsonUtil::ModifyObject(pkgContextJsonArgs, pkgContextIndex); 1157c804472Sopenharmony_ci ChangeJsonUtil::WriteFile(pkgContextFilePath, pkgContextJsonArgs); 1167c804472Sopenharmony_ci cJSON_Delete(pkgContextJsonArgs); 1177c804472Sopenharmony_ci // 执行接口 1187c804472Sopenharmony_ci OHOS::Ide::StageContext::GetInstance().SetPkgContextInfo(pkgContextMap, packageNameList); 1197c804472Sopenharmony_ci } 1207c804472Sopenharmony_ci DT_FUZZ_END() 1217c804472Sopenharmony_ci printf("end ---- SetPkgContextInfoFuzzTest\r\n"); 1227c804472Sopenharmony_ci if (DT_GetIsPass() == 0) { 1237c804472Sopenharmony_ci printf("test SetPkgContextInfoFuzzTest is not ok\r\n"); 1247c804472Sopenharmony_ci } else { 1257c804472Sopenharmony_ci printf("test SetPkgContextInfoFuzzTest is ok\r\n"); 1267c804472Sopenharmony_ci } 1277c804472Sopenharmony_ci std::cout << "--> SetPkgContextInfoFuzzTest for common end <--" << std::endl; 1287c804472Sopenharmony_ci} 1297c804472Sopenharmony_ci}