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 "free_install_observer_manager.h"
21 #include "task_handler_wrap.h"
22 #undef private
23
24 #include "ability_record.h"
25 #include "sa_mgr_client.h"
26 #include "hilog_tag_wrapper.h"
27 #include "hilog_wrapper.h"
28
29
30 using namespace testing::ext;
31 using namespace OHOS::AAFwk;
32
33 namespace OHOS {
34 namespace AppExecFwk {
35 namespace {
36 const int BUNDLE_MGR_SERVICE_SYS_ABILITY_ID = 401;
37 }
38 class FreeInstallObserverManagerTest : public testing::Test {
39 public:
FreeInstallObserverManagerTest()40 FreeInstallObserverManagerTest()
41 {}
~FreeInstallObserverManagerTest()42 ~FreeInstallObserverManagerTest()
43 {}
44 static void SetUpTestCase(void);
45 static void TearDownTestCase(void);
46 void SetUp();
47 void TearDown();
48 sptr<Token> MockToken();
49 std::shared_ptr<FreeInstallObserverManager> freeInstallObserverManager_ = nullptr;
50 };
51
SetUpTestCase(void)52 void FreeInstallObserverManagerTest::SetUpTestCase(void) {}
53
TearDownTestCase(void)54 void FreeInstallObserverManagerTest::TearDownTestCase(void) {}
55
SetUp(void)56 void FreeInstallObserverManagerTest::SetUp(void) {}
57
TearDown(void)58 void FreeInstallObserverManagerTest::TearDown(void)
59 {}
60
MockToken()61 sptr<Token> FreeInstallObserverManagerTest::MockToken()
62 {
63 sptr<Token> token = nullptr;
64 AbilityRequest abilityRequest;
65 abilityRequest.appInfo.bundleName = "com.test.demo";
66 abilityRequest.abilityInfo.name = "MainAbility";
67 abilityRequest.abilityInfo.type = AbilityType::PAGE;
68 std::shared_ptr<AbilityRecord> abilityRecord = AbilityRecord::CreateAbilityRecord(abilityRequest);
69 if (!abilityRecord) {
70 return nullptr;
71 }
72
73 return abilityRecord->GetToken();
74 }
75
76 class IFreeInstallObserverMock : public IFreeInstallObserver {
77 public:
78 IFreeInstallObserverMock() = default;
79 virtual ~IFreeInstallObserverMock() = default;
OnInstallFinished(const std::string & bundleName,const std::string & abilityName,const std::string & startTime,int32_t resultCode)80 void OnInstallFinished(const std::string &bundleName, const std::string &abilityName,
81 const std::string &startTime, int32_t resultCode) override {};
82
OnInstallFinishedByUrl(const std::string & startTime,const std::string & url,int32_t resultCode)83 void OnInstallFinishedByUrl(const std::string &startTime, const std::string &url,
84 int32_t resultCode) override {};
AsObject()85 sptr<IRemoteObject> AsObject() override {return nullptr;};
86 };
87 /**
88 * @tc.number: AddObserver_001
89 * @tc.name: AddObserver
90 * @tc.desc: Test AddObserver when callback is success.
91 */
92 HWTEST_F(FreeInstallObserverManagerTest, AddObserver_001, TestSize.Level1)
93 {
94 TAG_LOGI(AAFwkTag::TEST, "AddObserver_001 is start");
95 auto info = std::make_shared<FreeInstallObserverManager>();
96 int32_t recordId = 0;
97 sptr<AbilityRuntime::IFreeInstallObserver> observer;
98 int32_t res = info->AddObserver(recordId, observer);
99 EXPECT_EQ(res, ERR_INVALID_VALUE);
100 TAG_LOGI(AAFwkTag::TEST, "AddObserver_001 is end");
101 }
102
103 /**
104 * @tc.number: AddObserver_002
105 * @tc.name: AddObserver
106 * @tc.desc: Test AddObserver when callback is success.
107 */
108 HWTEST_F(FreeInstallObserverManagerTest, AddObserver_002, TestSize.Level1)
109 {
110 TAG_LOGI(AAFwkTag::TEST, "AddObserver_002 is start");
111 freeInstallObserverManager_ = std::make_shared<FreeInstallObserverManager>();
112 int32_t recordId = 0;
113 sptr<AbilityRuntime::IFreeInstallObserver> observer = new IFreeInstallObserverMock();
114 int32_t res = freeInstallObserverManager_->AddObserver(recordId, observer);
115 freeInstallObserverManager_->deathRecipient_ = nullptr;
116 EXPECT_EQ(res, ERR_OK);
117 TAG_LOGI(AAFwkTag::TEST, "AddObserver_002 is end");
118 }
119
120 /**
121 * @tc.number: RemoveObserver_001
122 * @tc.name: RemoveObserver
123 * @tc.desc: Test RemoveObserver when callback is success.
124 */
125 HWTEST_F(FreeInstallObserverManagerTest, RemoveObserver_001, TestSize.Level1)
126 {
127 TAG_LOGI(AAFwkTag::TEST, "RemoveObserver_001 is start");
128 freeInstallObserverManager_ = std::make_shared<FreeInstallObserverManager>();
129 sptr<AbilityRuntime::IFreeInstallObserver> observer;
130 int32_t res = freeInstallObserverManager_->RemoveObserver(observer);
131 EXPECT_EQ(res, ERR_INVALID_VALUE);
132 TAG_LOGI(AAFwkTag::TEST, "RemoveObserver_001 is end");
133 }
134
135 /**
136 * @tc.number: RemoveObserver_002
137 * @tc.name: RemoveObserver
138 * @tc.desc: Test RemoveObserver when callback is success.
139 */
140 HWTEST_F(FreeInstallObserverManagerTest, RemoveObserver_002, TestSize.Level1)
141 {
142 TAG_LOGI(AAFwkTag::TEST, "RemoveObserver_002 is start");
143 freeInstallObserverManager_ = std::make_shared<FreeInstallObserverManager>();
144 sptr<AbilityRuntime::IFreeInstallObserver> observer = new IFreeInstallObserverMock();
145 int32_t res = freeInstallObserverManager_->RemoveObserver(observer);
146 EXPECT_EQ(res, ERR_INVALID_VALUE);
147 TAG_LOGI(AAFwkTag::TEST, "RemoveObserver_002 is end");
148 }
149
150 /**
151 * @tc.number: RemoveObserver_003
152 * @tc.name: RemoveObserver
153 * @tc.desc: Test RemoveObserver when callback is success.
154 */
155 HWTEST_F(FreeInstallObserverManagerTest, RemoveObserver_003, TestSize.Level1)
156 {
157 TAG_LOGI(AAFwkTag::TEST, "RemoveObserver_003 is start");
158 freeInstallObserverManager_ = std::make_shared<FreeInstallObserverManager>();
159 sptr<AbilityRuntime::IFreeInstallObserver> observer = new IFreeInstallObserverMock();
160 freeInstallObserverManager_->observerMap_[0] = observer;
161 freeInstallObserverManager_->observerMap_[1] = observer;
162 int32_t res = freeInstallObserverManager_->RemoveObserver(observer);
163 EXPECT_EQ(res, ERR_OK);
164 TAG_LOGI(AAFwkTag::TEST, "RemoveObserver_003 is end");
165 }
166
167 /**
168 * @tc.number: OnInstallFinished_001
169 * @tc.name: OnInstallFinished
170 * @tc.desc: Test OnInstallFinished when callback is success.
171 */
172 HWTEST_F(FreeInstallObserverManagerTest, OnInstallFinished_001, TestSize.Level1)
173 {
174 TAG_LOGI(AAFwkTag::TEST, "OnInstallFinished_001 is start");
175 freeInstallObserverManager_ = std::make_shared<FreeInstallObserverManager>();
176 std::string bundleName = "FreeInstallObserverManagerTest";
177 std::string abilityName = "OnInstallFinished";
178 std::string startTime = "2024-07-17 00:00:00";
179 freeInstallObserverManager_->OnInstallFinished(0, bundleName, abilityName, startTime, 0);
180 EXPECT_EQ(bundleName, "FreeInstallObserverManagerTest");
181 TAG_LOGI(AAFwkTag::TEST, "OnInstallFinished_001 is end");
182 }
183
184 /**
185 * @tc.number: OnInstallFinishedByUrl_001
186 * @tc.name: OnInstallFinishedByUrl
187 * @tc.desc: Test OnInstallFinishedByUrl when callback is success.
188 */
189 HWTEST_F(FreeInstallObserverManagerTest, OnInstallFinishedByUrl_001, TestSize.Level1)
190 {
191 TAG_LOGI(AAFwkTag::TEST, "OnInstallFinishedByUrl_001 is start");
192 freeInstallObserverManager_ = std::make_shared<FreeInstallObserverManager>();
193 const std::string url = "FreeInstallObserverManagerTest";
194 std::string startTime = "2024-07-17 00:00:00";
195 freeInstallObserverManager_->OnInstallFinishedByUrl(0, startTime, url, 0);
196 EXPECT_EQ(url, "FreeInstallObserverManagerTest");
197 TAG_LOGI(AAFwkTag::TEST, "OnInstallFinishedByUrl_001 is end");
198 }
199
200 /**
201 * @tc.number: HandleOnInstallFinished_001
202 * @tc.name: HandleOnInstallFinished
203 * @tc.desc: Test HandleOnInstallFinished when callback is success.
204 */
205 HWTEST_F(FreeInstallObserverManagerTest, HandleOnInstallFinished_001, TestSize.Level1)
206 {
207 TAG_LOGI(AAFwkTag::TEST, "HandleOnInstallFinished_001 is start");
208 freeInstallObserverManager_ = std::make_shared<FreeInstallObserverManager>();
209 std::string bundleName = "FreeInstallObserverManagerTest";
210 std::string abilityName = "OnInstallFinished";
211 std::string startTime = "2024-07-17 00:00:00";
212 sptr<AbilityRuntime::IFreeInstallObserver> observer = new IFreeInstallObserverMock();
213 freeInstallObserverManager_->observerMap_[0] = observer;
214 freeInstallObserverManager_->HandleOnInstallFinished(0, bundleName, abilityName, startTime, 0);
215 EXPECT_EQ(bundleName, "FreeInstallObserverManagerTest");
216 TAG_LOGI(AAFwkTag::TEST, "HandleOnInstallFinished_001 is end");
217 }
218
219 /**
220 * @tc.number: HandleOnInstallFinishedByUrl_001
221 * @tc.name: HandleOnInstallFinishedByUrl
222 * @tc.desc: Test HandleOnInstallFinishedByUrl when callback is success.
223 */
224 HWTEST_F(FreeInstallObserverManagerTest, HandleOnInstallFinishedByUrl_001, TestSize.Level1)
225 {
226 TAG_LOGI(AAFwkTag::TEST, "HandleOnInstallFinishedByUrl_001 is start");
227 freeInstallObserverManager_ = std::make_shared<FreeInstallObserverManager>();
228 const std::string url = "FreeInstallObserverManagerTest";
229 std::string startTime = "2024-07-17 00:00:00";
230 sptr<AbilityRuntime::IFreeInstallObserver> observer = new IFreeInstallObserverMock();
231 freeInstallObserverManager_->observerMap_[0] = observer;
232 freeInstallObserverManager_->HandleOnInstallFinishedByUrl(0, startTime, url, 0);
233 EXPECT_EQ(url, "FreeInstallObserverManagerTest");
234 TAG_LOGI(AAFwkTag::TEST, "HandleOnInstallFinishedByUrl_001 is end");
235 }
236
237 /**
238 * @tc.number: OnObserverDied_001
239 * @tc.name: OnObserverDied
240 * @tc.desc: Test OnObserverDied when callback is success.
241 */
242 HWTEST_F(FreeInstallObserverManagerTest, OnObserverDied_001, TestSize.Level1)
243 {
244 TAG_LOGI(AAFwkTag::TEST, "OnObserverDied_001 is start");
245 freeInstallObserverManager_ = std::make_shared<FreeInstallObserverManager>();
246 wptr<IRemoteObject> remote = nullptr;
247 freeInstallObserverManager_->OnObserverDied(remote);
248 EXPECT_EQ(remote, nullptr);
249 TAG_LOGI(AAFwkTag::TEST, "OnObserverDied_001 is end");
250 }
251
252 /**
253 * @tc.number: OnObserverDied_002
254 * @tc.name: OnObserverDied
255 * @tc.desc: Test OnObserverDied when callback is success.
256 */
257 HWTEST_F(FreeInstallObserverManagerTest, OnObserverDied_002, TestSize.Level1)
258 {
259 TAG_LOGI(AAFwkTag::TEST, "OnObserverDied_002 is start");
260 freeInstallObserverManager_ = std::make_shared<FreeInstallObserverManager>();
261 sptr<AbilityRuntime::IFreeInstallObserver> observer = new IFreeInstallObserverMock();
262 freeInstallObserverManager_->observerMap_[0] = observer;
263 freeInstallObserverManager_->deathRecipient_ = nullptr;
264 sptr<Token> remoteObject = MockToken();
265 wptr<IRemoteObject> remote(remoteObject);
266 freeInstallObserverManager_->OnObserverDied(remote);
267 EXPECT_NE(remote, nullptr);
268 TAG_LOGI(AAFwkTag::TEST, "OnObserverDied_002 is end");
269 }
270 } // namespace AppExecFwk
271 } // namespace OHOS