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