1 /*
2  * Copyright (c) 2021-2023 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 #define private public
18 #define protected public
19 #include "ability_context.h"
20 #include "ability_loader.h"
21 #include "ability_manager_client.h"
22 #include "context_deal.h"
23 #include "fa_ability_thread.h"
24 #include "mock_serviceability_manager_service.h"
25 #include "ohos_application.h"
26 #include "sys_mgr_client.h"
27 #include "system_ability_definition.h"
28 #undef protected
29 #undef private
30 
31 namespace OHOS {
32 namespace AppExecFwk {
33 using namespace testing::ext;
34 using namespace OHOS::AppExecFwk;
35 using namespace OHOS;
36 using namespace AAFwk;
37 
38 namespace {
39 const std::string ACE_SERVICE_ABILITY_NAME = "AceServiceAbility";
40 }
41 class AbilityContextTest : public testing::Test {
42 public:
43     static void SetUpTestCase(void);
44     static void TearDownTestCase(void);
45     void SetUp();
46     void TearDown();
47     static constexpr int TEST_WAIT_TIME = 500 * 1000;  // 500 ms
48 public:
49     std::unique_ptr<AbilityContext> context_ = nullptr;
50 };
51 
SetUpTestCase(void)52 void AbilityContextTest::SetUpTestCase(void)
53 {
54     OHOS::sptr<OHOS::IRemoteObject> abilityObject = new (std::nothrow) MockServiceAbilityManagerService();
55 
56     auto sysMgr = OHOS::DelayedSingleton<SysMrgClient>::GetInstance();
57     if (sysMgr == nullptr) {
58         GTEST_LOG_(ERROR) << "fail to get ISystemAbilityManager";
59         return;
60     }
61 
62     sysMgr->RegisterSystemAbility(OHOS::ABILITY_MGR_SERVICE_ID, abilityObject);
63 
64     AbilityLoader::GetInstance().RegisterAbility(
65         ACE_SERVICE_ABILITY_NAME, []()->Ability* { return new (std::nothrow) Ability; });
66 }
67 
TearDownTestCase(void)68 void AbilityContextTest::TearDownTestCase(void)
69 {}
70 
SetUp(void)71 void AbilityContextTest::SetUp(void)
72 {
73     context_ = std::make_unique<AbilityContext>();
74 }
75 
TearDown(void)76 void AbilityContextTest::TearDown(void)
77 {}
78 
79 /**
80  * @tc.number: AaFwk_Ability_Context_ConnectAbility_0100
81  * @tc.name: AbilityFwk
82  * @tc.desc: When connecting ability, AMS will inform ability to process OnStart in the life cycle, and then inform
83  * ability to process onconnect, and the connection is successful
84  */
85 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_ConnectAbility_0100, Function | MediumTest | Level1)
86 {
87     std::shared_ptr<OHOSApplication> application = std::make_shared<OHOSApplication>();
88     sptr<IRemoteObject> abilityToken = sptr<IRemoteObject>(new AbilityRuntime::FAAbilityThread());
89     std::shared_ptr<AbilityInfo> abilityInfo = std::make_shared<AbilityInfo>();
90     abilityInfo->type = AppExecFwk::AbilityType::SERVICE;
91     abilityInfo->name = "DemoAbility";
92     std::shared_ptr<AbilityLocalRecord> abilityRecord = std::make_shared<AbilityLocalRecord>(abilityInfo, abilityToken);
93 
94     AbilityThread::AbilityThreadMain(application, abilityRecord, nullptr);
95 
96     std::shared_ptr<ContextDeal> deal = std::make_shared<ContextDeal>();
97     deal->SetAbilityInfo(abilityInfo);
98     context_->AttachBaseContext(deal);
99 
100     Want want;
101     bool ret = context_->ConnectAbility(want, nullptr);
102     EXPECT_TRUE(ret);
103     usleep(AbilityContextTest::TEST_WAIT_TIME);
104 }
105 
106 /**
107  * @tc.number: AaFwk_Ability_Context_DisconnectAbility_0100
108  * @tc.name: AbilityFwk
109  * @tc.desc: AMS notifies the abilityondisconnect event when disconnectservice.
110  */
111 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_DisconnectAbility_0100, Function | MediumTest | Level1)
112 {
113     std::shared_ptr<OHOSApplication> application = std::make_shared<OHOSApplication>();
114     sptr<IRemoteObject> abilityToken = sptr<IRemoteObject>(new AbilityRuntime::FAAbilityThread());
115     std::shared_ptr<AbilityInfo> abilityInfo = std::make_shared<AbilityInfo>();
116     abilityInfo->type = AppExecFwk::AbilityType::SERVICE;
117     abilityInfo->name = "DemoAbility";
118     std::shared_ptr<AbilityLocalRecord> abilityRecord = std::make_shared<AbilityLocalRecord>(abilityInfo, abilityToken);
119 
120     AbilityThread::AbilityThreadMain(application, abilityRecord, nullptr);
121 
122     std::shared_ptr<ContextDeal> deal = std::make_shared<ContextDeal>();
123     deal->SetAbilityInfo(abilityInfo);
124     context_->AttachBaseContext(deal);
125 
126     Want want;
127     context_->ConnectAbility(want, nullptr);
128     context_->DisconnectAbility(nullptr);
129     usleep(AbilityContextTest::TEST_WAIT_TIME);
130 }
131 
132 /**
133  * @tc.number: AaFwk_Ability_Context_StartAbility_0100
134  * @tc.name: AbilityFwk
135  * @tc.desc: Starting ability service, AMS will inform ability to perform OnStart lifecycle conversion, and then inform
136  * oncommand event.
137  */
138 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_StartAbility_0100, Function | MediumTest | Level1)
139 {
140     std::shared_ptr<OHOSApplication> application = std::make_shared<OHOSApplication>();
141     sptr<IRemoteObject> abilityToken = sptr<IRemoteObject>(new AbilityRuntime::FAAbilityThread());
142     std::shared_ptr<AbilityInfo> abilityInfo = std::make_shared<AbilityInfo>();
143     abilityInfo->type = AppExecFwk::AbilityType::SERVICE;
144     abilityInfo->name = "DemoAbility";
145     std::shared_ptr<AbilityLocalRecord> abilityRecord = std::make_shared<AbilityLocalRecord>(abilityInfo, abilityToken);
146 
147     AbilityThread::AbilityThreadMain(application, abilityRecord, nullptr);
148     Want want;
149     context_->StartAbility(want, -1);
150     usleep(AbilityContextTest::TEST_WAIT_TIME);
151 }
152 
153 /**
154  * @tc.number: AaFwk_Ability_Context_TerminateAbility_0100
155  * @tc.name: AbilityFwk
156  * @tc.desc: To terminate ability service, AMS will notify ability to perform onbackground lifecycle conversion, and
157  * then notify onstop event.
158  */
159 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_TerminateAbility_0100, Function | MediumTest | Level1)
160 {
161     std::shared_ptr<OHOSApplication> application = std::make_shared<OHOSApplication>();
162     sptr<IRemoteObject> abilityToken = sptr<IRemoteObject>(new AbilityRuntime::FAAbilityThread());
163     std::shared_ptr<AbilityInfo> abilityInfo = std::make_shared<AbilityInfo>();
164     abilityInfo->type = AppExecFwk::AbilityType::SERVICE;
165     abilityInfo->name = "DemoAbility";
166     std::shared_ptr<AbilityLocalRecord> abilityRecord = std::make_shared<AbilityLocalRecord>(abilityInfo, abilityToken);
167 
168     AbilityThread::AbilityThreadMain(application, abilityRecord, nullptr);
169     Want want;
170     context_->StartAbility(want, -1);
171     usleep(AbilityContextTest::TEST_WAIT_TIME);
172 
173     std::shared_ptr<ContextDeal> deal = std::make_shared<ContextDeal>();
174     deal->SetAbilityInfo(abilityInfo);
175     context_->AttachBaseContext(deal);
176     context_->TerminateAbility();
177     usleep(AbilityContextTest::TEST_WAIT_TIME);
178 }
179 
180 /**
181  * @tc.number: AaFwk_Ability_Context_TerminateAbility_0200
182  * @tc.name: AbilityFwk
183  * @tc.desc: When there is no startability, calling terminateability directly will not respond to onbackground and
184  * onstop events.
185  */
186 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_TerminateAbility_0200, Function | MediumTest | Level1)
187 {
188     std::shared_ptr<OHOSApplication> application = std::make_shared<OHOSApplication>();
189     sptr<IRemoteObject> abilityToken = sptr<IRemoteObject>(new AbilityRuntime::FAAbilityThread());
190     std::shared_ptr<AbilityInfo> abilityInfo = std::make_shared<AbilityInfo>();
191     abilityInfo->type = AppExecFwk::AbilityType::SERVICE;
192     abilityInfo->name = "DemoAbility";
193     std::shared_ptr<AbilityLocalRecord> abilityRecord = std::make_shared<AbilityLocalRecord>(abilityInfo, abilityToken);
194 
195     AbilityThread::AbilityThreadMain(application, abilityRecord, nullptr);
196 
197     std::shared_ptr<ContextDeal> deal = std::make_shared<ContextDeal>();
198     deal->SetAbilityInfo(abilityInfo);
199     context_->AttachBaseContext(deal);
200     context_->TerminateAbility();
201     usleep(AbilityContextTest::TEST_WAIT_TIME);
202 }
203 
204 /**
205  * @tc.number: AaFwk_Ability_Context_StopService_0100
206  * @tc.name: AbilityFwk
207  * @tc.desc: To stop ability service, AMS will notify ability to perform onbackground lifecycle conversion, and then
208  * notify onstop event.
209  */
210 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_StopService_0100, Function | MediumTest | Level1)
211 {
212     std::shared_ptr<OHOSApplication> application = std::make_shared<OHOSApplication>();
213     sptr<IRemoteObject> abilityToken = sptr<IRemoteObject>(new AbilityRuntime::FAAbilityThread());
214     std::shared_ptr<AbilityInfo> abilityInfo = std::make_shared<AbilityInfo>();
215     abilityInfo->type = AppExecFwk::AbilityType::SERVICE;
216     abilityInfo->name = "DemoAbility";
217     std::shared_ptr<AbilityLocalRecord> abilityRecord = std::make_shared<AbilityLocalRecord>(abilityInfo, abilityToken);
218 
219     AbilityThread::AbilityThreadMain(application, abilityRecord, nullptr);
220 
221     std::shared_ptr<ContextDeal> deal = std::make_shared<ContextDeal>();
222     deal->SetAbilityInfo(abilityInfo);
223     context_->AttachBaseContext(deal);
224 
225     Want want;
226     context_->StartAbility(want, -1);
227     usleep(AbilityContextTest::TEST_WAIT_TIME);
228     bool ret = context_->StopAbility(want);
229     EXPECT_TRUE(ret);
230     usleep(AbilityContextTest::TEST_WAIT_TIME);
231 }
232 
233 /**
234  * @tc.number: AaFwk_Ability_Context_StopService_0200
235  * @tc.name: AbilityFwk
236  * @tc.desc: When there is no startability, calling stop ability directly will not respond to onbackground and onstop
237  * events.
238  */
239 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_StopService_0200, Function | MediumTest | Level1)
240 {
241     std::shared_ptr<OHOSApplication> application = std::make_shared<OHOSApplication>();
242     sptr<IRemoteObject> abilityToken = sptr<IRemoteObject>(new AbilityRuntime::FAAbilityThread());
243     std::shared_ptr<AbilityInfo> abilityInfo = std::make_shared<AbilityInfo>();
244     abilityInfo->type = AppExecFwk::AbilityType::SERVICE;
245     abilityInfo->name = "DemoAbility";
246     std::shared_ptr<AbilityLocalRecord> abilityRecord = std::make_shared<AbilityLocalRecord>(abilityInfo, abilityToken);
247 
248     AbilityThread::AbilityThreadMain(application, abilityRecord, nullptr);
249     std::shared_ptr<ContextDeal> deal = std::make_shared<ContextDeal>();
250     deal->SetAbilityInfo(abilityInfo);
251     context_->AttachBaseContext(deal);
252 
253     Want want;
254     bool ret = context_->StopAbility(want);
255     EXPECT_TRUE(ret);
256     usleep(AbilityContextTest::TEST_WAIT_TIME);
257 }
258 
259 /**
260  * @tc.number: AaFwk_Ability_Context_GetCallingBundle_0100
261  * @tc.name: SetCallingContext and GetCallingBundle
262  * @tc.desc: Verify that function SetCallingContext and GetCallingBundle.
263  */
264 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_GetCallingBundle_0100, Function | MediumTest | Level1)
265 {
266     std::string deviceId = "deviceId";
267     std::string bundleName = "bundleName";
268     std::string abilityName = "abilityName";
269     std::string moduleName = "moduleName";
270     context_->SetCallingContext(deviceId, bundleName, abilityName, moduleName);
271     EXPECT_EQ(context_->GetCallingBundle(), "bundleName");
272 }
273 
274 /**
275  * @tc.number: AaFwk_Ability_Context_GetElementName_0100
276  * @tc.name: GetElementName
277  * @tc.desc: Verify that function GetElementName.
278  */
279 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_GetElementName_0100, Function | MediumTest | Level1)
280 {
281     std::shared_ptr<AbilityInfo> abilityInfo = std::make_shared<AbilityInfo>();
282     std::shared_ptr<ContextDeal> deal = std::make_shared<ContextDeal>();
283     deal->SetAbilityInfo(abilityInfo);
284     auto result = context_->GetElementName();
285     EXPECT_TRUE(result == nullptr);
286 }
287 
288 /**
289  * @tc.number: AaFwk_Ability_Context_GetElementName_0200
290  * @tc.name: GetElementName
291  * @tc.desc: Verify that function GetElementName.
292  */
293 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_GetElementName_0200, Function | MediumTest | Level1)
294 {
295     auto result = context_->GetElementName();
296     EXPECT_TRUE(result == nullptr);
297 }
298 
299 /**
300  * @tc.number: AaFwk_Ability_Context_GetCallingAbility_0100
301  * @tc.name: GetCallingAbility
302  * @tc.desc: Verify that function GetCallingAbility.
303  */
304 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_GetCallingAbility_0100, Function | MediumTest | Level1)
305 {
306     auto result = context_->GetCallingAbility();
307     EXPECT_TRUE(result != nullptr);
308 }
309 
310 /**
311  * @tc.number: AaFwk_Ability_Context_ConnectAbility_0200
312  * @tc.name: ConnectAbility
313  * @tc.desc: Verify that function ConnectAbility.
314  */
315 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_ConnectAbility_0200, Function | MediumTest | Level1)
316 {
317     Want want;
318     bool ret = context_->ConnectAbility(want, nullptr);
319     EXPECT_FALSE(ret);
320 }
321 
322 /**
323  * @tc.number: AaFwk_Ability_Context_ConnectAbility_0300
324  * @tc.name: ConnectAbility
325  * @tc.desc: Verify that function ConnectAbility.
326  */
327 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_ConnectAbility_0300, Function | MediumTest | Level1)
328 {
329     std::shared_ptr<OHOSApplication> application = std::make_shared<OHOSApplication>();
330     sptr<IRemoteObject> abilityToken = sptr<IRemoteObject>(new AbilityRuntime::FAAbilityThread());
331     std::shared_ptr<AbilityInfo> abilityInfo = std::make_shared<AbilityInfo>();
332     abilityInfo->type = AppExecFwk::AbilityType::DATA;
333     abilityInfo->name = "DemoAbility";
334     std::shared_ptr<AbilityLocalRecord> abilityRecord = std::make_shared<AbilityLocalRecord>(abilityInfo, abilityToken);
335     AbilityThread::AbilityThreadMain(application, abilityRecord, nullptr);
336     std::shared_ptr<ContextDeal> deal = std::make_shared<ContextDeal>();
337     deal->SetAbilityInfo(abilityInfo);
338     context_->AttachBaseContext(deal);
339     Want want;
340     bool ret = context_->ConnectAbility(want, nullptr);
341     EXPECT_FALSE(ret);
342 }
343 
344 /**
345  * @tc.number: AaFwk_Ability_Context_StopService_0300
346  * @tc.name: StopAbility
347  * @tc.desc: Verify that function StopAbility.
348  */
349 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_StopService_0300, Function | MediumTest | Level1)
350 {
351     std::shared_ptr<OHOSApplication> application = std::make_shared<OHOSApplication>();
352     sptr<IRemoteObject> abilityToken = sptr<IRemoteObject>(new AbilityRuntime::FAAbilityThread());
353     std::shared_ptr<AbilityInfo> abilityInfo = std::make_shared<AbilityInfo>();
354     abilityInfo->type = AppExecFwk::AbilityType::DATA;
355     abilityInfo->name = "DemoAbility";
356     std::shared_ptr<AbilityLocalRecord> abilityRecord = std::make_shared<AbilityLocalRecord>(abilityInfo, abilityToken);
357 
358     AbilityThread::AbilityThreadMain(application, abilityRecord, nullptr);
359     std::shared_ptr<ContextDeal> deal = std::make_shared<ContextDeal>();
360     deal->SetAbilityInfo(abilityInfo);
361     context_->AttachBaseContext(deal);
362 
363     Want want;
364     bool ret = context_->StopAbility(want);
365     EXPECT_FALSE(ret);
366 }
367 
368 /**
369  * @tc.number: AaFwk_Ability_Context_GetApplicationInfo_0100
370  * @tc.name: GetApplicationInfo
371  * @tc.desc: Verify that function GetApplicationInfo.
372  */
373 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_GetApplicationInfo_0100, Function | MediumTest | Level1)
374 {
375     auto result = context_->GetApplicationInfo();
376     EXPECT_TRUE(result == nullptr);
377 }
378 
379 /**
380  * @tc.number: AaFwk_Ability_Context_GetDatabaseDir_0100
381  * @tc.name: GetDatabaseDir
382  * @tc.desc: Verify that function GetDatabaseDir.
383  */
384 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_GetDatabaseDir_0100, Function | MediumTest | Level1)
385 {
386     auto result = context_->GetDatabaseDir();
387     EXPECT_TRUE(result.empty());
388 }
389 
390 /**
391  * @tc.number: AaFwk_Ability_Context_GetDataDir_0100
392  * @tc.name: GetDataDir
393  * @tc.desc: Verify that function GetDataDir.
394  */
395 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_GetDataDir_0100, Function | MediumTest | Level1)
396 {
397     auto result = context_->GetDataDir();
398     EXPECT_TRUE(result.empty());
399 }
400 
401 /**
402  * @tc.number: AaFwk_Ability_Context_GetBundleManager_0100
403  * @tc.name: GetBundleManager
404  * @tc.desc: Verify that function GetBundleManager.
405  */
406 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_GetBundleManager_0100, Function | MediumTest | Level1)
407 {
408     auto result = context_->GetBundleManager();
409     EXPECT_TRUE(result == nullptr);
410 }
411 
412 /**
413  * @tc.number: AaFwk_Ability_Context_GetDir_0100
414  * @tc.name: GetDir
415  * @tc.desc: Verify that function GetDir.
416  */
417 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_GetDir_0100, Function | MediumTest | Level1)
418 {
419     std::string name = "name";
420     int32_t mode = 1;
421     auto result = context_->GetDir(name, mode);
422     EXPECT_TRUE(result.empty());
423 }
424 
425 /**
426  * @tc.number: AaFwk_Ability_Context_GetBundleCodePath_0100
427  * @tc.name: GetBundleCodePath
428  * @tc.desc: Verify that function GetBundleCodePath.
429  */
430 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_GetBundleCodePath_0100, Function | MediumTest | Level1)
431 {
432     auto result = context_->GetBundleCodePath();
433     EXPECT_TRUE(result.empty());
434 }
435 
436 /**
437  * @tc.number: AaFwk_Ability_Context_GetBundleName_0100
438  * @tc.name: GetBundleName
439  * @tc.desc: Verify that function GetBundleName.
440  */
441 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_GetBundleName_0100, Function | MediumTest | Level1)
442 {
443     auto result = context_->GetBundleName();
444     EXPECT_TRUE(result.empty());
445 }
446 
447 /**
448  * @tc.number: AaFwk_Ability_Context_GetBundleResourcePath_0100
449  * @tc.name: GetBundleResourcePath
450  * @tc.desc: Verify that function GetBundleResourcePath.
451  */
452 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_GetBundleResourcePath_0100, Function | MediumTest | Level1)
453 {
454     auto result = context_->GetBundleResourcePath();
455     EXPECT_TRUE(result.empty());
456 }
457 
458 /**
459  * @tc.number: AaFwk_Ability_Context_GetApplicationContext_0100
460  * @tc.name: GetApplicationContext
461  * @tc.desc: Verify that function GetApplicationContext.
462  */
463 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_GetApplicationContext_0100, Function | MediumTest | Level1)
464 {
465     auto result = context_->GetApplicationContext();
466     EXPECT_TRUE(result == nullptr);
467 }
468 
469 /**
470  * @tc.number: AaFwk_Ability_Context_GetContext_0100
471  * @tc.name: GetContext
472  * @tc.desc: Verify that function GetContext.
473  */
474 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_GetContext_0100, Function | MediumTest | Level1)
475 {
476     auto result = context_->GetContext();
477     EXPECT_TRUE(result == nullptr);
478 }
479 
480 /**
481  * @tc.number: AaFwk_Ability_Context_GetAbilityManager_0100
482  * @tc.name: GetAbilityManager
483  * @tc.desc: Verify that function GetAbilityManager.
484  */
485 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_GetAbilityManager_0100, Function | MediumTest | Level1)
486 {
487     auto result = context_->GetAbilityManager();
488     EXPECT_TRUE(result == nullptr);
489 }
490 
491 /**
492  * @tc.number: AaFwk_Ability_Context_GetProcessInfo_0100
493  * @tc.name: GetProcessInfo
494  * @tc.desc: Verify that function GetProcessInfo.
495  */
496 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_GetProcessInfo_0100, Function | MediumTest | Level1)
497 {
498     auto result = context_->GetProcessInfo();
499     EXPECT_TRUE(result == nullptr);
500 }
501 
502 /**
503  * @tc.number: AaFwk_Ability_Context_GetAppType_0100
504  * @tc.name: GetAppType
505  * @tc.desc: Verify that function GetAppType.
506  */
507 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_GetAppType_0100, Function | MediumTest | Level1)
508 {
509     auto result = context_->GetAppType();
510     EXPECT_TRUE(result.empty());
511 }
512 
513 /**
514  * @tc.number: AaFwk_Ability_Context_GetAbilityInfo_0100
515  * @tc.name: GetAbilityInfo
516  * @tc.desc: Verify that function GetAbilityInfo.
517  */
518 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_GetAbilityInfo_0100, Function | MediumTest | Level1)
519 {
520     auto result = context_->GetAbilityInfo();
521     EXPECT_TRUE(result == nullptr);
522 }
523 
524 /**
525  * @tc.number: AaFwk_Ability_Context_GetHapModuleInfo_0100
526  * @tc.name: GetHapModuleInfo
527  * @tc.desc: Verify that function GetHapModuleInfo.
528  */
529 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_GetHapModuleInfo_0100, Function | MediumTest | Level1)
530 {
531     auto result = context_->GetHapModuleInfo();
532     EXPECT_TRUE(result == nullptr);
533 }
534 
535 /**
536  * @tc.number: AaFwk_Ability_Context_GetHapModuleInfo_0100
537  * @tc.name: GetAbilityInfoType
538  * @tc.desc: Verify that function GetAbilityInfoType.
539  */
540 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_GetAbilityInfoType_0100, Function | MediumTest | Level1)
541 {
542     auto result = context_->GetAbilityInfoType();
543     EXPECT_EQ(result, AppExecFwk::AbilityType::UNKNOWN);
544 }
545 
546 /**
547  * @tc.number: AaFwk_Ability_Context_GetAbilityInfoType_0200
548  * @tc.name: GetAbilityInfoType
549  * @tc.desc: Verify that function GetAbilityInfoType.
550  */
551 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_GetAbilityInfoType_0200, Function | MediumTest | Level1)
552 {
553     std::shared_ptr<OHOSApplication> application = std::make_shared<OHOSApplication>();
554     sptr<IRemoteObject> abilityToken = sptr<IRemoteObject>(new AbilityRuntime::FAAbilityThread());
555     std::shared_ptr<AbilityInfo> abilityInfo = std::make_shared<AbilityInfo>();
556     abilityInfo->type = AppExecFwk::AbilityType::SERVICE;
557     abilityInfo->name = "DemoAbility";
558     std::shared_ptr<AbilityLocalRecord> abilityRecord = std::make_shared<AbilityLocalRecord>(abilityInfo, abilityToken);
559 
560     AbilityThread::AbilityThreadMain(application, abilityRecord, nullptr);
561     std::shared_ptr<ContextDeal> deal = std::make_shared<ContextDeal>();
562     deal->SetAbilityInfo(abilityInfo);
563     context_->AttachBaseContext(deal);
564     auto result = context_->GetAbilityInfoType();
565     EXPECT_EQ(result, AppExecFwk::AbilityType::SERVICE);
566 }
567 
568 /**
569  * @tc.number: AaFwk_Ability_Context_CreateBundleContext_0100
570  * @tc.name: CreateBundleContext
571  * @tc.desc: Verify that function CreateBundleContext.
572  */
573 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_CreateBundleContext_0100, Function | MediumTest | Level1)
574 {
575     std::string bundleName;
576     int32_t flag = 1;
577     int32_t accountId = 1;
578     auto result = context_->CreateBundleContext(bundleName, flag, accountId);
579     EXPECT_TRUE(result == nullptr);
580 }
581 
582 /**
583  * @tc.number: AaFwk_Ability_Context_GetResourceManager_0100
584  * @tc.name: GetResourceManager
585  * @tc.desc: Verify that function GetResourceManager.
586  */
587 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_GetResourceManager_0100, Function | MediumTest | Level1)
588 {
589     auto result = context_->GetResourceManager();
590     EXPECT_TRUE(result == nullptr);
591 }
592 
593 /**
594  * @tc.number: AaFwk_Ability_Context_GetResourceManager_0200
595  * @tc.name: GetResourceManager
596  * @tc.desc: Verify that function GetResourceManager.
597  */
598 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_GetResourceManager_0200, Function | MediumTest | Level1)
599 {
600     std::shared_ptr<OHOSApplication> application = std::make_shared<OHOSApplication>();
601     sptr<IRemoteObject> abilityToken = sptr<IRemoteObject>(new AbilityRuntime::FAAbilityThread());
602     std::shared_ptr<AbilityInfo> abilityInfo = std::make_shared<AbilityInfo>();
603     abilityInfo->type = AppExecFwk::AbilityType::SERVICE;
604     abilityInfo->name = "DemoAbility";
605     std::shared_ptr<AbilityLocalRecord> abilityRecord = std::make_shared<AbilityLocalRecord>(abilityInfo, abilityToken);
606     AbilityThread::AbilityThreadMain(application, abilityRecord, nullptr);
607     std::shared_ptr<ContextDeal> deal = std::make_shared<ContextDeal>();
608     deal->SetAbilityInfo(abilityInfo);
609     context_->AttachBaseContext(deal);
610     auto result = context_->GetResourceManager();
611     EXPECT_TRUE(result == nullptr);
612 }
613 
614 /**
615  * @tc.number: AaFwk_Ability_Context_VerifyPermission_0100
616  * @tc.name: VerifyPermission
617  * @tc.desc: Verify that function VerifyPermission.
618  */
619 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_VerifyPermission_0100, Function | MediumTest | Level1)
620 {
621     std::string permission;
622     int32_t pid = 1;
623     int32_t uid = 1;
624     auto result = context_->VerifyPermission(permission, pid, uid);
625     EXPECT_EQ(result, AppExecFwk::Constants::PERMISSION_NOT_GRANTED);
626 }
627 
628 /**
629  * @tc.number: AaFwk_Ability_Context_VerifyPermission_0200
630  * @tc.name: VerifyPermission
631  * @tc.desc: Verify that function VerifyPermission.
632  */
633 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_VerifyPermission_0200, Function | MediumTest | Level1)
634 {
635     std::string permission = "permission";
636     int32_t pid = 1;
637     int32_t uid = 1;
638     auto result = context_->VerifyPermission(permission, pid, uid);
639     EXPECT_EQ(result, AppExecFwk::Constants::PERMISSION_NOT_GRANTED);
640 }
641 
642 /**
643  * @tc.number: AaFwk_Ability_Context_VerifyPermission_0300
644  * @tc.name: VerifyPermission
645  * @tc.desc: Verify that function VerifyPermission.
646  */
647 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_VerifyPermission_0300, Function | MediumTest | Level1)
648 {
649     std::shared_ptr<OHOSApplication> application = std::make_shared<OHOSApplication>();
650     sptr<IRemoteObject> abilityToken = sptr<IRemoteObject>(new AbilityRuntime::FAAbilityThread());
651     std::shared_ptr<AbilityInfo> abilityInfo = std::make_shared<AbilityInfo>();
652     abilityInfo->type = AppExecFwk::AbilityType::SERVICE;
653     abilityInfo->name = "DemoAbility";
654     std::shared_ptr<AbilityLocalRecord> abilityRecord = std::make_shared<AbilityLocalRecord>(abilityInfo, abilityToken);
655     AbilityThread::AbilityThreadMain(application, abilityRecord, nullptr);
656     std::shared_ptr<ContextDeal> deal = std::make_shared<ContextDeal>();
657     deal->SetAbilityInfo(abilityInfo);
658     context_->AttachBaseContext(deal);
659     std::string permission = "permission";
660     int32_t pid = 1;
661     int32_t uid = 1;
662     auto result = context_->VerifyPermission(permission, pid, uid);
663     EXPECT_EQ(result, AppExecFwk::Constants::PERMISSION_NOT_GRANTED);
664 }
665 
666 /**
667  * @tc.number: AaFwk_Ability_Context_GetPermissionDes_0100
668  * @tc.name: GetPermissionDes
669  * @tc.desc: Verify that function GetPermissionDes.
670  */
671 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_GetPermissionDes_0100, Function | MediumTest | Level1)
672 {
673     std::string permissionName = "permissionName";
674     std::string des = "des";
675     context_->GetPermissionDes(permissionName, des);
676     EXPECT_TRUE(permissionName.length() != des.length());
677 }
678 
679 /**
680  * @tc.number: AaFwk_Ability_Context_RequestPermissionsFromUser_0100
681  * @tc.name: RequestPermissionsFromUser
682  * @tc.desc: Verify that function RequestPermissionsFromUser.
683  */
684 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_RequestPermissionsFromUser_0100, Function | MediumTest | Level1)
685 {
686     std::vector<std::string> permissions;
687     std::vector<int> permissionsState;
688     context_->RequestPermissionsFromUser(permissions, permissionsState, nullptr);
689     EXPECT_TRUE(permissions.empty());
690 }
691 
692 /**
693  * @tc.number: AaFwk_Ability_Context_RequestPermissionsFromUser_0200
694  * @tc.name: RequestPermissionsFromUser
695  * @tc.desc: Verify that function RequestPermissionsFromUser.
696  */
697 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_RequestPermissionsFromUser_0200, Function | MediumTest | Level1)
698 {
699     std::vector<std::string> permissions;
700     permissions.emplace_back("a");
701     std::vector<int> permissionsState;
702     context_->RequestPermissionsFromUser(permissions, permissionsState, nullptr);
703     EXPECT_TRUE(!permissions.empty());
704 }
705 
706 /**
707  * @tc.number: AaFwk_Ability_Context_GetCaller_0100
708  * @tc.name: GetCaller
709  * @tc.desc: Verify that function GetCaller.
710  */
711 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_GetCaller_0100, Function | MediumTest | Level1)
712 {
713     auto result = context_->GetCaller();
714     EXPECT_EQ(result.GetScheme(), "");
715 }
716 
717 /**
718  * @tc.number: AaFwk_Ability_Context_GetExternalCacheDir_0100
719  * @tc.name: GetExternalCacheDir
720  * @tc.desc: Verify that function GetExternalCacheDir.
721  */
722 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_GetExternalCacheDir_0100, Function | MediumTest | Level1)
723 {
724     auto result = context_->GetExternalCacheDir();
725     EXPECT_EQ(result, "");
726 }
727 
728 /**
729  * @tc.number: AaFwk_Ability_Context_GetExternalFilesDir_0100
730  * @tc.name: GetExternalFilesDir
731  * @tc.desc: Verify that function GetExternalFilesDir.
732  */
733 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_GetExternalFilesDir_0100, Function | MediumTest | Level1)
734 {
735     std::string type;
736     auto result = context_->GetExternalFilesDir(type);
737     EXPECT_EQ(result, "");
738 }
739 
740 /**
741  * @tc.number: AaFwk_Ability_Context_GetFilesDir_0100
742  * @tc.name: GetFilesDir
743  * @tc.desc: Verify that function GetFilesDir.
744  */
745 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_GetFilesDir_0100, Function | MediumTest | Level1)
746 {
747     auto result = context_->GetFilesDir();
748     EXPECT_EQ(result, "");
749 }
750 
751 /**
752  * @tc.number: AaFwk_Ability_Context_GetAbilityPackageContext_0100
753  * @tc.name: GetAbilityPackageContext
754  * @tc.desc: Verify that function GetAbilityPackageContext.
755  */
756 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_GetAbilityPackageContext_0100, Function | MediumTest | Level1)
757 {
758     auto result = context_->GetAbilityPackageContext();
759     EXPECT_TRUE(result == nullptr);
760 }
761 
762 /**
763  * @tc.number: AaFwk_Ability_Context_GetProcessName_0100
764  * @tc.name: GetProcessName
765  * @tc.desc: Verify that function GetProcessName.
766  */
767 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_GetProcessName_0100, Function | MediumTest | Level1)
768 {
769     auto result = context_->GetProcessName();
770     EXPECT_TRUE(result.empty());
771 }
772 
773 /**
774  * @tc.number: AaFwk_Ability_Context_InitResourceManager_0100
775  * @tc.name: InitResourceManager
776  * @tc.desc: Verify that function InitResourceManager.
777  */
778 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_InitResourceManager_0100, Function | MediumTest | Level1)
779 {
780     BundleInfo bundleInfo;
781     std::shared_ptr<ContextDeal> deal = nullptr;
782     context_->InitResourceManager(bundleInfo, deal);
783     EXPECT_TRUE(deal == nullptr);
784 }
785 
786 /**
787  * @tc.number: AaFwk_Ability_Context_GetString_0100
788  * @tc.name: GetString
789  * @tc.desc: Verify that function GetString.
790  */
791 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_GetString_0100, Function | MediumTest | Level1)
792 {
793     int32_t resId = 1;
794     auto result = context_->GetString(resId);
795     EXPECT_EQ(result, "");
796 }
797 
798 /**
799  * @tc.number: AaFwk_Ability_Context_GetStringArray_0100
800  * @tc.name: GetStringArray
801  * @tc.desc: Verify that function GetStringArray.
802  */
803 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_GetStringArray_0100, Function | MediumTest | Level1)
804 {
805     int32_t resId = 1;
806     auto result = context_->GetStringArray(resId);
807     EXPECT_TRUE(result.empty());
808 }
809 
810 /**
811  * @tc.number: AaFwk_Ability_Context_GetIntArray_0100
812  * @tc.name: GetIntArray
813  * @tc.desc: Verify that function GetIntArray.
814  */
815 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_GetIntArray_0100, Function | MediumTest | Level1)
816 {
817     int32_t resId = 1;
818     auto result = context_->GetIntArray(resId);
819     EXPECT_TRUE(result.empty());
820 }
821 
822 /**
823  * @tc.number: AaFwk_Ability_Context_GetTheme_0100
824  * @tc.name: GetTheme
825  * @tc.desc: Verify that function GetTheme.
826  */
827 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_GetTheme_0100, Function | MediumTest | Level1)
828 {
829     auto result = context_->GetTheme();
830     EXPECT_TRUE(result.empty());
831 }
832 
833 /**
834  * @tc.number: AaFwk_Ability_Context_GetPattern_0100
835  * @tc.name: GetPattern
836  * @tc.desc: Verify that function GetPattern.
837  */
838 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_GetPattern_0100, Function | MediumTest | Level1)
839 {
840     auto result = context_->GetPattern();
841     EXPECT_TRUE(result.empty());
842 }
843 
844 /**
845  * @tc.number: AaFwk_Ability_Context_GetColor_0100
846  * @tc.name: GetColor
847  * @tc.desc: Verify that function GetColor.
848  */
849 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_GetColor_0100, Function | MediumTest | Level1)
850 {
851     int32_t resId = 1;
852     auto result = context_->GetColor(resId);
853     EXPECT_EQ(result, INVALID_RESOURCE_VALUE);
854 }
855 
856 /**
857  * @tc.number: AaFwk_Ability_Context_GetThemeId_0100
858  * @tc.name: GetThemeId
859  * @tc.desc: Verify that function GetThemeId.
860  */
861 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_GetThemeId_0100, Function | MediumTest | Level1)
862 {
863     auto result = context_->GetThemeId();
864     EXPECT_EQ(result, -1);
865 }
866 
867 /**
868  * @tc.number: AaFwk_Ability_Context_GetDisplayOrientation_0100
869  * @tc.name: GetDisplayOrientation
870  * @tc.desc: Verify that function GetDisplayOrientation.
871  */
872 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_GetDisplayOrientation_0100, Function | MediumTest | Level1)
873 {
874     auto result = context_->GetDisplayOrientation();
875     EXPECT_EQ(result, 0);
876 }
877 
878 /**
879  * @tc.number: AaFwk_Ability_Context_GetPreferencesDir_0100
880  * @tc.name: GetPreferencesDir
881  * @tc.desc: Verify that function GetPreferencesDir.
882  */
883 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_GetPreferencesDir_0100, Function | MediumTest | Level1)
884 {
885     auto result = context_->GetPreferencesDir();
886     EXPECT_EQ(result, "");
887 }
888 
889 /**
890  * @tc.number: AaFwk_Ability_Context_SetColorMode_0100
891  * @tc.name: SetColorMode and GetColorMode
892  * @tc.desc: Verify that function SetColorMode and GetColorMode.
893  */
894 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_SetColorMode_0100, Function | MediumTest | Level1)
895 {
896     std::shared_ptr<OHOSApplication> application = std::make_shared<OHOSApplication>();
897     sptr<IRemoteObject> abilityToken = sptr<IRemoteObject>(new AbilityRuntime::FAAbilityThread());
898     std::shared_ptr<AbilityInfo> abilityInfo = std::make_shared<AbilityInfo>();
899     std::shared_ptr<AbilityLocalRecord> abilityRecord = std::make_shared<AbilityLocalRecord>(abilityInfo, abilityToken);
900     AbilityThread::AbilityThreadMain(application, abilityRecord, nullptr);
901     std::shared_ptr<ContextDeal> deal = std::make_shared<ContextDeal>();
902     deal->SetAbilityInfo(abilityInfo);
903     context_->AttachBaseContext(deal);
904     int32_t mode = 1;
905     context_->SetColorMode(mode);
906     auto result = context_->GetColorMode();
907     EXPECT_EQ(result, 1);
908     EXPECT_TRUE(context_->baseContext_ != nullptr);
909 }
910 
911 /**
912  * @tc.number: AaFwk_Ability_Context_GetMissionId_0100
913  * @tc.name: GetMissionId
914  * @tc.desc: Verify that function GetMissionId.
915  */
916 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_GetMissionId_0100, Function | MediumTest | Level1)
917 {
918     auto result = context_->GetMissionId();
919     EXPECT_EQ(result, -1);
920 }
921 
922 /**
923  * @tc.number: AaFwk_Ability_Context_IsUpdatingConfigurations_0100
924  * @tc.name: IsUpdatingConfigurations
925  * @tc.desc: Verify that function IsUpdatingConfigurations.
926  */
927 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_IsUpdatingConfigurations_0100, Function | MediumTest | Level1)
928 {
929     auto result = context_->IsUpdatingConfigurations();
930     EXPECT_FALSE(result);
931 }
932 
933 /**
934  * @tc.number: AaFwk_Ability_Context_PrintDrawnCompleted_0100
935  * @tc.name: PrintDrawnCompleted
936  * @tc.desc: Verify that function PrintDrawnCompleted.
937  */
938 HWTEST_F(AbilityContextTest, AaFwk_Ability_Context_PrintDrawnCompleted_0100, Function | MediumTest | Level1)
939 {
940     auto result = context_->PrintDrawnCompleted();
941     EXPECT_FALSE(result);
942 }
943 }  // namespace AppExecFwk
944 }  // namespace OHOS
945