• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2022 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 "accessibility_common_helper.h"
18 #include "accessibility_mt_helper.h"
19 #include "accessible_ability_channel.h"
20 #include "accessible_ability_connection.h"
21 #include "accessible_ability_manager_service.h"
22 #include "iservice_registry.h"
23 
24 using namespace testing;
25 using namespace testing::ext;
26 
27 namespace OHOS {
28 namespace Accessibility {
29 namespace {
30     constexpr uint8_t TEST_NUM_2 = 2;
31 } // namespace
32 class AAMSServerTest : public testing::Test {
33 public:
AAMSServerTest()34     AAMSServerTest()
35     {}
~AAMSServerTest()36     ~AAMSServerTest()
37     {}
38 
39     sptr<AccessibleAbilityChannel> aastub_ =  nullptr;
40     sptr<AccessibleAbilityChannel> aacs_ = nullptr;
41 
42     int32_t tempData_ = 0;
43     static void SetUpTestCase(void);
44     static void TearDownTestCase(void);
45     void SetUp();
46     void AddConnection();
47     void TearDown();
48     void WritefileAll(const char* fname, const char* data) const;
49 };
50 
SetUpTestCase(void)51 void AAMSServerTest::SetUpTestCase(void)
52 {
53     Singleton<AccessibleAbilityManagerService>::GetInstance().OnStart();
54     AccessibilityCommonHelper::GetInstance().WaitForServicePublish();
55     Singleton<AccessibleAbilityManagerService>::GetInstance().SwitchedUser(AccessibilityHelper::accountId_);
56     GTEST_LOG_(INFO) << "AccessibleAbilityManagerService is published";
57 }
58 
TearDownTestCase(void)59 void AAMSServerTest::TearDownTestCase(void)
60 {
61     Singleton<AccessibleAbilityManagerService>::GetInstance().OnStop();
62 }
63 
SetUp()64 void AAMSServerTest::SetUp()
65 {
66     GTEST_LOG_(INFO) << "AAMSServerTest ModuleTest SetUp";
67 
68     // Add an ability connection client
69     AccessibilityAbilityInitParams initParams;
70     std::shared_ptr<AccessibilityAbilityInfo> abilityInfo = std::make_shared<AccessibilityAbilityInfo>(initParams);
71     abilityInfo->SetCapabilityValues(CAPABILITY_KEY_EVENT_OBSERVER);
72     AppExecFwk::ElementName elementName("deviceId", "bundleName", "name");
73     auto accountData = Singleton<AccessibleAbilityManagerService>::GetInstance().GetCurrentAccountData();
74     accountData->AddInstalledAbility(*abilityInfo);
75     sleep(TEST_NUM_2);
76     sptr<AccessibleAbilityConnection> connection =
77         new AccessibleAbilityConnection(accountData->GetAccountId(), 0, *abilityInfo);
78     aastub_ = new AccessibleAbilityChannel(accountData->GetAccountId(), abilityInfo->GetId());
79     connection->OnAbilityConnectDoneSync(elementName, aastub_);
80 }
81 
TearDown()82 void AAMSServerTest::TearDown()
83 {
84     GTEST_LOG_(INFO) << "AAMSServerTest ModuleTest TearDown";
85     aastub_ = nullptr;
86 }
87 
WritefileAll(const char * fname,const char * data) const88 void AAMSServerTest::WritefileAll(const char* fname, const char* data) const
89 {
90     FILE* fp = nullptr;
91     if (!(fp = fopen(fname, "w"))) {
92         printf("open file %s fail \n", fname);
93         return;
94     }
95 
96     (void)fprintf(fp, "%s", data);
97     (void)fclose(fp);
98 }
99 
100 /**
101  * @tc.number: AAMS_moduletest_SendEvent_001
102  * @tc.name: SendEvent
103  * @tc.desc: Test function SendEvent aams send event to accessibility,and check the parm of event.
104  *
105  */
106 HWTEST_F(AAMSServerTest, SendEvent_001, TestSize.Level1)
107 {
108     GTEST_LOG_(INFO) << "AAMSServerTestSendEvent_001 start";
109     // make an event
110     AccessibilityEventInfo eventInfo;
111     eventInfo.SetEventType(EventType::TYPE_WINDOW_UPDATE);
112     // aams send event
113     Singleton<AccessibleAbilityManagerService>::GetInstance().SendEvent(eventInfo);
114     sleep(1);
115     // check aa proxy
116     EXPECT_EQ(AccessibilityHelper::GetInstance().GetTestEventType(), int(EventType::TYPE_WINDOW_UPDATE));
117     GTEST_LOG_(INFO) << "AAMSServerTestSendEvent_001 end";
118 }
119 
120 /**
121  * @tc.number: AAMS_moduletest_GetAbilityList_001
122  * @tc.name: GetAbilityList
123  * @tc.desc: Test function GetAbilityList
124  * The func with Illegal parameter 1
125  */
126 HWTEST_F(AAMSServerTest, GetAbilityList_001, TestSize.Level1)
127 {
128     GTEST_LOG_(INFO) << "AAMSServerTestGetAbilityList_001 start";
129     std::vector<OHOS::Accessibility::AccessibilityAbilityInfo> infos;
130     auto &aams = Singleton<AccessibleAbilityManagerService>::GetInstance();
131     auto ret = aams.GetAbilityList(0, AbilityStateType::ABILITY_STATE_ENABLE, infos);
132     EXPECT_EQ(RET_OK, ret);
133     EXPECT_EQ(infos.size(), 0);
134 
135     GTEST_LOG_(INFO) << "AAMSServerTestGetAbilityList_001 end";
136 }
137 
138 /**
139  * @tc.number: AAMS_moduletest_GetAbilityList_002
140  * @tc.name: GetAbilityList
141  * @tc.desc: Test function GetAbilityList
142  * Get Enable Ability list.
143  */
144 HWTEST_F(AAMSServerTest, GetAbilityList_002, TestSize.Level1)
145 {
146     GTEST_LOG_(INFO) << "AAMSServerTestGetAbilityList_002 start";
147     std::vector<OHOS::Accessibility::AccessibilityAbilityInfo> infos;
148     Singleton<AccessibleAbilityManagerService>::GetInstance().GetAbilityList(
149         AccessibilityAbilityTypes::ACCESSIBILITY_ABILITY_TYPE_SPOKEN, AbilityStateType::ABILITY_STATE_ENABLE, infos);
150     EXPECT_EQ(infos.size(), 0);
151     GTEST_LOG_(INFO) << "AAMSServerTestGetAbilityList_002 end";
152 }
153 
154 /**
155  * @tc.number: AAMS_moduletest_GetAbilityList_003
156  * @tc.name: GetAbilityList
157  * @tc.desc: Test function GetAbilityList
158  * Get Disable Ability list with 2 installed ability accessibility and a connected accessibility ability.
159  */
160 HWTEST_F(AAMSServerTest, GetAbilityList_003, TestSize.Level1)
161 {
162     GTEST_LOG_(INFO) << "AAMSServerTestGetAbilityList_003 start";
163     AccessibilityAbilityInitParams initParams;
164     std::shared_ptr<AccessibilityAbilityInfo> installAbilityInfo =
165         std::make_shared<AccessibilityAbilityInfo>(initParams);
166     installAbilityInfo->SetAccessibilityAbilityType(AccessibilityAbilityTypes::ACCESSIBILITY_ABILITY_TYPE_ALL);
167     installAbilityInfo->SetPackageName("123");
168     auto accountData = Singleton<AccessibleAbilityManagerService>::GetInstance().GetCurrentAccountData();
169 
170     // add install ability dummy
171     EXPECT_EQ(1, (int)accountData->GetInstalledAbilities().size());
172     accountData->AddInstalledAbility(*installAbilityInfo);
173     EXPECT_EQ(2, (int)accountData->GetInstalledAbilities().size());
174 
175     // ABILITY_STATE_DISABLE
176     int32_t stateType = AbilityStateType::ABILITY_STATE_DISABLE;
177     std::vector<OHOS::Accessibility::AccessibilityAbilityInfo> infos;
178     Singleton<AccessibleAbilityManagerService>::GetInstance().GetAbilityList(
179         AccessibilityAbilityTypes::ACCESSIBILITY_ABILITY_TYPE_SPOKEN, stateType, infos);
180     EXPECT_EQ(infos.size(), 1);
181     GTEST_LOG_(INFO) << "AAMSServerTestGetAbilityList_003 end";
182 }
183 
184 /**
185  * @tc.number: AAMS_moduletest_GetAbilityList_004
186  * @tc.name: GetAbilityList
187  * @tc.desc: Test function GetAbilityList
188  * Get Disabled Ability list.
189  */
190 HWTEST_F(AAMSServerTest, GetAbilityList_004, TestSize.Level1)
191 {
192     GTEST_LOG_(INFO) << "AAMSServerTestGetAbilityList_004 start";
193     int32_t stateType = AbilityStateType::ABILITY_STATE_DISABLE;
194     std::vector<OHOS::Accessibility::AccessibilityAbilityInfo> infos;
195     Singleton<AccessibleAbilityManagerService>::GetInstance().GetAbilityList(
196         AccessibilityAbilityTypes::ACCESSIBILITY_ABILITY_TYPE_SPOKEN, stateType, infos);
197     EXPECT_EQ(infos.size(), 1);
198     GTEST_LOG_(INFO) << "AAMSServerTestGetAbilityList_004 end";
199 }
200 
201 /**
202  * @tc.number: AAMS_moduletest_GetAbilityList_005
203  * @tc.name: GetAbilityList
204  * @tc.desc: Test function GetAbilityList
205  * Get Installed ability
206  */
207 HWTEST_F(AAMSServerTest, GetAbilityList_005, TestSize.Level1)
208 {
209     GTEST_LOG_(INFO) << "AAMSServerTestGetAbilityList_005 start";
210     std::vector<OHOS::Accessibility::AccessibilityAbilityInfo> infos;
211     Singleton<AccessibleAbilityManagerService>::GetInstance().GetAbilityList(
212         AccessibilityAbilityTypes::ACCESSIBILITY_ABILITY_TYPE_SPOKEN,
213         AbilityStateType::ABILITY_STATE_INSTALLED, infos);
214     EXPECT_EQ(infos.size(), 1);
215     GTEST_LOG_(INFO) << "AAMSServerTestGetAbilityList_005 end";
216 }
217 
218 /**
219  * @tc.number: AAMS_moduletest_RegisterElementOperator_001
220  * @tc.name: RegisterElementOperator
221  * @tc.desc: Test function RegisterElementOperator
222  * Register a ElementOperator and check account data and event detail.
223  */
224 HWTEST_F(AAMSServerTest, RegisterElementOperator_001, TestSize.Level1)
225 {
226     GTEST_LOG_(INFO) << "AAMSServerTestRegisterElementOperator_001 start";
227 
228     auto &aams = Singleton<AccessibleAbilityManagerService>::GetInstance();
229     auto accountData = aams.GetCurrentAccountData();
230     auto map = accountData->GetAsacConnections();
231     EXPECT_EQ(int(map.size()), 0);
232     EXPECT_EQ(RET_OK, aams.RegisterElementOperator(0, nullptr, true));
233     sleep(1);
234     GTEST_LOG_(INFO) << "RegisterElementOperator OK";
235     map = accountData->GetAsacConnections();
236     EXPECT_EQ(int(map.size()), 1);
237 
238     aams.DeregisterElementOperator(0);
239     GTEST_LOG_(INFO) << "AAMSServerTestRegisterElementOperator_001 end";
240 }
241 
242 /**
243  * @tc.number: AAMS_moduletest_DeregisterElementOperator_001
244  * @tc.name: DeregisterElementOperator
245  * @tc.desc: Test function DeregisterElementOperator
246  * Deregister a ElementOperator and check account data and event detail.
247  */
248 HWTEST_F(AAMSServerTest, DeregisterElementOperator_001, TestSize.Level1)
249 {
250     GTEST_LOG_(INFO) << "AAMSServerTestDeregisterElementOperator_001 start";
251     auto &aams = Singleton<AccessibleAbilityManagerService>::GetInstance();
252     auto accountData = aams.GetCurrentAccountData();
253     auto map = accountData->GetAsacConnections();
254     EXPECT_EQ(int(map.size()), 1);
255 
256     aams.RegisterElementOperator(0, nullptr, true);
257     sleep(1);
258     map = accountData->GetAsacConnections();
259     EXPECT_EQ(int(map.size()), 1);
260 
261     // wrong windowId
262     aams.DeregisterElementOperator(1);
263     sleep(1);
264     map = accountData->GetAsacConnections();
265     EXPECT_EQ(int(map.size()), 1);
266 
267     // true windowId
268     aams.DeregisterElementOperator(0);
269     sleep(1);
270     map = accountData->GetAsacConnections();
271     EXPECT_EQ(int(map.size()), 1);
272     GTEST_LOG_(INFO) << "AAMSServerTestDeregisterElementOperator_001 end";
273 }
274 } // namespace Accessibility
275 } // namespace OHOS