1885b47fbSopenharmony_ci/* 2885b47fbSopenharmony_ci * Copyright (C) 2022 Huawei Device Co., Ltd. 3885b47fbSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4885b47fbSopenharmony_ci * you may not use this file except in compliance with the License. 5885b47fbSopenharmony_ci * You may obtain a copy of the License at 6885b47fbSopenharmony_ci * 7885b47fbSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8885b47fbSopenharmony_ci * 9885b47fbSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10885b47fbSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11885b47fbSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12885b47fbSopenharmony_ci * See the License for the specific language governing permissions and 13885b47fbSopenharmony_ci * limitations under the License. 14885b47fbSopenharmony_ci */ 15885b47fbSopenharmony_ci 16885b47fbSopenharmony_ci#include <fcntl.h> 17885b47fbSopenharmony_ci#include <gtest/gtest.h> 18885b47fbSopenharmony_ci#include <unistd.h> 19885b47fbSopenharmony_ci#include "accessibility_dumper.h" 20885b47fbSopenharmony_ci#include "accessibility_ut_helper.h" 21885b47fbSopenharmony_ci#include "mock_accessible_ability_connection.h" 22885b47fbSopenharmony_ci#include "mock_accessible_ability_manager_service.h" 23885b47fbSopenharmony_ci#include "string_ex.h" 24885b47fbSopenharmony_ci 25885b47fbSopenharmony_ciusing namespace testing; 26885b47fbSopenharmony_ciusing namespace testing::ext; 27885b47fbSopenharmony_ci 28885b47fbSopenharmony_cinamespace OHOS { 29885b47fbSopenharmony_cinamespace Accessibility { 30885b47fbSopenharmony_ciclass AccessibilityDumperUnitTest : public ::testing::Test { 31885b47fbSopenharmony_cipublic: 32885b47fbSopenharmony_ci AccessibilityDumperUnitTest() 33885b47fbSopenharmony_ci {} 34885b47fbSopenharmony_ci ~AccessibilityDumperUnitTest() 35885b47fbSopenharmony_ci {} 36885b47fbSopenharmony_ci 37885b47fbSopenharmony_ci static void SetUpTestCase(); 38885b47fbSopenharmony_ci static void TearDownTestCase(); 39885b47fbSopenharmony_ci void SetUp() override; 40885b47fbSopenharmony_ci void TearDown() override; 41885b47fbSopenharmony_ci 42885b47fbSopenharmony_ci int fd_ = -1; 43885b47fbSopenharmony_ci sptr<AccessibilityDumper> dumper_ = nullptr; 44885b47fbSopenharmony_ci}; 45885b47fbSopenharmony_ci 46885b47fbSopenharmony_civoid AccessibilityDumperUnitTest::SetUpTestCase() 47885b47fbSopenharmony_ci{ 48885b47fbSopenharmony_ci GTEST_LOG_(INFO) << "###################### AccessibilityDumperUnitTest Start ######################"; 49885b47fbSopenharmony_ci} 50885b47fbSopenharmony_ci 51885b47fbSopenharmony_civoid AccessibilityDumperUnitTest::TearDownTestCase() 52885b47fbSopenharmony_ci{ 53885b47fbSopenharmony_ci GTEST_LOG_(INFO) << "###################### AccessibilityDumperUnitTest End ######################"; 54885b47fbSopenharmony_ci} 55885b47fbSopenharmony_ci 56885b47fbSopenharmony_civoid AccessibilityDumperUnitTest::SetUp() 57885b47fbSopenharmony_ci{ 58885b47fbSopenharmony_ci fd_ = open("/dev/stdout", O_WRONLY); 59885b47fbSopenharmony_ci dumper_ = new AccessibilityDumper(); 60885b47fbSopenharmony_ci} 61885b47fbSopenharmony_ci 62885b47fbSopenharmony_civoid AccessibilityDumperUnitTest::TearDown() 63885b47fbSopenharmony_ci{ 64885b47fbSopenharmony_ci close(fd_); 65885b47fbSopenharmony_ci fd_ = -1; 66885b47fbSopenharmony_ci dumper_ = nullptr; 67885b47fbSopenharmony_ci} 68885b47fbSopenharmony_ci 69885b47fbSopenharmony_ci/** 70885b47fbSopenharmony_ci * @tc.number: AccessibilityDumper_Unittest_Dump_001 71885b47fbSopenharmony_ci * @tc.name: Dump 72885b47fbSopenharmony_ci * @tc.desc: Test function Dump 73885b47fbSopenharmony_ci */ 74885b47fbSopenharmony_ciHWTEST_F(AccessibilityDumperUnitTest, AccessibilityDumper_Unittest_Dump_001, TestSize.Level1) 75885b47fbSopenharmony_ci{ 76885b47fbSopenharmony_ci GTEST_LOG_(INFO) << "AccessibilityDumper_Unittest_Dump_001 start"; 77885b47fbSopenharmony_ci 78885b47fbSopenharmony_ci std::vector<std::u16string> args; 79885b47fbSopenharmony_ci int ret = dumper_->Dump(-1, args); 80885b47fbSopenharmony_ci EXPECT_EQ(-1, ret); 81885b47fbSopenharmony_ci 82885b47fbSopenharmony_ci GTEST_LOG_(INFO) << "AccessibilityDumper_Unittest_Dump_001 end"; 83885b47fbSopenharmony_ci} 84885b47fbSopenharmony_ci 85885b47fbSopenharmony_ci/** 86885b47fbSopenharmony_ci * @tc.number: AccessibilityDumper_Unittest_Dump_002 87885b47fbSopenharmony_ci * @tc.name: Dump 88885b47fbSopenharmony_ci * @tc.desc: Test function Dump 89885b47fbSopenharmony_ci */ 90885b47fbSopenharmony_ciHWTEST_F(AccessibilityDumperUnitTest, AccessibilityDumper_Unittest_Dump_002, TestSize.Level1) 91885b47fbSopenharmony_ci{ 92885b47fbSopenharmony_ci GTEST_LOG_(INFO) << "AccessibilityDumper_Unittest_Dump_002 start"; 93885b47fbSopenharmony_ci 94885b47fbSopenharmony_ci std::vector<std::u16string> args; 95885b47fbSopenharmony_ci int ret = dumper_->Dump(fd_, args); 96885b47fbSopenharmony_ci EXPECT_GE(ret, -1); 97885b47fbSopenharmony_ci 98885b47fbSopenharmony_ci GTEST_LOG_(INFO) << "AccessibilityDumper_Unittest_Dump_002 end"; 99885b47fbSopenharmony_ci} 100885b47fbSopenharmony_ci 101885b47fbSopenharmony_ci/** 102885b47fbSopenharmony_ci * @tc.number: AccessibilityDumper_Unittest_Dump_003 103885b47fbSopenharmony_ci * @tc.name: Dump 104885b47fbSopenharmony_ci * @tc.desc: Test function Dump 105885b47fbSopenharmony_ci */ 106885b47fbSopenharmony_ciHWTEST_F(AccessibilityDumperUnitTest, AccessibilityDumper_Unittest_Dump_003, TestSize.Level1) 107885b47fbSopenharmony_ci{ 108885b47fbSopenharmony_ci GTEST_LOG_(INFO) << "AccessibilityDumper_Unittest_Dump_003 start"; 109885b47fbSopenharmony_ci 110885b47fbSopenharmony_ci std::string cmdHelp("-h"); 111885b47fbSopenharmony_ci std::vector<std::u16string> args; 112885b47fbSopenharmony_ci args.emplace_back(Str8ToStr16(cmdHelp)); 113885b47fbSopenharmony_ci int ret = dumper_->Dump(fd_, args); 114885b47fbSopenharmony_ci EXPECT_GE(ret, -1); 115885b47fbSopenharmony_ci 116885b47fbSopenharmony_ci GTEST_LOG_(INFO) << "AccessibilityDumper_Unittest_Dump_003 end"; 117885b47fbSopenharmony_ci} 118885b47fbSopenharmony_ci 119885b47fbSopenharmony_ci/** 120885b47fbSopenharmony_ci * @tc.number: AccessibilityDumper_Unittest_Dump_004 121885b47fbSopenharmony_ci * @tc.name: Dump 122885b47fbSopenharmony_ci * @tc.desc: Test function Dump 123885b47fbSopenharmony_ci */ 124885b47fbSopenharmony_ciHWTEST_F(AccessibilityDumperUnitTest, AccessibilityDumper_Unittest_Dump_004, TestSize.Level1) 125885b47fbSopenharmony_ci{ 126885b47fbSopenharmony_ci GTEST_LOG_(INFO) << "AccessibilityDumper_Unittest_Dump_004 start"; 127885b47fbSopenharmony_ci sptr<AccessibilityAccountData> currentAccount = 128885b47fbSopenharmony_ci Singleton<AccessibleAbilityManagerService>::GetInstance().GetCurrentAccountData(); 129885b47fbSopenharmony_ci if (!currentAccount) { 130885b47fbSopenharmony_ci GTEST_LOG_(ERROR) << "Account data is nullptr"; 131885b47fbSopenharmony_ci return; 132885b47fbSopenharmony_ci } 133885b47fbSopenharmony_ci std::shared_ptr<AccessibilitySettingsConfig> config = currentAccount->GetConfig(); 134885b47fbSopenharmony_ci if (!config) { 135885b47fbSopenharmony_ci GTEST_LOG_(ERROR) << "Config is nullptr"; 136885b47fbSopenharmony_ci return; 137885b47fbSopenharmony_ci } 138885b47fbSopenharmony_ci config->SetCaptionState(true); 139885b47fbSopenharmony_ci 140885b47fbSopenharmony_ci std::string cmdUser("-u"); 141885b47fbSopenharmony_ci std::vector<std::u16string> args; 142885b47fbSopenharmony_ci args.emplace_back(Str8ToStr16(cmdUser)); 143885b47fbSopenharmony_ci int ret = dumper_->Dump(fd_, args); 144885b47fbSopenharmony_ci EXPECT_GE(ret, -1); 145885b47fbSopenharmony_ci 146885b47fbSopenharmony_ci GTEST_LOG_(INFO) << "AccessibilityDumper_Unittest_Dump_004 end"; 147885b47fbSopenharmony_ci} 148885b47fbSopenharmony_ci 149885b47fbSopenharmony_ci/** 150885b47fbSopenharmony_ci * @tc.number: AccessibilityDumper_Unittest_Dump_005 151885b47fbSopenharmony_ci * @tc.name: Dump 152885b47fbSopenharmony_ci * @tc.desc: Test function Dump 153885b47fbSopenharmony_ci */ 154885b47fbSopenharmony_ciHWTEST_F(AccessibilityDumperUnitTest, AccessibilityDumper_Unittest_Dump_005, TestSize.Level1) 155885b47fbSopenharmony_ci{ 156885b47fbSopenharmony_ci GTEST_LOG_(INFO) << "AccessibilityDumper_Unittest_Dump_005 start"; 157885b47fbSopenharmony_ci AccessibilityAbilityInitParams initParams; 158885b47fbSopenharmony_ci initParams.bundleName = "ohos"; 159885b47fbSopenharmony_ci initParams.moduleName = "accessibility"; 160885b47fbSopenharmony_ci initParams.name = "test"; 161885b47fbSopenharmony_ci initParams.description = "for dumper-ut"; 162885b47fbSopenharmony_ci std::shared_ptr<AccessibilityAbilityInfo> abilityInfo = std::make_shared<AccessibilityAbilityInfo>(initParams); 163885b47fbSopenharmony_ci sptr<AccessibilityAccountData> currentAccount = 164885b47fbSopenharmony_ci Singleton<AccessibleAbilityManagerService>::GetInstance().GetCurrentAccountData(); 165885b47fbSopenharmony_ci if (!currentAccount) { 166885b47fbSopenharmony_ci GTEST_LOG_(ERROR) << "Account data is nullptr"; 167885b47fbSopenharmony_ci return; 168885b47fbSopenharmony_ci } 169885b47fbSopenharmony_ci sptr<AccessibleAbilityConnection> connection = 170885b47fbSopenharmony_ci new MockAccessibleAbilityConnection(currentAccount->GetAccountId(), 0, *abilityInfo); 171885b47fbSopenharmony_ci if (!connection) { 172885b47fbSopenharmony_ci GTEST_LOG_(ERROR) << "Connection is nullptr"; 173885b47fbSopenharmony_ci return; 174885b47fbSopenharmony_ci } 175885b47fbSopenharmony_ci currentAccount->AddConnectedAbility(connection); 176885b47fbSopenharmony_ci 177885b47fbSopenharmony_ci std::string cmdClient("-c"); 178885b47fbSopenharmony_ci std::vector<std::u16string> args; 179885b47fbSopenharmony_ci args.emplace_back(Str8ToStr16(cmdClient)); 180885b47fbSopenharmony_ci int ret = dumper_->Dump(fd_, args); 181885b47fbSopenharmony_ci EXPECT_GE(ret, -1); 182885b47fbSopenharmony_ci 183885b47fbSopenharmony_ci currentAccount->RemoveConnectedAbility(connection->GetElementName()); 184885b47fbSopenharmony_ci GTEST_LOG_(INFO) << "AccessibilityDumper_Unittest_Dump_005 end"; 185885b47fbSopenharmony_ci} 186885b47fbSopenharmony_ci 187885b47fbSopenharmony_ci/** 188885b47fbSopenharmony_ci * @tc.number: AccessibilityDumper_Unittest_Dump_006 189885b47fbSopenharmony_ci * @tc.name: Dump 190885b47fbSopenharmony_ci * @tc.desc: Test function Dump. 191885b47fbSopenharmony_ci */ 192885b47fbSopenharmony_ciHWTEST_F(AccessibilityDumperUnitTest, AccessibilityDumper_Unittest_Dump_006, TestSize.Level1) 193885b47fbSopenharmony_ci{ 194885b47fbSopenharmony_ci GTEST_LOG_(INFO) << "AccessibilityDumper_Unittest_Dump_006 start"; 195885b47fbSopenharmony_ci const int32_t accountId = 1; 196885b47fbSopenharmony_ci const int32_t windowId = 1; 197885b47fbSopenharmony_ci sptr<AccessibilityAccountData> currentAccount = 198885b47fbSopenharmony_ci Singleton<AccessibleAbilityManagerService>::GetInstance().GetCurrentAccountData(); 199885b47fbSopenharmony_ci if (!currentAccount) { 200885b47fbSopenharmony_ci GTEST_LOG_(ERROR) << "Account data is nullptr"; 201885b47fbSopenharmony_ci return; 202885b47fbSopenharmony_ci } 203885b47fbSopenharmony_ci sptr<AccessibilityWindowConnection> operationConnection = 204885b47fbSopenharmony_ci new AccessibilityWindowConnection(windowId, nullptr, accountId); 205885b47fbSopenharmony_ci /* add asacConnections */ 206885b47fbSopenharmony_ci currentAccount->AddAccessibilityWindowConnection(windowId, operationConnection); 207885b47fbSopenharmony_ci 208885b47fbSopenharmony_ci std::string cmdWindow("-w"); 209885b47fbSopenharmony_ci std::vector<std::u16string> args; 210885b47fbSopenharmony_ci args.emplace_back(Str8ToStr16(cmdWindow)); 211885b47fbSopenharmony_ci int ret = dumper_->Dump(fd_, args); 212885b47fbSopenharmony_ci EXPECT_GE(ret, -1); 213885b47fbSopenharmony_ci 214885b47fbSopenharmony_ci currentAccount->RemoveAccessibilityWindowConnection(windowId); 215885b47fbSopenharmony_ci GTEST_LOG_(INFO) << "AccessibilityDumper_Unittest_Dump_006 end"; 216885b47fbSopenharmony_ci} 217885b47fbSopenharmony_ci 218885b47fbSopenharmony_ci/** 219885b47fbSopenharmony_ci * @tc.number: AccessibilityDumper_Unittest_Dump_007 220885b47fbSopenharmony_ci * @tc.name: Dump 221885b47fbSopenharmony_ci * @tc.desc: Test function Dump 222885b47fbSopenharmony_ci */ 223885b47fbSopenharmony_ciHWTEST_F(AccessibilityDumperUnitTest, AccessibilityDumper_Unittest_Dump_007, TestSize.Level1) 224885b47fbSopenharmony_ci{ 225885b47fbSopenharmony_ci GTEST_LOG_(INFO) << "AccessibilityDumper_Unittest_Dump_007 start"; 226885b47fbSopenharmony_ci sptr<AccessibilityAccountData> currentAccount = 227885b47fbSopenharmony_ci Singleton<AccessibleAbilityManagerService>::GetInstance().GetCurrentAccountData(); 228885b47fbSopenharmony_ci 229885b47fbSopenharmony_ci std::shared_ptr<AccessibilitySettingsConfig> config = currentAccount->GetConfig(); 230885b47fbSopenharmony_ci if (!config) { 231885b47fbSopenharmony_ci GTEST_LOG_(ERROR) << "Config is nullptr"; 232885b47fbSopenharmony_ci return; 233885b47fbSopenharmony_ci } 234885b47fbSopenharmony_ci config->SetCaptionState(true); 235885b47fbSopenharmony_ci 236885b47fbSopenharmony_ci std::string cmdUser("-u"); 237885b47fbSopenharmony_ci std::vector<std::u16string> args; 238885b47fbSopenharmony_ci args.emplace_back(Str8ToStr16(cmdUser)); 239885b47fbSopenharmony_ci AccessibilityAbilityHelper::GetInstance().SetNeedAccountDataNullFlag(true); 240885b47fbSopenharmony_ci int ret = dumper_->Dump(fd_, args); 241885b47fbSopenharmony_ci EXPECT_GE(ret, -1); 242885b47fbSopenharmony_ci AccessibilityAbilityHelper::GetInstance().SetNeedAccountDataNullFlag(false); 243885b47fbSopenharmony_ci GTEST_LOG_(INFO) << "AccessibilityDumper_Unittest_Dump_007 end"; 244885b47fbSopenharmony_ci} 245885b47fbSopenharmony_ci 246885b47fbSopenharmony_ci/** 247885b47fbSopenharmony_ci * @tc.number: AccessibilityDumper_Unittest_Dump_008 248885b47fbSopenharmony_ci * @tc.name: Dump 249885b47fbSopenharmony_ci * @tc.desc: Test function Dump 250885b47fbSopenharmony_ci */ 251885b47fbSopenharmony_ciHWTEST_F(AccessibilityDumperUnitTest, AccessibilityDumper_Unittest_Dump_008, TestSize.Level1) 252885b47fbSopenharmony_ci{ 253885b47fbSopenharmony_ci GTEST_LOG_(INFO) << "AccessibilityDumper_Unittest_Dump_005 start"; 254885b47fbSopenharmony_ci AccessibilityAbilityInitParams initParams; 255885b47fbSopenharmony_ci initParams.bundleName = "ohos"; 256885b47fbSopenharmony_ci initParams.moduleName = "accessibility"; 257885b47fbSopenharmony_ci initParams.name = "test"; 258885b47fbSopenharmony_ci initParams.description = "for dumper-ut"; 259885b47fbSopenharmony_ci std::shared_ptr<AccessibilityAbilityInfo> abilityInfo = std::make_shared<AccessibilityAbilityInfo>(initParams); 260885b47fbSopenharmony_ci sptr<AccessibilityAccountData> currentAccount = 261885b47fbSopenharmony_ci Singleton<AccessibleAbilityManagerService>::GetInstance().GetCurrentAccountData(); 262885b47fbSopenharmony_ci if (!currentAccount) { 263885b47fbSopenharmony_ci GTEST_LOG_(ERROR) << "Account data is nullptr"; 264885b47fbSopenharmony_ci return; 265885b47fbSopenharmony_ci } 266885b47fbSopenharmony_ci sptr<AccessibleAbilityConnection> connection = 267885b47fbSopenharmony_ci new MockAccessibleAbilityConnection(currentAccount->GetAccountId(), 0, *abilityInfo); 268885b47fbSopenharmony_ci if (!connection) { 269885b47fbSopenharmony_ci GTEST_LOG_(ERROR) << "Connection is nullptr"; 270885b47fbSopenharmony_ci return; 271885b47fbSopenharmony_ci } 272885b47fbSopenharmony_ci currentAccount->AddConnectedAbility(connection); 273885b47fbSopenharmony_ci 274885b47fbSopenharmony_ci std::string cmdClient("-c"); 275885b47fbSopenharmony_ci std::vector<std::u16string> args; 276885b47fbSopenharmony_ci args.emplace_back(Str8ToStr16(cmdClient)); 277885b47fbSopenharmony_ci AccessibilityAbilityHelper::GetInstance().SetNeedAccountDataNullFlag(true); 278885b47fbSopenharmony_ci int ret = dumper_->Dump(fd_, args); 279885b47fbSopenharmony_ci AccessibilityAbilityHelper::GetInstance().SetNeedAccountDataNullFlag(false); 280885b47fbSopenharmony_ci EXPECT_GE(ret, -1); 281885b47fbSopenharmony_ci 282885b47fbSopenharmony_ci currentAccount->RemoveConnectedAbility(connection->GetElementName()); 283885b47fbSopenharmony_ci GTEST_LOG_(INFO) << "AccessibilityDumper_Unittest_Dump_008 end"; 284885b47fbSopenharmony_ci} 285885b47fbSopenharmony_ci 286885b47fbSopenharmony_ci/** 287885b47fbSopenharmony_ci * @tc.number: AccessibilityDumper_Unittest_Dump_009 288885b47fbSopenharmony_ci * @tc.name: Dump 289885b47fbSopenharmony_ci * @tc.desc: Test function Dump. 290885b47fbSopenharmony_ci */ 291885b47fbSopenharmony_ciHWTEST_F(AccessibilityDumperUnitTest, AccessibilityDumper_Unittest_Dump_009, TestSize.Level1) 292885b47fbSopenharmony_ci{ 293885b47fbSopenharmony_ci GTEST_LOG_(INFO) << "AccessibilityDumper_Unittest_Dump_009 start"; 294885b47fbSopenharmony_ci const int32_t accountId = 1; 295885b47fbSopenharmony_ci const int32_t windowId = 1; 296885b47fbSopenharmony_ci sptr<AccessibilityAccountData> currentAccount = 297885b47fbSopenharmony_ci Singleton<AccessibleAbilityManagerService>::GetInstance().GetCurrentAccountData(); 298885b47fbSopenharmony_ci if (!currentAccount) { 299885b47fbSopenharmony_ci GTEST_LOG_(ERROR) << "Account data is nullptr"; 300885b47fbSopenharmony_ci return; 301885b47fbSopenharmony_ci } 302885b47fbSopenharmony_ci sptr<AccessibilityWindowConnection> operationConnection = 303885b47fbSopenharmony_ci new AccessibilityWindowConnection(windowId, nullptr, accountId); 304885b47fbSopenharmony_ci /* add asacConnections */ 305885b47fbSopenharmony_ci currentAccount->AddAccessibilityWindowConnection(windowId, operationConnection); 306885b47fbSopenharmony_ci 307885b47fbSopenharmony_ci std::string cmdWindow("-w"); 308885b47fbSopenharmony_ci std::vector<std::u16string> args; 309885b47fbSopenharmony_ci args.emplace_back(Str8ToStr16(cmdWindow)); 310885b47fbSopenharmony_ci AccessibilityAbilityHelper::GetInstance().SetNeedAccountDataNullFlag(true); 311885b47fbSopenharmony_ci int ret = dumper_->Dump(fd_, args); 312885b47fbSopenharmony_ci EXPECT_GE(ret, -1); 313885b47fbSopenharmony_ci AccessibilityAbilityHelper::GetInstance().SetNeedAccountDataNullFlag(false); 314885b47fbSopenharmony_ci currentAccount->RemoveAccessibilityWindowConnection(windowId); 315885b47fbSopenharmony_ci GTEST_LOG_(INFO) << "AccessibilityDumper_Unittest_Dump_009 end"; 316885b47fbSopenharmony_ci} 317885b47fbSopenharmony_ci} // namespace Accessibility 318885b47fbSopenharmony_ci} // namespace OHOS