1 /*
2 * Copyright (c) 2024 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
18 #define private public
19 #include "ability_manager_service.h"
20 #include "task_handler_wrap.h"
21 #undef private
22
23 #include "ability_record.h"
24 #include "sa_mgr_client.h"
25 #include "string_wrapper.h"
26 #include "int_wrapper.h"
27
28 using namespace testing::ext;
29 using namespace OHOS::AAFwk;
30
31 namespace OHOS {
32 namespace AppExecFwk {
33 namespace {
34 const int BUNDLE_MGR_SERVICE_SYS_ABILITY_ID = 401;
35 }
36 class FreeInstallManagerSecondTest : public testing::Test {
37 public:
FreeInstallManagerSecondTest()38 FreeInstallManagerSecondTest()
39 {}
~FreeInstallManagerSecondTest()40 ~FreeInstallManagerSecondTest()
41 {}
42 static void SetUpTestCase(void);
43 static void TearDownTestCase(void);
44 void SetUp();
45 void TearDown();
46 sptr<Token> MockToken();
47 std::shared_ptr<FreeInstallManager> freeInstallManager_ = nullptr;
48 };
49
SetUpTestCase(void)50 void FreeInstallManagerSecondTest::SetUpTestCase(void) {}
51
TearDownTestCase(void)52 void FreeInstallManagerSecondTest::TearDownTestCase(void) {}
53
SetUp(void)54 void FreeInstallManagerSecondTest::SetUp(void) {}
55
TearDown(void)56 void FreeInstallManagerSecondTest::TearDown(void) {}
57
MockToken()58 sptr<Token> FreeInstallManagerSecondTest::MockToken()
59 {
60 sptr<Token> token = nullptr;
61 AbilityRequest abilityRequest;
62 abilityRequest.appInfo.bundleName = "com.test.demo";
63 abilityRequest.abilityInfo.name = "MainAbility";
64 abilityRequest.abilityInfo.type = AbilityType::PAGE;
65 std::shared_ptr<AbilityRecord> abilityRecord = AbilityRecord::CreateAbilityRecord(abilityRequest);
66 if (!abilityRecord) {
67 return nullptr;
68 }
69 return abilityRecord->GetToken();
70 }
71
72 /**
73 * @tc.number: GetFreeInstallTaskInfo_001
74 * @tc.name: GetFreeInstallTaskInfo
75 * @tc.desc: Test GetFreeInstallTaskInfo.
76 */
77 HWTEST_F(FreeInstallManagerSecondTest, GetFreeInstallTaskInfo_001, TestSize.Level1)
78 {
79 auto abilityMs_ = std::make_shared<AbilityManagerService>();
80 freeInstallManager_ = std::make_shared<FreeInstallManager>(abilityMs_);
81 const std::string bundleName("com.test.demo");
82 std::string abilityName("MainAbility");
83 const std::string startTime = "startTime";
84 FreeInstallInfo taskInfo;
85 FreeInstallInfo info;
86 ElementName element("", "com.test.demo", "MainAbility");
87 info.want.SetElement(element);
88 sptr<OHOS::AAFwk::IInterface> iInterface = String::Box("startTime");
89 info.want.parameters_.SetParam(Want::PARAM_RESV_START_TIME, iInterface);
90 freeInstallManager_->freeInstallList_.push_back(info);
91 bool ret = freeInstallManager_->GetFreeInstallTaskInfo(bundleName, abilityName, startTime, taskInfo);
92 EXPECT_TRUE(ret);
93
94 ret = freeInstallManager_->GetFreeInstallTaskInfo("", abilityName, startTime, taskInfo);
95 EXPECT_FALSE(ret);
96
97 ret = freeInstallManager_->GetFreeInstallTaskInfo(bundleName, "", startTime, taskInfo);
98 EXPECT_FALSE(ret);
99
100 ret = freeInstallManager_->GetFreeInstallTaskInfo(bundleName, abilityName, "", taskInfo);
101 EXPECT_FALSE(ret);
102 }
103
104 /**
105 * @tc.number: SetSCBCallStatus_001
106 * @tc.name: SetSCBCallStatus
107 * @tc.desc: Test GetFreeInstallTaskInfo.
108 */
109 HWTEST_F(FreeInstallManagerSecondTest, SetSCBCallStatus_001, TestSize.Level1)
110 {
111 auto abilityMs_ = std::make_shared<AbilityManagerService>();
112 freeInstallManager_ = std::make_shared<FreeInstallManager>(abilityMs_);
113 const std::string bundleName("com.test.demo");
114 std::string abilityName("MainAbility");
115 const std::string startTime = "startTime";
116 bool scbCallStatus = true;
117
118 FreeInstallInfo info;
119 ElementName element("", "com.test.demo", "MainAbility");
120 info.want.SetElement(element);
121 sptr<OHOS::AAFwk::IInterface> iInterface = String::Box("startTime");
122 info.want.parameters_.SetParam(Want::PARAM_RESV_START_TIME, iInterface);
123 freeInstallManager_->freeInstallList_.push_back(info);
124
125 freeInstallManager_->SetSCBCallStatus("", abilityName, startTime, scbCallStatus);
126 EXPECT_FALSE(info.isStartUIAbilityBySCBCalled);
127
128 freeInstallManager_->SetSCBCallStatus(bundleName, "", startTime, scbCallStatus);
129 EXPECT_FALSE(info.isStartUIAbilityBySCBCalled);
130
131 freeInstallManager_->SetSCBCallStatus(bundleName, abilityName, "", scbCallStatus);
132 EXPECT_FALSE(info.isStartUIAbilityBySCBCalled);
133
134 freeInstallManager_->SetSCBCallStatus(bundleName, abilityName, startTime, scbCallStatus);
135 FreeInstallInfo infoRet;
136 EXPECT_TRUE(freeInstallManager_->GetFreeInstallTaskInfo(bundleName, abilityName, startTime, infoRet));
137 EXPECT_TRUE(infoRet.isStartUIAbilityBySCBCalled);
138 }
139
140 /**
141 * @tc.number: NotifyInsightIntentFreeInstallResult_001
142 * @tc.name: NotifyInsightIntentFreeInstallResult
143 * @tc.desc: Test NotifyInsightIntentFreeInstallResult.
144 */
145 HWTEST_F(FreeInstallManagerSecondTest, NotifyInsightIntentFreeInstallResult_001, TestSize.Level1)
146 {
147 auto abilityMs_ = std::make_shared<AbilityManagerService>();
148 freeInstallManager_ = std::make_shared<FreeInstallManager>(abilityMs_);
149 Want want;
150 int32_t resultCode = ERR_OK + 1;
151 //resultCode != ERR_OK and freeInstallList_ is NULL
152 want.SetParam("ohos.insightIntent.executeParam.id", std::string("0"));
153 freeInstallManager_->NotifyInsightIntentFreeInstallResult(want, resultCode);
154 EXPECT_EQ(freeInstallManager_->freeInstallList_.size(), 0);
155
156 resultCode = ERR_OK;
157 freeInstallManager_->NotifyInsightIntentFreeInstallResult(want, resultCode);
158 EXPECT_EQ(freeInstallManager_->freeInstallList_.size(), 0);
159
160 ElementName element("", "com.test.demo", "MainAbility");
161 want.SetElement(element);
162 sptr<OHOS::AAFwk::IInterface> iInterface = String::Box("startTime");
163 want.parameters_.SetParam(Want::PARAM_RESV_START_TIME, iInterface);
164 want.parameters_.SetParam(AppExecFwk::INSIGHT_INTENT_EXECUTE_PARAM_NAME, iInterface);
165 want.parameters_.SetParam(AppExecFwk::INSIGHT_INTENT_EXECUTE_PARAM_MODE, iInterface);
166 FreeInstallInfo info;
167 ElementName element2("", "com.test.demo2", "MainAbility2");
168 info.want.SetElement(element2);
169 info.want.parameters_.SetParam(Want::PARAM_RESV_START_TIME, iInterface);
170 freeInstallManager_->freeInstallList_.push_back(info);
171 freeInstallManager_->NotifyInsightIntentFreeInstallResult(want, resultCode);
172 EXPECT_EQ(freeInstallManager_->freeInstallList_.size(), 1);
173
174 ElementName element3("", "com.test.demo", "MainAbility2");
175 info.want.SetElement(element3);
176 iInterface = String::Box("startTime2");
177 info.want.parameters_.SetParam(Want::PARAM_RESV_START_TIME, iInterface);
178 freeInstallManager_->freeInstallList_.clear();
179 freeInstallManager_->freeInstallList_.push_back(info);
180 freeInstallManager_->NotifyInsightIntentFreeInstallResult(want, resultCode);
181 EXPECT_EQ(freeInstallManager_->freeInstallList_.size(), 1);
182
183 ElementName element4("", "com.test.demo", "MainAbility");
184 info.want.SetElement(element4);
185 iInterface = String::Box("startTime");
186 info.want.parameters_.SetParam(Want::PARAM_RESV_START_TIME, iInterface);
187 freeInstallManager_->freeInstallList_.clear();
188 freeInstallManager_->freeInstallList_.push_back(info);
189 freeInstallManager_->NotifyInsightIntentFreeInstallResult(want, resultCode);
190 EXPECT_EQ(freeInstallManager_->freeInstallList_.size(), 0);
191
192 ElementName element5("", "com.test.demo", "MainAbility", "modename");
193 info.want.SetElement(element5);
194 iInterface = String::Box("startTime");
195 info.want.parameters_.SetParam(Want::PARAM_RESV_START_TIME, iInterface);
196 info.want.parameters_.SetParam(AppExecFwk::INSIGHT_INTENT_EXECUTE_PARAM_NAME, iInterface);
197 iInterface = Integer::Box(1);
198 info.want.parameters_.SetParam(AppExecFwk::INSIGHT_INTENT_EXECUTE_PARAM_MODE, iInterface);
199 freeInstallManager_->freeInstallList_.clear();
200 freeInstallManager_->freeInstallList_.push_back(info);
201 freeInstallManager_->NotifyInsightIntentFreeInstallResult(want, resultCode);
202 EXPECT_EQ(freeInstallManager_->freeInstallList_.size(), 0);
203 }
204 } // namespace AppExecFwk
205 } // namespace OHOS