1 /*
2 * Copyright (c) 2024 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 #include "dm_verity.h"
18
19 using namespace testing::ext;
20 using namespace std;
21
22 namespace init_ut {
23 class DmVerifyUnitTest : public testing::Test {
24 public:
SetUpTestCase(void)25 static void SetUpTestCase(void) {};
TearDownTestCase(void)26 static void TearDownTestCase(void) {};
SetUp(void)27 void SetUp(void) {};
TearDown(void)28 void TearDown(void) {};
29 };
30
HWTEST_F(DmVerifyUnitTest, HvbDmVerityinit_001, TestSize.Level0)31 HWTEST_F(DmVerifyUnitTest, HvbDmVerityinit_001, TestSize.Level0)
32 {
33 int ret;
34 FstabItem fstabitem = {(char *)"deviceName", (char *)"mountPoint",
35 (char *)"fsType", (char *)"mountOptions", 1, nullptr};
36 Fstab fstab = {&fstabitem};
37
38 ret = HvbDmVerityinit(&fstab);
39 EXPECT_EQ(ret, 0);
40
41 setenv("SWTYPE_VALUE", "Test", 1);
42 ret = HvbDmVerityinit(&fstab);
43 EXPECT_EQ(ret, 0);
44
45 setenv("ENABLE_VALUE", "false", 1);
46 ret = HvbDmVerityinit(&fstab);
47 EXPECT_EQ(ret, 0);
48 setenv("ENABLE_VALUE", "FALSE", 1);
49 ret = HvbDmVerityinit(&fstab);
50 EXPECT_EQ(ret, 0);
51
52 setenv("ENABLE_VALUE", "orange", 1);
53 ret = HvbDmVerityinit(&fstab);
54 EXPECT_EQ(ret, 0);
55
56 setenv("ENABLE_VALUE", "ORANGE", 1);
57 ret = HvbDmVerityinit(&fstab);
58 EXPECT_EQ(ret, 0);
59
60 unsetenv("SWTYPE_VALUE");
61 unsetenv("ENABLE_VALUE");
62 }
63
HWTEST_F(DmVerifyUnitTest, HvbDmVerityinit_002, TestSize.Level0)64 HWTEST_F(DmVerifyUnitTest, HvbDmVerityinit_002, TestSize.Level0)
65 {
66 int ret;
67 FstabItem fstabitem = {(char *)"deviceName", (char *)"mountPoint",
68 (char *)"fsType", (char *)"mountOptions", 1, nullptr};
69 Fstab fstab = {&fstabitem};
70
71 ret = HvbDmVerityinit(&fstab);
72 EXPECT_EQ(ret, 0);
73
74 setenv("SWTYPE_VALUE", "factory", 1);
75 ret = HvbDmVerityinit(&fstab);
76 EXPECT_EQ(ret, 0);
77
78 fstabitem.fsManagerFlags = 0x00000010;
79 ret = HvbDmVerityinit(&fstab);
80 EXPECT_EQ(ret, -1);
81
82 setenv("INIT_VALUE", "on", 1);
83 ret = HvbDmVerityinit(&fstab);
84 EXPECT_EQ(ret, 0);
85
86 unsetenv("SWTYPE_VALUE");
87 unsetenv("INIT_VALUE");
88 }
89
HWTEST_F(DmVerifyUnitTest, HvbDmVeritySetUp_001, TestSize.Level0)90 HWTEST_F(DmVerifyUnitTest, HvbDmVeritySetUp_001, TestSize.Level0)
91 {
92 int ret;
93 FstabItem fstabitem = {(char *)"deviceName", (char *)"mountPoint",
94 (char *)"fsType", (char *)"mountOptions", 1, nullptr};
95
96 ret = HvbDmVeritySetUp(&fstabitem);
97 EXPECT_EQ(ret, 0);
98
99 setenv("SWTYPE_VALUE", "factory", 1);
100 ret = HvbDmVeritySetUp(nullptr);
101 EXPECT_EQ(ret, -1);
102 fstabitem.fsManagerFlags = 0x00000009;
103 ret = HvbDmVeritySetUp(&fstabitem);
104 EXPECT_EQ(ret, 0);
105
106 fstabitem.fsManagerFlags = 0x00000010;
107 ret = HvbDmVeritySetUp(&fstabitem);
108 EXPECT_EQ(ret, -1);
109 fstabitem.fsManagerFlags = 0x00000018;
110 ret = HvbDmVeritySetUp(&fstabitem);
111 EXPECT_EQ(ret, -1);
112
113 setenv("HASH_VALUE", "on", 1);
114 ret = HvbDmVeritySetUp(&fstabitem);
115 EXPECT_EQ(ret, 0);
116
117 unsetenv("SWTYPE_VALUE");
118 unsetenv("HASH_VALUE");
119 }
120
HWTEST_F(DmVerifyUnitTest, HvbDmVerityFinal_001, TestSize.Level0)121 HWTEST_F(DmVerifyUnitTest, HvbDmVerityFinal_001, TestSize.Level0)
122 {
123 HvbDmVerityFinal();
124
125 setenv("SWTYPE_VALUE", "factory", 1);
126 HvbDmVerityFinal();
127
128 setenv("FINAL_VALUE", "on", 1);
129 HvbDmVerityFinal();
130
131 unsetenv("SWTYPE_VALUE");
132 unsetenv("FINAL_VALUE");
133 }
134 } // namespace init_ut