diff --git a/interfaces/innerkits/appverify/include/provision/provision_info.h b/interfaces/innerkits/appverify/include/provision/provision_info.h index 63c94be74cde5f290cf320c2c5e59647a84d2239..2937aa717098a33f8cab52e6bdaf4ca568fcfb6d 100644 --- a/interfaces/innerkits/appverify/include/provision/provision_info.h +++ b/interfaces/innerkits/appverify/include/provision/provision_info.h @@ -31,6 +31,7 @@ enum AppDistType { APP_GALLERY = 1, ENTERPRISE = 2, OS_INTEGRATION = 3, + CROWDTESTING = 4, }; struct BundleInfo { diff --git a/interfaces/innerkits/appverify/src/provision/provision_verify.cpp b/interfaces/innerkits/appverify/src/provision/provision_verify.cpp index c598778c3ae16c75c9a0061985303800e9e1e214..b4e8af3aeca9b76c799e2f69ba6b34a318e7b08a 100644 --- a/interfaces/innerkits/appverify/src/provision/provision_verify.cpp +++ b/interfaces/innerkits/appverify/src/provision/provision_verify.cpp @@ -58,6 +58,7 @@ const string VALUE_TYPE_RELEASE = "release"; const string VALUE_DIST_TYPE_APP_GALLERY = "app_gallery"; const string VALUE_DIST_TYPE_ENTERPRISE = "enterprise"; const string VALUE_DIST_TYPE_OS_INTEGRATION = "os_integration"; +const string VALUE_DIST_TYPE_CROWDTESTING = "crowdtesting"; const string VALUE_DEVICE_ID_TYPE_UDID = "udid"; const string GENERIC_BUNDLE_NAME = ".*"; @@ -117,6 +118,8 @@ void ParseAppDistType(const json& obj, ProvisionInfo& out) out.distributionType = AppDistType::ENTERPRISE; } else if (distType == VALUE_DIST_TYPE_OS_INTEGRATION) { out.distributionType = AppDistType::OS_INTEGRATION; + } else if (distType == VALUE_DIST_TYPE_CROWDTESTING) { + out.distributionType = AppDistType::CROWDTESTING; } else { out.distributionType = AppDistType::NONE_TYPE; } diff --git a/interfaces/innerkits/appverify/src/verify/hap_verify_v2.cpp b/interfaces/innerkits/appverify/src/verify/hap_verify_v2.cpp index c4e2279eae50ebc51802c89ea6a34d8ce6b8a2d0..2be1572ee68057de94eabe5a0017017179c40e6d 100644 --- a/interfaces/innerkits/appverify/src/verify/hap_verify_v2.cpp +++ b/interfaces/innerkits/appverify/src/verify/hap_verify_v2.cpp @@ -286,6 +286,7 @@ bool HapVerifyV2::IsAppDistributedTypeAllowInstall(const AppDistType& type, cons return false; case AppDistType::ENTERPRISE: case AppDistType::OS_INTEGRATION: + case AppDistType::CROWDTESTING: return true; default: return false; diff --git a/interfaces/innerkits/appverify/test/unittest/src/provision_verify_test.cpp b/interfaces/innerkits/appverify/test/unittest/src/provision_verify_test.cpp index 59a9dcd2955a5d6100dc55827d10da026f0dccbf..858ce956389b5264129b55fe97f1136a9c8534c5 100644 --- a/interfaces/innerkits/appverify/test/unittest/src/provision_verify_test.cpp +++ b/interfaces/innerkits/appverify/test/unittest/src/provision_verify_test.cpp @@ -439,4 +439,105 @@ HWTEST_F(ProvisionVerifyTest, ProvisionVerify008, TestSize.Level1) int ret = ParseAndVerify(prefixValidDeviceInfoProvision, info); ASSERT_EQ(ret, AppProvisionVerifyResult::PROVISION_OK); } + +/** + * @tc.name: Test HarmonyAppProvision ProvisionVerify009 function + * @tc.desc: The static function will return verify result; + * @tc.type: FUNC + */ +HWTEST_F(ProvisionVerifyTest, ProvisionVerify009, TestSize.Level1) +{ + std::string prefixValidDeviceInfoProvision = R"( + { + "version-code": 9, + "version-name": "9.0.0", + "uuid": "test_uuid", + "type": "debug", + "app-distribution-type": "crowdtesting", + "validity": { + "not-before": 1262275200, + "not-after": 2524579300 + }, + "bundle-info": { + "developer-id": "test_developer_9", + "development-certificate": "ABCDEFG", + "distribution-certificate": "123456789", + "bundle-name": "com.hello", + "apl": "normal", + "app-feature": "hos_normal_app" + }, + "debug-info": { + "device-id-type": "udid", + "device-ids" : [")"; + std::string postfixValidDeviceInfoProvision = R"("] + }, + "issuer": "App Gallery" + })"; + string deviceId = ""; +#ifndef STANDARD_SYSTEM + OHOS::AccountSA::OhosAccountKits::GetInstance().GetUdid(deviceId); +#else + char udid[DEV_UUID_LEN] = {0}; + int udidRet = GetDevUdid(udid, sizeof(udid)); + ASSERT_EQ(udidRet, EC_SUCCESS); + deviceId = std::string(udid, sizeof(udid) - 1); +#endif + prefixValidDeviceInfoProvision += deviceId; + prefixValidDeviceInfoProvision += postfixValidDeviceInfoProvision; + ProvisionInfo info; + int ret = ParseAndVerify(prefixValidDeviceInfoProvision, info); + ASSERT_EQ(ret, AppProvisionVerifyResult::PROVISION_OK); + ASSERT_EQ(info.distributionType, AppDistType::CROWDTESTING); + ASSERT_EQ(info.type, ProvisionType::DEBUG); +} +/** + * @tc.name: Test HarmonyAppProvision ProvisionVerify009 function + * @tc.desc: The static function will return verify result; + * @tc.type: FUNC + */ +HWTEST_F(ProvisionVerifyTest, ProvisionVerify010, TestSize.Level1) +{ + std::string prefixValidDeviceInfoProvision = R"( + { + "version-code": 9, + "version-name": "9.0.0", + "uuid": "test_uuid", + "type": "release", + "app-distribution-type": "crowdtesting", + "validity": { + "not-before": 1262275200, + "not-after": 2524579300 + }, + "bundle-info": { + "developer-id": "test_developer_9", + "development-certificate": "ABCDEFG", + "distribution-certificate": "123456789", + "bundle-name": "com.hello", + "apl": "normal", + "app-feature": "hos_normal_app" + }, + "debug-info": { + "device-id-type": "udid", + "device-ids" : [")"; + std::string postfixValidDeviceInfoProvision = R"("] + }, + "issuer": "App Gallery" + })"; + string deviceId = ""; +#ifndef STANDARD_SYSTEM + OHOS::AccountSA::OhosAccountKits::GetInstance().GetUdid(deviceId); +#else + char udid[DEV_UUID_LEN] = {0}; + int udidRet = GetDevUdid(udid, sizeof(udid)); + ASSERT_EQ(udidRet, EC_SUCCESS); + deviceId = std::string(udid, sizeof(udid) - 1); +#endif + prefixValidDeviceInfoProvision += deviceId; + prefixValidDeviceInfoProvision += postfixValidDeviceInfoProvision; + ProvisionInfo info; + int ret = ParseAndVerify(prefixValidDeviceInfoProvision, info); + ASSERT_EQ(ret, AppProvisionVerifyResult::PROVISION_OK); + ASSERT_EQ(info.distributionType, AppDistType::CROWDTESTING); + ASSERT_EQ(info.type, ProvisionType::RELEASE); +} } // namespace