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 #include <singleton.h>
18
19 #define private public
20 #include "context_impl.h"
21 #undef private
22
23 #include "constants.h"
24 #include "ability_local_record.h"
25 #include "application_context.h"
26 #include "context.h"
27 #include "hap_module_info.h"
28 #include "hilog_tag_wrapper.h"
29 #include "iremote_object.h"
30 #include "mock_ability_token.h"
31 #include "mock_bundle_manager.h"
32 #include "system_ability_definition.h"
33 #include "sys_mgr_client.h"
34
35 namespace OHOS {
36 namespace AppExecFwk {
37 using namespace testing::ext;
38 using namespace OHOS;
39 using namespace OHOS::AppExecFwk;
40
41 namespace {
42 const int64_t CONTEXT_CREATE_BY_SYSTEM_APP(0x00000001);
43 } // namespace
44
45 class ContextImplTest : public testing::Test {
46 public:
ContextImplTest()47 ContextImplTest() : contextImpl_(nullptr)
48 {}
~ContextImplTest()49 ~ContextImplTest()
50 {}
51 std::shared_ptr<AbilityRuntime::ContextImpl> contextImpl_ = nullptr;
52 static void SetUpTestCase(void);
53 static void TearDownTestCase(void);
54 void SetUp();
55 void TearDown();
56 };
57
SetUpTestCase(void)58 void ContextImplTest::SetUpTestCase(void)
59 {}
60
TearDownTestCase(void)61 void ContextImplTest::TearDownTestCase(void)
62 {}
63
SetUp(void)64 void ContextImplTest::SetUp(void)
65 {
66 contextImpl_ = std::make_shared<AbilityRuntime::ContextImpl>();
67 auto config = std::make_shared<AppExecFwk::Configuration>();
68 EXPECT_NE(config, nullptr);
69 contextImpl_->SetConfiguration(config);
70 sptr<IRemoteObject> bundleObject = new (std::nothrow) BundleMgrService();
71 DelayedSingleton<SysMrgClient>::GetInstance()->RegisterSystemAbility(BUNDLE_MGR_SERVICE_SYS_ABILITY_ID,
72 bundleObject);
73 }
74
TearDown(void)75 void ContextImplTest::TearDown(void)
76 {}
77
78 /**
79 * @tc.number: AppExecFwk_ContextImpl_GetBundleName_001
80 * @tc.name: GetBundleName
81 * @tc.desc: Test whether GetBundleName is called normally.
82 * @tc.type: FUNC
83 * @tc.require: SR000GH1HL
84 */
85 HWTEST_F(ContextImplTest, AppExecFwk_ContextImpl_GetBundleName_001, Function | MediumTest | Level1)
86 {
87 GTEST_LOG_(INFO) << "AppExecFwk_ContextImpl_GetBundleName_001 start";
88 std::string bundleName = contextImpl_->GetBundleName();
89 EXPECT_STREQ(bundleName.c_str(), "");
90 GTEST_LOG_(INFO) << "AppExecFwk_ContextImpl_GetBundleName_001 end";
91 }
92
93 /**
94 * @tc.number: AppExecFwk_ContextImpl_GetBundleName_002
95 * @tc.name: GetBundleName
96 * @tc.desc: Test whether GetBundleName is called normally.
97 * @tc.type: FUNC
98 * @tc.require: SR000GH1HL
99 */
100 HWTEST_F(ContextImplTest, AppExecFwk_ContextImpl_GetBundleName_002, Function | MediumTest | Level1)
101 {
102 GTEST_LOG_(INFO) << "AppExecFwk_ContextImpl_GetBundleName_002 start";
103 std::shared_ptr<AppExecFwk::ApplicationInfo> applicationInfo = std::make_shared<AppExecFwk::ApplicationInfo>();
104 applicationInfo->bundleName = "com.test";
105 contextImpl_->SetApplicationInfo(applicationInfo);
106 std::string bundleName = contextImpl_->GetBundleName();
107 EXPECT_STREQ(bundleName.c_str(), "com.test");
108 GTEST_LOG_(INFO) << "AppExecFwk_ContextImpl_GetBundleName_002 end";
109 }
110
111 /**
112 * @tc.name: AppExecFwk_ContextImpl_GetBundleName_003
113 * @tc.desc: Get bundle name when parent context is not nullptr.
114 * @tc.type: FUNC
115 * @tc.require: issueI61P7Y
116 */
117 HWTEST_F(ContextImplTest, AppExecFwk_ContextImpl_GetBundleName_003, TestSize.Level1)
118 {
119 TAG_LOGI(AAFwkTag::TEST, "%{public}s start.", __func__);
120 auto contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
121 EXPECT_NE(contextImpl, nullptr);
122
123 auto parentContext = std::make_shared<AbilityRuntime::ContextImpl>();
124 EXPECT_NE(parentContext, nullptr);
125 auto applicationInfo = std::make_shared<AppExecFwk::ApplicationInfo>();
126 EXPECT_NE(applicationInfo, nullptr);
127 applicationInfo->bundleName = "com.test.parentcontext";
128 parentContext->SetApplicationInfo(applicationInfo);
129
130 contextImpl->SetParentContext(parentContext);
131 std::string bundleName = contextImpl->GetBundleName();
132 EXPECT_EQ(bundleName, "com.test.parentcontext");
133 TAG_LOGI(AAFwkTag::TEST, "%{public}s end.", __func__);
134 }
135
136 /**
137 * @tc.name: GetBundleCodeDir_0100
138 * @tc.desc: Get bundle code directory.
139 * @tc.type: FUNC
140 * @tc.require: issueI61P7Y
141 */
142 HWTEST_F(ContextImplTest, GetBundleCodeDir_0100, TestSize.Level1)
143 {
144 TAG_LOGI(AAFwkTag::TEST, "%{public}s start.", __func__);
145 auto contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
146 EXPECT_NE(contextImpl, nullptr);
147
148 // branch when application info is nullptr
149 auto codeDir = contextImpl->GetBundleCodeDir();
150 EXPECT_EQ(codeDir, "");
151
152 // construct application info
153 auto applicationInfo = std::make_shared<AppExecFwk::ApplicationInfo>();
154 EXPECT_NE(applicationInfo, nullptr);
155 applicationInfo->codePath = "/data/app/el1/bundle/public/testCodeDir";
156 contextImpl->SetApplicationInfo(applicationInfo);
157
158 // not create by system app
159 codeDir = contextImpl->GetBundleCodeDir();
160 EXPECT_EQ(codeDir, AbilityBase::Constants::LOCAL_CODE_PATH);
161
162 // create by system app(flag is ContextImpl::CONTEXT_CREATE_BY_SYSTEM_APP)
163 contextImpl->SetFlags(CONTEXT_CREATE_BY_SYSTEM_APP);
164 codeDir = contextImpl->GetBundleCodeDir();
165 EXPECT_EQ(codeDir, "/data/bundles/testCodeDir");
166
167 TAG_LOGI(AAFwkTag::TEST, "%{public}s end.", __func__);
168 }
169
170 /**
171 * @tc.name: IsUpdatingConfigurations_0100
172 * @tc.desc: IsUpdatingConfigurations basic test.
173 * @tc.type: FUNC
174 * @tc.require: issueI61P7Y
175 */
176 HWTEST_F(ContextImplTest, IsUpdatingConfigurations_0100, TestSize.Level1)
177 {
178 TAG_LOGI(AAFwkTag::TEST, "%{public}s start.", __func__);
179 auto contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
180 EXPECT_NE(contextImpl, nullptr);
181
182 auto isUpdating = contextImpl->IsUpdatingConfigurations();
183 EXPECT_EQ(isUpdating, false);
184
185 TAG_LOGI(AAFwkTag::TEST, "%{public}s end.", __func__);
186 }
187
188 /**
189 * @tc.name: PrintDrawnCompleted_0100
190 * @tc.desc: PrintDrawnCompleted basic test.
191 * @tc.type: FUNC
192 * @tc.require: issueI61P7Y
193 */
194 HWTEST_F(ContextImplTest, PrintDrawnCompleted_0100, TestSize.Level1)
195 {
196 TAG_LOGI(AAFwkTag::TEST, "%{public}s start.", __func__);
197 auto contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
198 EXPECT_NE(contextImpl, nullptr);
199
200 auto isComplete = contextImpl->PrintDrawnCompleted();
201 EXPECT_EQ(isComplete, false);
202
203 TAG_LOGI(AAFwkTag::TEST, "%{public}s end.", __func__);
204 }
205
206 /**
207 * @tc.name: GetDatabaseDir_0100
208 * @tc.desc: Get base directory basic test.
209 * @tc.type: FUNC
210 * @tc.require: issueI61P7Y
211 */
212 HWTEST_F(ContextImplTest, GetDatabaseDir_0100, TestSize.Level1)
213 {
214 TAG_LOGI(AAFwkTag::TEST, "%{public}s start.", __func__);
215 auto contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
216 EXPECT_NE(contextImpl, nullptr);
217
218 // not create by system app and parent context is nullptr
219 auto databaseDir = contextImpl->GetDatabaseDir();
220 EXPECT_EQ(databaseDir, "/data/storage/el2/database");
221
222 // create by system app and parent context is not nullptr
223 contextImpl->SetFlags(CONTEXT_CREATE_BY_SYSTEM_APP);
224 auto parentContext = std::make_shared<AbilityRuntime::ContextImpl>();
225 EXPECT_NE(parentContext, nullptr);
226 auto applicationInfo = std::make_shared<AppExecFwk::ApplicationInfo>();
227 EXPECT_NE(applicationInfo, nullptr);
228 applicationInfo->bundleName = "com.test.database";
229 parentContext->SetApplicationInfo(applicationInfo);
230 contextImpl->SetParentContext(parentContext);
231 databaseDir = contextImpl->GetDatabaseDir();
232 EXPECT_EQ(databaseDir, "/data/app/el2/0/database/com.test.database/");
233
234 // create by system app and hap module info of parent context is not nullptr
235 AppExecFwk::HapModuleInfo hapModuleInfo;
236 hapModuleInfo.moduleName = "test_moduleName";
237 contextImpl->InitHapModuleInfo(hapModuleInfo);
238 databaseDir = contextImpl->GetDatabaseDir();
239 EXPECT_EQ(databaseDir, "/data/app/el2/0/database/com.test.database/test_moduleName");
240
241 TAG_LOGI(AAFwkTag::TEST, "%{public}s end.", __func__);
242 }
243
244 /**
245 * @tc.name: GetDatabaseDir_0200
246 * @tc.desc: Get base directory basic test.
247 * @tc.type: FUNC
248 * @tc.require: issueI8G3YE
249 */
250 HWTEST_F(ContextImplTest, GetDatabaseDir_0200, TestSize.Level1)
251 {
252 TAG_LOGI(AAFwkTag::TEST, "%{public}s start.", __func__);
253 auto contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
254 EXPECT_NE(contextImpl, nullptr);
255
256 // not create by system app and parent context is nullptr
257 contextImpl->SwitchArea(2);
258 auto databaseDir = contextImpl->GetDatabaseDir();
259 EXPECT_EQ(databaseDir, "/data/storage/el3/database");
260
261 // create by system app and parent context is not nullptr
262 contextImpl->SetFlags(CONTEXT_CREATE_BY_SYSTEM_APP);
263 auto parentContext = std::make_shared<AbilityRuntime::ContextImpl>();
264 EXPECT_NE(parentContext, nullptr);
265 auto applicationInfo = std::make_shared<AppExecFwk::ApplicationInfo>();
266 EXPECT_NE(applicationInfo, nullptr);
267 applicationInfo->bundleName = "com.test.database";
268 parentContext->SetApplicationInfo(applicationInfo);
269 contextImpl->SetParentContext(parentContext);
270 contextImpl->SwitchArea(2);
271 databaseDir = contextImpl->GetDatabaseDir();
272 EXPECT_EQ(databaseDir, "/data/app/el3/0/database/com.test.database/");
273
274 // create by system app and hap module info of parent context is not nullptr
275 AppExecFwk::HapModuleInfo hapModuleInfo;
276 hapModuleInfo.moduleName = "test_moduleName";
277 contextImpl->InitHapModuleInfo(hapModuleInfo);
278 contextImpl->SwitchArea(2);
279 databaseDir = contextImpl->GetDatabaseDir();
280 EXPECT_EQ(databaseDir, "/data/app/el3/0/database/com.test.database/test_moduleName");
281
282 TAG_LOGI(AAFwkTag::TEST, "%{public}s end.", __func__);
283 }
284
285 /**
286 * @tc.name: GetDatabaseDir_0300
287 * @tc.desc: Get el5 base directory basic test.
288 * @tc.type: FUNC
289 * @tc.require: issuesI9SXYW
290 */
291 HWTEST_F(ContextImplTest, GetDatabaseDir_0300, TestSize.Level1)
292 {
293 TAG_LOGI(AAFwkTag::TEST, "%{public}s start.", __func__);
294 auto contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
295 EXPECT_NE(contextImpl, nullptr);
296
297 // not create by system app and parent context is nullptr
298 contextImpl->SwitchArea(4);
299 auto databaseDir = contextImpl->GetDatabaseDir();
300 EXPECT_EQ(databaseDir, "/data/storage/el5/database");
301
302 // create by system app and parent context is not nullptr
303 contextImpl->SetFlags(CONTEXT_CREATE_BY_SYSTEM_APP);
304 auto parentContext = std::make_shared<AbilityRuntime::ContextImpl>();
305 EXPECT_NE(parentContext, nullptr);
306 auto applicationInfo = std::make_shared<AppExecFwk::ApplicationInfo>();
307 EXPECT_NE(applicationInfo, nullptr);
308 applicationInfo->bundleName = "com.test.database";
309 parentContext->SetApplicationInfo(applicationInfo);
310 contextImpl->SetParentContext(parentContext);
311 contextImpl->SwitchArea(4);
312 databaseDir = contextImpl->GetDatabaseDir();
313 EXPECT_EQ(databaseDir, "/data/app/el5/0/database/com.test.database/");
314
315 // create by system app and hap module info of parent context is not nullptr
316 AppExecFwk::HapModuleInfo hapModuleInfo;
317 hapModuleInfo.moduleName = "test_moduleName";
318 contextImpl->InitHapModuleInfo(hapModuleInfo);
319 contextImpl->SwitchArea(4);
320 databaseDir = contextImpl->GetDatabaseDir();
321 EXPECT_EQ(databaseDir, "/data/app/el5/0/database/com.test.database/test_moduleName");
322
323 TAG_LOGI(AAFwkTag::TEST, "%{public}s end.", __func__);
324 }
325
326 /**
327 * @tc.name: GetPreferencesDir_0100
328 * @tc.desc: Get preference directory basic test.
329 * @tc.type: FUNC
330 * @tc.require: issueI61P7Y
331 */
332 HWTEST_F(ContextImplTest, GetPreferencesDir_0100, TestSize.Level1)
333 {
334 TAG_LOGI(AAFwkTag::TEST, "%{public}s start.", __func__);
335 auto contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
336 EXPECT_NE(contextImpl, nullptr);
337
338 auto preferenceDir = contextImpl->GetPreferencesDir();
339 EXPECT_EQ(preferenceDir, "/data/storage/el2/base/preferences");
340
341 TAG_LOGI(AAFwkTag::TEST, "%{public}s end.", __func__);
342 }
343
344 /**
345 * @tc.name: GetTempDir_0100
346 * @tc.desc: Get temp directory basic test.
347 * @tc.type: FUNC
348 * @tc.require: issueI61P7Y
349 */
350 HWTEST_F(ContextImplTest, GetTempDir_0100, TestSize.Level1)
351 {
352 TAG_LOGI(AAFwkTag::TEST, "%{public}s start.", __func__);
353 auto contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
354 EXPECT_NE(contextImpl, nullptr);
355
356 auto tempDir = contextImpl->GetTempDir();
357 EXPECT_EQ(tempDir, "/data/storage/el2/base/temp");
358
359 TAG_LOGI(AAFwkTag::TEST, "%{public}s end.", __func__);
360 }
361
362 /**
363 * @tc.name: GetResourceDir_0100
364 * @tc.desc: Get resource directory basic test.
365 * @tc.type: FUNC
366 * @tc.require: issueI61P7Y
367 */
368 HWTEST_F(ContextImplTest, GetResourceDir_0100, TestSize.Level1)
369 {
370 TAG_LOGI(AAFwkTag::TEST, "%{public}s start.", __func__);
371 auto contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
372 EXPECT_NE(contextImpl, nullptr);
373
374 auto resourceDir = contextImpl->GetResourceDir();
375 EXPECT_EQ(resourceDir, "");
376
377 TAG_LOGI(AAFwkTag::TEST, "%{public}s end.", __func__);
378 }
379
380 /**
381 * @tc.name: GetFilesDir_0100
382 * @tc.desc: Get files directory basic test.
383 * @tc.type: FUNC
384 * @tc.require: issueI61P7Y
385 */
386 HWTEST_F(ContextImplTest, GetFilesDir_0100, TestSize.Level1)
387 {
388 TAG_LOGI(AAFwkTag::TEST, "%{public}s start.", __func__);
389 auto contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
390 EXPECT_NE(contextImpl, nullptr);
391
392 auto filesDir = contextImpl->GetFilesDir();
393 EXPECT_EQ(filesDir, "/data/storage/el2/base/files");
394
395 TAG_LOGI(AAFwkTag::TEST, "%{public}s end.", __func__);
396 }
397
398 /**
399 * @tc.name: GetDistributedFilesDir_0100
400 * @tc.desc: Get distributed directory basic test.
401 * @tc.type: FUNC
402 * @tc.require: issueI61P7Y
403 */
404 HWTEST_F(ContextImplTest, GetDistributedFilesDir_0100, TestSize.Level1)
405 {
406 TAG_LOGI(AAFwkTag::TEST, "%{public}s start.", __func__);
407 auto contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
408 EXPECT_NE(contextImpl, nullptr);
409
410 // not create by system app
411 contextImpl->SwitchArea(1);
412 auto distributedDir = contextImpl->GetDistributedFilesDir();
413 EXPECT_EQ(distributedDir, "/data/storage/el2/distributedfiles");
414
415 //for areamode is el3, the distributedfiles dir is also el2's distributedfiles dir
416 contextImpl->SwitchArea(2);
417 distributedDir = contextImpl->GetDistributedFilesDir();
418 EXPECT_EQ(distributedDir, "/data/storage/el2/distributedfiles");
419
420 //for areamode is el4, the distributedfiles dir is also el2's distributedfiles dir
421 contextImpl->SwitchArea(3);
422 distributedDir = contextImpl->GetDistributedFilesDir();
423 EXPECT_EQ(distributedDir, "/data/storage/el2/distributedfiles");
424
425 //for areamode is el5, the distributedfiles dir is also el2's distributedfiles dir
426 contextImpl->SwitchArea(4);
427 distributedDir = contextImpl->GetDistributedFilesDir();
428 EXPECT_EQ(distributedDir, "/data/storage/el2/distributedfiles");
429
430 // create by system app and bundleName is empty
431 contextImpl->SetFlags(CONTEXT_CREATE_BY_SYSTEM_APP);
432 distributedDir = contextImpl->GetDistributedFilesDir();
433 EXPECT_EQ(distributedDir, "/mnt/hmdfs/0/device_view/local/data/");
434
435 TAG_LOGI(AAFwkTag::TEST, "%{public}s end.", __func__);
436 }
437
438 /**
439 * @tc.name: GetCloudFileDir_0100
440 * @tc.desc: Get cloud directory basic test.
441 * @tc.type: FUNC
442 * @tc.require: issueI61P7Y
443 */
444 HWTEST_F(ContextImplTest, GetCloudFileDir_0100, TestSize.Level1)
445 {
446 TAG_LOGI(AAFwkTag::TEST, "%{public}s start.", __func__);
447 auto contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
448 EXPECT_NE(contextImpl, nullptr);
449
450 auto cloudDir = contextImpl->GetCloudFileDir();
451 EXPECT_EQ(cloudDir, "/data/storage/el2/cloud");
452
453 TAG_LOGI(AAFwkTag::TEST, "%{public}s end.", __func__);
454 }
455
456 /**
457 * @tc.name: GetBaseDir_0100
458 * @tc.desc: Get base directory basic test.
459 * @tc.type: FUNC
460 * @tc.require: issueI61P7Y
461 */
462 HWTEST_F(ContextImplTest, GetBaseDir_0100, TestSize.Level1)
463 {
464 TAG_LOGI(AAFwkTag::TEST, "%{public}s start.", __func__);
465 auto contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
466 EXPECT_NE(contextImpl, nullptr);
467
468 // not create by system app and parent context is nullptr
469 auto baseDir = contextImpl->GetBaseDir();
470 EXPECT_EQ(baseDir, "/data/storage/el2/base");
471
472 // create by system app and parent context is not nullptr
473 contextImpl->SetFlags(CONTEXT_CREATE_BY_SYSTEM_APP);
474 auto parentContext = std::make_shared<AbilityRuntime::ContextImpl>();
475 EXPECT_NE(parentContext, nullptr);
476 auto applicationInfo = std::make_shared<AppExecFwk::ApplicationInfo>();
477 EXPECT_NE(applicationInfo, nullptr);
478 applicationInfo->bundleName = "com.test.base";
479 parentContext->SetApplicationInfo(applicationInfo);
480 contextImpl->SetParentContext(parentContext);
481 baseDir = contextImpl->GetBaseDir();
482 EXPECT_EQ(baseDir, "/data/app/el2/0/base/com.test.base/haps/");
483
484 // create by system app and hap module info of parent context is not nullptr
485 AppExecFwk::HapModuleInfo hapModuleInfo;
486 hapModuleInfo.moduleName = "test_moduleName";
487 contextImpl->InitHapModuleInfo(hapModuleInfo);
488 baseDir = contextImpl->GetBaseDir();
489 EXPECT_EQ(baseDir, "/data/app/el2/0/base/com.test.base/haps/test_moduleName");
490
491 TAG_LOGI(AAFwkTag::TEST, "%{public}s end.", __func__);
492 }
493
494 /**
495 * @tc.name: SwitchArea_0100
496 * @tc.desc: Switch area basic test.
497 * @tc.type: FUNC
498 * @tc.require: issueI61P7Y
499 */
500 HWTEST_F(ContextImplTest, SwitchArea_0100, TestSize.Level1)
501 {
502 TAG_LOGI(AAFwkTag::TEST, "%{public}s start.", __func__);
503 auto contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
504 EXPECT_NE(contextImpl, nullptr);
505
506 // invalid mode
507 contextImpl->SwitchArea(-1);
508 contextImpl->SwitchArea(5);
509
510 // valid mode
511 contextImpl->SwitchArea(0);
512 contextImpl->SwitchArea(1);
513
514 TAG_LOGI(AAFwkTag::TEST, "%{public}s end.", __func__);
515 }
516
517 /**
518 * @tc.name: GetAreaArea_0100
519 * @tc.desc: Get area basic test.
520 * @tc.type: FUNC
521 * @tc.require: issueI61P7Y
522 */
523 HWTEST_F(ContextImplTest, GetAreaArea_0100, TestSize.Level1)
524 {
525 TAG_LOGI(AAFwkTag::TEST, "%{public}s start.", __func__);
526 auto contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
527 EXPECT_NE(contextImpl, nullptr);
528
529 contextImpl->SwitchArea(0);
530 auto mode = contextImpl->GetArea();
531 EXPECT_EQ(mode, 0);
532
533 contextImpl->SwitchArea(1);
534 mode = contextImpl->GetArea();
535 EXPECT_EQ(mode, 1);
536
537 contextImpl->SwitchArea(2);
538 mode = contextImpl->GetArea();
539 EXPECT_EQ(mode, 2);
540
541 contextImpl->SwitchArea(3);
542 mode = contextImpl->GetArea();
543 EXPECT_EQ(mode, 3);
544
545 contextImpl->SwitchArea(4);
546 mode = contextImpl->GetArea();
547 EXPECT_EQ(mode, 4);
548
549 // invalid area_
550 contextImpl->currArea_ = "invalid";
551 mode = contextImpl->GetArea();
552 EXPECT_EQ(mode, 1); // default is AbilityRuntime::ContextImpl::EL_DEFAULT
553
554 TAG_LOGI(AAFwkTag::TEST, "%{public}s end.", __func__);
555 }
556
557 /**
558 * @tc.name: GetCurrentAccountId_0100
559 * @tc.desc: Get current account id test.
560 * @tc.type: FUNC
561 * @tc.require: issueI61P7Y
562 */
563 HWTEST_F(ContextImplTest, GetCurrentAccountId_0100, TestSize.Level1)
564 {
565 TAG_LOGI(AAFwkTag::TEST, "%{public}s start.", __func__);
566 auto contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
567 EXPECT_NE(contextImpl, nullptr);
568
569 auto accountId = contextImpl->GetCurrentAccountId();
570 EXPECT_EQ(accountId, 0); // default account id
571 TAG_LOGI(AAFwkTag::TEST, "%{public}s end.", __func__);
572 }
573
574 /**
575 * @tc.name: GetCurrentActiveAccountId_0100
576 * @tc.desc: Get current active account id test.
577 * @tc.type: FUNC
578 * @tc.require: issueI61P7Y
579 */
580 HWTEST_F(ContextImplTest, GetCurrentActiveAccountId_0100, TestSize.Level1)
581 {
582 TAG_LOGI(AAFwkTag::TEST, "%{public}s start.", __func__);
583 auto contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
584 EXPECT_NE(contextImpl, nullptr);
585
586 auto accountId = contextImpl->GetCurrentActiveAccountId();
587 EXPECT_EQ(accountId, 100); // default active account id is 100
588 TAG_LOGI(AAFwkTag::TEST, "%{public}s end.", __func__);
589 }
590
591 /**
592 * @tc.number: AppExecFwk_ContextImpl_SetApplicationInfo_001
593 * @tc.name: SetApplicationInfo
594 * @tc.desc: Test whether SetApplicationInfo is called normally.
595 * @tc.type: FUNC
596 * @tc.require: SR000GH1HL
597 */
598 HWTEST_F(ContextImplTest, AppExecFwk_ContextImpl_SetApplicationInfo_001, Function | MediumTest | Level1)
599 {
600 GTEST_LOG_(INFO) << "AppExecFwk_ContextImpl_SetApplicationInfo_001 start";
601 contextImpl_->SetApplicationInfo(nullptr);
602 EXPECT_EQ(contextImpl_->GetApplicationInfo(), nullptr);
603 std::shared_ptr<AppExecFwk::ApplicationInfo> applicationInfo = std::make_shared<AppExecFwk::ApplicationInfo>();
604 contextImpl_->SetApplicationInfo(applicationInfo);
605 EXPECT_NE(contextImpl_->GetApplicationInfo(), nullptr);
606 GTEST_LOG_(INFO) << "AppExecFwk_ContextImpl_SetApplicationInfo_001 end";
607 }
608
609 /**
610 * @tc.number: AppExecFwk_ContextImpl_GetApplicationInfo_001
611 * @tc.name: GetApplicationInfo
612 * @tc.desc: Test whether GetApplicationInfo is called normally.
613 * @tc.type: FUNC
614 * @tc.require: SR000GH1HL
615 */
616 HWTEST_F(ContextImplTest, AppExecFwk_ContextImpl_GetApplicationInfo_001, Function | MediumTest | Level1)
617 {
618 GTEST_LOG_(INFO) << "AppExecFwk_ContextImpl_GetApplicationInfo_001 start";
619 EXPECT_TRUE(contextImpl_->GetApplicationInfo() == nullptr);
620 GTEST_LOG_(INFO) << "AppExecFwk_ContextImpl_GetApplicationInfo_001 end";
621 }
622
623 /**
624 * @tc.number: AppExecFwk_ContextImpl_GetApplicationContext_001
625 * @tc.name: GetApplicationContext
626 * @tc.desc: Test whether GetApplicationContext is called normally.
627 * @tc.type: FUNC
628 * @tc.require: SR000GH1HL
629 */
630 HWTEST_F(ContextImplTest, AppExecFwk_ContextImpl_GetApplicationContext_001, Function | MediumTest | Level1)
631 {
632 GTEST_LOG_(INFO) << "AppExecFwk_ContextImpl_GetApplicationContext_001 start";
633 EXPECT_TRUE(contextImpl_->GetApplicationContext() == nullptr);
634
635 auto contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
636 EXPECT_NE(contextImpl, nullptr);
637
638 auto parentContext = std::make_shared<AbilityRuntime::ContextImpl>();
639 EXPECT_NE(parentContext, nullptr);
640 contextImpl->SetParentContext(parentContext);
641 EXPECT_EQ(contextImpl->GetApplicationInfo(), nullptr);
642
643 GTEST_LOG_(INFO) << "AppExecFwk_ContextImpl_GetApplicationContext_001 end";
644 }
645
646 /**
647 * @tc.number: AppExecFwk_ContextImpl_SetParentContext_001
648 * @tc.name: SetParentContext
649 * @tc.desc: Test whether SetParentContext is called normally.
650 * @tc.type: FUNC
651 * @tc.require: SR000GH1HL
652 */
653 HWTEST_F(ContextImplTest, AppExecFwk_ContextImpl_SetParentContext_001, Function | MediumTest | Level1)
654 {
655 GTEST_LOG_(INFO) << "AppExecFwk_ContextImpl_SetParentContext_001 start";
656 std::shared_ptr<AbilityRuntime::ContextImpl> contextImpl_ = std::make_shared<AbilityRuntime::ContextImpl>();
657 contextImpl_->SetParentContext(contextImpl_);
658 EXPECT_TRUE(contextImpl_->GetApplicationContext() == nullptr);
659 GTEST_LOG_(INFO) << "AppExecFwk_ContextImpl_SetParentContext_001 end";
660 }
661
662 /**
663 * @tc.number: AppExecFwk_ContextImpl_GetHapModuleInfo_001
664 * @tc.name: GetHapModuleInfo
665 * @tc.desc: Test whether GetHapModuleInfo is called normally.
666 * @tc.type: FUNC
667 * @tc.require: SR000GH1HL
668 */
669 HWTEST_F(ContextImplTest, AppExecFwk_ContextImpl_GetHapModuleInfo_001, Function | MediumTest | Level1)
670 {
671 GTEST_LOG_(INFO) << "AppExecFwk_ContextImpl_GetHapModuleInfo_001 start";
672 EXPECT_EQ(contextImpl_->GetHapModuleInfo(), nullptr);
673 GTEST_LOG_(INFO) << "AppExecFwk_ContextImpl_GetHapModuleInfo_001 end";
674 }
675
676 /**
677 * @tc.number: CreateModuleContext_001
678 * @tc.name: CreateModuleContext
679 * @tc.desc: Test whether CreateModuleContext is called normally.
680 * @tc.type: FUNC
681 * @tc.require: SR000H6I25
682 */
683 HWTEST_F(ContextImplTest, CreateModuleContext_001, Function | MediumTest | Level1)
684 {
685 GTEST_LOG_(INFO) << "AppExecFwk_ContextImpl_CreateModuleContext_001 start";
686 EXPECT_EQ(contextImpl_->CreateModuleContext("module_name"), nullptr);
687 GTEST_LOG_(INFO) << "AppExecFwk_ContextImpl_CreateModuleContext_001 end";
688 }
689
690 /**
691 * @tc.number: AppExecFwk_AppContext_RegisterAbilityLifecycleCallback_001
692 * @tc.name: RegisterAbilityLifecycleCallback
693 * @tc.desc: Test whether RegisterAbilityLifecycleCallback is called normally.
694 * @tc.type: FUNC
695 * @tc.require: issueI5HQEM
696 */
697 HWTEST_F(ContextImplTest, AppExecFwk_AppContext_RegisterAbilityLifecycleCallback_001, Function | MediumTest | Level1)
698 {
699 GTEST_LOG_(INFO) << "AppExecFwk_AppContext_RegisterAbilityLifecycleCallback_001 start";
700 std::shared_ptr<AbilityRuntime::ApplicationContext> applicationContext =
701 AbilityRuntime::ApplicationContext::GetInstance();
702 applicationContext->RegisterAbilityLifecycleCallback(nullptr);
703 EXPECT_NE(applicationContext, nullptr);
704 GTEST_LOG_(INFO) << "AppExecFwk_AppContext_RegisterAbilityLifecycleCallback_001 end";
705 }
706
707 /**
708 * @tc.number: AppExecFwk_AppContext_UnregisterAbilityLifecycleCallback_001
709 * @tc.name: UnregisterAbilityLifecycleCallback
710 * @tc.desc: Test whether UnregisterAbilityLifecycleCallback is called normally.
711 * @tc.type: FUNC
712 * @tc.require: issueI5HQEM
713 */
714 HWTEST_F(ContextImplTest, AppExecFwk_AppContext_UnregisterAbilityLifecycleCallback_001, Function | MediumTest | Level1)
715 {
716 GTEST_LOG_(INFO) << "AppExecFwk_AppContext_UnregisterAbilityLifecycleCallback_001 start";
717 std::shared_ptr<AbilityRuntime::ApplicationContext> applicationContext =
718 AbilityRuntime::ApplicationContext::GetInstance();
719 applicationContext->UnregisterAbilityLifecycleCallback(nullptr);
720 EXPECT_NE(applicationContext, nullptr);
721 GTEST_LOG_(INFO) << "AppExecFwk_AppContext_UnregisterAbilityLifecycleCallback_001 end";
722 }
723
724 /**
725 * @tc.number: AppExecFwk_AppContext_InitResourceManager_001
726 * @tc.name: InitResourceManager
727 * @tc.desc: Test whether InitResourceManager is called normally.
728 * @tc.type: FUNC
729 * @tc.require: issueI5826I
730 */
731 HWTEST_F(ContextImplTest, AppExecFwk_AppContext_InitResourceManager_001, Function | MediumTest | Level1)
732 {
733 GTEST_LOG_(INFO) << "AppExecFwk_AppContext_InitResourceManager_001 start";
734 std::shared_ptr<AbilityRuntime::ContextImpl> contextImpl_ = std::make_shared<AbilityRuntime::ContextImpl>();
735 std::shared_ptr<AbilityRuntime::ContextImpl> appContext = std::make_shared<AbilityRuntime::ContextImpl>();
736
737 auto config = std::make_shared<AppExecFwk::Configuration>();
738 EXPECT_NE(config, nullptr);
739 contextImpl_->SetConfiguration(config);
740
741 AppExecFwk::BundleInfo bundleInfo;
742 bundleInfo.name = "com.test.module";
743 bundleInfo.isKeepAlive = true;
744 bundleInfo.applicationInfo.process = "com.test.module";
745 bundleInfo.applicationInfo.multiProjects = true;
746 contextImpl_->InitResourceManager(bundleInfo, appContext, true, "");
747 EXPECT_TRUE(appContext->GetResourceManager() != nullptr);
748
749 bundleInfo.applicationInfo.multiProjects = false;
750 contextImpl_->InitResourceManager(bundleInfo, appContext, true, "");
751 EXPECT_TRUE(appContext->GetResourceManager() != nullptr);
752
753 bundleInfo.applicationInfo.multiProjects = true;
754 contextImpl_->InitResourceManager(bundleInfo, appContext, true, "com.test.module");
755 EXPECT_TRUE(appContext->GetResourceManager() != nullptr);
756
757 bundleInfo.applicationInfo.multiProjects = false;
758 contextImpl_->InitResourceManager(bundleInfo, appContext, true, "com.test.module");
759 EXPECT_TRUE(appContext->GetResourceManager() != nullptr);
760 GTEST_LOG_(INFO) << "AppExecFwk_AppContext_InitResourceManager_001 end";
761 }
762
763 /**
764 * @tc.number: AppExecFwk_AppContext_InitResourceManager_002
765 * @tc.name: InitResourceManager
766 * @tc.desc: Test whether InitResourceManager is called normally.
767 * @tc.type: FUNC
768 * @tc.require: issueI5826I
769 */
770 HWTEST_F(ContextImplTest, AppExecFwk_AppContext_InitResourceManager_002, Function | MediumTest | Level1)
771 {
772 GTEST_LOG_(INFO) << "AppExecFwk_AppContext_InitResourceManager_002 start";
773 std::shared_ptr<AbilityRuntime::ContextImpl> contextImpl_ = std::make_shared<AbilityRuntime::ContextImpl>();
774 std::shared_ptr<AbilityRuntime::ContextImpl> appContext = std::make_shared<AbilityRuntime::ContextImpl>();
775
776 auto config = std::make_shared<AppExecFwk::Configuration>();
777 EXPECT_NE(config, nullptr);
778 contextImpl_->SetConfiguration(config);
779
780 AppExecFwk::BundleInfo bundleInfo;
781 bundleInfo.name = "com.ohos.contactsdataability";
782 bundleInfo.isKeepAlive = true;
783 bundleInfo.applicationInfo.process = "com.ohos.contactsdataability";
784 bundleInfo.applicationInfo.multiProjects = true;
785 HapModuleInfo info;
786 info.name = "com.ohos.contactsdataability";
787 info.moduleName = "entry";
788 info.description = "dataability_description";
789 info.iconPath = "$media:icon";
790 info.deviceTypes = { "smartVision" };
791 info.bundleName = "com.ohos.contactsdataability";
792 bundleInfo.hapModuleInfos.push_back(info);
793 contextImpl_->InitResourceManager(bundleInfo, appContext, true, "entry");
794 EXPECT_TRUE(appContext->GetResourceManager() != nullptr);
795
796 info.resourcePath = "/data/app/el1/budle/public/com.ohos.contactsdataability"\
797 "/com.ohos.contactsdataability/assets/entry/resources.index";
798 bundleInfo.hapModuleInfos.clear();
799 bundleInfo.hapModuleInfos.push_back(info);
800 contextImpl_->InitResourceManager(bundleInfo, appContext, true, "entry");
801 EXPECT_TRUE(appContext->GetResourceManager() != nullptr);
802
803 info.hapPath = "/system/app/com.ohos.contactsdataability/Contacts_DataAbility.hap";
804 bundleInfo.hapModuleInfos.clear();
805 bundleInfo.hapModuleInfos.push_back(info);
806 contextImpl_->InitResourceManager(bundleInfo, appContext, true, "entry");
807 EXPECT_TRUE(appContext->GetResourceManager() != nullptr);
808
809 info.resourcePath = "";
810 bundleInfo.hapModuleInfos.clear();
811 bundleInfo.hapModuleInfos.push_back(info);
812 contextImpl_->InitResourceManager(bundleInfo, appContext, true, "entry");
813 EXPECT_TRUE(appContext->GetResourceManager() != nullptr);
814 GTEST_LOG_(INFO) << "AppExecFwk_AppContext_InitResourceManager_002 end";
815 }
816
817 /**
818 * @tc.number: AppExecFwk_AppContext_InitResourceManager_003
819 * @tc.name: InitResourceManager
820 * @tc.desc: Test whether InitResourceManager is called normally.
821 * @tc.type: FUNC
822 * @tc.require: issueI5826I
823 */
824 HWTEST_F(ContextImplTest, AppExecFwk_AppContext_InitResourceManager_003, Function | MediumTest | Level1)
825 {
826 GTEST_LOG_(INFO) << "AppExecFwk_AppContext_InitResourceManager_003 start";
827 std::shared_ptr<AbilityRuntime::ContextImpl> contextImpl_ = std::make_shared<AbilityRuntime::ContextImpl>();
828 std::shared_ptr<AbilityRuntime::ContextImpl> appContext = std::make_shared<AbilityRuntime::ContextImpl>();
829
830 auto config = std::make_shared<AppExecFwk::Configuration>();
831 EXPECT_NE(config, nullptr);
832 contextImpl_->SetConfiguration(config);
833
834 AppExecFwk::BundleInfo bundleInfo;
835 bundleInfo.name = "com.ohos.contactsdataability";
836 bundleInfo.isKeepAlive = true;
837 bundleInfo.applicationInfo.process = "com.ohos.contactsdataability";
838 bundleInfo.applicationInfo.multiProjects = true;
839 HapModuleInfo info;
840 info.name = "com.ohos.contactsdataability";
841 info.moduleName = "entry";
842 info.description = "dataability_description";
843 info.iconPath = "$media:icon";
844 info.deviceTypes = { "smartVision" };
845 info.bundleName = "com.ohos.contactsdataability";
846 info.resourcePath = "/data/app/el1/budle/public/com.ohos.contactsdataability"\
847 "/com.ohos.contactsdataability/assets/entry/resources.index";
848 info.hapPath = "/system/app/com.ohos.contactsdataability/Contacts_DataAbility.hap";
849 bundleInfo.hapModuleInfos.push_back(info);
850 contextImpl_->InitResourceManager(bundleInfo, appContext, true, "entry");
851 EXPECT_TRUE(appContext->GetResourceManager() != nullptr);
852
853 contextImpl_->InitResourceManager(bundleInfo, appContext, true, "");
854 EXPECT_TRUE(appContext->GetResourceManager() != nullptr);
855
856 info.moduleName = "entry1";
857 bundleInfo.hapModuleInfos.clear();
858 bundleInfo.hapModuleInfos.push_back(info);
859 contextImpl_->InitResourceManager(bundleInfo, appContext, true, "entry");
860 EXPECT_TRUE(appContext->GetResourceManager() != nullptr);
861
862 contextImpl_->InitResourceManager(bundleInfo, appContext, true, "");
863 EXPECT_TRUE(appContext->GetResourceManager() != nullptr);
864
865 GTEST_LOG_(INFO) << "AppExecFwk_AppContext_InitResourceManager_003 end";
866 }
867
868 /**
869 * @tc.number: AppExecFwk_AppContext_InitResourceManager_004
870 * @tc.name: InitResourceManager
871 * @tc.desc: Test whether InitResourceManager is called normally.
872 * @tc.type: FUNC
873 * @tc.require: issueI5826I
874 */
875 HWTEST_F(ContextImplTest, AppExecFwk_AppContext_InitResourceManager_004, Function | MediumTest | Level1)
876 {
877 GTEST_LOG_(INFO) << "AppExecFwk_AppContext_InitResourceManager_004 start";
878 std::shared_ptr<AbilityRuntime::ContextImpl> contextImpl_ = std::make_shared<AbilityRuntime::ContextImpl>();
879 std::shared_ptr<AbilityRuntime::ContextImpl> appContext = std::make_shared<AbilityRuntime::ContextImpl>();
880
881 auto config = std::make_shared<AppExecFwk::Configuration>();
882 EXPECT_NE(config, nullptr);
883 contextImpl_->SetConfiguration(config);
884
885 AppExecFwk::BundleInfo bundleInfo;
886 bundleInfo.name = "com.ohos.contactsdataability";
887 bundleInfo.isKeepAlive = true;
888 bundleInfo.applicationInfo.process = "com.ohos.contactsdataability";
889 bundleInfo.applicationInfo.multiProjects = true;
890 HapModuleInfo info;
891 info.name = "com.ohos.contactsdataability";
892 info.moduleName = "entry";
893 info.description = "dataability_description";
894 info.iconPath = "$media:icon";
895 info.deviceTypes = { "smartVision" };
896 info.bundleName = "com.ohos.contactsdataability";
897 info.resourcePath = "/data/app/el1/budle/public/com.ohos.contactsdataability"\
898 "/com.ohos.contactsdataability/assets/entry/resources.index";
899 info.hapPath = "/system/app/com.ohos.contactsdataability/Contacts_DataAbility.hap";
900 bundleInfo.hapModuleInfos.push_back(info);
901 contextImpl_->InitResourceManager(bundleInfo, appContext, true, "entry");
902 EXPECT_TRUE(appContext->GetResourceManager() != nullptr);
903
904 contextImpl_->InitResourceManager(bundleInfo, appContext, false, "entry");
905 EXPECT_TRUE(appContext->GetResourceManager() != nullptr);
906
907 info.resourcePath = "resources.index";
908 bundleInfo.hapModuleInfos.clear();
909 bundleInfo.hapModuleInfos.push_back(info);
910 contextImpl_->InitResourceManager(bundleInfo, appContext, true, "entry");
911 EXPECT_TRUE(appContext->GetResourceManager() != nullptr);
912
913 GTEST_LOG_(INFO) << "AppExecFwk_AppContext_InitResourceManager_004 end";
914 }
915
916 /**
917 * @tc.name: AppExecFwk_AppContext_InitResourceManager_005
918 * @tc.desc: abnornal branch test for InitResourceManager.
919 * @tc.type: FUNC
920 * @tc.require: issueI61P7Y
921 */
922 HWTEST_F(ContextImplTest, AppExecFwk_AppContext_InitResourceManager_005, TestSize.Level1)
923 {
924 TAG_LOGI(AAFwkTag::TEST, "%{public}s start.", __func__);
925 auto contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
926 EXPECT_NE(contextImpl, nullptr);
927
928 auto config = std::make_shared<AppExecFwk::Configuration>();
929 EXPECT_NE(config, nullptr);
930 contextImpl_->SetConfiguration(config);
931
932 // branch when appContext is nullptr
933 AppExecFwk::BundleInfo bundleInfo;
934 contextImpl->InitResourceManager(bundleInfo, nullptr, true, "");
935
936 // parent context is not nullptr
937 auto parentContext = std::make_shared<AbilityRuntime::ContextImpl>();
938 EXPECT_NE(parentContext, nullptr);
939 contextImpl->SetParentContext(parentContext);
940 EXPECT_EQ(contextImpl->GetResourceManager(), nullptr);
941
942 TAG_LOGI(AAFwkTag::TEST, "%{public}s end.", __func__);
943 }
944
945 /**
946 * @tc.name: GetBundleCodePath_0100
947 * @tc.desc: Get bundle code path test.
948 * @tc.type: FUNC
949 * @tc.require: issueI61P7Y
950 */
951 HWTEST_F(ContextImplTest, GetBundleCodePath_0100, TestSize.Level1)
952 {
953 TAG_LOGI(AAFwkTag::TEST, "%{public}s start.", __func__);
954 auto contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
955 EXPECT_NE(contextImpl, nullptr);
956
957 auto codePath = contextImpl->GetBundleCodePath();
958 EXPECT_EQ(codePath, "");
959
960 // construt application info
961 auto applicationInfo = std::make_shared<AppExecFwk::ApplicationInfo>();
962 EXPECT_NE(applicationInfo, nullptr);
963 applicationInfo->codePath = "/data/app/el1";
964 contextImpl->SetApplicationInfo(applicationInfo);
965 EXPECT_EQ(contextImpl->GetBundleCodePath(), "/data/app/el1");
966
967 // parent context is not nullptr
968 auto parentContext = std::make_shared<AbilityRuntime::ContextImpl>();
969 EXPECT_NE(parentContext, nullptr);
970 contextImpl->SetParentContext(parentContext);
971 EXPECT_EQ(contextImpl->GetBundleCodePath(), "");
972
973 TAG_LOGI(AAFwkTag::TEST, "%{public}s end.", __func__);
974 }
975
976 /**
977 * @tc.name: InitHapModuleInfo_0100
978 * @tc.desc: Init hap module info test.
979 * @tc.type: FUNC
980 * @tc.require: issueI61P7Y
981 */
982 HWTEST_F(ContextImplTest, InitHapModuleInfo_0100, TestSize.Level1)
983 {
984 TAG_LOGI(AAFwkTag::TEST, "%{public}s start.", __func__);
985 auto contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
986 EXPECT_NE(contextImpl, nullptr);
987
988 auto config = std::make_shared<AppExecFwk::Configuration>();
989 EXPECT_NE(config, nullptr);
990 contextImpl->SetConfiguration(config);
991
992 AppExecFwk::HapModuleInfo hapModuleInfo;
993 contextImpl->InitHapModuleInfo(hapModuleInfo);
994 EXPECT_NE(contextImpl->GetHapModuleInfo(), nullptr);
995
996 // branch when hap module info has been assigned
997 auto abilityInfo = std::make_shared<AppExecFwk::AbilityInfo>();
998 contextImpl->InitHapModuleInfo(abilityInfo);
999 EXPECT_NE(contextImpl->GetHapModuleInfo(), nullptr);
1000
1001 TAG_LOGI(AAFwkTag::TEST, "%{public}s end.", __func__);
1002 }
1003
1004 /**
1005 * @tc.name: InitHapModuleInfo_0200
1006 * @tc.desc: Init hap module info test.
1007 * @tc.type: FUNC
1008 * @tc.require: issueI61P7Y
1009 */
1010 HWTEST_F(ContextImplTest, InitHapModuleInfo_0200, TestSize.Level1)
1011 {
1012 TAG_LOGI(AAFwkTag::TEST, "%{public}s start.", __func__);
1013 auto contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
1014 EXPECT_NE(contextImpl, nullptr);
1015
1016 auto abilityInfo = std::make_shared<AppExecFwk::AbilityInfo>();
1017 contextImpl->InitHapModuleInfo(nullptr);
1018 contextImpl->InitHapModuleInfo(abilityInfo);
1019 EXPECT_NE(contextImpl->GetHapModuleInfo(), nullptr);
1020 TAG_LOGI(AAFwkTag::TEST, "%{public}s end.", __func__);
1021 }
1022
1023 /**
1024 * @tc.name: SetToken_0100
1025 * @tc.desc: set token and get token test.
1026 * @tc.type: FUNC
1027 * @tc.require: issueI61P7Y
1028 */
1029 HWTEST_F(ContextImplTest, SetToken_0100, TestSize.Level1)
1030 {
1031 TAG_LOGI(AAFwkTag::TEST, "%{public}s start.", __func__);
1032 auto contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
1033 EXPECT_NE(contextImpl, nullptr);
1034
1035 contextImpl->SetToken(nullptr);
1036 sptr<IRemoteObject> token = new (std::nothrow) MockAbilityToken();
1037 contextImpl->SetToken(token);
1038 auto after = contextImpl->GetToken();
1039 EXPECT_EQ(token, after);
1040
1041 TAG_LOGI(AAFwkTag::TEST, "%{public}s end.", __func__);
1042 }
1043
1044 /**
1045 * @tc.name: GetDeviceType_0100
1046 * @tc.desc: Get device type test.
1047 * @tc.type: FUNC
1048 * @tc.require: issueI61P7Y
1049 */
1050 HWTEST_F(ContextImplTest, GetDeviceType_0100, TestSize.Level1)
1051 {
1052 TAG_LOGI(AAFwkTag::TEST, "%{public}s start.", __func__);
1053 auto contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
1054 EXPECT_NE(contextImpl, nullptr);
1055
1056 // branch when config is nullptr
1057 auto deviceType = contextImpl->GetDeviceType();
1058 EXPECT_EQ(deviceType, Global::Resource::DeviceType::DEVICE_PHONE);
1059
1060 // get device type again
1061 deviceType = contextImpl->GetDeviceType();
1062 EXPECT_EQ(deviceType, Global::Resource::DeviceType::DEVICE_PHONE);
1063
1064 // construct configuration
1065 auto config = std::make_shared<AppExecFwk::Configuration>();
1066 EXPECT_NE(config, nullptr);
1067 config->AddItem(AAFwk::GlobalConfigurationKey::DEVICE_TYPE, "phone");
1068 contextImpl->SetConfiguration(config);
1069 deviceType = contextImpl->GetDeviceType();
1070 EXPECT_EQ(deviceType, Global::Resource::DeviceType::DEVICE_PHONE);
1071
1072 TAG_LOGI(AAFwkTag::TEST, "%{public}s end.", __func__);
1073 }
1074
1075 /**
1076 * @tc.number: GetCacheDir_0100
1077 * @tc.name: GetCacheDir_0100
1078 * @tc.desc: Get cache dir test.
1079 */
1080 HWTEST_F(ContextImplTest, GetCacheDir_0100, TestSize.Level1)
1081 {
1082 TAG_LOGI(AAFwkTag::TEST, "%{public}s start.", __func__);
1083 auto contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
1084 EXPECT_NE(contextImpl, nullptr);
1085
1086 auto cacheDir = contextImpl->GetCacheDir();
1087 EXPECT_EQ(cacheDir, "/data/storage/el2/base/cache");
1088
1089 TAG_LOGI(AAFwkTag::TEST, "%{public}s end.", __func__);
1090 }
1091
1092 /**
1093 * @tc.number: GetConfiguration_0100
1094 * @tc.name: GetConfiguration_0100
1095 * @tc.desc: Get configuration test.
1096 */
1097 HWTEST_F(ContextImplTest, GetConfiguration_0100, TestSize.Level1)
1098 {
1099 TAG_LOGI(AAFwkTag::TEST, "%{public}s start.", __func__);
1100 auto contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
1101 EXPECT_NE(contextImpl, nullptr);
1102 auto configRet = contextImpl->GetConfiguration();
1103 EXPECT_EQ(configRet, nullptr);
1104
1105 // construct configuration
1106 auto config = std::make_shared<AppExecFwk::Configuration>();
1107 EXPECT_NE(config, nullptr);
1108 config->AddItem(AAFwk::GlobalConfigurationKey::DEVICE_TYPE, "phone");
1109 contextImpl->SetConfiguration(config);
1110
1111 configRet = contextImpl->GetConfiguration();
1112 EXPECT_NE(configRet, nullptr);
1113
1114 TAG_LOGI(AAFwkTag::TEST, "%{public}s end.", __func__);
1115 }
1116
1117 /**
1118 * @tc.number: IsCreateBySystemApp_0100
1119 * @tc.name: IsCreateBySystemApp_0100
1120 * @tc.desc: Is create by system app test.
1121 */
1122 HWTEST_F(ContextImplTest, IsCreateBySystemApp_0100, TestSize.Level1)
1123 {
1124 TAG_LOGI(AAFwkTag::TEST, "%{public}s start.", __func__);
1125 auto contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
1126 EXPECT_NE(contextImpl, nullptr);
1127 auto isSystemApp = contextImpl->IsCreateBySystemApp();
1128 EXPECT_EQ(isSystemApp, false);
1129
1130 contextImpl->flags_ = CONTEXT_CREATE_BY_SYSTEM_APP;
1131 isSystemApp = contextImpl->IsCreateBySystemApp();
1132 EXPECT_EQ(isSystemApp, true);
1133 TAG_LOGI(AAFwkTag::TEST, "%{public}s end.", __func__);
1134 }
1135
1136 /**
1137 * @tc.number: SetResourceManager_0100
1138 * @tc.name: SetResourceManager_0100
1139 * @tc.desc: Set Resource Manager test.
1140 */
1141 HWTEST_F(ContextImplTest, SetResourceManager_0100, TestSize.Level1)
1142 {
1143 TAG_LOGI(AAFwkTag::TEST, "%{public}s start.", __func__);
1144 auto contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
1145 EXPECT_NE(contextImpl, nullptr);
1146 EXPECT_EQ(contextImpl->GetResourceManager(), nullptr);
1147
1148 std::shared_ptr<Global::Resource::ResourceManager> resourceManager(Global::Resource::CreateResourceManager());
1149 EXPECT_NE(resourceManager, nullptr);
1150
1151 contextImpl->SetResourceManager(resourceManager);
1152 EXPECT_NE(contextImpl->GetResourceManager(), nullptr);
1153
1154 TAG_LOGI(AAFwkTag::TEST, "%{public}s end.", __func__);
1155 }
1156
1157 /**
1158 * @tc.number: GetResourceManager_0100
1159 * @tc.name: GetResourceManager_0100
1160 * @tc.desc: Get Resource Manager test.
1161 */
1162 HWTEST_F(ContextImplTest, GetResourceManager_0100, TestSize.Level1)
1163 {
1164 TAG_LOGI(AAFwkTag::TEST, "%{public}s start.", __func__);
1165 auto contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
1166 EXPECT_NE(contextImpl, nullptr);
1167 EXPECT_EQ(contextImpl->GetResourceManager(), nullptr);
1168
1169 auto parentContext = std::make_shared<AbilityRuntime::ContextImpl>();
1170 EXPECT_NE(parentContext, nullptr);
1171 contextImpl->SetParentContext(parentContext);
1172 std::shared_ptr<Global::Resource::ResourceManager> resourceManager(Global::Resource::CreateResourceManager());
1173 EXPECT_NE(resourceManager, nullptr);
1174
1175 parentContext->SetResourceManager(resourceManager);
1176 EXPECT_NE(contextImpl->GetResourceManager(), nullptr);
1177
1178 TAG_LOGI(AAFwkTag::TEST, "%{public}s end.", __func__);
1179 }
1180
1181 /**
1182 * @tc.number: GetBundleManager_0100
1183 * @tc.name: GetBundleManager_0100
1184 * @tc.desc: Get Bundle Manager test.
1185 */
1186 HWTEST_F(ContextImplTest, GetBundleManager_0100, TestSize.Level1)
1187 {
1188 TAG_LOGI(AAFwkTag::TEST, "%{public}s start.", __func__);
1189 auto contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
1190 EXPECT_NE(contextImpl, nullptr);
1191 contextImpl->GetBundleManager();
1192 EXPECT_NE(contextImpl->bundleMgr_, nullptr);
1193 TAG_LOGI(AAFwkTag::TEST, "%{public}s end.", __func__);
1194 }
1195
1196 /**
1197 * @tc.number: ChangeToLocalPath_0100
1198 * @tc.name: ChangeToLocalPath_0100
1199 * @tc.desc: Change the inner path to local path.
1200 * @tc.require: issueI6SAQC
1201 */
1202 HWTEST_F(ContextImplTest, ChangeToLocalPath_0100, TestSize.Level1)
1203 {
1204 auto contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
1205 EXPECT_NE(contextImpl, nullptr);
1206 std::string bundleName = "com.ohos.demo";
1207 std::string localPath = "/data/app/el1/bundle/public/com.ohos.demo/";
1208 contextImpl->ChangeToLocalPath(bundleName, localPath, localPath);
1209 EXPECT_TRUE(localPath == "/data/storage/el1/bundle/");
1210 }
1211
1212 /**
1213 * @tc.number: ChangeToLocalPath_0200
1214 * @tc.name: ChangeToLocalPath_0200
1215 * @tc.desc: Change the outter path to local path.
1216 * @tc.require: issueI6SAQC
1217 */
1218 HWTEST_F(ContextImplTest, ChangeToLocalPath_0200, TestSize.Level1)
1219 {
1220 auto contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
1221 EXPECT_NE(contextImpl, nullptr);
1222 std::string bundleName = "com.ohos.demo";
1223 std::string outBundleName = "com.example.demo";
1224 std::string localPath = "/data/app/el1/bundle/public/com.example.demo/";
1225 contextImpl->ChangeToLocalPath(bundleName, localPath, localPath);
1226 EXPECT_TRUE(localPath == "/data/bundles/com.example.demo/");
1227 }
1228
1229 /**
1230 * @tc.name: GetAddOverlayPaths_0100
1231 * @tc.desc: Get overlay paths that need add.
1232 * @tc.type: FUNC
1233 * @tc.require: issueI6SAQC
1234 */
1235 HWTEST_F(ContextImplTest, GetAddOverlayPath_0100, TestSize.Level1)
1236 {
1237 auto contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
1238 EXPECT_NE(contextImpl, nullptr);
1239 std::vector<OverlayModuleInfo> overlayModuleInfos;
1240 OverlayModuleInfo overlayModuleInfo;
1241 overlayModuleInfo.bundleName = "com.ohos.demo";
1242 overlayModuleInfo.moduleName = "entry";
1243 overlayModuleInfo.hapPath = "test";
1244 overlayModuleInfo.state = OverlayState::OVERLAY_ENABLE;
1245 overlayModuleInfos.emplace_back(overlayModuleInfo);
1246 contextImpl->overlayModuleInfos_ = overlayModuleInfos;
1247
1248 std::vector<std::string> result = contextImpl->GetAddOverlayPaths(overlayModuleInfos);
1249 EXPECT_TRUE(result.size() == 1);
1250 EXPECT_TRUE(result[0] == "test");
1251 }
1252
1253 /**
1254 * @tc.name: GetRemoveOverlayPaths_0100
1255 * @tc.desc: Get overlay paths that need remove.
1256 * @tc.type: FUNC
1257 * @tc.require: issueI6SAQC
1258 */
1259 HWTEST_F(ContextImplTest, GetRemoveOverlayPaths_0100, TestSize.Level1)
1260 {
1261 auto contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
1262 EXPECT_NE(contextImpl, nullptr);
1263 std::vector<OverlayModuleInfo> overlayModuleInfos;
1264 OverlayModuleInfo overlayModuleInfo;
1265 overlayModuleInfo.bundleName = "com.ohos.demo";
1266 overlayModuleInfo.moduleName = "entry";
1267 overlayModuleInfo.hapPath = "test";
1268 overlayModuleInfo.state = OverlayState::OVERLAY_ENABLE;
1269 overlayModuleInfos.emplace_back(overlayModuleInfo);
1270 contextImpl->overlayModuleInfos_ = overlayModuleInfos;
1271 overlayModuleInfos[0].state = OverlayState::OVERLAY_DISABLED;
1272
1273 std::vector<std::string> result = contextImpl->GetRemoveOverlayPaths(overlayModuleInfos);
1274 EXPECT_TRUE(result.size() == 1);
1275 EXPECT_TRUE(result[0] == "test");
1276 }
1277
1278 HWTEST_F(ContextImplTest, OnOverlayChanged_0100, TestSize.Level1)
1279 {
1280 auto contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
1281 EXPECT_NE(contextImpl, nullptr);
1282 std::shared_ptr<Global::Resource::ResourceManager> resourceManager(Global::Resource::CreateResourceManager());
1283 EXPECT_TRUE(resourceManager != nullptr);
1284 std::string bundleName = "com.ohos.demo";
1285 std::string moduleName = "entry";
1286 std::string loadPath = "test";
1287 std::vector<OverlayModuleInfo> overlayModuleInfos;
1288 OverlayModuleInfo overlayModuleInfo;
1289 overlayModuleInfo.bundleName = "com.ohos.demo";
1290 overlayModuleInfo.moduleName = "entry";
1291 overlayModuleInfo.hapPath = "test";
1292 overlayModuleInfo.state = OverlayState::OVERLAY_ENABLE;
1293 overlayModuleInfos.emplace_back(overlayModuleInfo);
1294 overlayModuleInfos[0].state = OverlayState::OVERLAY_DISABLED;
1295 OHOS::EventFwk::CommonEventData data;
1296 AAFwk::Want want;
1297 want.SetElementName("com.ohos.demo", "MainAbility", "entry");
1298 want.SetAction("usual.event.OVERLAY_STATE_CHANGED");
1299 data.SetWant(want);
1300
1301 contextImpl->OnOverlayChanged(data, resourceManager, bundleName, moduleName, loadPath);
1302 }
1303
1304 HWTEST_F(ContextImplTest, GetGroupDir_0100, TestSize.Level1)
1305 {
1306 auto contextImpl = std::make_shared<AbilityRuntime::ContextImpl>();
1307 EXPECT_NE(contextImpl, nullptr);
1308 contextImpl->currArea_ = "el1";
1309 auto path = contextImpl->GetGroupDir("1");
1310 EXPECT_EQ(path, "");
1311 contextImpl->currArea_ = "el2";
1312 path = contextImpl->GetGroupDir("1");
1313 string systemPreferencesDir;
1314 auto res = contextImpl->GetSystemPreferencesDir("", true, systemPreferencesDir);
1315 EXPECT_EQ(res, 0);
1316 res = contextImpl->GetSystemPreferencesDir("", false, systemPreferencesDir);
1317 EXPECT_EQ(res, 0);
1318 string systemDatabaseDir;
1319 res = contextImpl->GetSystemDatabaseDir("", true, systemDatabaseDir);
1320 EXPECT_EQ(res, 0);
1321 res = contextImpl->GetSystemDatabaseDir("", false, systemDatabaseDir);
1322 EXPECT_EQ(res, 0);
1323 }
1324 } // namespace AppExecFwk
1325 }
1326