• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2023-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 "json/json.h"
18 #include "hilog_wrapper.h"
19 #define private public
20 #include "ibus_extension.h"
21 #include "usb_driver_info.h"
22 #include "usb_device_info.h"
23 #include "usb_bus_extension.h"
24 #undef private
25 
26 namespace OHOS {
27 namespace ExternalDeviceManager {
28 using namespace std;
29 using namespace testing::ext;
30 using namespace ExternalDeviceManager;
31 
32 class UsbDriverInfoTest : public testing::Test {
33 public:
SetUp()34     void SetUp() override
35     {
36         EDM_LOGD(MODULE_BUS_USB, "UsbDriverInfoTest SetUp");
37     }
TearDown()38     void TearDown() override
39     {
40         EDM_LOGD(MODULE_BUS_USB, "UsbDriverInfoTest TearDown");
41     }
42 };
43 
44 /**
45  * @tc.number: SUB_Driver_Ext_BusExtensionUSB_0600
46  * @tc.name: SerializeThenUnSerializeTest
47  * @tc.desc: Testing the Serialization and Deserialization of DriverInfo
48  * @tc.size: MediumTest
49  * @tc.type: Function
50  */
51 HWTEST_F(UsbDriverInfoTest, SUB_Driver_Ext_BusExtensionUSB_0600, TestSize.Level1)
52 {
53     int ret = 0;
54     auto usbDrvInfo = make_shared<UsbDriverInfo>();
55     usbDrvInfo->pids_.push_back(1234);
56     usbDrvInfo->pids_.push_back(5678);
57     usbDrvInfo->vids_.push_back(1111);
58     usbDrvInfo->vids_.push_back(2222);
59     auto drvInfo = make_shared<DriverInfo>();
60     drvInfo->bus_ = "USB";
61     drvInfo->vendor_ = "TestVendor";
62     drvInfo->version_ = "0.1.1";
63     drvInfo->driverInfoExt_ = usbDrvInfo;
64     string drvInfoStr;
65     EDM_LOGD(MODULE_BUS_USB, "begin to Serialize driverInfo");
66     ret = drvInfo->Serialize(drvInfoStr);
67     ASSERT_EQ(ret, 0);
68     EDM_LOGI(MODULE_BUS_USB, "drvStr:%s", drvInfoStr.c_str());
69 
70     auto newDriverInfo = make_shared<DriverInfo>();
71     ret = newDriverInfo->UnSerialize(drvInfoStr);
72     ASSERT_EQ(ret, 0);
73     ASSERT_EQ(newDriverInfo->bus_, "USB");
74     ASSERT_EQ(newDriverInfo->vendor_, "TestVendor");
75     ASSERT_EQ(newDriverInfo->version_, "0.1.1");
76     UsbDriverInfo* newUsbDriverInfo = static_cast<UsbDriverInfo*>(newDriverInfo->driverInfoExt_.get());
77     ASSERT_NE(newUsbDriverInfo, nullptr);
78     ASSERT_EQ(newUsbDriverInfo->pids_.size(), (size_t)2);
79     ASSERT_EQ(newUsbDriverInfo->vids_.size(), (size_t)2);
80     ASSERT_EQ(newUsbDriverInfo->pids_[0], 1234);
81     ASSERT_EQ(newUsbDriverInfo->pids_[1], 5678);
82     ASSERT_EQ(newUsbDriverInfo->vids_[0], 1111);
83     ASSERT_EQ(newUsbDriverInfo->vids_[1], 2222);
84 }
85 
86 /**
87  * @tc.number: SUB_Driver_Ext_BusExtensionUSB_0700
88  * @tc.name: UnSerializeErrorTest
89  * @tc.desc: Test the failure of serialization and deserialization of DriverInfo
90  * @tc.size: MediumTest
91  * @tc.type: Function
92  */
93 HWTEST_F(UsbDriverInfoTest, SUB_Driver_Ext_BusExtensionUSB_0700, TestSize.Level1)
94 {
95     int ret = 0;
96     DriverInfo driverInfo;
97     string drvStr;
98     // valid json
99     drvStr = "\{ \"bus\": \"usb\", \"vendor\": \"TestVendor\", \"version\": \"0.0.1\", \
100 \"ext_info\": \"{ \\\"vids\\\": [1111, 2222], \\\"pids\\\": [1234, 4567]}\" }";
101     ret = driverInfo.UnSerialize(drvStr);
102     ASSERT_EQ(ret, 0);
103 
104     // invalid json, format error
105     drvStr = "\{ \"bus\"_\"usb\", \"vendor\": \"TestVendor\", \"version\": \"0.0.1\", \
106 \"ext_info\": \"{ \\\"vids\\\": [1111, 2222], \\\"pids\\\": [1234, 4567]}\" }";
107     ret = driverInfo.UnSerialize(drvStr);
108     ASSERT_NE(ret, 0);
109 
110     // invalid json, bus error
111     drvStr = "\{ \"bus\": \"peci\", \"vendor\": \"TestVendor\", \"version\": \"0.0.1\", \
112 \"ext_info\": \"{ \\\"vids\\\": [1111, 2222], \\\"pids\\\": [1234, 4567]}\" }";
113     ret = driverInfo.UnSerialize(drvStr);
114     ASSERT_NE(ret, 0);
115 
116     // invalid json, member error
117     drvStr = "\{ \"bus\": \"usb\", \"vendorxx\": \"TestVendor\", \"version\": \"0.0.1\", \
118 \"ext_info\": \"{ \\\"vids\\\": [1111, 2222], \\\"pids\\\": [1234, 4567]}\" }";
119     ret = driverInfo.UnSerialize(drvStr);
120     ASSERT_NE(ret, 0);
121 
122     // invalid json, member type error
123     drvStr = "\{ \"bus\": \"usb\", \"vendor\": \"TestVendor\", \"version\" :0, \
124 \"ext_info\": \"{ \\\"vids\\\": [1111, 2222], \\\"pids\\\": [1234, 4567]}\" }";
125     ret = driverInfo.UnSerialize(drvStr);
126     ASSERT_NE(ret, 0);
127 
128     // invalid json, ext_info format error
129     drvStr = "\{ \"bus\": \"usb\", \"vendor\": \"TestVendor\", \"version\": \"0.0.1\", \
130 \"ext_info\": \"{ \\\"vids\\\"_[1111, 2222], \\\"pids\\\": [1234, 4567]}\" }";
131     ret = driverInfo.UnSerialize(drvStr);
132     ASSERT_NE(ret, 0);
133 
134     // invalid json, ext_info member
135     drvStr = "\{ \"bus\": \"usb\", \"vendor\": \"TestVendor\", \"version\": \"0.0.1\", \
136 \"ext_info\": \"{ \\\"vid\\\": [1111, 2222], \\\"pids\\\": [1234, 4567]}\" }";
137     ret = driverInfo.UnSerialize(drvStr);
138     ASSERT_NE(ret, 0);
139 
140     // invalid json, ext_info member type error
141     drvStr = "\{ \"bus\": \"usb\", \"vendor\": \"TestVendor\", \"version\": \"0.0.1\", \
142 \"ext_info\": \"{ \\\"vids\\\": \\\"1111\\\", \\\"pids\\\": [1234, 4567]}\" }";
143     ret = driverInfo.UnSerialize(drvStr);
144     ASSERT_NE(ret, 0);
145 
146     // invalid json, ext_info vids item type error
147     drvStr = "\{ \"bus\": \"usb\", \"vendor\": \"TestVendor\", \"version\": \"0.0.1\", \
148 \"ext_info\": \"{ \\\"vids\\\": [\\\"1111\\\", \\\"2222\\\"], \\\"pids\\\": [1234, 4567]}\" }";
149     ret = driverInfo.UnSerialize(drvStr);
150     ASSERT_NE(ret, 0);
151 
152     // invalid json, ext_info pid item type error
153     drvStr = "\{ \"bus\": \"usb\", \"vendor\": \"TestVendor\", \"version\": \"0.0.1\", \
154 \"ext_info\": \"{ \\\"vids\\\": [1111, 2222], \\\"pids\\\": [\\\"1234\\\", \\\"4567\\\"]}\" }";
155     ret = driverInfo.UnSerialize(drvStr);
156     ASSERT_NE(ret, 0);
157 }
158 }
159 }