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 "common_event_manager.h"
23 #include "iservice_registry.h"
24 
25 using namespace testing;
26 using namespace testing::ext;
27 using namespace OHOS::EventFwk;
28 
29 namespace OHOS {
30 namespace Accessibility {
31 class AccessibilityCommonEventRegistryTest : public ::testing::Test {
32 public:
AccessibilityCommonEventRegistryTest()33     AccessibilityCommonEventRegistryTest()
34     {}
~AccessibilityCommonEventRegistryTest()35     ~AccessibilityCommonEventRegistryTest()
36     {}
37 
38     static void SetUpTestCase();
39     static void TearDownTestCase();
40     void SetUp() override;
41     void TearDown() override;
42     void AddAccessibleAbilityConnection();
43 
44     sptr<AccessibilityAccountData> accountData_ = nullptr;
45     sptr<AccessibleAbilityChannel> aastub_ = nullptr;
46     sptr<AppExecFwk::ElementName> elementName_ = nullptr;
47     sptr<AccessibleAbilityConnection> AAConnection_ = nullptr;
48 };
49 
SetUpTestCase()50 void AccessibilityCommonEventRegistryTest::SetUpTestCase()
51 {
52     GTEST_LOG_(INFO) << "AccessibilityCommonEventRegistryTest SetUpTestCase";
53     // Start AAMS
54     Singleton<AccessibleAbilityManagerService>::GetInstance().OnStart();
55     AccessibilityCommonHelper::GetInstance().WaitForServicePublish();
56     Singleton<AccessibleAbilityManagerService>::GetInstance().SwitchedUser(AccessibilityHelper::accountId_);
57     GTEST_LOG_(INFO) << "AccessibleAbilityManagerService is published";
58 }
59 
TearDownTestCase()60 void AccessibilityCommonEventRegistryTest::TearDownTestCase()
61 {
62     GTEST_LOG_(INFO) << "AccessibilityCommonEventRegistryTest TearDownTestCase";
63     Singleton<AccessibleAbilityManagerService>::GetInstance().OnStop();
64 }
65 
SetUp()66 void AccessibilityCommonEventRegistryTest::SetUp()
67 {
68     GTEST_LOG_(INFO) << "SetUp";
69 }
70 
TearDown()71 void AccessibilityCommonEventRegistryTest::TearDown()
72 {
73     GTEST_LOG_(INFO) << "TearDown";
74     accountData_ = nullptr;
75     aastub_ = nullptr;
76     elementName_ = nullptr;
77     AAConnection_ = nullptr;
78 }
79 
AddAccessibleAbilityConnection()80 void AccessibilityCommonEventRegistryTest::AddAccessibleAbilityConnection()
81 {
82     GTEST_LOG_(INFO) << "AccessibilityCommonEventRegistryTest AddAccessibleAbilityConnection";
83     AAFwk::Want want;
84     AppExecFwk::ElementName name;
85     name.SetAbilityName("com.example.aalisttest.MainAbility");
86     name.SetBundleName("com.example.aalisttest");
87     want.SetElement(name);
88     AccessibilityAbilityInitParams initParams;
89     std::shared_ptr<AccessibilityAbilityInfo> abilityInfo = std::make_shared<AccessibilityAbilityInfo>(initParams);
90 
91     accountData_ = Singleton<AccessibleAbilityManagerService>::GetInstance().GetCurrentAccountData();
92     AAConnection_ = new AccessibleAbilityConnection(accountData_->GetAccountId(), 0, *abilityInfo);
93     elementName_ = new AppExecFwk::ElementName("name", "bundleName", "id");
94     aastub_ = new AccessibleAbilityChannel(accountData_->GetAccountId(), abilityInfo->GetId());
95     AAConnection_->OnAbilityConnectDoneSync(*elementName_, aastub_);
96     accountData_->AddInstalledAbility(*abilityInfo);
97     sleep(1);
98 }
99 
100 /**
101  * @tc.number: AccessibilityCommonEventRegistry_ModuleTest_PackageChanged_001
102  * @tc.name: PackageChanged
103  * @tc.desc: There is a connected ability. The package has changed. Empty all install ability.
104  */
105 HWTEST_F(AccessibilityCommonEventRegistryTest, AccessibilityCommonEvent_ModuleTest_PackageChanged_001,
106     TestSize.Level1)
107 {
108     GTEST_LOG_(INFO) << "AccessibilityCommonEvent_ModuleTest_PackageChanged_001 start";
109     AddAccessibleAbilityConnection();
110     EXPECT_EQ(1, int(accountData_->GetInstalledAbilities().size()));
111     // PackageChanged
112     std::string bundleName = "bundleName";
113     Singleton<AccessibleAbilityManagerService>::GetInstance().PackageChanged(bundleName);
114     EXPECT_EQ(1, int(accountData_->GetInstalledAbilities().size()));
115 
116     AAConnection_->OnAbilityDisconnectDoneSync(*elementName_);
117 
118     GTEST_LOG_(INFO) << "AccessibilityCommonEvent_ModuleTest_PackageChanged_001 end";
119 }
120 } // namespace Accessibility
121 } // namespace OHOS