1 /*
2  * Copyright (c) 2021-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 
18 #include "msg_head.h"
19 #include "proto.h"
20 #include "manage_inject_device.h"
21 
22 namespace OHOS {
23 namespace MMI {
24 namespace {
25 using namespace testing::ext;
26 } // namespace
27 class ManageInjectDeviceTest : public testing::Test {
28 public:
SetUpTestCase(void)29     static void SetUpTestCase(void) {}
TearDownTestCase(void)30     static void TearDownTestCase(void) {}
31 };
32 
33 /**
34  * @tc.name:Test_TransformJsonDataCheckFileIsEmpty
35  * @tc.desc:Verify ManageInjectDevice function TransformJsonData
36  * @tc.type: FUNC
37  * @tc.require:
38  */
39 HWTEST_F(ManageInjectDeviceTest, Test_TransformJsonDataCheckFileIsEmpty, TestSize.Level1)
40 {
41     DeviceItems inputEventArrays;
42     inputEventArrays.clear();
43     ManageInjectDevice manageInjectDevice;
44     auto ret = manageInjectDevice.TransformJsonData(inputEventArrays);
45     EXPECT_EQ(ret, RET_ERR);
46 }
47 
48 /**
49  * @tc.name:Test_TransformJsonDataCheckFileNotEmpty
50  * @tc.desc:Verify ManageInjectDevice function TransformJsonData
51  * @tc.type: FUNC
52  * @tc.require:
53  */
54 HWTEST_F(ManageInjectDeviceTest, Test_TransformJsonDataCheckFileNotEmpty, TestSize.Level1)
55 {
56     const std::string path = "/data/json/Test_TransformJsonDataCheckFileNotEmpty.json";
57     std::string beginDeviceCmd = "vuinput open all & ";
58     std::string afterDeviceCmd = "vuinput is closed";
59     FILE* beginDevice = popen(beginDeviceCmd.c_str(), "rw");
60     if (!beginDevice) {
61         ASSERT_TRUE(false) << "open device failed";
62     }
63     pclose(beginDevice);
64     std::string jsonBuffer = ReadJsonFile(path);
65     if (jsonBuffer.empty()) {
66         ASSERT_TRUE(false) << "Open file failed" << path;
67     }
68     ManageInjectDevice manageInjectDevice;
69     auto ret = manageInjectDevice.TransformJsonData(DataInit(jsonBuffer, false));
70     FILE* closeDevice = popen(afterDeviceCmd.c_str(), "rw");
71     if (!closeDevice) {
72         ASSERT_TRUE(false) << "Close local device failed";
73     }
74     pclose(closeDevice);
75     std::this_thread::sleep_for(std::chrono::seconds(1));
76     EXPECT_EQ(ret, RET_OK);
77 }
78 
79 /**
80  * @tc.name:Test_TransformJsonDataGetDeviceNodeError
81  * @tc.desc:Verify ManageInjectDevice function TransformJsonData
82  * @tc.type: FUNC
83  * @tc.require:
84  */
85 HWTEST_F(ManageInjectDeviceTest, Test_TransformJsonDataGetDeviceNodeError, TestSize.Level1)
86 {
87     const std::string filePath = "/data/json/Test_TransformJsonDataGetDeviceNodeError.json";
88     std::string startDeviceMsg = "vuinput start all & ";
89     std::string closeDeviceMsg = "vuinput close all";
90     FILE* startDevice = popen(startDeviceMsg.c_str(), "rw");
91     if (!startDevice) {
92         ASSERT_TRUE(false) << "Start device failed";
93     }
94     pclose(startDevice);
95     std::string jsonBuf = ReadJsonFile(filePath);
96     if (jsonBuf.empty()) {
97         ASSERT_TRUE(false) << "Read file failed" << filePath;
98     }
99     ManageInjectDevice openInjectDevice;
100     auto ret = openInjectDevice.TransformJsonData(DataInit(jsonBuf, false));
101     FILE* closeDevice = popen(closeDeviceMsg.c_str(), "rw");
102     if (!closeDevice) {
103         ASSERT_TRUE(false) << "Close device failed";
104     }
105     pclose(closeDevice);
106     std::this_thread::sleep_for(std::chrono::seconds(1));
107     EXPECT_EQ(ret, RET_ERR);
108 }
109 
110 /**
111  * @tc.name:Test_SendEventToDeviceNodeError
112  * @tc.desc:Verify ManageInjectDevice function SendEventToDeviceNode
113  * @tc.type: FUNC
114  * @tc.require:
115  */
116 HWTEST_F(ManageInjectDeviceTest, Test_SendEventToDeviceNodeError, TestSize.Level1)
117 {
118     ManageInjectDevice manageInjectDevice;
119     InputEventArray inputEventArray = {};
120     inputEventArray.target = "";
121     auto ret = manageInjectDevice.SendEventToDeviceNode(inputEventArray);
122     EXPECT_EQ(ret, RET_ERR);
123 }
124 } // namespace MMI
125 } // namespace OHOS