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 "edm_utils.h"
19 #include "bundle_constants.h"
20 #include "message_parcel_utils.h"
21 #ifdef WIFI_EDM_ENABLE
22 #include "wifi_msg.h"
23 #endif
24 using namespace testing::ext;
25 using namespace OHOS::EDM;
26 
27 namespace OHOS {
28 namespace EDM {
29 namespace TEST {
30 
31 class MessageParcelUtilsTest : public testing::Test {};
32 #ifdef WIFI_EDM_ENABLE
33 /**
34  * @tc.name: TestReadWifiDeviceConfig
35  * @tc.desc: Test MessageParcelUtils::ReadWifiDeviceConfig
36  * @tc.type: FUNC
37  */
38 HWTEST_F(MessageParcelUtilsTest, TestReadWifiDeviceConfig, TestSize.Level1)
39 {
40     MessageParcel data;
41     Wifi::WifiDeviceConfig config;
42     WifiPassword pwd;
43     config.networkId = -1;
44     config.status = 0;
45     config.bssid = "";
46     config.ssid = "";
47     config.band = 0;
48     config.channel = 0;
49     config.frequency = 0;
50     config.level = 0;
51     config.isPasspoint = true;
52     config.isEphemeral = true;
53     config.keyMgmt = "";
54     config.wepTxKeyIndex = 0;
55     config.priority = 0;
56     config.hiddenSSID = true;
57     config.wifiIpConfig.assignMethod = Wifi::AssignIpMethod::DHCP;
58     config.wifiIpConfig.staticIpAddress.ipAddress.address.family = -1;
59     config.wifiIpConfig.staticIpAddress.ipAddress.address.addressIpv4 = 0;
60     config.wifiIpConfig.staticIpAddress.ipAddress.prefixLength = 0;
61     config.wifiIpConfig.staticIpAddress.ipAddress.flags = 0;
62     config.wifiIpConfig.staticIpAddress.ipAddress.scope = 0;
63     config.wifiIpConfig.staticIpAddress.gateway.family = -1;
64     config.wifiIpConfig.staticIpAddress.gateway.addressIpv4 = 0;
65     config.wifiIpConfig.staticIpAddress.dnsServer1.family = -1;
66     config.wifiIpConfig.staticIpAddress.dnsServer1.addressIpv4 = 0;
67     config.wifiIpConfig.staticIpAddress.dnsServer2.family = -1;
68     config.wifiIpConfig.staticIpAddress.dnsServer2.addressIpv4 = 0;
69     config.wifiIpConfig.staticIpAddress.domains = "";
70     config.wifiEapConfig.eap = "";
71     config.wifiEapConfig.identity = "";
72     config.wifiEapConfig.clientCert = "";
73     config.wifiEapConfig.privateKey = "";
74     std::vector<uint8_t> lists{1, 3, 56};
75     config.wifiEapConfig.certEntry = lists;
76     config.wifiEapConfig.phase2Method = Wifi::Phase2Method::NONE;
77     config.wifiProxyconfig.configureMethod = Wifi::ConfigureProxyMethod::CLOSED;
78     config.wifiProxyconfig.autoProxyConfig.pacWebAddress = "";
79     config.wifiProxyconfig.manualProxyConfig.serverPort = 1;
80     config.wifiProxyconfig.manualProxyConfig.exclusionObjectList = "";
81     config.wifiPrivacySetting = Wifi::WifiPrivacyConfig::RANDOMMAC;
82     MessageParcelUtils::WriteWifiDeviceConfig(config, data, pwd);
83 
84     Wifi::WifiDeviceConfig config2;
85     MessageParcelUtils::ReadWifiDeviceConfig(data, config2);
86     ASSERT_TRUE(config2.networkId == -1);
87     ASSERT_TRUE(config2.status == 0);
88     ASSERT_TRUE(config2.bssid == "");
89     ASSERT_TRUE(config2.ssid == "");
90     ASSERT_TRUE(config2.band == 0);
91     ASSERT_TRUE(config2.channel == 0);
92     ASSERT_TRUE(config2.frequency == 0);
93     ASSERT_TRUE(config2.level == 0);
94     ASSERT_TRUE(config2.isPasspoint == true);
95     ASSERT_TRUE(config2.isEphemeral == true);
96     ASSERT_TRUE(config2.keyMgmt == "");
97     ASSERT_TRUE(config2.wepTxKeyIndex == 0);
98     ASSERT_TRUE(config2.priority == 0);
99     ASSERT_TRUE(config2.hiddenSSID == true);
100     ASSERT_TRUE(config2.wifiIpConfig.assignMethod == Wifi::AssignIpMethod::DHCP);
101     ASSERT_TRUE(config2.wifiIpConfig.staticIpAddress.ipAddress.address.family == -1);
102     ASSERT_TRUE(config2.wifiIpConfig.staticIpAddress.ipAddress.address.addressIpv4 == 0);
103     ASSERT_TRUE(config2.wifiIpConfig.staticIpAddress.ipAddress.prefixLength == 0);
104     ASSERT_TRUE(config2.wifiIpConfig.staticIpAddress.ipAddress.flags == 0);
105     ASSERT_TRUE(config2.wifiIpConfig.staticIpAddress.ipAddress.scope == 0);
106     ASSERT_TRUE(config2.wifiIpConfig.staticIpAddress.gateway.family == -1);
107     ASSERT_TRUE(config2.wifiIpConfig.staticIpAddress.gateway.addressIpv4 == 0);
108     ASSERT_TRUE(config2.wifiIpConfig.staticIpAddress.dnsServer1.family == -1);
109     ASSERT_TRUE(config2.wifiIpConfig.staticIpAddress.dnsServer1.addressIpv4 == 0);
110     ASSERT_TRUE(config2.wifiIpConfig.staticIpAddress.dnsServer2.family == -1);
111     ASSERT_TRUE(config2.wifiIpConfig.staticIpAddress.dnsServer2.addressIpv4 == 0);
112     ASSERT_TRUE(config2.wifiIpConfig.staticIpAddress.domains == "");
113     ASSERT_TRUE(config2.wifiEapConfig.eap == "");
114     ASSERT_TRUE(config2.wifiEapConfig.identity == "");
115     ASSERT_TRUE(config2.wifiEapConfig.clientCert == "");
116     ASSERT_TRUE(config2.wifiEapConfig.privateKey == "");
117     ASSERT_TRUE(config2.wifiEapConfig.certEntry == lists);
118     ASSERT_TRUE(config2.wifiEapConfig.phase2Method == Wifi::Phase2Method::NONE);
119     ASSERT_TRUE(config2.wifiProxyconfig.configureMethod == Wifi::ConfigureProxyMethod::CLOSED);
120     ASSERT_TRUE(config2.wifiProxyconfig.autoProxyConfig.pacWebAddress == "");
121     ASSERT_TRUE(config2.wifiProxyconfig.manualProxyConfig.serverPort == 1);
122     ASSERT_TRUE(config2.wifiProxyconfig.manualProxyConfig.exclusionObjectList == "");
123     ASSERT_TRUE(config2.wifiPrivacySetting == Wifi::WifiPrivacyConfig::RANDOMMAC);
124 }
125 
126 /**
127  * @tc.name: TestProcessAssignIpMethod
128  * @tc.desc: Test MessageParcelUtils::ProcessAssignIpMethod
129  * @tc.type: FUNC
130  */
131 HWTEST_F(MessageParcelUtilsTest, TestProcessAssignIpMethod, TestSize.Level1)
132 {
133     Wifi::WifiIpConfig ipConfig;
134     MessageParcelUtils::ProcessAssignIpMethod(static_cast<int32_t>(Wifi::AssignIpMethod::DHCP), ipConfig);
135     ASSERT_TRUE(ipConfig.assignMethod == Wifi::AssignIpMethod::DHCP);
136     MessageParcelUtils::ProcessAssignIpMethod(static_cast<int32_t>(Wifi::AssignIpMethod::STATIC), ipConfig);
137     ASSERT_TRUE(ipConfig.assignMethod == Wifi::AssignIpMethod::STATIC);
138     MessageParcelUtils::ProcessAssignIpMethod(static_cast<int32_t>(Wifi::AssignIpMethod::UNASSIGNED), ipConfig);
139     ASSERT_TRUE(ipConfig.assignMethod == Wifi::AssignIpMethod::UNASSIGNED);
140 }
141 
142 /**
143  * @tc.name: TestProcessPhase2Method
144  * @tc.desc: Test MessageParcelUtils::ProcessPhase2Method
145  * @tc.type: FUNC
146  */
147 HWTEST_F(MessageParcelUtilsTest, TestProcessPhase2Method, TestSize.Level1)
148 {
149     Wifi::WifiEapConfig eapConfig;
150     MessageParcelUtils::ProcessPhase2Method(static_cast<int32_t>(Wifi::Phase2Method::PAP), eapConfig);
151     ASSERT_TRUE(eapConfig.phase2Method == Wifi::Phase2Method::PAP);
152     MessageParcelUtils::ProcessPhase2Method(static_cast<int32_t>(Wifi::Phase2Method::MSCHAP), eapConfig);
153     ASSERT_TRUE(eapConfig.phase2Method == Wifi::Phase2Method::MSCHAP);
154     MessageParcelUtils::ProcessPhase2Method(static_cast<int32_t>(Wifi::Phase2Method::MSCHAPV2), eapConfig);
155     ASSERT_TRUE(eapConfig.phase2Method == Wifi::Phase2Method::MSCHAPV2);
156     MessageParcelUtils::ProcessPhase2Method(static_cast<int32_t>(Wifi::Phase2Method::GTC), eapConfig);
157     ASSERT_TRUE(eapConfig.phase2Method == Wifi::Phase2Method::GTC);
158     MessageParcelUtils::ProcessPhase2Method(static_cast<int32_t>(Wifi::Phase2Method::SIM), eapConfig);
159     ASSERT_TRUE(eapConfig.phase2Method == Wifi::Phase2Method::SIM);
160     MessageParcelUtils::ProcessPhase2Method(static_cast<int32_t>(Wifi::Phase2Method::AKA), eapConfig);
161     ASSERT_TRUE(eapConfig.phase2Method == Wifi::Phase2Method::AKA);
162     MessageParcelUtils::ProcessPhase2Method(static_cast<int32_t>(Wifi::Phase2Method::AKA_PRIME), eapConfig);
163     ASSERT_TRUE(eapConfig.phase2Method == Wifi::Phase2Method::AKA_PRIME);
164     MessageParcelUtils::ProcessPhase2Method(static_cast<int32_t>(Wifi::Phase2Method::NONE), eapConfig);
165     ASSERT_TRUE(eapConfig.phase2Method == Wifi::Phase2Method::NONE);
166 }
167 
168 /**
169  * @tc.name: TestProcessConfigureProxyMethod
170  * @tc.desc: Test MessageParcelUtils::ProcessConfigureProxyMethod
171  * @tc.type: FUNC
172  */
173 HWTEST_F(MessageParcelUtilsTest, TestProcessConfigureProxyMethod, TestSize.Level1)
174 {
175     Wifi::WifiProxyConfig proxyConfig;
176     MessageParcelUtils::ProcessConfigureProxyMethod(
177         static_cast<int32_t>(Wifi::ConfigureProxyMethod::AUTOCONFIGUE), proxyConfig);
178     ASSERT_TRUE(proxyConfig.configureMethod == Wifi::ConfigureProxyMethod::AUTOCONFIGUE);
179     MessageParcelUtils::ProcessConfigureProxyMethod(
180         static_cast<int32_t>(Wifi::ConfigureProxyMethod::MANUALCONFIGUE), proxyConfig);
181     ASSERT_TRUE(proxyConfig.configureMethod == Wifi::ConfigureProxyMethod::MANUALCONFIGUE);
182     MessageParcelUtils::ProcessConfigureProxyMethod(static_cast<int32_t>(Wifi::ConfigureProxyMethod::CLOSED),
183         proxyConfig);
184     ASSERT_TRUE(proxyConfig.configureMethod == Wifi::ConfigureProxyMethod::CLOSED);
185 }
186 
187 /**
188  * @tc.name: TestProcessPrivacyConfig
189  * @tc.desc: Test MessageParcelUtils::ProcessPrivacyConfig
190  * @tc.type: FUNC
191  */
192 HWTEST_F(MessageParcelUtilsTest, TestProcessPrivacyConfig, TestSize.Level1)
193 {
194     Wifi::WifiDeviceConfig config;
195     MessageParcelUtils::ProcessPrivacyConfig(static_cast<int32_t>(Wifi::WifiPrivacyConfig::RANDOMMAC), config);
196     ASSERT_TRUE(config.wifiPrivacySetting == Wifi::WifiPrivacyConfig::RANDOMMAC);
197     MessageParcelUtils::ProcessPrivacyConfig(static_cast<int32_t>(Wifi::WifiPrivacyConfig::DEVICEMAC), config);
198     ASSERT_TRUE(config.wifiPrivacySetting == Wifi::WifiPrivacyConfig::DEVICEMAC);
199 }
200 
201 /**
202  * @tc.name: TestReadIpAddress
203  * @tc.desc: Test MessageParcelUtils::ReadIpAddress
204  * @tc.type: FUNC
205  */
206 HWTEST_F(MessageParcelUtilsTest, TestReadIpAddress, TestSize.Level1)
207 {
208     MessageParcel data;
209     Wifi::WifiIpAddress address;
210     address.family = -1;
211     address.addressIpv4 = 0;
212     MessageParcelUtils::WriteIpAddress(data, address);
213 
214     Wifi::WifiIpAddress address2;
215     MessageParcelUtils::ReadIpAddress(data, address2);
216     ASSERT_TRUE(address2.family == -1);
217     ASSERT_TRUE(address2.addressIpv4 == 0);
218 }
219 
220 /**
221  * @tc.name: TestWriteInstallParam
222  * @tc.desc: Test MessageParcelUtils::WriteInstallParam
223  * @tc.type: FUNC
224  */
225 HWTEST_F(MessageParcelUtilsTest, TestWriteInstallParam, TestSize.Level1)
226 {
227     MessageParcel data;
228     AppExecFwk::InstallParam installParam;
229     installParam.userId = AppExecFwk::Constants::UNSPECIFIED_USERID;
230     installParam.installFlag = AppExecFwk::InstallFlag::NORMAL;
231     MessageParcelUtils::WriteInstallParam(installParam, data);
232     AppExecFwk::InstallParam installParam2;
233     installParam2.userId = data.ReadInt32();
234     installParam2.installFlag = (static_cast<AppExecFwk::InstallFlag>(data.ReadInt32()));
235     ASSERT_TRUE(installParam2.userId == AppExecFwk::Constants::UNSPECIFIED_USERID);
236     ASSERT_TRUE(installParam2.installFlag == AppExecFwk::InstallFlag::NORMAL);
237 }
238 #endif
239 
240 /**
241  * @tc.name: TestReadOperateDeviceParam
242  * @tc.desc: Test MessageParcelUtils::ReadOperateDeviceParam
243  * @tc.type: FUNC
244  */
245 HWTEST_F(MessageParcelUtilsTest, TestReadOperateDeviceParam, TestSize.Level1)
246 {
247     MessageParcel data;
248     OperateDeviceParam param;
249     param.operate = "";
250     param.addition = "";
251     param.userId = -1;
252     MessageParcelUtils::WriteOperateDeviceParam(param, data);
253     OperateDeviceParam param2;
254     MessageParcelUtils::ReadOperateDeviceParam(data, param2);
255     ASSERT_TRUE(param2.operate == "");
256     ASSERT_TRUE(param2.addition == "");
257     ASSERT_TRUE(param2.userId == -1);
258 }
259 } // namespace TEST
260 } // namespace EDM
261 } // namespace OHOS