1 /*
2  * Copyright (c) 2023 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include <gtest/gtest.h>
17 
18 #include "update_policy_utils.h"
19 
20 using namespace testing::ext;
21 using namespace OHOS::EDM;
22 
23 namespace OHOS {
24 namespace EDM {
25 namespace TEST {
26 const std::string TEST_VERSION = "testVersion";
27 const std::string TEST_INSTALL_TIPS = "installTip";
28 const std::string TEST_INSTALL_TIPS_DEATIL = "installTipDetail";
29 constexpr uint32_t MAX_PACKAGES_SIZE = 10;
30 class UpdatePolicyUtilsTest : public testing::Test {};
31 
32 /*
33  *@tc.name: TestProcessPackageTypeWithUnknownType
34  *@tc.desc: Test ProcessPackageType success func.
35  *@tc.type: FUNC
36  */
37  HWTEST_F(UpdatePolicyUtilsTest, TestProcessPackageTypeWithUnknownType, TestSize.Level1)
38 {
39     PackageType packageType;
40     UpdatePolicyUtils::ProcessPackageType(static_cast<int32_t>(PackageType::UNKNOWN), packageType);
41 
42     ASSERT_TRUE(packageType == PackageType::UNKNOWN);
43 }
44 
45 /*
46  *@tc.name: TestProcessPackageTypeWithInllegalType
47  *@tc.desc: Test ProcessPackageType success func.
48  *@tc.type: FUNC
49  */
50   HWTEST_F(UpdatePolicyUtilsTest, TestProcessPackageTypeWithInllegalType, TestSize.Level1)
51 {
52     PackageType packageType;
53     UpdatePolicyUtils::ProcessPackageType(10, packageType);
54 
55     ASSERT_TRUE(packageType == PackageType::UNKNOWN);
56 }
57 
58 /*
59  *@tc.name: TestProcessPackageTypeWithFirmwareType
60  *@tc.desc: Test ProcessPackageType success func.
61  *@tc.type: FUNC
62  */
63   HWTEST_F(UpdatePolicyUtilsTest, TestProcessPackageTypeWithFirmwareType, TestSize.Level1)
64 {
65     PackageType packageType;
66     UpdatePolicyUtils::ProcessPackageType(static_cast<int32_t>(PackageType::FIRMWARE), packageType);
67 
68     ASSERT_TRUE(packageType == PackageType::FIRMWARE);
69 }
70 
71 /*
72  *@tc.name: TestReadUpgradePackageInfoWithPackageOutOfBund
73  *@tc.desc: Test ProcessPackageType success func.
74  *@tc.type: FUNC
75  */
76   HWTEST_F(UpdatePolicyUtilsTest, TestReadUpgradePackageInfoWithPackageOutOfBund, TestSize.Level1)
77 {
78     MessageParcel data;
79     UpgradePackageInfo packageInfo;
80     std::vector<Package> packages;
81     packages.insert(packages.begin(), MAX_PACKAGES_SIZE + 1, {"", PackageType::UNKNOWN, 1});
82     packageInfo.version = TEST_VERSION;
83     packageInfo.packages = packages;
84     packageInfo.description.notify.installTips = TEST_INSTALL_TIPS;
85     packageInfo.description.notify.installTipsDetail = TEST_INSTALL_TIPS_DEATIL;
86     UpdatePolicyUtils::WriteUpgradePackageInfo(data, packageInfo);
87 
88     UpgradePackageInfo packageInfo2;
89     UpdatePolicyUtils::ReadUpgradePackageInfo(data, packageInfo2);
90     ASSERT_TRUE(packageInfo2.version == TEST_VERSION);
91     ASSERT_TRUE(packageInfo2.packages.empty());
92     ASSERT_TRUE(packageInfo2.description.notify.installTips.empty());
93     ASSERT_TRUE(packageInfo2.description.notify.installTipsDetail.empty());
94 }
95 
96 /*
97  *@tc.name: TestReadUpgradePackageInfoSuc
98  *@tc.desc: Test ProcessPackageType success func.
99  *@tc.type: FUNC
100  */
101   HWTEST_F(UpdatePolicyUtilsTest, TestReadUpgradePackageInfoSuc, TestSize.Level1)
102 {
103     MessageParcel data;
104     UpgradePackageInfo packageInfo;
105     std::vector<Package> packages;
106     packages.insert(packages.begin(), MAX_PACKAGES_SIZE, {"", PackageType::UNKNOWN, 1});
107     packageInfo.version = TEST_VERSION;
108     packageInfo.packages = packages;
109     packageInfo.description.notify.installTips = TEST_INSTALL_TIPS;
110     packageInfo.description.notify.installTipsDetail = TEST_INSTALL_TIPS_DEATIL;
111     UpdatePolicyUtils::WriteUpgradePackageInfo(data, packageInfo);
112 
113     UpgradePackageInfo packageInfo2;
114     UpdatePolicyUtils::ReadUpgradePackageInfo(data, packageInfo2);
115     ASSERT_TRUE(packageInfo2.version == TEST_VERSION);
116     ASSERT_TRUE(packageInfo2.packages.size() == packages.size());
117     ASSERT_TRUE(packageInfo2.description.notify.installTips == TEST_INSTALL_TIPS);
118     ASSERT_TRUE(packageInfo2.description.notify.installTipsDetail == TEST_INSTALL_TIPS_DEATIL);
119 }
120 } // namespace TEST
121 } // namespace EDM
122 } // namespace OHOS