• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021-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 <gtest/gtest.h>
17 
18 #include "ability_manager_errors.h"
19 #include "ams_mgr_proxy.h"
20 #include "mock_ability_debug_response_stub.h"
21 #include "mock_ability_token.h"
22 #include "mock_ams_mgr_scheduler.h"
23 #include "mock_app_debug_listener_stub.h"
24 
25 using namespace testing;
26 using namespace testing::ext;
27 
28 namespace OHOS {
29 namespace AppExecFwk {
30 namespace {
31     const std::string STRING_BUNDLE_NAME = "bundleName";
32     const std::string EMPTY_BUNDLE_NAME = "";
33 }  // namespace
34 
35 class AmsMgrProxyTest : public testing::Test {
36 public:
37     static void SetUpTestCase();
38     static void TearDownTestCase();
39     void SetUp() override;
40     void TearDown() override;
41 
42     sptr<MockAmsMgrScheduler> mockAmsMgrScheduler_;
43     sptr<AmsMgrProxy> amsMgrProxy_;
44     sptr<MockAppDebugListenerStub> listener_;
45     sptr<MockAbilityDebugResponseStub> response_;
46 };
47 
SetUpTestCase(void)48 void AmsMgrProxyTest::SetUpTestCase(void)
49 {}
50 
TearDownTestCase(void)51 void AmsMgrProxyTest::TearDownTestCase(void)
52 {}
53 
SetUp()54 void AmsMgrProxyTest::SetUp()
55 {
56     GTEST_LOG_(INFO) << "AmsMgrProxyTest::SetUp()";
57 
58     mockAmsMgrScheduler_ = new MockAmsMgrScheduler();
59     amsMgrProxy_ = new AmsMgrProxy(mockAmsMgrScheduler_);
60     listener_ = new MockAppDebugListenerStub();
61     response_ = new MockAbilityDebugResponseStub();
62 }
63 
TearDown()64 void AmsMgrProxyTest::TearDown()
65 {}
66 
67 /**
68  * @tc.name: RegisterAppDebugListener_0100
69  * @tc.desc: Register app debug listener, check nullptr listener.
70  * @tc.type: FUNC
71  */
72 HWTEST_F(AmsMgrProxyTest, RegisterAppDebugListener_0100, TestSize.Level1)
73 {
74     EXPECT_NE(amsMgrProxy_, nullptr);
75     EXPECT_NE(listener_, nullptr);
76     EXPECT_CALL(*mockAmsMgrScheduler_, SendRequest(_, _, _, _))
77         .Times(1)
78         .WillOnce(Return(0));
79     auto result = amsMgrProxy_->RegisterAppDebugListener(listener_);
80     EXPECT_EQ(result, NO_ERROR);
81 
82     EXPECT_CALL(*mockAmsMgrScheduler_, SendRequest(_, _, _, _)).Times(0);
83     listener_ = nullptr;
84     result = amsMgrProxy_->RegisterAppDebugListener(listener_);
85     EXPECT_EQ(result, ERR_INVALID_DATA);
86 }
87 
88 /**
89  * @tc.name: UnregisterAppDebugListener_0100
90  * @tc.desc: Unregister app debug listener, check nullptr listener.
91  * @tc.type: FUNC
92  */
93 HWTEST_F(AmsMgrProxyTest, UnregisterAppDebugListener_0100, TestSize.Level1)
94 {
95     EXPECT_NE(amsMgrProxy_, nullptr);
96     EXPECT_NE(listener_, nullptr);
97     EXPECT_CALL(*mockAmsMgrScheduler_, SendRequest(_, _, _, _))
98         .Times(1)
99         .WillOnce(Return(0));
100     auto result = amsMgrProxy_->UnregisterAppDebugListener(listener_);
101     EXPECT_EQ(result, NO_ERROR);
102 
103     EXPECT_CALL(*mockAmsMgrScheduler_, SendRequest(_, _, _, _)).Times(0);
104     listener_ = nullptr;
105     result = amsMgrProxy_->UnregisterAppDebugListener(listener_);
106     EXPECT_EQ(result, ERR_INVALID_DATA);
107 }
108 
109 /**
110  * @tc.name: AttachAppDebug_0100
111  * @tc.desc: Attach app debug by bundle name, check empty bundle name.
112  * @tc.type: FUNC
113  */
114 HWTEST_F(AmsMgrProxyTest, AttachAppDebug_0100, TestSize.Level1)
115 {
116     EXPECT_NE(amsMgrProxy_, nullptr);
117     EXPECT_CALL(*mockAmsMgrScheduler_, SendRequest(_, _, _, _))
118         .Times(1)
119         .WillOnce(Return(0));
120     auto result = amsMgrProxy_->AttachAppDebug(STRING_BUNDLE_NAME, false);
121     EXPECT_EQ(result, NO_ERROR);
122 
123     EXPECT_CALL(*mockAmsMgrScheduler_, SendRequest(_, _, _, _)).Times(0);
124     result = amsMgrProxy_->AttachAppDebug(EMPTY_BUNDLE_NAME, false);
125     EXPECT_EQ(result, ERR_INVALID_DATA);
126 }
127 
128 /**
129  * @tc.name: DetachAppDebug_0100
130  * @tc.desc: Detach app debug by bundleName, check empty bundle name.
131  * @tc.type: FUNC
132  */
133 HWTEST_F(AmsMgrProxyTest, DetachAppDebug_0100, TestSize.Level1)
134 {
135     EXPECT_NE(amsMgrProxy_, nullptr);
136     EXPECT_CALL(*mockAmsMgrScheduler_, SendRequest(_, _, _, _))
137         .Times(1)
138         .WillOnce(Return(0));
139     auto result = amsMgrProxy_->DetachAppDebug(STRING_BUNDLE_NAME);
140     EXPECT_EQ(result, NO_ERROR);
141 
142     EXPECT_CALL(*mockAmsMgrScheduler_, SendRequest(_, _, _, _)).Times(0);
143     result = amsMgrProxy_->DetachAppDebug(EMPTY_BUNDLE_NAME);
144     EXPECT_EQ(result, ERR_INVALID_DATA);
145 }
146 
147 /**
148  * @tc.name: RegisterAbilityDebugResponse_0100
149  * @tc.desc: Register ability debug response, check nullptr response.
150  * @tc.type: FUNC
151  */
152 HWTEST_F(AmsMgrProxyTest, RegisterAbilityDebugResponse_0100, TestSize.Level1)
153 {
154     EXPECT_NE(amsMgrProxy_, nullptr);
155     EXPECT_NE(response_, nullptr);
156     EXPECT_CALL(*mockAmsMgrScheduler_, SendRequest(_, _, _, _))
157         .Times(1)
158         .WillOnce(Return(0));
159     auto result = amsMgrProxy_->RegisterAbilityDebugResponse(response_);
160     EXPECT_EQ(result, NO_ERROR);
161 
162     EXPECT_CALL(*mockAmsMgrScheduler_, SendRequest(_, _, _, _)).Times(0);
163     response_ = nullptr;
164     result = amsMgrProxy_->RegisterAbilityDebugResponse(response_);
165     EXPECT_EQ(result, ERR_INVALID_DATA);
166 }
167 
168 /**
169  * @tc.name: NotifyAppMgrRecordExitReason_0100
170  * @tc.desc: NotifyAppMgrRecordExitReason.
171  * @tc.type: FUNC
172  */
173 HWTEST_F(AmsMgrProxyTest, NotifyAppMgrRecordExitReason_0100, TestSize.Level1)
174 {
175     EXPECT_NE(amsMgrProxy_, nullptr);
176     EXPECT_NE(response_, nullptr);
177     EXPECT_CALL(*mockAmsMgrScheduler_, SendRequest(_, _, _, _))
178         .Times(1)
179         .WillOnce(Return(NO_ERROR));
180 
181     int32_t reason = 0;
182     int32_t pid = 1;
183     std::string exitMsg = "JsError";
184     auto result = amsMgrProxy_->NotifyAppMgrRecordExitReason(reason, pid, exitMsg);
185     EXPECT_EQ(result, NO_ERROR);
186 }
187 
188 /**
189  * @tc.name: PreloadApplicationByPhase_0100
190  * @tc.desc: PreloadApplicationByPhase.
191  * @tc.type: FUNC
192  */
193 HWTEST_F(AmsMgrProxyTest, PreloadApplicationByPhase_0100, TestSize.Level1)
194 {
195     GTEST_LOG_(INFO) << "PreloadApplicationByPhase_0100 start";
196     ASSERT_NE(amsMgrProxy_, nullptr);
197 
198     EXPECT_CALL(*mockAmsMgrScheduler_, SendRequest(_, _, _, _))
199         .Times(1)
200         .WillOnce(Return(ERR_NULL_OBJECT));
201     auto result = amsMgrProxy_->PreloadApplicationByPhase("com.acts.test", 100, 0, PreloadPhase::PROCESS_CREATED);
202     EXPECT_EQ(result, ERR_NULL_OBJECT);
203     GTEST_LOG_(INFO) << "PreloadApplicationByPhase_0100 end";
204 }
205 
206 /**
207  * @tc.name: PreloadApplicationByPhase_0200
208  * @tc.desc: PreloadApplicationByPhase.
209  * @tc.type: FUNC
210  */
211 HWTEST_F(AmsMgrProxyTest, PreloadApplicationByPhase_0200, TestSize.Level1)
212 {
213     GTEST_LOG_(INFO) << "PreloadApplicationByPhase_0200 start";
214     ASSERT_NE(amsMgrProxy_, nullptr);
215 
216     EXPECT_CALL(*mockAmsMgrScheduler_, SendRequest(_, _, _, _))
217         .Times(1)
218         .WillOnce(Return(ERR_OK));
219 
220     auto result = amsMgrProxy_->PreloadApplicationByPhase("com.acts.test", 100, 0, PreloadPhase::PROCESS_CREATED);
221     EXPECT_EQ(result, ERR_OK);
222     GTEST_LOG_(INFO) << "PreloadApplicationByPhase_0200 end";
223 }
224 
225 /**
226  * @tc.name: NotifyPreloadAbilityStateChanged_0100
227  * @tc.desc: NotifyPreloadAbilityStateChanged.
228  * @tc.type: FUNC
229  */
230 HWTEST_F(AmsMgrProxyTest, NotifyPreloadAbilityStateChanged_0100, TestSize.Level1)
231 {
232     GTEST_LOG_(INFO) << "NotifyPreloadAbilityStateChanged_0100 start";
233     ASSERT_NE(amsMgrProxy_, nullptr);
234 
235     auto result = amsMgrProxy_->NotifyPreloadAbilityStateChanged(nullptr, true);
236     EXPECT_EQ(result, AAFwk::INVALID_CALLER_TOKEN);
237     GTEST_LOG_(INFO) << "NotifyPreloadAbilityStateChanged_0100 end";
238 }
239 
240 /**
241  * @tc.name: NotifyPreloadAbilityStateChanged_0200
242  * @tc.desc: NotifyPreloadAbilityStateChanged.
243  * @tc.type: FUNC
244  */
245 HWTEST_F(AmsMgrProxyTest, NotifyPreloadAbilityStateChanged_0200, TestSize.Level1)
246 {
247     GTEST_LOG_(INFO) << "NotifyPreloadAbilityStateChanged_0200 start";
248     ASSERT_NE(amsMgrProxy_, nullptr);
249 
250     EXPECT_CALL(*mockAmsMgrScheduler_, SendRequest(_, _, _, _))
251         .Times(1)
252         .WillOnce(Return(ERR_NULL_OBJECT));
253 
254     sptr<IRemoteObject> token = new (std::nothrow) MockAbilityToken();
255     auto result = amsMgrProxy_->NotifyPreloadAbilityStateChanged(token, true);
256     EXPECT_EQ(result, ERR_NULL_OBJECT);
257     GTEST_LOG_(INFO) << "NotifyPreloadAbilityStateChanged_0200 end";
258 }
259 
260 /**
261  * @tc.name: NotifyPreloadAbilityStateChanged_0300
262  * @tc.desc: NotifyPreloadAbilityStateChanged.
263  * @tc.type: FUNC
264  */
265 HWTEST_F(AmsMgrProxyTest, NotifyPreloadAbilityStateChanged_0300, TestSize.Level1)
266 {
267     GTEST_LOG_(INFO) << "NotifyPreloadAbilityStateChanged_0300 start";
268     ASSERT_NE(amsMgrProxy_, nullptr);
269 
270     EXPECT_CALL(*mockAmsMgrScheduler_, SendRequest(_, _, _, _))
271         .Times(1)
272         .WillOnce(Return(ERR_OK));
273 
274     sptr<IRemoteObject> token = new (std::nothrow) MockAbilityToken();
275     auto result = amsMgrProxy_->NotifyPreloadAbilityStateChanged(token, true);
276     EXPECT_EQ(result, ERR_OK);
277     GTEST_LOG_(INFO) << "NotifyPreloadAbilityStateChanged_0300 end";
278 }
279 
280 /**
281  * @tc.name: CheckPreloadAppRecordExist_0100
282  * @tc.desc: CheckPreloadAppRecordExist.
283  * @tc.type: FUNC
284  */
285 HWTEST_F(AmsMgrProxyTest, CheckPreloadAppRecordExist_0100, TestSize.Level1)
286 {
287     GTEST_LOG_(INFO) << "CheckPreloadAppRecordExist_0100 start";
288     ASSERT_NE(amsMgrProxy_, nullptr);
289 
290     EXPECT_CALL(*mockAmsMgrScheduler_, SendRequest(_, _, _, _))
291         .Times(1)
292         .WillOnce(Return(ERR_NULL_OBJECT));
293     bool isExist = false;
294     auto result = amsMgrProxy_->CheckPreloadAppRecordExist("com.acts.test", 100, 0, isExist);
295     EXPECT_EQ(result, ERR_NULL_OBJECT);
296     GTEST_LOG_(INFO) << "CheckPreloadAppRecordExist_0100 end";
297 }
298 
299 /**
300  * @tc.name: CheckPreloadAppRecordExist_0200
301  * @tc.desc: CheckPreloadAppRecordExist.
302  * @tc.type: FUNC
303  */
304 HWTEST_F(AmsMgrProxyTest, CheckPreloadAppRecordExist_0200, TestSize.Level1)
305 {
306     GTEST_LOG_(INFO) << "CheckPreloadAppRecordExist_0200 start";
307     ASSERT_NE(amsMgrProxy_, nullptr);
308 
309     EXPECT_CALL(*mockAmsMgrScheduler_, SendRequest(_, _, _, _))
310         .Times(1)
311         .WillOnce(Return(ERR_OK));
312     bool isExist = false;
313     auto result = amsMgrProxy_->CheckPreloadAppRecordExist("com.acts.test", 100, 0, isExist);
314     EXPECT_EQ(result, ERR_OK);
315     GTEST_LOG_(INFO) << "CheckPreloadAppRecordExist_0200 end";
316 }
317 }  // namespace AppExecFwk
318 }  // namespace OHOS
319