• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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