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 <climits>
17 #include <gtest/gtest.h>
18
19 #include "ability_impl_factory.h"
20 #include "ability_loader.h"
21 #include "ability_local_record.h"
22 #include "context_deal.h"
23 #include "data_ability_helper.h"
24 #include "ability_manager_client.h"
25 #include "ability_manager_interface.h"
26 #include "demo_ability_test.h"
27 #include "fa_ability_thread.h"
28 #include "mock_ability_manager_service.h"
29 #include "mock_bundle_manager.h"
30 #include "ohos_application.h"
31 #include "sys_mgr_client.h"
32 #include "system_ability_definition.h"
33
34 namespace OHOS {
35 namespace AppExecFwk {
36 using namespace testing::ext;
37 using namespace OHOS;
38 using namespace AAFwk;
39 using OHOS::AppExecFwk::ElementName;
40 using namespace OHOS::AppExecFwk;
41 /*
42 * Parameters:
43 * Action
44 * Entity
45 * Flag
46 * ElementName
47 */
48 const std::string ABILITY_NAME("DemoAbility");
49 class AbilityBaseTest : public testing::Test {
50 public:
51 static void SetUpTestCase(void);
52 static void TearDownTestCase(void);
53 void SetUp();
54 void TearDown();
55 OHOS::sptr<OHOS::IRemoteObject> abilityObject_;
56 static constexpr int TEST_WAIT_TIME = 500 * 1000; // 500 ms
57 static const int RESULT_CODE = 1992;
58 };
59
SetUpTestCase(void)60 void AbilityBaseTest::SetUpTestCase(void)
61 {}
62
TearDownTestCase(void)63 void AbilityBaseTest::TearDownTestCase(void)
64 {}
65
SetUp(void)66 void AbilityBaseTest::SetUp(void)
67 {
68 abilityObject_ = new MockAbilityManagerService();
69 auto sysMgr = OHOS::DelayedSingleton<AppExecFwk::SysMrgClient>::GetInstance();
70 EXPECT_TRUE(sysMgr != nullptr);
71 sysMgr->RegisterSystemAbility(OHOS::ABILITY_MGR_SERVICE_ID, abilityObject_);
72 sysMgr->RegisterSystemAbility(OHOS::BUNDLE_MGR_SERVICE_SYS_ABILITY_ID, new BundleMgrService());
73 }
74
TearDown(void)75 void AbilityBaseTest::TearDown(void)
76 {
77 abilityObject_ = nullptr;
78 }
79
80 /**
81 * @tc.number: AaFwk_Ability_AbilityFwk_Start_Test_0100
82 * @tc.name: AbilityFwk Start
83 * @tc.desc: The first step of startability is the attach AMS.
84 */
85 HWTEST_F(AbilityBaseTest, AaFwk_Ability_AbilityFwk_Start_Test_0100, Function | MediumTest | Level1)
86 {
87 std::shared_ptr<OHOSApplication> application = std::make_shared<OHOSApplication>();
88
89 sptr<IRemoteObject> abilityToken = sptr<IRemoteObject>(new AbilityRuntime::FAAbilityThread());
90 EXPECT_NE(abilityToken, nullptr);
91 if (abilityToken != nullptr) {
92 std::shared_ptr<AbilityInfo> abilityInfo = std::make_shared<AbilityInfo>();
93 abilityInfo->type = AppExecFwk::AbilityType::PAGE;
94 abilityInfo->name = ABILITY_NAME;
95 abilityInfo->isNativeAbility = true;
96 auto abilityRecord = std::make_shared<AbilityLocalRecord>(abilityInfo, abilityToken, nullptr, 0);
97
98 AbilityThread::AbilityThreadMain(application, abilityRecord, nullptr);
99 usleep(AbilityBaseTest::TEST_WAIT_TIME);
100 }
101 }
102
103 /**
104 * @tc.number: AaFwk_Ability_AbilityFwk_Start_Test_0200
105 * @tc.name: AbilityFwk Start
106 * @tc.desc: When connecting AMS,the instance of application is empty.
107 */
108 HWTEST_F(AbilityBaseTest, AaFwk_Ability_AbilityFwk_Start_Test_0200, Function | MediumTest | Level1)
109 {
110 std::shared_ptr<OHOSApplication> application = nullptr;
111
112 sptr<IRemoteObject> abilityToken = sptr<IRemoteObject>(new AbilityRuntime::FAAbilityThread());
113 EXPECT_NE(abilityToken, nullptr);
114 if (abilityToken != nullptr) {
115 std::shared_ptr<AbilityInfo> abilityInfo = std::make_shared<AbilityInfo>();
116 abilityInfo->type = AppExecFwk::AbilityType::PAGE;
117 abilityInfo->name = ABILITY_NAME;
118 abilityInfo->isNativeAbility = true;
119 auto abilityRecord = std::make_shared<AbilityLocalRecord>(abilityInfo, abilityToken, nullptr, 0);
120
121 AbilityThread::AbilityThreadMain(application, abilityRecord, nullptr);
122 usleep(AbilityBaseTest::TEST_WAIT_TIME);
123 }
124 }
125
126 /**
127 * @tc.number: AaFwk_Ability_AbilityFwk_Start_Test_0300
128 * @tc.name: AbilityFwk Start
129 * @tc.desc: When connecting AMS,the instance of abilityRecord is empty
130 */
131 HWTEST_F(AbilityBaseTest, AaFwk_Ability_AbilityFwk_Start_Test_0300, Function | MediumTest | Level1)
132 {
133 std::shared_ptr<OHOSApplication> application = std::make_shared<OHOSApplication>();
134
135 std::shared_ptr<AbilityLocalRecord> abilityRecord = nullptr;
136
137 AbilityThread::AbilityThreadMain(application, abilityRecord, nullptr);
138 EXPECT_NE(application, nullptr);
139 usleep(AbilityBaseTest::TEST_WAIT_TIME);
140 }
141
142 /**
143 * @tc.number: AaFwk_Ability_AbilityFwk_Start_Test_0400
144 * @tc.name: AbilityFwk Start
145 * @tc.desc: The ability name is empty, so the ability instance cannot be created.
146 */
147 HWTEST_F(AbilityBaseTest, AaFwk_Ability_AbilityFwk_Start_Test_0400, Function | MediumTest | Level1)
148 {
149 std::shared_ptr<OHOSApplication> application = std::make_shared<OHOSApplication>();
150
151 sptr<IRemoteObject> abilityToken = sptr<IRemoteObject>(new AbilityRuntime::FAAbilityThread());
152 EXPECT_NE(abilityToken, nullptr);
153 if (abilityToken != nullptr) {
154 std::shared_ptr<AbilityInfo> abilityInfo = std::make_shared<AbilityInfo>();
155 abilityInfo->type = AppExecFwk::AbilityType::PAGE;
156 auto abilityRecord = std::make_shared<AbilityLocalRecord>(abilityInfo, abilityToken, nullptr, 0);
157
158 AbilityThread::AbilityThreadMain(application, abilityRecord, nullptr);
159 usleep(AbilityBaseTest::TEST_WAIT_TIME);
160 }
161 }
162
163 /**
164 * @tc.number: AaFwk_Ability_AbilityFwk_Start_Test_0500
165 * @tc.name: AbilityFwk Start
166 * @tc.desc: The ability type is unknown, so the AbilityImpl instance cannot be created.
167 */
168 HWTEST_F(AbilityBaseTest, AaFwk_Ability_AbilityFwk_Start_Test_0500, Function | MediumTest | Level1)
169 {
170 std::shared_ptr<OHOSApplication> application = std::make_shared<OHOSApplication>();
171
172 sptr<IRemoteObject> abilityToken = sptr<IRemoteObject>(new AbilityRuntime::FAAbilityThread());
173 EXPECT_NE(abilityToken, nullptr);
174 if (abilityToken != nullptr) {
175 std::shared_ptr<AbilityInfo> abilityInfo = std::make_shared<AbilityInfo>();
176 abilityInfo->name = ABILITY_NAME;
177 abilityInfo->isNativeAbility = true;
178 auto abilityRecord = std::make_shared<AbilityLocalRecord>(abilityInfo, abilityToken, nullptr, 0);
179
180 AbilityThread::AbilityThreadMain(application, abilityRecord, nullptr);
181 usleep(AbilityBaseTest::TEST_WAIT_TIME);
182 }
183 }
184
185 /**
186 * @tc.number: AaFwk_Ability_AbilityFwk_Start_Test_0600
187 * @tc.name: AbilityFwk Start
188 * @tc.desc: The interface OnSaveAbilityState()/OnRestoreAbilityState() of demoability was called.
189 */
190 HWTEST_F(AbilityBaseTest, AaFwk_Ability_AbilityFwk_Start_Test_0600, Function | MediumTest | Level1)
191 {
192 std::shared_ptr<ContextDeal> contextDeal = std::make_shared<ContextDeal>();
193 std::shared_ptr<OHOSApplication> application = std::make_shared<OHOSApplication>();
194 std::shared_ptr<ApplicationInfo> appInfo = std::make_shared<ApplicationInfo>();
195 std::shared_ptr<ProcessInfo> processInfo = std::make_shared<ProcessInfo>();
196
197 appInfo->codePath = "codePath";
198 appInfo->dataBaseDir = "dataBaseDir";
199 appInfo->dataDir = "dataDir";
200 appInfo->cacheDir = "cacheDir";
201 appInfo->bundleName = "bundleName";
202
203 application->SetProcessInfo(processInfo);
204 contextDeal->SetApplicationInfo(appInfo);
205 contextDeal->SetApplicationContext(application);
206 application->AttachBaseContext(contextDeal);
207
208 sptr<IRemoteObject> abilityToken = sptr<IRemoteObject>(new AbilityRuntime::FAAbilityThread());
209 EXPECT_NE(abilityToken, nullptr);
210 if (abilityToken != nullptr) {
211 std::shared_ptr<AbilityInfo> abilityInfo = std::make_shared<AbilityInfo>();
212 abilityInfo->codePath = "codePath";
213 abilityInfo->resourcePath = "resourcePath";
214
215 abilityInfo->type = AppExecFwk::AbilityType::PAGE;
216 abilityInfo->name = ABILITY_NAME;
217 abilityInfo->isNativeAbility = true;
218 auto abilityRecord = std::make_shared<AbilityLocalRecord>(abilityInfo, abilityToken, nullptr, 0);
219
220 AbilityThread::AbilityThreadMain(application, abilityRecord, nullptr);
221
222 sptr<IRemoteObject> remoteObject_ =
223 OHOS::DelayedSingleton<AppExecFwk::SysMrgClient>::GetInstance()->GetSystemAbility(ABILITY_MGR_SERVICE_ID);
224 sptr<AAFwk::IAbilityManager> abms = iface_cast<AAFwk::IAbilityManager>(remoteObject_);
225 Want want;
226 sptr<IAbilityConnection> connect = nullptr;
227
228 // Just to test two interfaces OnRestoreAbilityState/OnSaveAbilityState
229 abms->ConnectAbility(want, connect, abilityToken);
230 usleep(AbilityBaseTest::TEST_WAIT_TIME);
231 }
232 }
233
234 /**
235 * @tc.number: AaFwk_Ability_Lifecycle_Test_0100
236 * @tc.name: Ability Lifecycle
237 * @tc.desc: The ability life cycle will change from initial state initial to inactive by calling the interface
238 * OnnStart(), and then to active by calling OnActive().
239 */
240 HWTEST_F(AbilityBaseTest, AaFwk_Ability_Lifecycle_Test_0100, Function | MediumTest | Level1)
241 {
242 std::shared_ptr<OHOSApplication> application = std::make_shared<OHOSApplication>();
243
244 sptr<IRemoteObject> abilityToken = sptr<IRemoteObject>(new AbilityRuntime::FAAbilityThread());
245 EXPECT_NE(abilityToken, nullptr);
246 if (abilityToken != nullptr) {
247 std::shared_ptr<AbilityInfo> abilityInfo = std::make_shared<AbilityInfo>();
248 abilityInfo->type = AppExecFwk::AbilityType::PAGE;
249 abilityInfo->name = ABILITY_NAME;
250 abilityInfo->isNativeAbility = true;
251 auto abilityRecord = std::make_shared<AbilityLocalRecord>(abilityInfo, abilityToken, nullptr, 0);
252
253 AbilityThread::AbilityThreadMain(application, abilityRecord, nullptr);
254
255 sptr<IRemoteObject> remoteObject_ =
256 OHOS::DelayedSingleton<AppExecFwk::SysMrgClient>::GetInstance()->GetSystemAbility(ABILITY_MGR_SERVICE_ID);
257 sptr<AAFwk::IAbilityManager> abms = iface_cast<AAFwk::IAbilityManager>(remoteObject_);
258 Want want;
259 abms->StartAbility(want, AbilityLifeCycleState::ABILITY_STATE_ACTIVE);
260 usleep(AbilityBaseTest::TEST_WAIT_TIME);
261 }
262 }
263
264 /**
265 * @tc.number: AaFwk_Ability_AbilityFwk_Lifecycle_Test_0200
266 * @tc.name: Ability Lifecycle
267 * @tc.desc: The ability life cycle will change from initial state initial to inactive by calling the interface
268 * OnnStart(), and then to active by calling OnNewWant()+OnActive().
269 */
270 HWTEST_F(AbilityBaseTest, AaFwk_Ability_AbilityFwk_Lifecycle_Test_0200, Function | MediumTest | Level1)
271 {
272 std::shared_ptr<OHOSApplication> application = std::make_shared<OHOSApplication>();
273
274 sptr<IRemoteObject> abilityToken = sptr<IRemoteObject>(new AbilityRuntime::FAAbilityThread());
275 EXPECT_NE(abilityToken, nullptr);
276 if (abilityToken != nullptr) {
277 std::shared_ptr<AbilityInfo> abilityInfo = std::make_shared<AbilityInfo>();
278 abilityInfo->type = AppExecFwk::AbilityType::PAGE;
279 abilityInfo->name = ABILITY_NAME;
280 abilityInfo->isNativeAbility = true;
281 auto abilityRecord = std::make_shared<AbilityLocalRecord>(abilityInfo, abilityToken, nullptr, 0);
282
283 AbilityThread::AbilityThreadMain(application, abilityRecord, nullptr);
284
285 sptr<IRemoteObject> remoteObject_ =
286 OHOS::DelayedSingleton<AppExecFwk::SysMrgClient>::GetInstance()->GetSystemAbility(ABILITY_MGR_SERVICE_ID);
287 sptr<AAFwk::IAbilityManager> abms = iface_cast<AAFwk::IAbilityManager>(remoteObject_);
288
289 abms->DisconnectAbility(nullptr);
290 usleep(AbilityBaseTest::TEST_WAIT_TIME);
291 }
292 }
293
294 /**
295 * @tc.number: AaFwk_Ability_AbilityFwk_Lifecycle_Test_0300
296 * @tc.name: Ability Lifecycle
297 * @tc.desc: Ability life cycle changes: initial - > active - > background, the interface of demoability will be
298 called:
299 * OnStart()->OnActive()->OnInactive()->OnBackground().
300 */
301 HWTEST_F(AbilityBaseTest, AaFwk_Ability_AbilityFwk_Lifecycle_Test_0300, Function | MediumTest | Level1)
302 {
303 std::shared_ptr<OHOSApplication> application = std::make_shared<OHOSApplication>();
304
305 sptr<IRemoteObject> abilityToken = sptr<IRemoteObject>(new AbilityRuntime::FAAbilityThread());
306 EXPECT_NE(abilityToken, nullptr);
307 if (abilityToken != nullptr) {
308 std::shared_ptr<AbilityInfo> abilityInfo = std::make_shared<AbilityInfo>();
309 abilityInfo->type = AppExecFwk::AbilityType::PAGE;
310 abilityInfo->name = ABILITY_NAME;
311 abilityInfo->isNativeAbility = true;
312 auto abilityRecord = std::make_shared<AbilityLocalRecord>(abilityInfo, abilityToken, nullptr, 0);
313
314 AbilityThread::AbilityThreadMain(application, abilityRecord, nullptr);
315
316 sptr<IRemoteObject> remoteObject_ =
317 OHOS::DelayedSingleton<AppExecFwk::SysMrgClient>::GetInstance()->GetSystemAbility(ABILITY_MGR_SERVICE_ID);
318 sptr<AAFwk::IAbilityManager> abms = iface_cast<AAFwk::IAbilityManager>(remoteObject_);
319 Want want;
320
321 abms->StartAbility(want, AbilityLifeCycleState::ABILITY_STATE_ACTIVE);
322 usleep(AbilityBaseTest::TEST_WAIT_TIME);
323 abms->StartAbility(want, AbilityLifeCycleState::ABILITY_STATE_BACKGROUND);
324 usleep(AbilityBaseTest::TEST_WAIT_TIME);
325 }
326 }
327
328 /**
329 * @tc.number: AaFwk_Ability_AbilityFwk_Lifecycle_Test_0400
330 * @tc.name: Ability Lifecycle
331 * @tc.desc: Ability life cycle changes: initial - > active - > inactive, the interface of demoability will be
332 called:
333 * OnStart()->OnActive()->OnInactive().
334 */
335 HWTEST_F(AbilityBaseTest, AaFwk_Ability_AbilityFwk_Lifecycle_Test_0400, Function | MediumTest | Level1)
336 {
337 std::shared_ptr<OHOSApplication> application = std::make_shared<OHOSApplication>();
338
339 sptr<IRemoteObject> abilityToken = sptr<IRemoteObject>(new AbilityRuntime::FAAbilityThread());
340 EXPECT_NE(abilityToken, nullptr);
341 if (abilityToken != nullptr) {
342 std::shared_ptr<AbilityInfo> abilityInfo = std::make_shared<AbilityInfo>();
343 abilityInfo->type = AppExecFwk::AbilityType::PAGE;
344 abilityInfo->name = ABILITY_NAME;
345 abilityInfo->isNativeAbility = true;
346 auto abilityRecord = std::make_shared<AbilityLocalRecord>(abilityInfo, abilityToken, nullptr, 0);
347
348 AbilityThread::AbilityThreadMain(application, abilityRecord, nullptr);
349
350 sptr<IRemoteObject> remoteObject_ =
351 OHOS::DelayedSingleton<AppExecFwk::SysMrgClient>::GetInstance()->GetSystemAbility(ABILITY_MGR_SERVICE_ID);
352 sptr<AAFwk::IAbilityManager> abms = iface_cast<AAFwk::IAbilityManager>(remoteObject_);
353 Want want;
354
355 abms->StartAbility(want, AbilityLifeCycleState::ABILITY_STATE_ACTIVE);
356 usleep(AbilityBaseTest::TEST_WAIT_TIME);
357 abms->StartAbility(want, AbilityLifeCycleState::ABILITY_STATE_INACTIVE);
358 usleep(AbilityBaseTest::TEST_WAIT_TIME);
359 }
360 }
361
362 /**
363 * @tc.number: AaFwk_Ability_AbilityFwk_Lifecycle_Test_0500
364 * @tc.name: Ability Lifecycle
365 * @tc.desc: Ability life cycle changes: initial - > active , the interface of demoability will be called:
366 * OnStart()->OnActive()->OnInactive()->OnBackground()->OnForeground().
367 */
368 HWTEST_F(AbilityBaseTest, AaFwk_Ability_AbilityFwk_Lifecycle_Test_0500, Function | MediumTest | Level1)
369 {
370 std::shared_ptr<OHOSApplication> application = std::make_shared<OHOSApplication>();
371
372 sptr<IRemoteObject> abilityToken = sptr<IRemoteObject>(new AbilityRuntime::FAAbilityThread());
373 EXPECT_NE(abilityToken, nullptr);
374 if (abilityToken != nullptr) {
375 std::shared_ptr<AbilityInfo> abilityInfo = std::make_shared<AbilityInfo>();
376 abilityInfo->type = AppExecFwk::AbilityType::PAGE;
377 abilityInfo->name = ABILITY_NAME;
378 abilityInfo->isNativeAbility = true;
379 auto abilityRecord = std::make_shared<AbilityLocalRecord>(abilityInfo, abilityToken, nullptr, 0);
380
381 AbilityThread::AbilityThreadMain(application, abilityRecord, nullptr);
382
383 sptr<IRemoteObject> remoteObject_ =
384 OHOS::DelayedSingleton<AppExecFwk::SysMrgClient>::GetInstance()->GetSystemAbility(ABILITY_MGR_SERVICE_ID);
385 sptr<AAFwk::IAbilityManager> abms = iface_cast<AAFwk::IAbilityManager>(remoteObject_);
386 Want want;
387
388 abms->StartAbility(want, AbilityLifeCycleState::ABILITY_STATE_ACTIVE);
389 usleep(AbilityBaseTest::TEST_WAIT_TIME);
390 abms->StartAbility(want, AbilityLifeCycleState::ABILITY_STATE_BACKGROUND);
391 usleep(AbilityBaseTest::TEST_WAIT_TIME);
392 abms->StartAbility(want, AbilityLifeCycleState::ABILITY_STATE_INACTIVE);
393 usleep(AbilityBaseTest::TEST_WAIT_TIME);
394 }
395 }
396
397 /**
398 * @tc.number: AaFwk_Ability_AbilityFwk_Lifecycle_Test_0600
399 * @tc.name: Ability Lifecycle
400 * @tc.desc: Ability life cycle changes: initial - > active , the interface of demoability will be called:
401 * OnStart()->OnActive()->OnInactive()->OnBackground()->OnStop().
402 */
403 HWTEST_F(AbilityBaseTest, AaFwk_Ability_AbilityFwk_Lifecycle_Test_0600, Function | MediumTest | Level1)
404 {
405 std::shared_ptr<OHOSApplication> application = std::make_shared<OHOSApplication>();
406
407 sptr<IRemoteObject> abilityToken = sptr<IRemoteObject>(new AbilityRuntime::FAAbilityThread());
408 EXPECT_NE(abilityToken, nullptr);
409 if (abilityToken != nullptr) {
410 std::shared_ptr<AbilityInfo> abilityInfo = std::make_shared<AbilityInfo>();
411 abilityInfo->type = AppExecFwk::AbilityType::PAGE;
412 abilityInfo->name = ABILITY_NAME;
413 abilityInfo->isNativeAbility = true;
414 auto abilityRecord = std::make_shared<AbilityLocalRecord>(abilityInfo, abilityToken, nullptr, 0);
415
416 AbilityThread::AbilityThreadMain(application, abilityRecord, nullptr);
417
418 sptr<IRemoteObject> remoteObject_ =
419 OHOS::DelayedSingleton<AppExecFwk::SysMrgClient>::GetInstance()->GetSystemAbility(ABILITY_MGR_SERVICE_ID);
420 sptr<AAFwk::IAbilityManager> abms = iface_cast<AAFwk::IAbilityManager>(remoteObject_);
421 Want want;
422
423 abms->StartAbility(want, AbilityLifeCycleState::ABILITY_STATE_ACTIVE);
424 usleep(AbilityBaseTest::TEST_WAIT_TIME);
425 abms->StartAbility(want, AbilityLifeCycleState::ABILITY_STATE_BACKGROUND);
426 usleep(AbilityBaseTest::TEST_WAIT_TIME);
427 abms->StartAbility(want, AbilityLifeCycleState::ABILITY_STATE_INITIAL);
428 usleep(AbilityBaseTest::TEST_WAIT_TIME);
429 }
430 }
431
432 /**
433 * @tc.number: AaFwk_Ability_TerminateAbility_ForResult_Test_0100
434 * @tc.name: TerminateAbility_ForResult
435 * @tc.desc: 1. TerminateAbility with parameters
436 * 2. AMS returns parameters through sendresult
437 * 3. Compare the returned parameters with the passed in parameters.
438 */
439 HWTEST_F(AbilityBaseTest, AaFwk_Ability_TerminateAbility_ForResult_Test_0100, Function | MediumTest | Level1)
440 {
441 std::shared_ptr<OHOSApplication> application = std::make_shared<OHOSApplication>();
442
443 sptr<IRemoteObject> abilityToken = sptr<IRemoteObject>(new AbilityRuntime::FAAbilityThread());
444 EXPECT_NE(abilityToken, nullptr);
445 if (abilityToken != nullptr) {
446 std::shared_ptr<AbilityInfo> abilityInfo = std::make_shared<AbilityInfo>();
447 abilityInfo->type = AppExecFwk::AbilityType::PAGE;
448 abilityInfo->name = ABILITY_NAME;
449 abilityInfo->isNativeAbility = true;
450 auto abilityRecord = std::make_shared<AbilityLocalRecord>(abilityInfo, abilityToken, nullptr, 0);
451
452 AbilityThread::AbilityThreadMain(application, abilityRecord, nullptr);
453
454 sptr<IRemoteObject> remoteObject_ =
455 OHOS::DelayedSingleton<AppExecFwk::SysMrgClient>::GetInstance()->GetSystemAbility(ABILITY_MGR_SERVICE_ID);
456 sptr<AAFwk::IAbilityManager> abms = iface_cast<AAFwk::IAbilityManager>(remoteObject_);
457 Want want;
458 sptr<IAbilityConnection> connect = nullptr;
459
460 abms->TerminateAbility(nullptr, RESULT_CODE, &want);
461 usleep(AbilityBaseTest::TEST_WAIT_TIME);
462 }
463 }
464
465 /*
466 * Parameters:
467 * Action
468 * Entity
469 * Flag
470 * ElementName
471 */
472 class AbilityTerminateTest : public testing::Test {
473 public:
474 static void SetUpTestCase(void);
475 static void TearDownTestCase(void);
476 void SetUp();
477 void TearDown();
478
479 public:
480 OHOS::sptr<OHOS::IRemoteObject> abilityObject_;
481 static constexpr int TEST_WAIT_TIME = 500 * 1000; // 500 ms
482 static const int RESULT_CODE = 1992;
483 };
484
SetUpTestCase(void)485 void AbilityTerminateTest::SetUpTestCase(void)
486 {}
487
TearDownTestCase(void)488 void AbilityTerminateTest::TearDownTestCase(void)
489 {}
490
SetUp(void)491 void AbilityTerminateTest::SetUp(void)
492 {
493 abilityObject_ = new MockAbilityManagerService();
494 auto sysMgr = OHOS::DelayedSingleton<AppExecFwk::SysMrgClient>::GetInstance();
495 EXPECT_TRUE(sysMgr != nullptr);
496 sysMgr->RegisterSystemAbility(OHOS::ABILITY_MGR_SERVICE_ID, abilityObject_);
497 }
498
TearDown(void)499 void AbilityTerminateTest::TearDown(void)
500 {
501 abilityObject_ = nullptr;
502 }
503
504 /**
505 * @tc.number: AaFwk_Ability_Terminate_test_0100
506 * @tc.name: TerminateAbility
507 * @tc.desc: When the ability state is inactive, the call to terminateability terminates.
508 */
509 HWTEST_F(AbilityTerminateTest, AaFwk_Ability_Terminate_test_0100, Function | MediumTest | Level1)
510 {
511 std::shared_ptr<OHOSApplication> application = std::make_shared<OHOSApplication>();
512 sptr<IRemoteObject> abilityToken = sptr<IRemoteObject>(new AbilityRuntime::FAAbilityThread());
513 EXPECT_NE(abilityToken, nullptr);
514 if (abilityToken != nullptr) {
515 std::shared_ptr<AbilityInfo> abilityInfo = std::make_shared<AbilityInfo>();
516 abilityInfo->type = AppExecFwk::AbilityType::PAGE;
517 abilityInfo->name = ABILITY_NAME;
518 abilityInfo->isNativeAbility = true;
519 auto abilityRecord = std::make_shared<AbilityLocalRecord>(abilityInfo, abilityToken, nullptr, 0);
520
521 GTEST_LOG_(INFO) << "AaFwk_Ability_Terminate_test_001 AbilityThreadMain";
522 AbilityThread::AbilityThreadMain(application, abilityRecord, nullptr);
523
524 Want want;
525 MockAbilityManagerService* mockAMS = iface_cast<MockAbilityManagerService>(abilityObject_);
526 mockAMS->StartAbility(want, AbilityLifeCycleState::ABILITY_STATE_INACTIVE);
527 usleep(AbilityTerminateTest::TEST_WAIT_TIME);
528
529 auto ability = AbilityLoader::GetInstance().GetAbilityByName(abilityInfo->name);
530 EXPECT_NE(ability, nullptr);
531 if (ability != nullptr) {
532 ability->SetResult(RESULT_CODE, want);
533 ability->TerminateAbility();
534 }
535 usleep(AbilityTerminateTest::TEST_WAIT_TIME);
536 }
537 GTEST_LOG_(INFO) << "AaFwk_Ability_Terminate_test_001 TerminateAbility";
538 }
539
540 /**
541 * @tc.number: AaFwk_Ability_Terminate_test_0200
542 * @tc.name: TerminateAbility
543 * @tc.desc: When the ability state is active, the call to terminateability terminates.
544 */
545 HWTEST_F(AbilityTerminateTest, AaFwk_Ability_Terminate_test_0200, Function | MediumTest | Level1)
546 {
547 std::shared_ptr<OHOSApplication> application = std::make_shared<OHOSApplication>();
548 sptr<IRemoteObject> abilityToken = sptr<IRemoteObject>(new AbilityRuntime::FAAbilityThread());
549 EXPECT_NE(abilityToken, nullptr);
550 if (abilityToken != nullptr) {
551 std::shared_ptr<AbilityInfo> abilityInfo = std::make_shared<AbilityInfo>();
552 abilityInfo->type = AppExecFwk::AbilityType::PAGE;
553 abilityInfo->name = ABILITY_NAME;
554 abilityInfo->isNativeAbility = true;
555 auto abilityRecord = std::make_shared<AbilityLocalRecord>(abilityInfo, abilityToken, nullptr, 0);
556
557 GTEST_LOG_(INFO) << "AaFwk_Ability_Terminate_test_002 AbilityThreadMain";
558 AbilityThread::AbilityThreadMain(application, abilityRecord, nullptr);
559
560 Want want;
561 MockAbilityManagerService* mockAMS = iface_cast<MockAbilityManagerService>(abilityObject_);
562 mockAMS->StartAbility(want, AbilityLifeCycleState::ABILITY_STATE_ACTIVE);
563 usleep(AbilityTerminateTest::TEST_WAIT_TIME);
564
565 auto ability = AbilityLoader::GetInstance().GetAbilityByName(abilityInfo->name);
566 EXPECT_NE(ability, nullptr);
567 if (ability != nullptr) {
568 ability->SetResult(RESULT_CODE, want);
569 ability->TerminateAbility();
570 }
571 usleep(AbilityTerminateTest::TEST_WAIT_TIME);
572 }
573 GTEST_LOG_(INFO) << "AaFwk_Ability_Terminate_test_002 TerminateAbility";
574 }
575
576 /**
577 * @tc.number: AaFwk_Ability_Terminate_test_0300
578 * @tc.name: TerminateAbility
579 * @tc.desc: When the ability state is BACKGROUND, the call to terminateability terminates.
580 */
581 HWTEST_F(AbilityTerminateTest, AaFwk_Ability_Terminate_test_0300, Function | MediumTest | Level1)
582 {
583 std::shared_ptr<OHOSApplication> application = std::make_shared<OHOSApplication>();
584 sptr<IRemoteObject> abilityToken = sptr<IRemoteObject>(new AbilityRuntime::FAAbilityThread());
585 EXPECT_NE(abilityToken, nullptr);
586 if (abilityToken != nullptr) {
587 std::shared_ptr<AbilityInfo> abilityInfo = std::make_shared<AbilityInfo>();
588 abilityInfo->type = AppExecFwk::AbilityType::PAGE;
589 abilityInfo->name = ABILITY_NAME;
590 abilityInfo->isNativeAbility = true;
591 auto abilityRecord = std::make_shared<AbilityLocalRecord>(abilityInfo, abilityToken, nullptr, 0);
592
593 GTEST_LOG_(INFO) << "AaFwk_Ability_Terminate_test_0300 AbilityThreadMain";
594 AbilityThread::AbilityThreadMain(application, abilityRecord, nullptr);
595
596 Want want;
597 MockAbilityManagerService* mockAMS = iface_cast<MockAbilityManagerService>(abilityObject_);
598 mockAMS->StartAbility(want, AbilityLifeCycleState::ABILITY_STATE_BACKGROUND);
599 usleep(AbilityTerminateTest::TEST_WAIT_TIME);
600
601 auto ability = AbilityLoader::GetInstance().GetAbilityByName(abilityInfo->name);
602 EXPECT_NE(ability, nullptr);
603 if (ability != nullptr) {
604 ability->SetResult(RESULT_CODE, want);
605 ability->TerminateAbility();
606 }
607 usleep(AbilityTerminateTest::TEST_WAIT_TIME);
608 }
609 GTEST_LOG_(INFO) << "AaFwk_Ability_Terminate_test_0300 TerminateAbility";
610 }
611
612 /**
613 * @tc.number: AaFwk_Ability_Terminate_test_0400
614 * @tc.name: TerminateAbility
615 * @tc.desc: When the ability state is ABILITY_STATE_INITIAL, the call to terminateability terminates.
616 */
617 HWTEST_F(AbilityTerminateTest, AaFwk_Ability_Terminate_test_0400, Function | MediumTest | Level1)
618 {
619 std::shared_ptr<OHOSApplication> application = std::make_shared<OHOSApplication>();
620 sptr<IRemoteObject> abilityToken = sptr<IRemoteObject>(new AbilityRuntime::FAAbilityThread());
621 EXPECT_NE(abilityToken, nullptr);
622 if (abilityToken != nullptr) {
623 std::shared_ptr<AbilityInfo> abilityInfo = std::make_shared<AbilityInfo>();
624 abilityInfo->type = AppExecFwk::AbilityType::PAGE;
625 abilityInfo->name = ABILITY_NAME;
626 abilityInfo->isNativeAbility = true;
627 auto abilityRecord = std::make_shared<AbilityLocalRecord>(abilityInfo, abilityToken, nullptr, 0);
628
629 GTEST_LOG_(INFO) << "AaFwk_Ability_Terminate_test_0400 AbilityThreadMain";
630 AbilityThread::AbilityThreadMain(application, abilityRecord, nullptr);
631
632 Want want;
633 MockAbilityManagerService* mockAMS = iface_cast<MockAbilityManagerService>(abilityObject_);
634 mockAMS->StartAbility(want, AbilityLifeCycleState::ABILITY_STATE_INITIAL);
635 usleep(AbilityTerminateTest::TEST_WAIT_TIME);
636
637 auto ability = AbilityLoader::GetInstance().GetAbilityByName(abilityInfo->name);
638 EXPECT_NE(ability, nullptr);
639 if (ability != nullptr) {
640 ability->SetResult(RESULT_CODE, want);
641 ability->TerminateAbility();
642 }
643 usleep(AbilityTerminateTest::TEST_WAIT_TIME);
644 }
645 GTEST_LOG_(INFO) << "AaFwk_Ability_Terminate_test_0400 TerminateAbility";
646 }
647
648 /**
649 * @tc.number: AaFwk_Ability_Terminate_test_0500
650 * @tc.name: TerminateAbility
651 * @tc.desc: When the ability state is inactive, the call to terminateability terminates.
652 */
653 HWTEST_F(AbilityTerminateTest, AaFwk_Ability_Terminate_test_0500, Function | MediumTest | Level1)
654 {
655 std::shared_ptr<OHOSApplication> application = std::make_shared<OHOSApplication>();
656 sptr<IRemoteObject> abilityToken = sptr<IRemoteObject>(new AbilityRuntime::FAAbilityThread());
657 EXPECT_NE(abilityToken, nullptr);
658 if (abilityToken != nullptr) {
659 std::shared_ptr<AbilityInfo> abilityInfo = std::make_shared<AbilityInfo>();
660 abilityInfo->type = AppExecFwk::AbilityType::PAGE;
661 abilityInfo->name = ABILITY_NAME;
662 abilityInfo->isNativeAbility = true;
663 auto abilityRecord = std::make_shared<AbilityLocalRecord>(abilityInfo, abilityToken, nullptr, 0);
664
665 GTEST_LOG_(INFO) << "AaFwk_Ability_Terminate_test_005 AbilityThreadMain";
666 AbilityThread::AbilityThreadMain(application, abilityRecord, nullptr);
667
668 Want want;
669 MockAbilityManagerService* mockAMS = iface_cast<MockAbilityManagerService>(abilityObject_);
670 mockAMS->StartAbility(want, AbilityLifeCycleState::ABILITY_STATE_INACTIVE);
671 usleep(AbilityTerminateTest::TEST_WAIT_TIME);
672
673 mockAMS->TerminateAbility(nullptr, RESULT_CODE, &want);
674 usleep(AbilityTerminateTest::TEST_WAIT_TIME);
675 }
676 GTEST_LOG_(INFO) << "AaFwk_Ability_Terminate_test_005 TerminateAbility";
677 }
678
679 /**
680 * @tc.number: AaFwk_Ability_Terminate_test_0600
681 * @tc.name: TerminateAbility
682 * @tc.desc: When the ability state is active, the call to terminateability terminates.
683 */
684 HWTEST_F(AbilityTerminateTest, AaFwk_Ability_Terminate_test_0600, Function | MediumTest | Level1)
685 {
686 std::shared_ptr<OHOSApplication> application = std::make_shared<OHOSApplication>();
687 sptr<IRemoteObject> abilityToken = sptr<IRemoteObject>(new AbilityRuntime::FAAbilityThread());
688 EXPECT_NE(abilityToken, nullptr);
689 if (abilityToken != nullptr) {
690 std::shared_ptr<AbilityInfo> abilityInfo = std::make_shared<AbilityInfo>();
691 abilityInfo->type = AppExecFwk::AbilityType::PAGE;
692 abilityInfo->name = ABILITY_NAME;
693 abilityInfo->isNativeAbility = true;
694 auto abilityRecord = std::make_shared<AbilityLocalRecord>(abilityInfo, abilityToken, nullptr, 0);
695
696 GTEST_LOG_(INFO) << "AaFwk_Ability_Terminate_test_006 AbilityThreadMain";
697 AbilityThread::AbilityThreadMain(application, abilityRecord, nullptr);
698
699 Want want;
700 MockAbilityManagerService* mockAMS = iface_cast<MockAbilityManagerService>(abilityObject_);
701 mockAMS->StartAbility(want, AbilityLifeCycleState::ABILITY_STATE_ACTIVE);
702 usleep(AbilityTerminateTest::TEST_WAIT_TIME);
703
704 mockAMS->TerminateAbility(nullptr, RESULT_CODE, &want);
705 usleep(AbilityTerminateTest::TEST_WAIT_TIME);
706 }
707 GTEST_LOG_(INFO) << "AaFwk_Ability_Terminate_test_006 TerminateAbility";
708 }
709
710 /**
711 * @tc.number: AaFwk_Ability_Terminate_test_0700
712 * @tc.name: TerminateAbility
713 * @tc.desc: When the ability state is background, the call to terminateability terminates.
714 */
715 HWTEST_F(AbilityTerminateTest, AaFwk_Ability_Terminate_test_0700, Function | MediumTest | Level1)
716 {
717 std::shared_ptr<OHOSApplication> application = std::make_shared<OHOSApplication>();
718 sptr<IRemoteObject> abilityToken = sptr<IRemoteObject>(new AbilityRuntime::FAAbilityThread());
719 EXPECT_NE(abilityToken, nullptr);
720 if (abilityToken != nullptr) {
721 std::shared_ptr<AbilityInfo> abilityInfo = std::make_shared<AbilityInfo>();
722 abilityInfo->type = AppExecFwk::AbilityType::PAGE;
723 abilityInfo->name = ABILITY_NAME;
724 abilityInfo->isNativeAbility = true;
725 auto abilityRecord = std::make_shared<AbilityLocalRecord>(abilityInfo, abilityToken, nullptr, 0);
726
727 GTEST_LOG_(INFO) << "AaFwk_Ability_Terminate_test_007 AbilityThreadMain";
728 AbilityThread::AbilityThreadMain(application, abilityRecord, nullptr);
729
730 Want want;
731 MockAbilityManagerService* mockAMS = iface_cast<MockAbilityManagerService>(abilityObject_);
732 mockAMS->StartAbility(want, AbilityLifeCycleState::ABILITY_STATE_BACKGROUND);
733 usleep(AbilityTerminateTest::TEST_WAIT_TIME);
734
735 mockAMS->TerminateAbility(nullptr, RESULT_CODE, &want);
736 usleep(AbilityTerminateTest::TEST_WAIT_TIME);
737 }
738 GTEST_LOG_(INFO) << "AaFwk_Ability_Terminate_test_007 TerminateAbility";
739 }
740
741 /**
742 * @tc.number: AaFwk_Ability_Terminate_test_0800
743 * @tc.name: TerminateAbility
744 * @tc.desc: When the ability state is initial, the call to terminateability terminates.
745 */
746 HWTEST_F(AbilityTerminateTest, AaFwk_Ability_Terminate_test_0800, Function | MediumTest | Level1)
747 {
748 std::shared_ptr<OHOSApplication> application = std::make_shared<OHOSApplication>();
749 sptr<IRemoteObject> abilityToken = sptr<IRemoteObject>(new AbilityRuntime::FAAbilityThread());
750 EXPECT_NE(abilityToken, nullptr);
751 if (abilityToken != nullptr) {
752 std::shared_ptr<AbilityInfo> abilityInfo = std::make_shared<AbilityInfo>();
753 abilityInfo->type = AppExecFwk::AbilityType::PAGE;
754 abilityInfo->name = ABILITY_NAME;
755 abilityInfo->isNativeAbility = true;
756 auto abilityRecord = std::make_shared<AbilityLocalRecord>(abilityInfo, abilityToken, nullptr, 0);
757
758 GTEST_LOG_(INFO) << "AaFwk_Ability_Terminate_test_008 AbilityThreadMain";
759 AbilityThread::AbilityThreadMain(application, abilityRecord, nullptr);
760
761 Want want;
762 MockAbilityManagerService* mockAMS = iface_cast<MockAbilityManagerService>(abilityObject_);
763 mockAMS->StartAbility(want, AbilityLifeCycleState::ABILITY_STATE_INITIAL);
764 usleep(AbilityTerminateTest::TEST_WAIT_TIME);
765
766 mockAMS->TerminateAbility(nullptr, RESULT_CODE, &want);
767 usleep(AbilityTerminateTest::TEST_WAIT_TIME);
768 }
769 GTEST_LOG_(INFO) << "AaFwk_Ability_Terminate_test_008 TerminateAbility";
770 }
771
772 /**
773 * @tc.number: AaFwk_WMS_window_test_0100
774 * @tc.name: WMS Link
775 * @tc.desc: Start pageability and call GetWindow to get the window handle.
776 */
777 HWTEST_F(AbilityTerminateTest, AaFwk_WMS_window_test_0100, Function | MediumTest | Level1)
778 {
779 std::shared_ptr<OHOSApplication> application = std::make_shared<OHOSApplication>();
780 sptr<IRemoteObject> abilityToken = sptr<IRemoteObject>(new AbilityRuntime::FAAbilityThread());
781 EXPECT_NE(abilityToken, nullptr);
782 if (abilityToken != nullptr) {
783 std::shared_ptr<AbilityInfo> abilityInfo = std::make_shared<AbilityInfo>();
784 abilityInfo->type = AppExecFwk::AbilityType::PAGE;
785 abilityInfo->name = ABILITY_NAME;
786 abilityInfo->isNativeAbility = true;
787 auto abilityRecord = std::make_shared<AbilityLocalRecord>(abilityInfo, abilityToken, nullptr, 0);
788
789 GTEST_LOG_(INFO) << "AaFwk_WMS_window_test_001 AbilityThreadMain";
790 AbilityThread::AbilityThreadMain(application, abilityRecord, nullptr);
791
792 Want want;
793 MockAbilityManagerService* mockAMS = iface_cast<MockAbilityManagerService>(abilityObject_);
794 GTEST_LOG_(INFO) << "AaFwk_WMS_window_test_001 StartAbility";
795 mockAMS->StartAbility(want, AbilityLifeCycleState::ABILITY_STATE_ACTIVE);
796 usleep(AbilityTerminateTest::TEST_WAIT_TIME);
797 mockAMS->TerminateAbility(nullptr, RESULT_CODE, &want);
798 usleep(AbilityTerminateTest::TEST_WAIT_TIME);
799 }
800 GTEST_LOG_(INFO) << "AaFwk_WMS_window_test_001 TerminateAbility";
801 }
802
803 /**
804 * @tc.number: AaFwk_WMS_window_test_0200
805 * @tc.name: WMS Link
806 * @tc.desc: Pageability switches to the foreground and calls Window.show.
807 * Pageability switches to the background and calls Window.hide.
808 */
809 HWTEST_F(AbilityTerminateTest, AaFwk_WMS_window_test_0200, Function | MediumTest | Level1)
810 {
811 std::shared_ptr<OHOSApplication> application = std::make_shared<OHOSApplication>();
812 sptr<IRemoteObject> abilityToken = sptr<IRemoteObject>(new AbilityRuntime::FAAbilityThread());
813 EXPECT_NE(abilityToken, nullptr);
814 if (abilityToken != nullptr) {
815 std::shared_ptr<AbilityInfo> abilityInfo = std::make_shared<AbilityInfo>();
816 abilityInfo->type = AppExecFwk::AbilityType::PAGE;
817 abilityInfo->name = ABILITY_NAME;
818 abilityInfo->isNativeAbility = true;
819 auto abilityRecord = std::make_shared<AbilityLocalRecord>(abilityInfo, abilityToken, nullptr, 0);
820
821 GTEST_LOG_(INFO) << "AaFwk_WMS_window_test_002 AbilityThreadMain";
822 AbilityThread::AbilityThreadMain(application, abilityRecord, nullptr);
823
824 Want want;
825 MockAbilityManagerService* mockAMS = iface_cast<MockAbilityManagerService>(abilityObject_);
826 mockAMS->StartAbility(want, AbilityLifeCycleState::ABILITY_STATE_BACKGROUND);
827 GTEST_LOG_(INFO) << "AaFwk_WMS_window_test_002 BackGround";
828 usleep(AbilityTerminateTest::TEST_WAIT_TIME);
829 mockAMS->StartAbility(want, AbilityLifeCycleState::ABILITY_STATE_ACTIVE);
830 GTEST_LOG_(INFO) << "AaFwk_WMS_window_test_002 Active";
831 usleep(AbilityTerminateTest::TEST_WAIT_TIME);
832
833 mockAMS->TerminateAbility(nullptr, RESULT_CODE, &want);
834 }
835 GTEST_LOG_(INFO) << "AaFwk_WMS_window_test_002 TerminateAbility";
836 }
837
838 /**
839 * @tc.number: AaFwk_DataAbility_Launch_0100
840 * @tc.name: DataAbilityHelper
841 * @tc.desc: The AbilityManager could receive the shelder of abilitythread for dataability when the dataability
842 * launched.
843 */
844 HWTEST_F(AbilityTerminateTest, AaFwk_DataAbility_Launch_0100, Function | MediumTest | Level1)
845 {
846 GTEST_LOG_(INFO) << "AaFwk_DataAbility_Launch_0100";
847
848 std::shared_ptr<OHOSApplication> application = std::make_shared<OHOSApplication>();
849 sptr<IRemoteObject> abilityToken = sptr<IRemoteObject>(new AbilityRuntime::FAAbilityThread());
850 EXPECT_NE(abilityToken, nullptr);
851 if (abilityToken != nullptr) {
852 std::shared_ptr<AbilityInfo> abilityInfo = std::make_shared<AbilityInfo>();
853 abilityInfo->type = AppExecFwk::AbilityType::DATA;
854 abilityInfo->name = "DemoAbility";
855 auto abilityRecord = std::make_shared<AbilityLocalRecord>(abilityInfo, abilityToken, nullptr, 0);
856
857 AbilityThread::AbilityThreadMain(application, abilityRecord, nullptr);
858
859 sptr<IRemoteObject> remoteObject_ =
860 OHOS::DelayedSingleton<AppExecFwk::SysMrgClient>::GetInstance()->GetSystemAbility(ABILITY_MGR_SERVICE_ID);
861 sptr<AAFwk::IAbilityManager> abms = iface_cast<AAFwk::IAbilityManager>(remoteObject_);
862
863 Uri uri("testuri");
864 EXPECT_TRUE(abms->AcquireDataAbility(uri, false, nullptr) == nullptr);
865 }
866 GTEST_LOG_(INFO) << "AaFwk_DataAbility_Launch_0100";
867 }
868
869 /**
870 * @tc.number: AaFwk_DataAbility_Start_0100
871 * @tc.name: DataAbilityHelper
872 * @tc.desc: The AbilityManager could receive the inactive state from abilitythread for dataability when the
873 dataability
874 * change its lifecycle state to inactive.
875 */
876 HWTEST_F(AbilityTerminateTest, AaFwk_DataAbility_Start_0100, Function | MediumTest | Level1)
877 {
878 GTEST_LOG_(INFO) << "AaFwk_DataAbility_Start_0100";
879
880 std::shared_ptr<OHOSApplication> application = std::make_shared<OHOSApplication>();
881 sptr<IRemoteObject> abilityToken = sptr<IRemoteObject>(new AbilityRuntime::FAAbilityThread());
882 EXPECT_NE(abilityToken, nullptr);
883 if (abilityToken != nullptr) {
884 std::shared_ptr<AbilityInfo> abilityInfo = std::make_shared<AbilityInfo>();
885 abilityInfo->type = AppExecFwk::AbilityType::DATA;
886 abilityInfo->name = "DemoAbility";
887 auto abilityRecord = std::make_shared<AbilityLocalRecord>(abilityInfo, abilityToken, nullptr, 0);
888
889 AbilityThread::AbilityThreadMain(application, abilityRecord, nullptr);
890
891 sptr<IRemoteObject> remoteObject_ =
892 OHOS::DelayedSingleton<AppExecFwk::SysMrgClient>::GetInstance()->GetSystemAbility(ABILITY_MGR_SERVICE_ID);
893 sptr<AAFwk::IAbilityManager> abms = iface_cast<AAFwk::IAbilityManager>(remoteObject_);
894 Want want;
895 abms->StartAbility(want, AbilityLifeCycleState::ABILITY_STATE_INACTIVE);
896
897 usleep(AbilityBaseTest::TEST_WAIT_TIME);
898 }
899 GTEST_LOG_(INFO) << "AaFwk_DataAbility_Start_0100";
900 }
901
902 /**
903 * @tc.number: AaFwk_DataAbility_Start_0200
904 * @tc.name: DataAbilityHelper
905 * @tc.desc: The AbilityManager could not receive the initial state from abilitythread for dataability.
906 * And the OnStop coulde be called. When the dataability change its lifecycle state to initial.
907 */
908 HWTEST_F(AbilityTerminateTest, AaFwk_DataAbility_Start_0200, Function | MediumTest | Level1)
909 {
910 GTEST_LOG_(INFO) << "AaFwk_DataAbility_Start_0200";
911
912 std::shared_ptr<OHOSApplication> application = std::make_shared<OHOSApplication>();
913 sptr<IRemoteObject> abilityToken = sptr<IRemoteObject>(new AbilityRuntime::FAAbilityThread());
914 EXPECT_NE(abilityToken, nullptr);
915 if (abilityToken != nullptr) {
916 std::shared_ptr<AbilityInfo> abilityInfo = std::make_shared<AbilityInfo>();
917 abilityInfo->type = AppExecFwk::AbilityType::DATA;
918 abilityInfo->name = "DemoAbility";
919 auto abilityRecord = std::make_shared<AbilityLocalRecord>(abilityInfo, abilityToken, nullptr, 0);
920
921 AbilityThread::AbilityThreadMain(application, abilityRecord, nullptr);
922
923 sptr<IRemoteObject> remoteObject_ =
924 OHOS::DelayedSingleton<AppExecFwk::SysMrgClient>::GetInstance()->GetSystemAbility(ABILITY_MGR_SERVICE_ID);
925 sptr<AAFwk::IAbilityManager> abms = iface_cast<AAFwk::IAbilityManager>(remoteObject_);
926 Want want;
927 abms->StartAbility(want, AbilityLifeCycleState::ABILITY_STATE_INITIAL);
928
929 usleep(AbilityBaseTest::TEST_WAIT_TIME);
930 }
931 GTEST_LOG_(INFO) << "AaFwk_DataAbility_Start_0200";
932 }
933
934 /**
935 * @tc.number: AaFwk_DataAbility_Start_0300
936 * @tc.name: DataAbilityHelper
937 * @tc.desc: The AbilityManager could not receive the active state from abilitythread for dataability.
938 * And the OnActive coulde be called. When the dataability change its lifecycle state to active.
939 */
940 HWTEST_F(AbilityTerminateTest, AaFwk_DataAbility_Start_0300, Function | MediumTest | Level1)
941 {
942 GTEST_LOG_(INFO) << "AaFwk_DataAbility_Start_0300";
943
944 std::shared_ptr<OHOSApplication> application = std::make_shared<OHOSApplication>();
945 sptr<IRemoteObject> abilityToken = sptr<IRemoteObject>(new AbilityRuntime::FAAbilityThread());
946 EXPECT_NE(abilityToken, nullptr);
947 if (abilityToken != nullptr) {
948 std::shared_ptr<AbilityInfo> abilityInfo = std::make_shared<AbilityInfo>();
949 abilityInfo->type = AppExecFwk::AbilityType::DATA;
950 abilityInfo->name = "DemoAbility";
951 auto abilityRecord = std::make_shared<AbilityLocalRecord>(abilityInfo, abilityToken, nullptr, 0);
952
953 AbilityThread::AbilityThreadMain(application, abilityRecord, nullptr);
954
955 sptr<IRemoteObject> remoteObject_ =
956 OHOS::DelayedSingleton<AppExecFwk::SysMrgClient>::GetInstance()->GetSystemAbility(ABILITY_MGR_SERVICE_ID);
957 sptr<AAFwk::IAbilityManager> abms = iface_cast<AAFwk::IAbilityManager>(remoteObject_);
958 Want want;
959 abms->StartAbility(want, AbilityLifeCycleState::ABILITY_STATE_ACTIVE);
960
961 usleep(AbilityBaseTest::TEST_WAIT_TIME);
962 }
963 GTEST_LOG_(INFO) << "AaFwk_DataAbility_Start_0300";
964 }
965
966 /**
967 * @tc.number: AaFwk_DataAbility_Start_0400
968 * @tc.name: DataAbilityHelper
969 * @tc.desc: The AbilityManager could not receive the background state from abilitythread for dataability.
970 * And the OnBackground coulde be called. When the dataability change its lifecycle state to background.
971 */
972 HWTEST_F(AbilityTerminateTest, AaFwk_DataAbility_Start_0400, Function | MediumTest | Level1)
973 {
974 GTEST_LOG_(INFO) << "AaFwk_DataAbility_Start_0400";
975
976 std::shared_ptr<OHOSApplication> application = std::make_shared<OHOSApplication>();
977 sptr<IRemoteObject> abilityToken = sptr<IRemoteObject>(new AbilityRuntime::FAAbilityThread());
978 EXPECT_NE(abilityToken, nullptr);
979 if (abilityToken != nullptr) {
980 std::shared_ptr<AbilityInfo> abilityInfo = std::make_shared<AbilityInfo>();
981 abilityInfo->type = AppExecFwk::AbilityType::DATA;
982 abilityInfo->name = "DemoAbility";
983 auto abilityRecord = std::make_shared<AbilityLocalRecord>(abilityInfo, abilityToken, nullptr, 0);
984
985 AbilityThread::AbilityThreadMain(application, abilityRecord, nullptr);
986
987 sptr<IRemoteObject> remoteObject_ =
988 OHOS::DelayedSingleton<AppExecFwk::SysMrgClient>::GetInstance()->GetSystemAbility(ABILITY_MGR_SERVICE_ID);
989 sptr<AAFwk::IAbilityManager> abms = iface_cast<AAFwk::IAbilityManager>(remoteObject_);
990 Want want;
991 abms->StartAbility(want, AbilityLifeCycleState::ABILITY_STATE_BACKGROUND);
992
993 usleep(AbilityBaseTest::TEST_WAIT_TIME);
994 }
995 GTEST_LOG_(INFO) << "AaFwk_DataAbility_Start_0400";
996 }
997
998 /**
999 * @tc.number: AaFwk_IAbilityManager_StartAbilityAsCaller_0100
1000 * @tc.name: StartAbilityAsCaller
1001 * @tc.desc: test StartAbilityAsCaller function
1002 */
1003 HWTEST_F(AbilityTerminateTest, AaFwk_IAbilityManager_StartAbilityAsCaller_0100, Function | MediumTest | Level1)
1004 {
1005 GTEST_LOG_(INFO) << "AaFwk_IAbilityManager_StartAbilityAsCaller_0100";
1006 sptr<IRemoteObject> remoteObject_ =
1007 OHOS::DelayedSingleton<AppExecFwk::SysMrgClient>::GetInstance()->GetSystemAbility(ABILITY_MGR_SERVICE_ID);
1008 sptr<AAFwk::IAbilityManager> abms = iface_cast<AAFwk::IAbilityManager>(remoteObject_);
1009 EXPECT_NE(abms, nullptr);
1010 Want want;
1011 EXPECT_EQ(0, abms->StartAbilityAsCaller(want, nullptr, nullptr));
1012 GTEST_LOG_(INFO) << "AaFwk_IAbilityManager_StartAbilityAsCaller_0100";
1013 }
1014
1015 /**
1016 * @tc.number: AaFwk_IAbilityManager_StartAbilityAsCaller_0200
1017 * @tc.name: StartAbilityAsCaller
1018 * @tc.desc: test StartAbilityAsCaller function
1019 */
1020 HWTEST_F(AbilityTerminateTest, AaFwk_IAbilityManager_StartAbilityAsCaller_0200, Function | MediumTest | Level1)
1021 {
1022 GTEST_LOG_(INFO) << "AaFwk_IAbilityManager_StartAbilityAsCaller_0200";
1023 sptr<IRemoteObject> remoteObject_ =
1024 OHOS::DelayedSingleton<AppExecFwk::SysMrgClient>::GetInstance()->GetSystemAbility(ABILITY_MGR_SERVICE_ID);
1025 sptr<AAFwk::IAbilityManager> abms = iface_cast<AAFwk::IAbilityManager>(remoteObject_);
1026 EXPECT_NE(abms, nullptr);
1027 Want want;
1028 StartOptions startOptions;
1029 EXPECT_EQ(0, abms->StartAbilityAsCaller(want, startOptions, nullptr, nullptr));
1030 GTEST_LOG_(INFO) << "AaFwk_IAbilityManager_StartAbilityAsCaller_0200";
1031 }
1032
1033 /**
1034 * @tc.number: AaFwk_IAbilityManager_StartUIExtensionAbility_0100
1035 * @tc.name: StartUIExtensionAbility
1036 * @tc.desc: test StartUIExtensionAbility function
1037 */
1038 HWTEST_F(AbilityTerminateTest, AaFwk_IAbilityManager_StartUIExtensionAbility_0100, Function | MediumTest | Level1)
1039 {
1040 GTEST_LOG_(INFO) << "AaFwk_IAbilityManager_StartUIExtensionAbility_0100";
1041 sptr<IRemoteObject> remoteObject_ =
1042 OHOS::DelayedSingleton<AppExecFwk::SysMrgClient>::GetInstance()->GetSystemAbility(ABILITY_MGR_SERVICE_ID);
1043 sptr<AAFwk::IAbilityManager> abms = iface_cast<AAFwk::IAbilityManager>(remoteObject_);
1044 EXPECT_NE(abms, nullptr);
1045 Want want;
1046 EXPECT_EQ(0, abms->StartAbilityAsCaller(want, nullptr, nullptr));
1047 GTEST_LOG_(INFO) << "AaFwk_IAbilityManager_StartUIExtensionAbility_0100";
1048 }
1049
1050 /**
1051 * @tc.number: AaFwk_IAbilityManager_TerminateUIExtensionAbility_0100
1052 * @tc.name: TerminateUIExtensionAbility
1053 * @tc.desc: test TerminateUIExtensionAbility function
1054 */
1055 HWTEST_F(AbilityTerminateTest, AaFwk_IAbilityManager_TerminateUIExtensionAbility_0100, Function | MediumTest | Level1)
1056 {
1057 GTEST_LOG_(INFO) << "AaFwk_IAbilityManager_TerminateUIExtensionAbility_0100";
1058 sptr<IRemoteObject> remoteObject_ =
1059 OHOS::DelayedSingleton<AppExecFwk::SysMrgClient>::GetInstance()->GetSystemAbility(ABILITY_MGR_SERVICE_ID);
1060 sptr<AAFwk::IAbilityManager> abms = iface_cast<AAFwk::IAbilityManager>(remoteObject_);
1061 EXPECT_NE(abms, nullptr);
1062 int resultCode = 1;
1063 EXPECT_EQ(0, abms->TerminateUIExtensionAbility(nullptr, resultCode));
1064 GTEST_LOG_(INFO) << "AaFwk_IAbilityManager_TerminateUIExtensionAbility_0100";
1065 }
1066
1067 /**
1068 * @tc.number: AaFwk_IAbilityManager_SendResultToAbility_0100
1069 * @tc.name: SendResultToAbility
1070 * @tc.desc: test SendResultToAbility function
1071 */
1072 HWTEST_F(AbilityTerminateTest, AaFwk_IAbilityManager_SendResultToAbility_0100, Function | MediumTest | Level1)
1073 {
1074 GTEST_LOG_(INFO) << "AaFwk_IAbilityManager_SendResultToAbility_0100";
1075 sptr<IRemoteObject> remoteObject_ =
1076 OHOS::DelayedSingleton<AppExecFwk::SysMrgClient>::GetInstance()->GetSystemAbility(ABILITY_MGR_SERVICE_ID);
1077 sptr<AAFwk::IAbilityManager> abms = iface_cast<AAFwk::IAbilityManager>(remoteObject_);
1078 EXPECT_NE(abms, nullptr);
1079 int requestCode = 1;
1080 int resultCode = 2;
1081 Want resultWant;
1082 EXPECT_EQ(0, abms->SendResultToAbility(requestCode, resultCode, resultWant));
1083 GTEST_LOG_(INFO) << "AaFwk_IAbilityManager_SendResultToAbility_0100";
1084 }
1085
1086 /**
1087 * @tc.number: AaFwk_IAbilityManager_MinimizeUIExtensionAbility_0100
1088 * @tc.name: MinimizeUIExtensionAbility
1089 * @tc.desc: test MinimizeUIExtensionAbility function
1090 */
1091 HWTEST_F(AbilityTerminateTest, AaFwk_IAbilityManager_MinimizeUIExtensionAbility_0100, Function | MediumTest | Level1)
1092 {
1093 GTEST_LOG_(INFO) << "AaFwk_IAbilityManager_MinimizeUIExtensionAbility_0100";
1094 sptr<IRemoteObject> remoteObject_ =
1095 OHOS::DelayedSingleton<AppExecFwk::SysMrgClient>::GetInstance()->GetSystemAbility(ABILITY_MGR_SERVICE_ID);
1096 sptr<AAFwk::IAbilityManager> abms = iface_cast<AAFwk::IAbilityManager>(remoteObject_);
1097 EXPECT_NE(abms, nullptr);
1098 EXPECT_EQ(0, abms->MinimizeUIExtensionAbility(nullptr));
1099 GTEST_LOG_(INFO) << "AaFwk_IAbilityManager_MinimizeUIExtensionAbility_0100";
1100 }
1101
1102 /**
1103 * @tc.number: AaFwk_IAbilityManager_CallRequestDone_0100
1104 * @tc.name: CallRequestDone
1105 * @tc.desc: test CallRequestDone function
1106 */
1107 HWTEST_F(AbilityTerminateTest, AaFwk_IAbilityManager_CallRequestDone_0100, Function | MediumTest | Level1)
1108 {
1109 GTEST_LOG_(INFO) << "AaFwk_IAbilityManager_CallRequestDone_0100";
1110 sptr<IRemoteObject> remoteObject_ =
1111 OHOS::DelayedSingleton<AppExecFwk::SysMrgClient>::GetInstance()->GetSystemAbility(ABILITY_MGR_SERVICE_ID);
1112 sptr<AAFwk::IAbilityManager> abms = iface_cast<AAFwk::IAbilityManager>(remoteObject_);
1113 EXPECT_NE(abms, nullptr);
1114 abms->CallRequestDone(nullptr, nullptr);
1115 GTEST_LOG_(INFO) << "AaFwk_IAbilityManager_CallRequestDone_0100";
1116 }
1117
1118 /**
1119 * @tc.number: AaFwk_IAbilityManager_AddFreeInstallObserver_0100
1120 * @tc.name: AddFreeInstallObserver
1121 * @tc.desc: test AddFreeInstallObserver function
1122 */
1123 HWTEST_F(AbilityTerminateTest, AaFwk_IAbilityManager_AddFreeInstallObserver_0100, Function | MediumTest | Level1)
1124 {
1125 GTEST_LOG_(INFO) << "AaFwk_IAbilityManager_AddFreeInstallObserver_0100";
1126 sptr<IRemoteObject> remoteObject_ =
1127 OHOS::DelayedSingleton<AppExecFwk::SysMrgClient>::GetInstance()->GetSystemAbility(ABILITY_MGR_SERVICE_ID);
1128 sptr<AAFwk::IAbilityManager> abms = iface_cast<AAFwk::IAbilityManager>(remoteObject_);
1129 EXPECT_NE(abms, nullptr);
1130 EXPECT_EQ(0, abms->AddFreeInstallObserver(nullptr, nullptr));
1131 GTEST_LOG_(INFO) << "AaFwk_IAbilityManager_AddFreeInstallObserver_0100";
1132 }
1133
1134 /**
1135 * @tc.number: AaFwk_IAbilityManager_EnableRecoverAbility_0100
1136 * @tc.name: EnableRecoverAbility
1137 * @tc.desc: test EnableRecoverAbility function
1138 */
1139 HWTEST_F(AbilityTerminateTest, AaFwk_IAbilityManager_EnableRecoverAbility_0100, Function | MediumTest | Level1)
1140 {
1141 GTEST_LOG_(INFO) << "AaFwk_IAbilityManager_EnableRecoverAbility_0100";
1142 sptr<IRemoteObject> remoteObject_ =
1143 OHOS::DelayedSingleton<AppExecFwk::SysMrgClient>::GetInstance()->GetSystemAbility(ABILITY_MGR_SERVICE_ID);
1144 sptr<AAFwk::IAbilityManager> abms = iface_cast<AAFwk::IAbilityManager>(remoteObject_);
1145 EXPECT_NE(abms, nullptr);
1146 abms->EnableRecoverAbility(nullptr);
1147 GTEST_LOG_(INFO) << "AaFwk_IAbilityManager_EnableRecoverAbility_0100";
1148 }
1149
1150 /**
1151 * @tc.number: AaFwk_IAbilityManager_ScheduleRecoverAbility_0100
1152 * @tc.name: ScheduleRecoverAbility
1153 * @tc.desc: test ScheduleRecoverAbility function
1154 */
1155 HWTEST_F(AbilityTerminateTest, AaFwk_IAbilityManager_ScheduleRecoverAbility_0100, Function | MediumTest | Level1)
1156 {
1157 GTEST_LOG_(INFO) << "AaFwk_IAbilityManager_ScheduleRecoverAbility_0100";
1158 sptr<IRemoteObject> remoteObject_ =
1159 OHOS::DelayedSingleton<AppExecFwk::SysMrgClient>::GetInstance()->GetSystemAbility(ABILITY_MGR_SERVICE_ID);
1160 sptr<AAFwk::IAbilityManager> abms = iface_cast<AAFwk::IAbilityManager>(remoteObject_);
1161 EXPECT_NE(abms, nullptr);
1162 int32_t reason = 1;
1163 abms->ScheduleRecoverAbility(nullptr, reason);
1164 GTEST_LOG_(INFO) << "AaFwk_IAbilityManager_ScheduleRecoverAbility_0100";
1165 }
1166
1167 /**
1168 * @tc.number: AaFwk_IAbilityManager_VerifyPermission_0100
1169 * @tc.name: VerifyPermission
1170 * @tc.desc: test VerifyPermission function
1171 */
1172 HWTEST_F(AbilityTerminateTest, AaFwk_IAbilityManager_VerifyPermission_0100, Function | MediumTest | Level1)
1173 {
1174 GTEST_LOG_(INFO) << "AaFwk_IAbilityManager_VerifyPermission_0100";
1175 sptr<IRemoteObject> remoteObject_ =
1176 OHOS::DelayedSingleton<AppExecFwk::SysMrgClient>::GetInstance()->GetSystemAbility(ABILITY_MGR_SERVICE_ID);
1177 sptr<AAFwk::IAbilityManager> abms = iface_cast<AAFwk::IAbilityManager>(remoteObject_);
1178 EXPECT_NE(abms, nullptr);
1179 std::string permission = "<permission>";
1180 int pid = 1;
1181 int uid = 1;
1182 EXPECT_EQ(0, abms->VerifyPermission(permission, pid, uid));
1183 GTEST_LOG_(INFO) << "AaFwk_IAbilityManager_VerifyPermission_0100";
1184 }
1185 } // namespace AppExecFwk
1186 } // namespace OHOS
1187