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 };
49
CreateAbilityInfo(const std::string & name,const std::string & appName,const std::string & bundleName,const std::string & moduleName,bool mode)50 AbilityInfo OnNewWantModuleTest::CreateAbilityInfo(const std::string& name, const std::string& appName,
51 const std::string& bundleName, const std::string& moduleName, bool mode)
52 {
53 AbilityInfo abilityInfo;
54 abilityInfo.visible = true;
55 abilityInfo.name = name;
56 abilityInfo.applicationName = appName;
57 abilityInfo.bundleName = bundleName;
58 abilityInfo.moduleName = moduleName;
59 abilityInfo.applicationInfo.bundleName = bundleName;
60 abilityInfo.applicationName = "com.ix.hiMusic";
61 abilityInfo.applicationInfo.name = "com.ix.hiMusic";
62 abilityInfo.type = AbilityType::PAGE;
63 abilityInfo.applicationInfo.isLauncherApp = false;
64
65 if (mode) {
66 abilityInfo.launchMode = LaunchMode::SINGLETON;
67 } else {
68 abilityInfo.launchMode = LaunchMode::STANDARD;
69 }
70
71 return abilityInfo;
72 }
73
CreateAppInfo(const std::string & appName,const std::string & bundleName)74 ApplicationInfo OnNewWantModuleTest::CreateAppInfo(const std::string& appName, const std::string& bundleName)
75 {
76 ApplicationInfo appInfo;
77 appInfo.name = appName;
78 appInfo.bundleName = bundleName;
79
80 return appInfo;
81 }
82
SetUpTestCase()83 void OnNewWantModuleTest::SetUpTestCase() {}
84
TearDownTestCase()85 void OnNewWantModuleTest::TearDownTestCase() {}
86
SetUp()87 void OnNewWantModuleTest::SetUp() {}
88
TearDown()89 void OnNewWantModuleTest::TearDown() {}
90
91 /*
92 * Feature: MissionListManager
93 * Function: Startability
94 * SubFunction: NA
95 * FunctionPoints: NA
96 * CaseDescription:Start the singleton ability multiple times, and the ability is marked with newwant
97 */
98 HWTEST_F(OnNewWantModuleTest, Startability_001, TestSize.Level1)
99 {
100 int userId = 100;
101 auto missionListManager = std::make_shared<MissionListManager>(userId);
102 EXPECT_TRUE(missionListManager);
103
104 std::string abilityName = "MusicAbility";
105 std::string appName = "test_app";
106 std::string bundleName = "com.ix.hiMusic";
107 std::string moduleName = "entry";
108
109 Want want;
110 ElementName element("device", "com.ix.hiMusic", "MusicAbility", "entry");
111 want.SetElement(element);
112
113 AbilityRequest abilityRequest;
114 abilityRequest.want = want;
115 abilityRequest.abilityInfo = CreateAbilityInfo(abilityName, appName, bundleName, moduleName, true);
116 abilityRequest.appInfo = CreateAppInfo(appName, bundleName);
117
118 std::shared_ptr<AbilityRecord> abilityRecord = AbilityRecord::CreateAbilityRecord(abilityRequest);
119 abilityRecord->SetAbilityState(OHOS::AAFwk::AbilityState::FOREGROUND);
120
121 std::string missionName = AbilityUtil::ConvertBundleNameSingleton(abilityRequest.abilityInfo.bundleName,
122 abilityRequest.abilityInfo.name, abilityRequest.abilityInfo.moduleName);
123 std::shared_ptr<Mission> mission = std::make_shared<Mission>(1, abilityRecord, missionName);
124
125 missionListManager->Init();
126 missionListManager->launcherList_->AddMissionToTop(mission);
127 missionListManager->StartAbility(abilityRequest);
128
129 EXPECT_TRUE(abilityRecord->IsNewWant());
130 }
131
132 /*
133 * Feature: MissionListManager
134 * Function: Startability
135 * SubFunction: NA
136 * FunctionPoints: NA
137 * CaseDescription:Start standard ability multiple times, ability has no newwant mark
138 */
139 HWTEST_F(OnNewWantModuleTest, Startability_002, TestSize.Level1)
140 {
141 int userId = 100;
142 auto missionListManager = std::make_shared<MissionListManager>(userId);
143 EXPECT_TRUE(missionListManager);
144
145 std::string abilityName = "MusicAbility";
146 std::string appName = "test_app";
147 std::string bundleName = "com.ix.hiMusic";
148 std::string moduleName = "entry";
149
150 Want want;
151 ElementName element("device", "com.ix.hiMusic", "MusicAbility", "entry");
152 want.SetElement(element);
153
154 AbilityRequest abilityRequest;
155 abilityRequest.want = want;
156 abilityRequest.abilityInfo = CreateAbilityInfo(abilityName, appName, bundleName, moduleName, false);
157 abilityRequest.appInfo = CreateAppInfo(appName, bundleName);
158
159 std::shared_ptr<AbilityRecord> abilityRecord = AbilityRecord::CreateAbilityRecord(abilityRequest);
160 abilityRecord->SetAbilityState(OHOS::AAFwk::AbilityState::FOREGROUND);
161
162 std::string missionName = AbilityUtil::ConvertBundleNameSingleton(abilityRequest.abilityInfo.bundleName,
163 abilityRequest.abilityInfo.name, abilityRequest.abilityInfo.moduleName);
164 std::shared_ptr<Mission> mission = std::make_shared<Mission>(1, abilityRecord, missionName);
165
166 missionListManager->Init();
167 missionListManager->launcherList_->AddMissionToTop(mission);
168 missionListManager->StartAbility(abilityRequest);
169
170 EXPECT_EQ(abilityRecord->IsNewWant(), false);
171 }
172 } // namespace AAFwk
173 } // namespace OHOS
174