• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include <string_view>
17 #include <vector>
18 
19 #include <gtest/gtest.h>
20 #include <gmock/gmock.h>
21 
22 #define private public
23 #include "ability_manager_service.h"
24 #include "mission_list_manager.h"
25 #undef private
26 #include "ability_util.h"
27 #include "mission_list.h"
28 
29 using namespace testing::ext;
30 using namespace OHOS::AppExecFwk;
31 using OHOS::iface_cast;
32 using OHOS::sptr;
33 using testing::_;
34 using testing::Invoke;
35 using testing::Return;
36 
37 namespace OHOS {
38 namespace AAFwk {
39 class OnNewWantModuleTest : public testing::Test {
40 public:
41     static void SetUpTestCase();
42     static void TearDownTestCase();
43     void SetUp();
44     void TearDown();
45     AbilityInfo CreateAbilityInfo(const std::string &name, const std::string &appName, const std::string &bundleName,
46         const std::string &moduleName, bool mode);
47     ApplicationInfo CreateAppInfo(const std::string &appName, const std::string &name);
48     inline static std::shared_ptr<AbilityManagerService> abilityMgrServ_ {nullptr};
49 };
50 
CreateAbilityInfo(const std::string & name,const std::string & appName,const std::string & bundleName,const std::string & moduleName,bool mode)51 AbilityInfo OnNewWantModuleTest::CreateAbilityInfo(const std::string &name, const std::string &appName,
52     const std::string &bundleName, const std::string &moduleName, bool mode)
53 {
54     AbilityInfo abilityInfo;
55     abilityInfo.visible = true;
56     abilityInfo.name = name;
57     abilityInfo.applicationName = appName;
58     abilityInfo.bundleName = bundleName;
59     abilityInfo.moduleName = moduleName;
60     abilityInfo.applicationInfo.bundleName = bundleName;
61     abilityInfo.applicationName = "com.ix.hiMusic";
62     abilityInfo.applicationInfo.name = "com.ix.hiMusic";
63     abilityInfo.type = AbilityType::PAGE;
64     abilityInfo.applicationInfo.isLauncherApp = false;
65 
66     if (mode) {
67         abilityInfo.launchMode = LaunchMode::SINGLETON;
68     } else {
69         abilityInfo.launchMode = LaunchMode::STANDARD;
70     }
71 
72     return abilityInfo;
73 }
74 
CreateAppInfo(const std::string & appName,const std::string & bundleName)75 ApplicationInfo OnNewWantModuleTest::CreateAppInfo(const std::string &appName, const std::string &bundleName)
76 {
77     ApplicationInfo appInfo;
78     appInfo.name = appName;
79     appInfo.bundleName = bundleName;
80 
81     return appInfo;
82 }
83 
SetUpTestCase()84 void OnNewWantModuleTest::SetUpTestCase()
85 {
86     abilityMgrServ_ = OHOS::DelayedSingleton<AbilityManagerService>::GetInstance();
87 }
88 
TearDownTestCase()89 void OnNewWantModuleTest::TearDownTestCase()
90 {
91     abilityMgrServ_->OnStop();
92 }
93 
SetUp()94 void OnNewWantModuleTest::SetUp()
95 {}
96 
TearDown()97 void OnNewWantModuleTest::TearDown()
98 {}
99 
100 /*
101  * Feature: MissionListManager
102  * Function: Startability
103  * SubFunction: NA
104  * FunctionPoints: NA
105  * CaseDescription:Start the singleton ability multiple times, and the ability is marked with newwant
106  */
107 HWTEST_F(OnNewWantModuleTest, Startability_001, TestSize.Level1)
108 {
109     int userId = 100;
110     auto missionListManager = std::make_shared<MissionListManager>(userId);
111     EXPECT_TRUE(missionListManager);
112 
113     std::string abilityName = "MusicAbility";
114     std::string appName = "test_app";
115     std::string bundleName = "com.ix.hiMusic";
116     std::string moduleName = "entry";
117 
118     Want want;
119     ElementName element("device", "com.ix.hiMusic", "MusicAbility", "entry");
120     want.SetElement(element);
121 
122     AbilityRequest abilityRequest;
123     abilityRequest.want = want;
124     abilityRequest.abilityInfo = CreateAbilityInfo(abilityName, appName, bundleName, moduleName, true);
125     abilityRequest.appInfo = CreateAppInfo(appName, bundleName);
126 
127     std::shared_ptr<AbilityRecord> abilityRecord = AbilityRecord::CreateAbilityRecord(abilityRequest);
128     abilityRecord->SetAbilityState(OHOS::AAFwk::AbilityState::FOREGROUND);
129 
130     std::string missionName = AbilityUtil::ConvertBundleNameSingleton(abilityRequest.abilityInfo.bundleName,
131         abilityRequest.abilityInfo.name, abilityRequest.abilityInfo.moduleName);
132     std::shared_ptr<Mission> mission = std::make_shared<Mission>(1, abilityRecord, missionName);
133 
134     missionListManager->Init();
135     missionListManager->launcherList_->AddMissionToTop(mission);
136     missionListManager->StartAbility(abilityRequest);
137 
138     EXPECT_TRUE(abilityRecord->IsNewWant());
139 }
140 
141 /*
142  * Feature: MissionListManager
143  * Function: Startability
144  * SubFunction: NA
145  * FunctionPoints: NA
146  * CaseDescription:Start standard ability multiple times, ability has no newwant mark
147  */
148 HWTEST_F(OnNewWantModuleTest, Startability_002, TestSize.Level1)
149 {
150     int userId = 100;
151     auto missionListManager = std::make_shared<MissionListManager>(userId);
152     EXPECT_TRUE(missionListManager);
153 
154     std::string abilityName = "MusicAbility";
155     std::string appName = "test_app";
156     std::string bundleName = "com.ix.hiMusic";
157     std::string moduleName = "entry";
158 
159     Want want;
160     ElementName element("device", "com.ix.hiMusic", "MusicAbility", "entry");
161     want.SetElement(element);
162 
163     AbilityRequest abilityRequest;
164     abilityRequest.want = want;
165     abilityRequest.abilityInfo = CreateAbilityInfo(abilityName, appName, bundleName, moduleName, false);
166     abilityRequest.appInfo = CreateAppInfo(appName, bundleName);
167 
168     std::shared_ptr<AbilityRecord> abilityRecord = AbilityRecord::CreateAbilityRecord(abilityRequest);
169     abilityRecord->SetAbilityState(OHOS::AAFwk::AbilityState::FOREGROUND);
170 
171     std::string missionName = AbilityUtil::ConvertBundleNameSingleton(abilityRequest.abilityInfo.bundleName,
172         abilityRequest.abilityInfo.name, abilityRequest.abilityInfo.moduleName);
173     std::shared_ptr<Mission> mission = std::make_shared<Mission>(1, abilityRecord, missionName);
174 
175     missionListManager->Init();
176     missionListManager->launcherList_->AddMissionToTop(mission);
177     missionListManager->StartAbility(abilityRequest);
178 
179     EXPECT_EQ(abilityRecord->IsNewWant(), false);
180 }
181 }  // namespace AAFwk
182 }  // namespace OHOS
183