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 #include "ability_manager_client.h"
18 #include "ability_runtime_error_util.h"
19 #include "cancel_listener.h"
20 #include "completed_callback.h"
21 #include "completed_dispatcher.h"
22 #include "context/application_context.h"
23 #include "context_container.h"
24 #include "context_impl.h"
25 #include "element_name.h"
26 #include "event_handler.h"
27 #include "iservice_registry.h"
28 #include "base_types.h"
29 #define private public
30 #define protected public
31 #include "pending_want.h"
32 #undef private
33 #undef protected
34 #include "pending_want_record.h"
35 #include "remote_native_token.h"
36 #include "sa_mgr_client.h"
37 #include "system_ability_definition.h"
38 #include "want.h"
39 #include "wants_info.h"
40 #include "want_params.h"
41 #include "want_receiver_stub.h"
42 #include "want_agent_client.h"
43 #include "want_agent_helper.h"
44 #include "want_sender_info.h"
45 #include "want_sender_stub.h"
46 #include "bool_wrapper.h"
47 #include "zchar_wrapper.h"
48 #include "byte_wrapper.h"
49 #include "double_wrapper.h"
50 #include "float_wrapper.h"
51 #include "int_wrapper.h"
52 #include "long_wrapper.h"
53 #include "short_wrapper.h"
54 #include "string_wrapper.h"
55 #include "array_wrapper.h"
56 #include "hilog_tag_wrapper.h"
57
58 using namespace testing::ext;
59 using namespace OHOS::AAFwk;
60 using namespace OHOS;
61 using OHOS::AppExecFwk::ElementName;
62 using namespace OHOS::AbilityRuntime;
63 using namespace OHOS::AppExecFwk;
64 using vector_str = std::vector<std::string>;
65
66 namespace OHOS::AbilityRuntime::WantAgent {
67 namespace {
68 constexpr int32_t NOTEQ = -1;
69 }
70 class PendingWantTest : public testing::Test {
71 public:
PendingWantTest()72 PendingWantTest()
73 {}
~PendingWantTest()74 ~PendingWantTest()
75 {}
76 static void SetUpTestCase(void);
77 static void TearDownTestCase(void);
78 void SetUp();
79 void TearDown();
80 static Want MakeWant(std::string deviceId, std::string abilityName, std::string bundleName);
81
82 static int callBackCancelListenerConnt;
83
84 class CancelListenerSon : public CancelListener {
85 public:
86 void OnCancelled(int resultCode) override;
87 };
88 };
89
90 int PendingWantTest::callBackCancelListenerConnt = 0;
91
OnCancelled(int resultCode)92 void PendingWantTest::CancelListenerSon::OnCancelled(int resultCode)
93 {
94 callBackCancelListenerConnt++;
95 }
96
MakeWant(std::string deviceId,std::string abilityName,std::string bundleName)97 Want PendingWantTest::MakeWant(std::string deviceId, std::string abilityName, std::string bundleName)
98 {
99 ElementName element(deviceId, bundleName, abilityName);
100 Want want;
101 want.SetElement(element);
102 return want;
103 }
104
GetAppContext()105 std::shared_ptr<OHOS::AbilityRuntime::ApplicationContext> GetAppContext()
106 {
107 std::shared_ptr<AbilityRuntime::ApplicationContext> context =
108 AbilityRuntime::ApplicationContext::GetInstance();
109 return context;
110 }
111
SetUpTestCase(void)112 void PendingWantTest::SetUpTestCase(void)
113 {
114 RemoteNativeToken::SetNativeToken();
115 }
116
TearDownTestCase(void)117 void PendingWantTest::TearDownTestCase(void)
118 {}
119
SetUp(void)120 void PendingWantTest::SetUp(void)
121 {}
122
TearDown(void)123 void PendingWantTest::TearDown(void)
124 {}
125
126 /*
127 * @tc.number : PendingWant_0100
128 * @tc.name : PendingWant Constructors
129 * @tc.desc : 1.The parameter is nullptr
130 */
131 HWTEST_F(PendingWantTest, PendingWant_0100, Function | MediumTest | Level1)
132 {
133 PendingWant pendingWant(nullptr);
134 EXPECT_EQ(pendingWant.target_, nullptr);
135 EXPECT_EQ(pendingWant.cancelReceiver_, nullptr);
136 }
137
138 /*
139 * @tc.number : PendingWant_0200
140 * @tc.name : PendingWant Constructors
141 * @tc.desc : 1.The parameter target is not nullptr
142 */
143 HWTEST_F(PendingWantTest, PendingWant_0200, Function | MediumTest | Level1)
144 {
145 sptr<AAFwk::IWantSender> target(new (std::nothrow) PendingWantRecord());
146 PendingWant pendingWant(target);
147 EXPECT_EQ(pendingWant.target_, target);
148 EXPECT_EQ(pendingWant.cancelReceiver_, nullptr);
149 }
150
151 /*
152 * @tc.number : PendingWant_0300
153 * @tc.name : PendingWant GetType
154 * @tc.desc : 1.Get PendingWant Type (UNKNOWN_TYPE)
155 */
156 HWTEST_F(PendingWantTest, PendingWant_0300, Function | MediumTest | Level1)
157 {
158 sptr<AAFwk::IWantSender> target = nullptr;
159 PendingWant pendingWant(target);
160 EXPECT_EQ(pendingWant.target_, target);
161 EXPECT_EQ(pendingWant.GetType(target), WantAgentConstant::OperationType::UNKNOWN_TYPE);
162 }
163
164 /*
165 * @tc.number : PendingWant_0400
166 * @tc.name : PendingWant GetAbility
167 * @tc.desc : 1.Get pendingWant (context is nullptr)
168 */
169 HWTEST_F(PendingWantTest, PendingWant_0400, Function | MediumTest | Level1)
170 {
171 int requestCode = 10;
172 std::shared_ptr<Want> want = std::make_shared<Want>();
173 ElementName element("device", "bundleName", "abilityName");
174 want->SetElement(element);
175 unsigned int flags = 1;
176 flags |= FLAG_NO_CREATE;
177 std::shared_ptr<PendingWant> pendingWant = PendingWant::GetAbility(nullptr, requestCode, want, flags);
178 EXPECT_EQ(pendingWant, nullptr);
179 }
180
181
182 /*
183 * @tc.number : PendingWant_0600
184 * @tc.name : PendingWant GetAbility
185 * @tc.desc : 1.Get pendingWant (options is not nullptr)
186 */
187 HWTEST_F(PendingWantTest, PendingWant_0600, Function | MediumTest | Level1)
188 {
189 int requestCode = 10;
190 std::shared_ptr<Want> want = std::make_shared<Want>();
191 ElementName element("device", "bundleName", "abilityName");
192 want->SetElement(element);
193 bool value = true;
194 std::string key = "key";
195 std::shared_ptr<WantParams> wParams = std::make_shared<WantParams>();
196 wParams->SetParam(key, Boolean::Box(value));
197 unsigned int flags = 1;
198 flags |= FLAG_ONE_SHOT;
199 std::shared_ptr<PendingWant> pendingWant = nullptr;
200 PendingWant::GetAbility(GetAppContext(), requestCode, want, flags, wParams, pendingWant);
201 EXPECT_NE(pendingWant, nullptr);
202 }
203
204 /*
205 * @tc.number : PendingWant_0700
206 * @tc.name : PendingWant GetAbilities
207 * @tc.desc : 1.Get pendingWant (context is nullptr)
208 */
209 HWTEST_F(PendingWantTest, PendingWant_0700, Function | MediumTest | Level1)
210 {
211 int requestCode = 10;
212 std::shared_ptr<Want> want = std::make_shared<Want>();
213 ElementName element("device", "bundleName", "abilityName");
214 want->SetElement(element);
215 std::shared_ptr<Want> want2 = std::make_shared<Want>();
216 ElementName element2("device", "bundleName", "abilityName");
217 want2->SetElement(element2);
218 std::vector<std::shared_ptr<Want>> wants;
219 wants.emplace_back(want);
220 wants.emplace_back(want2);
221 unsigned int flags = 1;
222 flags |= FLAG_NO_CREATE;
223 std::shared_ptr<PendingWant> pendingWant = PendingWant::GetAbilities(
224 nullptr, requestCode, wants, flags);
225 EXPECT_EQ(pendingWant, nullptr);
226 }
227
228 /*
229 * @tc.number : PendingWant_0800
230 * @tc.name : PendingWant GetAbilities
231 * @tc.desc : 1.Get pendingWant (context is not nullptr)
232 */
233 HWTEST_F(PendingWantTest, PendingWant_0800, Function | MediumTest | Level1)
234 {
235 int requestCode = 10;
236 std::shared_ptr<Want> want = std::make_shared<Want>();
237 ElementName element("device", "bundleName", "abilityName");
238 want->SetElement(element);
239 std::shared_ptr<Want> want2 = std::make_shared<Want>();
240 ElementName element2("device", "bundleName", "abilityName");
241 want2->SetElement(element2);
242 std::vector<std::shared_ptr<Want>> wants;
243 wants.emplace_back(want);
244 wants.emplace_back(want2);
245 unsigned int flags = 1;
246 flags |= FLAG_ONE_SHOT;
247 std::shared_ptr<PendingWant> pendingWant = PendingWant::GetAbilities(
248 GetAppContext(), requestCode, wants, flags);
249 EXPECT_NE(pendingWant, nullptr);
250 }
251
252 /*
253 * @tc.number : PendingWant_0900
254 * @tc.name : PendingWant GetAbilities
255 * @tc.desc : 1.Get pendingWant (options is not nullptr)
256 */
257 HWTEST_F(PendingWantTest, PendingWant_0900, Function | MediumTest | Level1)
258 {
259 int requestCode = 10;
260 std::shared_ptr<Want> want = std::make_shared<Want>();
261 ElementName element("device", "bundleName", "abilityName");
262 want->SetElement(element);
263 std::shared_ptr<Want> want2 = std::make_shared<Want>();
264 ElementName element2("device", "bundleName", "abilityName");
265 want2->SetElement(element2);
266 std::vector<std::shared_ptr<Want>> wants;
267 wants.emplace_back(want);
268 wants.emplace_back(want2);
269 bool value = true;
270 std::string key = "key";
271 std::shared_ptr<WantParams> wParams = std::make_shared<WantParams>();
272 wParams->SetParam(key, Boolean::Box(value));
273 unsigned int flags = 1;
274 flags |= FLAG_ONE_SHOT;
275 std::shared_ptr<PendingWant> pendingWant = nullptr;
276 PendingWant::GetAbilities(GetAppContext(), requestCode, wants, flags, wParams, pendingWant);
277 EXPECT_NE(pendingWant, nullptr);
278 }
279
280 /*
281 * @tc.number : PendingWant_1000
282 * @tc.name : PendingWant GetCommonEventAsUser
283 * @tc.desc : 1.Get pendingWant (context is nullptr)
284 */
285 HWTEST_F(PendingWantTest, PendingWant_1000, Function | MediumTest | Level1)
286 {
287 int requestCode = 10;
288 std::shared_ptr<Want> want = std::make_shared<Want>();
289 ElementName element("device", "bundleName", "abilityName");
290 want->SetElement(element);
291 unsigned int flags = 1;
292 flags |= FLAG_NO_CREATE;
293 std::shared_ptr<PendingWant> pendingWant = nullptr;
294 PendingWant::GetCommonEventAsUser(nullptr, requestCode, want, flags, 0, pendingWant);
295 EXPECT_EQ(pendingWant, nullptr);
296 }
297
298 /*
299 * @tc.number : PendingWant_1100
300 * @tc.name : PendingWant GetCommonEventAsUser
301 * @tc.desc : 1.Get pendingWant (context is not nullptr)
302 */
303 HWTEST_F(PendingWantTest, PendingWant_1100, Function | MediumTest | Level1)
304 {
305 int requestCode = 10;
306 std::shared_ptr<Want> want = std::make_shared<Want>();
307 ElementName element("device", "bundleName", "abilityName");
308 want->SetElement(element);
309 unsigned int flags = 1;
310 flags |= FLAG_ONE_SHOT;
311 std::shared_ptr<PendingWant> pendingWant = nullptr;
312 PendingWant::GetCommonEventAsUser(GetAppContext(), requestCode, want, flags, 0, pendingWant);
313 EXPECT_NE(pendingWant, nullptr);
314 }
315
316 /*
317 * @tc.number : PendingWant_1200
318 * @tc.name : PendingWant GetCommonEventAsUser
319 * @tc.desc : 1.Get pendingWant (want is nullptr)
320 */
321 HWTEST_F(PendingWantTest, PendingWant_1200, Function | MediumTest | Level1)
322 {
323 int requestCode = 10;
324 std::shared_ptr<Want> want;
325 unsigned int flags = 1;
326 flags |= FLAG_ONE_SHOT;
327 std::shared_ptr<PendingWant> pendingWant = nullptr;
328 PendingWant::GetCommonEventAsUser(GetAppContext(), requestCode, want, flags, 0, pendingWant);
329 EXPECT_NE(pendingWant, nullptr);
330 }
331
332 /*
333 * @tc.number : PendingWant_1300
334 * @tc.name : PendingWant GetService
335 * @tc.desc : 1.Get pendingWant (want is nullptr)
336 */
337 HWTEST_F(PendingWantTest, PendingWant_1300, Function | MediumTest | Level1)
338 {
339 int requestCode = 10;
340 std::shared_ptr<Want> want;
341 unsigned int flags = 1;
342 flags |= FLAG_ONE_SHOT;
343 std::shared_ptr<PendingWant> pendingWant = nullptr;
344 PendingWant::GetService(GetAppContext(), requestCode, want, flags, pendingWant);
345 EXPECT_NE(pendingWant, nullptr);
346 }
347
348 /*
349 * @tc.number : PendingWant_1400
350 * @tc.name : PendingWant GetService
351 * @tc.desc : 1.Get pendingWant (context is nullptr)
352 */
353 HWTEST_F(PendingWantTest, PendingWant_1400, Function | MediumTest | Level1)
354 {
355 int requestCode = 10;
356 std::shared_ptr<Want> want = std::make_shared<Want>();
357 ElementName element("device", "bundleName", "abilityName");
358 want->SetElement(element);
359 unsigned int flags = 1;
360 flags |= FLAG_ONE_SHOT;
361 std::shared_ptr<PendingWant> pendingWant = nullptr;
362 PendingWant::GetService(nullptr, requestCode, want, flags, pendingWant);
363 EXPECT_EQ(pendingWant, nullptr);
364 }
365
366 /*
367 * @tc.number : PendingWant_1500
368 * @tc.name : PendingWant GetForegroundService
369 * @tc.desc : 1.Get pendingWant (want is nullptr)
370 */
371 HWTEST_F(PendingWantTest, PendingWant_1500, Function | MediumTest | Level1)
372 {
373 int requestCode = 10;
374 std::shared_ptr<Want> want;
375 unsigned int flags = 1;
376 flags |= FLAG_ONE_SHOT;
377 std::shared_ptr<PendingWant> pendingWant = nullptr;
378 PendingWant::GetForegroundService(GetAppContext(), requestCode, want, flags, pendingWant);
379 EXPECT_NE(pendingWant, nullptr);
380 }
381
382 /*
383 * @tc.number : PendingWant_1600
384 * @tc.name : PendingWant GetForegroundService
385 * @tc.desc : 1.Get pendingWant (context is nullptr)
386 */
387 HWTEST_F(PendingWantTest, PendingWant_1600, Function | MediumTest | Level1)
388 {
389 int requestCode = 10;
390 std::shared_ptr<Want> want = std::make_shared<Want>();
391 ElementName element("device", "bundleName", "abilityName");
392 want->SetElement(element);
393 unsigned int flags = 1;
394 flags |= FLAG_NO_CREATE;
395 std::shared_ptr<PendingWant> pendingWant = nullptr;
396 PendingWant::GetForegroundService(nullptr, requestCode, want, flags, pendingWant);
397 EXPECT_EQ(pendingWant, nullptr);
398 }
399
400 /*
401 * @tc.number : PendingWant_1700
402 * @tc.name : PendingWant GetForegroundService
403 * @tc.desc : 1.Get pendingWant (want is nullptr)
404 */
405 HWTEST_F(PendingWantTest, PendingWant_1700, Function | MediumTest | Level1)
406 {
407 int requestCode = 10;
408 std::shared_ptr<Want> want;
409 unsigned int flags = 1;
410 flags |= FLAG_ONE_SHOT;
411 WantAgentConstant::OperationType type = WantAgentConstant::OperationType::START_FOREGROUND_SERVICE;
412 std::shared_ptr<PendingWant> pendingWant = nullptr;
413 PendingWant::BuildServicePendingWant(GetAppContext(), requestCode, want, flags, type, pendingWant);
414 EXPECT_NE(pendingWant, nullptr);
415 }
416
417 /*
418 * @tc.number : PendingWant_1800
419 * @tc.name : PendingWant GetForegroundService
420 * @tc.desc : 1.Get pendingWant (context is nullptr)
421 */
422 HWTEST_F(PendingWantTest, PendingWant_1800, Function | MediumTest | Level1)
423 {
424 int requestCode = 10;
425 std::shared_ptr<Want> want = std::make_shared<Want>();
426 ElementName element("device", "bundleName", "abilityName");
427 want->SetElement(element);
428 unsigned int flags = 1;
429 flags |= FLAG_NO_CREATE;
430 WantAgentConstant::OperationType type = WantAgentConstant::OperationType::START_FOREGROUND_SERVICE;
431 std::shared_ptr<PendingWant> pendingWant = nullptr;
432 PendingWant::BuildServicePendingWant(nullptr, requestCode, want, flags, type, pendingWant);
433 EXPECT_EQ(pendingWant, nullptr);
434 }
435
436 /*
437 * @tc.number : PendingWant_1900
438 * @tc.name : PendingWant Equals
439 * @tc.desc : 1.Equals
440 */
441 HWTEST_F(PendingWantTest, PendingWant_1900, Function | MediumTest | Level1)
442 {
443 int requestCode = 10;
444 std::shared_ptr<Want> want = std::make_shared<Want>();
445 ElementName element("device", "bundleName", "abilityName");
446 want->SetElement(element);
447 unsigned int flags = 1;
448 flags |= FLAG_ONE_SHOT;
449 WantAgentConstant::OperationType type = WantAgentConstant::OperationType::START_FOREGROUND_SERVICE;
450 std::shared_ptr<AbilityRuntime::ApplicationContext> context =
451 AbilityRuntime::ApplicationContext::GetInstance();
452 std::shared_ptr<PendingWant> pendingWant = nullptr;
453 PendingWant::BuildServicePendingWant(context, requestCode, want, flags, type, pendingWant);
454
455 sptr<AAFwk::IWantSender> target2(nullptr);
456 std::shared_ptr<PendingWant> pendingWant2 = std::make_shared<PendingWant>(target2);
457 EXPECT_NE(pendingWant->IsEquals(pendingWant, pendingWant2), ERR_OK);
458 }
459
460 /*
461 * @tc.number : PendingWant_2000
462 * @tc.name : PendingWant Equals
463 * @tc.desc : 1.Equals
464 */
465 HWTEST_F(PendingWantTest, PendingWant_2000, Function | MediumTest | Level1)
466 {
467 sptr<AAFwk::IWantSender> target(new (std::nothrow) PendingWantRecord());
468 std::shared_ptr<PendingWant> pendingWant = std::make_shared<PendingWant>(target);
469 std::shared_ptr<PendingWant> pendingWant2(nullptr);
470 EXPECT_NE(pendingWant->IsEquals(pendingWant, pendingWant2), ERR_OK);
471 }
472
473 /*
474 * @tc.number : PendingWant_2100
475 * @tc.name : PendingWant SendAndReturnResult
476 * @tc.desc : SendAndReturnResult
477 */
478 HWTEST_F(PendingWantTest, PendingWant_2100, Function | MediumTest | Level1)
479 {
480 PendingWant pendingWant(nullptr);
481 int requestCode = 10;
482 std::shared_ptr<Want> want = std::make_shared<Want>();
483 ElementName element("device", "bundleName", "abilityName");
484 want->SetElement(element);
485 bool value = true;
486 std::shared_ptr<WantParams> wParams = std::make_shared<WantParams>();
487 std::string key = "key";
488 wParams->SetParam(key, Boolean::Box(value));
489 unsigned int flags = 1;
490 flags |= FLAG_NO_CREATE;
491 AbilityManagerClient::GetInstance()->Connect();
492 sptr<CompletedDispatcher> onCompleted;
493 EXPECT_EQ(ERR_ABILITY_RUNTIME_EXTERNAL_INVALID_WANTAGENT, pendingWant.SendAndReturnResult(requestCode,
494 want, onCompleted, "Permission", nullptr, nullptr, nullptr, nullptr));
495 }
496
497 /*
498 * @tc.number : PendingWant_2400
499 * @tc.name : PendingWant GetTarget
500 * @tc.desc : 1.GetTarget
501 */
502 HWTEST_F(PendingWantTest, PendingWant_2400, Function | MediumTest | Level1)
503 {
504 PendingWant pendingWant(nullptr);
505 auto target = pendingWant.GetTarget();
506 EXPECT_EQ(target, nullptr);
507 }
508
509 /*
510 * @tc.number : PendingWant_2500
511 * @tc.name : PendingWant GetTarget
512 * @tc.desc : 1.GetTarget
513 */
514 HWTEST_F(PendingWantTest, PendingWant_2500, Function | MediumTest | Level1)
515 {
516 sptr<AAFwk::IWantSender> target(new (std::nothrow) PendingWantRecord());
517 PendingWant pendingWant(target);
518 auto target1 = pendingWant.GetTarget();
519 EXPECT_EQ(target1, target);
520 }
521
522 /*
523 * @tc.number : PendingWant_2600
524 * @tc.name : PendingWant RegisterCancelListener
525 * @tc.desc : 1.RegisterCancelListener
526 */
527 HWTEST_F(PendingWantTest, PendingWant_2600, Function | MediumTest | Level1)
528 {
529 PendingWant pendingWant(nullptr);
530 std::shared_ptr<CancelListener> cancelListener1 = std::make_shared<CancelListenerSon>();
531 std::shared_ptr<CancelListener> cancelListener2 = std::make_shared<CancelListenerSon>();
532 pendingWant.RegisterCancelListener(cancelListener1, nullptr);
533 pendingWant.RegisterCancelListener(cancelListener2, nullptr);
534 EXPECT_EQ(static_cast<int>(pendingWant.cancelListeners_.size()), 2);
535 }
536
537 /*
538 * @tc.number : PendingWant_2700
539 * @tc.name : PendingWant RegisterCancelListener
540 * @tc.desc : 1.RegisterCancelListener
541 */
542 HWTEST_F(PendingWantTest, PendingWant_2700, Function | MediumTest | Level1)
543 {
544 PendingWant pendingWant(nullptr);
545 std::shared_ptr<CancelListener> cancelListener2 = std::make_shared<CancelListenerSon>();
546 pendingWant.RegisterCancelListener(nullptr, nullptr);
547 pendingWant.RegisterCancelListener(cancelListener2, nullptr);
548 EXPECT_EQ(static_cast<int>(pendingWant.cancelListeners_.size()), 1);
549 }
550
551 /*
552 * @tc.number : PendingWant_2800
553 * @tc.name : PendingWant RegisterCancelListener
554 * @tc.desc : 1.RegisterCancelListener
555 */
556 HWTEST_F(PendingWantTest, PendingWant_2800, Function | MediumTest | Level1)
557 {
558 PendingWant pendingWant(nullptr);
559 pendingWant.RegisterCancelListener(nullptr, nullptr);
560 pendingWant.RegisterCancelListener(nullptr, nullptr);
561 EXPECT_EQ(static_cast<int>(pendingWant.cancelListeners_.size()), 0);
562 }
563
564 /*
565 * @tc.number : PendingWant_2900
566 * @tc.name : PendingWant NotifyCancelListeners
567 * @tc.desc : 1.NotifyCancelListeners
568 */
569 HWTEST_F(PendingWantTest, PendingWant_2900, Function | MediumTest | Level1)
570 {
571 PendingWant pendingWant(nullptr);
572 std::shared_ptr<CancelListener> cancelListener1 = std::make_shared<CancelListenerSon>();
573 std::shared_ptr<CancelListener> cancelListener2 = std::make_shared<CancelListenerSon>();
574 pendingWant.RegisterCancelListener(cancelListener1, nullptr);
575 pendingWant.RegisterCancelListener(cancelListener2, nullptr);
576 pendingWant.NotifyCancelListeners(0);
577 EXPECT_EQ(callBackCancelListenerConnt, 2);
578 callBackCancelListenerConnt = 0;
579 }
580
581 /*
582 * @tc.number : PendingWant_3000
583 * @tc.name : PendingWant NotifyCancelListeners
584 * @tc.desc : 1.NotifyCancelListeners
585 */
586 HWTEST_F(PendingWantTest, PendingWant_3000, Function | MediumTest | Level1)
587 {
588 PendingWant pendingWant(nullptr);
589 std::shared_ptr<CancelListener> cancelListener2 = std::make_shared<CancelListenerSon>();
590 pendingWant.RegisterCancelListener(nullptr, nullptr);
591 pendingWant.RegisterCancelListener(cancelListener2, nullptr);
592 pendingWant.NotifyCancelListeners(0);
593 EXPECT_EQ(callBackCancelListenerConnt, 1);
594 callBackCancelListenerConnt = 0;
595 }
596
597 /*
598 * @tc.number : PendingWant_3100
599 * @tc.name : PendingWant NotifyCancelListeners
600 * @tc.desc : 1.NotifyCancelListeners
601 */
602 HWTEST_F(PendingWantTest, PendingWant_3100, Function | MediumTest | Level1)
603 {
604 PendingWant pendingWant(nullptr);
605 pendingWant.RegisterCancelListener(nullptr, nullptr);
606 pendingWant.RegisterCancelListener(nullptr, nullptr);
607 pendingWant.NotifyCancelListeners(0);
608 EXPECT_EQ(callBackCancelListenerConnt, 0);
609 callBackCancelListenerConnt = 0;
610 }
611
612 /*
613 * @tc.number : PendingWant_3200
614 * @tc.name : PendingWant UnregisterCancelListener
615 * @tc.desc : 1.UnregisterCancelListener
616 */
617 HWTEST_F(PendingWantTest, PendingWant_3200, Function | MediumTest | Level1)
618 {
619 PendingWant pendingWant(nullptr);
620 std::shared_ptr<CancelListener> cancelListener1 = std::make_shared<CancelListenerSon>();
621 std::shared_ptr<CancelListener> cancelListener2 = std::make_shared<CancelListenerSon>();
622 pendingWant.RegisterCancelListener(cancelListener1, nullptr);
623 pendingWant.RegisterCancelListener(cancelListener2, nullptr);
624 EXPECT_EQ(static_cast<int>(pendingWant.cancelListeners_.size()), 2);
625 pendingWant.UnregisterCancelListener(cancelListener1, nullptr);
626 EXPECT_EQ(static_cast<int>(pendingWant.cancelListeners_.size()), 1);
627 }
628
629 /*
630 * @tc.number : PendingWant_3300
631 * @tc.name : PendingWant UnregisterCancelListener
632 * @tc.desc : 1.UnregisterCancelListener
633 */
634 HWTEST_F(PendingWantTest, PendingWant_3300, Function | MediumTest | Level1)
635 {
636 PendingWant pendingWant(nullptr);
637 std::shared_ptr<CancelListener> cancelListener2 = std::make_shared<CancelListenerSon>();
638 pendingWant.RegisterCancelListener(nullptr, nullptr);
639 pendingWant.RegisterCancelListener(cancelListener2, nullptr);
640 EXPECT_EQ(static_cast<int>(pendingWant.cancelListeners_.size()), 1);
641 pendingWant.UnregisterCancelListener(cancelListener2, nullptr);
642 EXPECT_EQ(static_cast<int>(pendingWant.cancelListeners_.size()), 0);
643 }
644
645 /*
646 * @tc.number : PendingWant_3400
647 * @tc.name : PendingWant UnregisterCancelListener
648 * @tc.desc : 1.UnregisterCancelListener
649 */
650 HWTEST_F(PendingWantTest, PendingWant_3400, Function | MediumTest | Level1)
651 {
652 PendingWant pendingWant(nullptr);
653 pendingWant.UnregisterCancelListener(nullptr, nullptr);
654 EXPECT_EQ(static_cast<int>(pendingWant.cancelListeners_.size()), 0);
655 }
656
657 /*
658 * @tc.number : PendingWant_3500
659 * @tc.name : PendingWant GetWant
660 * @tc.desc : 1.GetWant
661 */
662 HWTEST_F(PendingWantTest, PendingWant_3500, Function | MediumTest | Level1)
663 {
664 PendingWant pendingWant(nullptr);
665 auto want = pendingWant.GetWant(nullptr);
666 EXPECT_EQ(want, nullptr);
667 }
668
669 /*
670 * @tc.number : PendingWant_3600
671 * @tc.name : PendingWant Equals
672 * @tc.desc : Equals
673 */
674 HWTEST_F(PendingWantTest, PendingWant_3700, Function | MediumTest | Level1)
675 {
676 std::shared_ptr<PendingWant> pendingWant(nullptr);
677 std::shared_ptr<PendingWant> pendingWant2(nullptr);
678 EXPECT_EQ(pendingWant->IsEquals(pendingWant, pendingWant2), ERR_OK);
679 }
680
681 /*
682 * @tc.number : PendingWant_3800
683 * @tc.name : Marshalling_01
684 * @tc.desc : test Marshalling function when target is null
685 * tc.issue : I5TGRZ
686 */
687 HWTEST_F(PendingWantTest, PendingWant_3800, Function | MediumTest | Level1)
688 {
689 PendingWant pendingWant(nullptr);
690 Parcel parcel;
691 bool ret = pendingWant.Marshalling(parcel);
692 EXPECT_EQ(ret, false);
693 }
694
695 /*
696 * @tc.number : PendingWant_3900
697 * @tc.name : Marshalling_02
698 * @tc.desc : test Marshalling function when target is target
699 * tc.issue : I5TGRZ
700 */
701 HWTEST_F(PendingWantTest, PendingWant_3900, Function | MediumTest | Level1)
702 {
703 sptr<AAFwk::IWantSender> target(new (std::nothrow) PendingWantRecord());
704 PendingWant pendingWant(target);
705 MessageParcel parcel;
706 bool ret = pendingWant.Marshalling(parcel);
707 EXPECT_EQ(ret, true);
708 }
709
710 /*
711 * @tc.number : PendingWant_4000
712 * @tc.name : PendingWant GetType
713 * @tc.desc : 1.Get PendingWant Type (UNKNOWN_TYPE)
714 */
715 HWTEST_F(PendingWantTest, PendingWant_4000, Function | MediumTest | Level1)
716 {
717 sptr<AAFwk::IWantSender> target = nullptr;
718 PendingWant pendingWant(target);
719 EXPECT_EQ(pendingWant.target_, target);
720 int32_t type = static_cast<int32_t>(WantAgentConstant::OperationType::UNKNOWN_TYPE);
721 EXPECT_EQ(pendingWant.GetType(target, type), ERR_ABILITY_RUNTIME_EXTERNAL_INVALID_WANTAGENT);
722 EXPECT_EQ(type, static_cast<int32_t>(WantAgentConstant::OperationType::UNKNOWN_TYPE));
723 }
724
725 /*
726 * @tc.number : PendingWant_4100
727 * @tc.name : PendingWant GetWant
728 * @tc.desc : 1.GetWant
729 */
730 HWTEST_F(PendingWantTest, PendingWant_4100, Function | MediumTest | Level1)
731 {
732 sptr<AAFwk::IWantSender> target = nullptr;
733 PendingWant pendingWant(target);
734 EXPECT_EQ(pendingWant.target_, target);
735 std::shared_ptr<AAFwk::Want> want(nullptr);
736 EXPECT_EQ(pendingWant.GetWant(target, want), ERR_ABILITY_RUNTIME_EXTERNAL_INVALID_WANTAGENT);
737 EXPECT_EQ(want, nullptr);
738 }
739
740 /*
741 * @tc.number : PendingWant_4200
742 * @tc.name : PendingWant GetBundleName
743 * @tc.desc : 1.GetBundleName
744 */
745 HWTEST_F(PendingWantTest, PendingWant_4200, Function | MediumTest | Level1)
746 {
747 PendingWant pendingWant(nullptr);
748 std::string bundleName = "";
749 pendingWant.GetBundleName(nullptr, bundleName);
750 EXPECT_EQ(bundleName, "");
751 }
752
753 /*
754 * @tc.number : PendingWant_4300
755 * @tc.name : PendingWant GetUid
756 * @tc.desc : 1.GetUid
757 */
758 HWTEST_F(PendingWantTest, PendingWant_4300, Function | MediumTest | Level1)
759 {
760 auto pendingWant = std::make_shared<PendingWant>(nullptr);
761 EXPECT_NE(pendingWant, nullptr);
762 int32_t uid = -1;
763 pendingWant->GetUid(nullptr, uid);
764 }
765
766 /*
767 * @tc.number : PendingWant_4700
768 * @tc.name : PendingWant Send
769 * @tc.desc : Send
770 */
771 HWTEST_F(PendingWantTest, PendingWant_4700, Function | MediumTest | Level1)
772 {
773 GTEST_LOG_(INFO) << "PendingWant_4700 start";
774 auto pendingWant = std::make_shared<PendingWant>(nullptr);
775 int requestCode = 10;
776 sptr<CompletedDispatcher> onCompleted;
777 sptr<AAFwk::IWantSender> target;
778 pendingWant->Send(requestCode, onCompleted, target);
779 EXPECT_TRUE(pendingWant != nullptr);
780 GTEST_LOG_(INFO) << "PendingWant_4700 end";
781 }
782
783 /*
784 * @tc.number : PendingWant_4800
785 * @tc.name : PendingWant Send
786 * @tc.desc : Send
787 */
788 HWTEST_F(PendingWantTest, PendingWant_4800, Function | MediumTest | Level1)
789 {
790 GTEST_LOG_(INFO) << "PendingWant_4800 start";
791 auto pendingWant = std::make_shared<PendingWant>(nullptr);
792 int requestCode = 10;
793 std::shared_ptr<Want> want = std::make_shared<Want>();
794 ElementName element("device", "bundleName", "abilityName");
795 want->SetElement(element);
796 sptr<CompletedDispatcher> onCompleted;
797 sptr<AAFwk::IWantSender> target;
798 pendingWant->Send(requestCode, want, onCompleted, target);
799 EXPECT_TRUE(pendingWant != nullptr);
800 GTEST_LOG_(INFO) << "PendingWant_4800 end";
801 }
802
803 /*
804 * @tc.number : PendingWant_4900
805 * @tc.name : PendingWant Send
806 * @tc.desc : Send
807 */
808 HWTEST_F(PendingWantTest, PendingWant_4900, Function | MediumTest | Level1)
809 {
810 GTEST_LOG_(INFO) << "PendingWant_4900 start";
811 auto pendingWant = std::make_shared<PendingWant>(nullptr);
812 int requestCode = 10;
813 std::shared_ptr<Want> want = std::make_shared<Want>();
814 ElementName element("device", "bundleName", "abilityName");
815 want->SetElement(element);
816 sptr<CompletedDispatcher> onCompleted = nullptr;
817 std::string requiredPermission = "Permission";
818 sptr<AAFwk::IWantSender> target;
819 pendingWant->Send(requestCode, want, onCompleted, requiredPermission, target);
820 EXPECT_TRUE(pendingWant != nullptr);
821 GTEST_LOG_(INFO) << "PendingWant_4900 end";
822 }
823
824 /*
825 * @tc.number : PendingWant_5000
826 * @tc.name : PendingWant Send
827 * @tc.desc : Send
828 */
829 HWTEST_F(PendingWantTest, PendingWant_5000, Function | MediumTest | Level1)
830 {
831 GTEST_LOG_(INFO) << "PendingWant_5000 start";
832 PendingWant pendingWant(nullptr);
833 int requestCode = 10;
834 std::shared_ptr<Want> want = std::make_shared<Want>();
835 ElementName element("device", "bundleName", "abilityName");
836 want->SetElement(element);
837 sptr<CompletedDispatcher> onCompleted;
838 std::string requiredPermission = "Permission";
839 std::shared_ptr<WantParams> options;
840 std::shared_ptr<StartOptions> startOptions = nullptr;
841 sptr<AAFwk::IWantSender> target;
842 auto result = pendingWant.Send(requestCode, want, onCompleted,
843 requiredPermission, options, startOptions, target, nullptr);
844 EXPECT_EQ(result, ERR_ABILITY_RUNTIME_EXTERNAL_INVALID_WANTAGENT);
845 GTEST_LOG_(INFO) << "PendingWant_5000 end";
846 }
847
848 /*
849 * @tc.number : PendingWant_5100
850 * @tc.name : PendingWant SetTarget
851 * @tc.desc : SetTarget
852 */
853 HWTEST_F(PendingWantTest, PendingWant_5100, Function | MediumTest | Level1)
854 {
855 sptr<AAFwk::IWantSender> target(new (std::nothrow) PendingWantRecord());
856 PendingWant pendingWant(nullptr);
857 auto target1 = pendingWant.GetTarget();
858 pendingWant.SetTarget(target);
859 auto target2 = pendingWant.GetTarget();
860 EXPECT_EQ(target1, nullptr);
861 EXPECT_EQ(target2, target);
862 }
863
864 /*
865 * @tc.number : PendingWant_5200
866 * @tc.name : Unmarshalling_01
867 * @tc.desc : Test Unmarshalling function when target is null
868 */
869 HWTEST_F(PendingWantTest, PendingWant_5200, Function | MediumTest | Level1)
870 {
871 sptr<AAFwk::IWantSender> target(new (std::nothrow) PendingWantRecord());
872 PendingWant pendingWant(target);
873 MessageParcel parcel;
874 pendingWant.Unmarshalling(parcel);
875 auto target1 = pendingWant.GetTarget();
876 EXPECT_EQ(target1, target);
877 }
878
879 /*
880 * @tc.number : PendingWant_5300
881 * @tc.name : PendingWant GetWantSenderInfo
882 * @tc.desc : GetWantSenderInfo
883 */
884 HWTEST_F(PendingWantTest, PendingWant_5300, Function | MediumTest | Level1)
885 {
886 PendingWant pendingWant(nullptr);
887 auto wantsenderinfo = pendingWant.GetWantSenderInfo(nullptr);
888 EXPECT_EQ(wantsenderinfo, nullptr);
889 }
890
891 /*
892 * @tc.number : PendingWant_5400
893 * @tc.name : PendingWant NotifyCancelListeners
894 * @tc.desc : NotifyCancelListeners
895 */
896 HWTEST_F(PendingWantTest, PendingWant_5400, Function | MediumTest | Level1)
897 {
898 std::shared_ptr<PendingWant> pendingWant = std::make_shared<PendingWant>(nullptr);
899 std::shared_ptr<CancelListener> cancelListener1 = std::make_shared<CancelListenerSon>();
900 std::shared_ptr<CancelListener> cancelListener2 = std::make_shared<CancelListenerSon>();
901 pendingWant->RegisterCancelListener(cancelListener1, nullptr);
902 pendingWant->RegisterCancelListener(cancelListener2, nullptr);
903 std::weak_ptr<PendingWant> outerInstance(pendingWant);
904 PendingWant::CancelReceiver cancelreceiver(outerInstance);
905 cancelreceiver.Send(0);
906
907 EXPECT_EQ(callBackCancelListenerConnt, 2);
908 callBackCancelListenerConnt = 0;
909 }
910
911 /*
912 * @tc.number : PendingWant_5500
913 * @tc.name : PendingWant GetAbilitys
914 * @tc.desc : 1.Get pendingWant (context is nullptr)
915 */
916 HWTEST_F(PendingWantTest, PendingWant_5500, Function | MediumTest | Level1)
917 {
918 TAG_LOGI(AAFwkTag::TEST, "PendingWant_5500 start.");
919 int requestCode = 10;
920 std::shared_ptr<Want> want = std::make_shared<Want>();
921 ElementName element("device", "bundleName", "abilityName");
922 want->SetElement(element);
923 std::shared_ptr<Want> want2 = std::make_shared<Want>();
924 ElementName element2("device", "bundleName", "abilityName");
925 want2->SetElement(element2);
926 std::vector<std::shared_ptr<Want>> wants;
927 wants.emplace_back(want);
928 wants.emplace_back(want2);
929 bool value = true;
930 std::string key = "key";
931 std::shared_ptr<WantParams> wParams = std::make_shared<WantParams>();
932 wParams->SetParam(key, Boolean::Box(value));
933 unsigned int flags = 1;
934 flags |= FLAG_NO_CREATE;
935 std::shared_ptr<PendingWant> pendingWant;
936 ErrCode err = PendingWant::GetAbilities(nullptr, requestCode, wants, flags, wParams, pendingWant);
937 EXPECT_EQ(err, ERR_ABILITY_RUNTIME_EXTERNAL_INVALID_PARAMETER);
938 TAG_LOGI(AAFwkTag::TEST, "PendingWant_5500 end.");
939 }
940
941 /*
942 * @tc.number : PendingWant_5600
943 * @tc.name : PendingWant GetAbilities
944 * @tc.desc : 1.Get pendingWant (context is not nullptr FLAG_NO_CREATE)
945 */
946 HWTEST_F(PendingWantTest, PendingWant_5600, Function | MediumTest | Level1)
947 {
948 TAG_LOGI(AAFwkTag::TEST, "PendingWant_5600 start.");
949 int requestCode = 10;
950 std::shared_ptr<Want> want = std::make_shared<Want>();
951 ElementName element("device", "bundleName", "abilityName");
952 want->SetElement(element);
953 std::shared_ptr<Want> want2 = std::make_shared<Want>();
954 ElementName element2("device", "bundleName", "abilityName");
955 want2->SetElement(element2);
956 std::vector<std::shared_ptr<Want>> wants;
957 wants.emplace_back(want);
958 wants.emplace_back(want2);
959 bool value = true;
960 std::string key = "key";
961 std::shared_ptr<WantParams> wParams = std::make_shared<WantParams>();
962 wParams->SetParam(key, Boolean::Box(value));
963 unsigned int flags = 1;
964 flags |= FLAG_NO_CREATE;
965 std::shared_ptr<PendingWant> pendingWant;
966 ErrCode err = PendingWant::GetAbilities(GetAppContext(), requestCode, wants, flags, wParams, pendingWant);
967 EXPECT_EQ(err, ERR_OK);
968 TAG_LOGI(AAFwkTag::TEST, "PendingWant_5600 end.");
969 }
970
971 /*
972 * @tc.number : PendingWant_5700
973 * @tc.name : PendingWant GetAbilities
974 * @tc.desc : 1.Get pendingWant (context is not nullptr FLAG_ONE_SHOT)
975 */
976 HWTEST_F(PendingWantTest, PendingWant_5700, Function | MediumTest | Level1)
977 {
978 TAG_LOGI(AAFwkTag::TEST, "PendingWant_5700 start.");
979 int requestCode = 10;
980 std::shared_ptr<Want> want = std::make_shared<Want>();
981 ElementName element("device", "bundleName", "abilityName");
982 want->SetElement(element);
983 std::shared_ptr<Want> want2 = std::make_shared<Want>();
984 ElementName element2("device", "bundleName", "abilityName");
985 want2->SetElement(element2);
986 std::vector<std::shared_ptr<Want>> wants;
987 wants.emplace_back(want);
988 wants.emplace_back(want2);
989 bool value = true;
990 std::string key = "key";
991 std::shared_ptr<WantParams> wParams = std::make_shared<WantParams>();
992 wParams->SetParam(key, Boolean::Box(value));
993 unsigned int flags = 1;
994 flags |= FLAG_ONE_SHOT;
995 std::shared_ptr<PendingWant> pendingWant;
996 ErrCode err = PendingWant::GetAbilities(GetAppContext(), requestCode, wants, flags, wParams, pendingWant);
997 EXPECT_EQ(err, ERR_OK);
998 TAG_LOGI(AAFwkTag::TEST, "PendingWant_5700 end.");
999 }
1000
1001 /*
1002 * @tc.number : PendingWant_5800
1003 * @tc.name : PendingWant GetAbilitie
1004 * @tc.desc : 1.Get pendingWant (context is nullptr)
1005 */
1006 HWTEST_F(PendingWantTest, PendingWant_5800, Function | MediumTest | Level1)
1007 {
1008 TAG_LOGI(AAFwkTag::TEST, "PendingWant_5800 start.");
1009 int requestCode = 10;
1010 std::shared_ptr<Want> want = std::make_shared<Want>();
1011 ElementName element("device", "bundleName", "abilityName");
1012 want->SetElement(element);
1013 bool value = true;
1014 std::string key = "key";
1015 std::shared_ptr<WantParams> wParams = std::make_shared<WantParams>();
1016 wParams->SetParam(key, Boolean::Box(value));
1017 unsigned int flags = 1;
1018 flags |= FLAG_ONE_SHOT;
1019 std::shared_ptr<PendingWant> pendingWant;
1020 ErrCode err = PendingWant::GetAbility(nullptr, requestCode, want, flags, wParams, pendingWant);
1021 EXPECT_EQ(err, ERR_ABILITY_RUNTIME_EXTERNAL_INVALID_PARAMETER);
1022 TAG_LOGI(AAFwkTag::TEST, "PendingWant_5800 end.");
1023 }
1024
1025 /*
1026 * @tc.number : PendingWant_5800
1027 * @tc.name : PendingWant GetAbilitie
1028 * @tc.desc : 1.Get pendingWant (context not nullptr)
1029 */
1030 HWTEST_F(PendingWantTest, PendingWant_5900, Function | MediumTest | Level1)
1031 {
1032 TAG_LOGI(AAFwkTag::TEST, "PendingWant_5900 start.");
1033 int requestCode = 10;
1034 std::shared_ptr<Want> want = std::make_shared<Want>();
1035 ElementName element("device", "bundleName", "abilityName");
1036 want->SetElement(element);
1037 bool value = true;
1038 std::string key = "key";
1039 std::shared_ptr<WantParams> wParams = std::make_shared<WantParams>();
1040 wParams->SetParam(key, Boolean::Box(value));
1041 unsigned int flags = 1;
1042 flags |= FLAG_ONE_SHOT;
1043 std::shared_ptr<PendingWant> pendingWant;
1044 ErrCode err = PendingWant::GetAbility(GetAppContext(), requestCode, want, flags, wParams, pendingWant);
1045 EXPECT_EQ(err, ERR_OK);
1046 TAG_LOGI(AAFwkTag::TEST, "PendingWant_5900 end.");
1047 }
1048
1049 /*
1050 * @tc.number : PendingWant_6000
1051 * @tc.name : PendingWant GetCommonEvent
1052 * @tc.desc : 1.Get pendingWant (context is nullptr)
1053 */
1054 HWTEST_F(PendingWantTest, PendingWant_6000, Function | MediumTest | Level1)
1055 {
1056 TAG_LOGI(AAFwkTag::TEST, "PendingWant_6000 start.");
1057 int requestCode = 10;
1058 std::shared_ptr<Want> want = std::make_shared<Want>();
1059 ElementName element("device", "bundleName", "abilityName");
1060 want->SetElement(element);
1061 unsigned int flags = 1;
1062 flags |= FLAG_NO_CREATE;
1063 std::shared_ptr<PendingWant> pendingWant;
1064 ErrCode err = PendingWant::GetCommonEvent(nullptr, requestCode, want, flags, pendingWant);
1065 EXPECT_EQ(err, ERR_ABILITY_RUNTIME_EXTERNAL_INVALID_PARAMETER);
1066 TAG_LOGI(AAFwkTag::TEST, "PendingWant_6000 end.");
1067 }
1068
1069 /*
1070 * @tc.number : PendingWant_6100
1071 * @tc.name : PendingWant GetCommonEvent
1072 * @tc.desc : 1.Get pendingWant (context is not nullptr)
1073 */
1074 HWTEST_F(PendingWantTest, PendingWant_6100, Function | MediumTest | Level1)
1075 {
1076 TAG_LOGI(AAFwkTag::TEST, "PendingWant_6100 start.");
1077 int requestCode = 10;
1078 std::shared_ptr<Want> want = std::make_shared<Want>();
1079 ElementName element("device", "bundleName", "abilityName");
1080 want->SetElement(element);
1081 unsigned int flags = 1;
1082 flags |= FLAG_ONE_SHOT;
1083 std::shared_ptr<PendingWant> pendingWant;
1084 ErrCode err = PendingWant::GetCommonEvent(GetAppContext(), requestCode, want, flags, pendingWant);
1085 EXPECT_EQ(err, ERR_OK);
1086 TAG_LOGI(AAFwkTag::TEST, "PendingWant_6100 end.");
1087 }
1088
1089 /*
1090 * @tc.number : PendingWant_6200
1091 * @tc.name : PendingWant GetService
1092 * @tc.desc : 1.Get pendingWant (context is nullptr)
1093 */
1094 HWTEST_F(PendingWantTest, PendingWant_6200, Function | MediumTest | Level1)
1095 {
1096 TAG_LOGI(AAFwkTag::TEST, "PendingWant_6200 start.");
1097 int requestCode = 10;
1098 std::shared_ptr<Want> want = std::make_shared<Want>();
1099 ElementName element("device", "bundleName", "abilityName");
1100 want->SetElement(element);
1101 unsigned int flags = 1;
1102 flags |= FLAG_NO_CREATE;
1103 std::shared_ptr<PendingWant> pendingWant;
1104 ErrCode err = PendingWant::GetService(nullptr, requestCode, want, flags, pendingWant);
1105 EXPECT_EQ(err, ERR_ABILITY_RUNTIME_EXTERNAL_INVALID_PARAMETER);
1106 TAG_LOGI(AAFwkTag::TEST, "PendingWant_6200 end.");
1107 }
1108
1109 /*
1110 * @tc.number : PendingWant_6300
1111 * @tc.name : PendingWant GetService
1112 * @tc.desc : 1.Get pendingWant (context is not nullptr)
1113 */
1114 HWTEST_F(PendingWantTest, PendingWant_6300, Function | MediumTest | Level1)
1115 {
1116 TAG_LOGI(AAFwkTag::TEST, "PendingWant_6300 start.");
1117 int requestCode = 10;
1118 std::shared_ptr<Want> want = std::make_shared<Want>();
1119 ElementName element("device", "bundleName", "abilityName");
1120 want->SetElement(element);
1121 unsigned int flags = 1;
1122 flags |= FLAG_NO_CREATE;
1123 std::shared_ptr<PendingWant> pendingWant;
1124 ErrCode err = PendingWant::GetService(nullptr, requestCode, want, flags, pendingWant);
1125 EXPECT_EQ(err, ERR_ABILITY_RUNTIME_EXTERNAL_INVALID_PARAMETER);
1126 TAG_LOGI(AAFwkTag::TEST, "PendingWant_6300 end.");
1127 }
1128
1129 /*
1130 * @tc.number : PendingWant_6400
1131 * @tc.name : PendingWant GetService
1132 * @tc.desc : 1.Get pendingWant (context is not nullptr)
1133 */
1134 HWTEST_F(PendingWantTest, PendingWant_6400, Function | MediumTest | Level1)
1135 {
1136 TAG_LOGI(AAFwkTag::TEST, "PendingWant_6400 start.");
1137 int requestCode = 10;
1138 std::shared_ptr<Want> want = std::make_shared<Want>();
1139 ElementName element("device", "bundleName", "abilityName");
1140 want->SetElement(element);
1141 unsigned int flags = 1;
1142 flags |= FLAG_ONE_SHOT;
1143 std::shared_ptr<PendingWant> pendingWant;
1144 ErrCode err = PendingWant::GetService(GetAppContext(), requestCode, want, flags, pendingWant);
1145 EXPECT_EQ(err, ERR_OK);
1146 TAG_LOGI(AAFwkTag::TEST, "PendingWant_6400 end.");
1147 }
1148
1149 /*
1150 * @tc.number : PendingWant_6500
1151 * @tc.name : PendingWant GetService
1152 * @tc.desc : 1.Get pendingWant (context is not nullptr)
1153 */
1154 HWTEST_F(PendingWantTest, PendingWant_6500, Function | MediumTest | Level1)
1155 {
1156 TAG_LOGI(AAFwkTag::TEST, "PendingWant_6500 start.");
1157 int requestCode = 10;
1158 std::shared_ptr<Want> want = std::make_shared<Want>();
1159 ElementName element("device", "bundleName", "abilityName");
1160 want->SetElement(element);
1161 unsigned int flags = 1;
1162 flags |= FLAG_NO_CREATE;
1163 std::shared_ptr<PendingWant> pendingWant;
1164 ErrCode err = PendingWant::GetForegroundService(GetAppContext(), requestCode, want, flags, pendingWant);
1165 EXPECT_EQ(err, ERR_OK);
1166 TAG_LOGI(AAFwkTag::TEST, "PendingWant_6500 start.");
1167 }
1168
1169 /*
1170 * @tc.number : PendingWant_6600
1171 * @tc.name : PendingWant GetService
1172 * @tc.desc : 1.Get pendingWant (context is nullptr)
1173 */
1174 HWTEST_F(PendingWantTest, PendingWant_6600, Function | MediumTest | Level1)
1175 {
1176 TAG_LOGI(AAFwkTag::TEST, "PendingWant_6600 start.");
1177 int requestCode = 10;
1178 std::shared_ptr<Want> want = std::make_shared<Want>();
1179 ElementName element("device", "bundleName", "abilityName");
1180 want->SetElement(element);
1181 unsigned int flags = 1;
1182 flags |= FLAG_NO_CREATE;
1183 std::shared_ptr<PendingWant> pendingWant;
1184 ErrCode err = PendingWant::GetForegroundService(nullptr, requestCode, want, flags, pendingWant);
1185 EXPECT_EQ(err, ERR_ABILITY_RUNTIME_EXTERNAL_INVALID_PARAMETER);
1186 TAG_LOGI(AAFwkTag::TEST, "PendingWant_6500 end.");
1187 }
1188
1189 /*
1190 * @tc.number : PendingWant_6700
1191 * @tc.name : PendingWant Cancel
1192 * @tc.desc : Cancel a WantAgent
1193 */
1194 HWTEST_F(PendingWantTest, PendingWant_6700, Function | MediumTest | Level1)
1195 {
1196 TAG_LOGI(AAFwkTag::TEST, "PendingWant_6700 start.");
1197 sptr<AAFwk::IWantSender> target = nullptr;
1198 std::shared_ptr<PendingWant> pendingWant = std::make_shared<PendingWant>();
1199 ErrCode err = pendingWant->Cancel(target);
1200 ErrCode err1 = WantAgentClient::GetInstance().CancelWantSender(target);
1201 EXPECT_EQ(err, err1);
1202 TAG_LOGI(AAFwkTag::TEST, "PendingWant_6700 end.");
1203 }
1204
1205 /*
1206 * @tc.number : PendingWant_6800
1207 * @tc.name : PendingWant IsEquals
1208 * @tc.desc : 1.IsEquals
1209 */
1210 HWTEST_F(PendingWantTest, PendingWant_6800, Function | MediumTest | Level1)
1211 {
1212 TAG_LOGI(AAFwkTag::TEST, "PendingWant_6800 start.");
1213 int requestCode = 10;
1214 std::shared_ptr<Want> want = std::make_shared<Want>();
1215 ElementName element("device", "bundleName", "abilityName");
1216 want->SetElement(element);
1217 unsigned int flags = 1;
1218 flags |= FLAG_ONE_SHOT;
1219 WantAgentConstant::OperationType type = WantAgentConstant::OperationType::START_FOREGROUND_SERVICE;
1220 std::shared_ptr<AbilityRuntime::ApplicationContext> context =
1221 AbilityRuntime::ApplicationContext::GetInstance();
1222 std::shared_ptr<PendingWant> pendingWant = nullptr;
1223 PendingWant::BuildServicePendingWant(context, requestCode, want, flags, type, pendingWant);
1224
1225 sptr<AAFwk::IWantSender> target(nullptr);
1226 std::shared_ptr<PendingWant> pendingWant2 = std::make_shared<PendingWant>(target);
1227 EXPECT_EQ(pendingWant->IsEquals(pendingWant, pendingWant2), ERR_ABILITY_RUNTIME_EXTERNAL_INVALID_WANTAGENT);
1228 TAG_LOGI(AAFwkTag::TEST, "PendingWant_6800 end.");
1229 }
1230
1231 /*
1232 * @tc.number : PendingWant_6900
1233 * @tc.name : PendingWant IsEquals
1234 * @tc.desc : 1.IsEquals
1235 */
1236 HWTEST_F(PendingWantTest, PendingWant_6900, Function | MediumTest | Level1)
1237 {
1238 TAG_LOGI(AAFwkTag::TEST, "PendingWant_6900 start.");
1239 int requestCode = 10;
1240 std::shared_ptr<Want> want = std::make_shared<Want>();
1241 ElementName element("device", "bundleName", "abilityName");
1242 want->SetElement(element);
1243 unsigned int flags = 1;
1244 flags |= FLAG_ONE_SHOT;
1245 WantAgentConstant::OperationType type = WantAgentConstant::OperationType::START_FOREGROUND_SERVICE;
1246 std::shared_ptr<AbilityRuntime::ApplicationContext> context =
1247 AbilityRuntime::ApplicationContext::GetInstance();
1248 std::shared_ptr<PendingWant> pendingWant = nullptr;
1249 PendingWant::BuildServicePendingWant(context, requestCode, want, flags, type, pendingWant);
1250
1251 std::shared_ptr<PendingWant> pendingWant2 = nullptr;
1252 PendingWant::BuildServicePendingWant(context, requestCode, want, flags, type, pendingWant2);
1253 EXPECT_EQ(pendingWant->IsEquals(pendingWant, pendingWant2), ERR_OK);
1254 TAG_LOGI(AAFwkTag::TEST, "PendingWant_6900 end.");
1255 }
1256
1257 /*
1258 * @tc.number : PendingWant_7000
1259 * @tc.name : PendingWant IsEquals
1260 * @tc.desc : 1.IsEquals
1261 */
1262 HWTEST_F(PendingWantTest, PendingWant_7000, Function | MediumTest | Level1)
1263 {
1264 TAG_LOGI(AAFwkTag::TEST, "PendingWant_7000 start.");
1265 int requestCode = 10;
1266 std::shared_ptr<Want> want1 = std::make_shared<Want>();
1267 ElementName element1("ohos_device", "bundleName", "abilityName");
1268 want1->SetElement(element1);
1269 unsigned int flags = 1;
1270 flags |= FLAG_ONE_SHOT;
1271 WantAgentConstant::OperationType type = WantAgentConstant::OperationType::START_FOREGROUND_SERVICE;
1272 std::shared_ptr<AbilityRuntime::ApplicationContext> context =
1273 AbilityRuntime::ApplicationContext::GetInstance();
1274 std::shared_ptr<PendingWant> pendingWant = nullptr;
1275 PendingWant::BuildServicePendingWant(context, requestCode, want1, flags, type, pendingWant);
1276
1277 std::shared_ptr<Want> want2 = std::make_shared<Want>();
1278 ElementName element2("ohos_device", "ohos_bundleName", "ohos_abilityName");
1279 want2->SetElement(element2);
1280 std::shared_ptr<PendingWant> pendingWant2 = nullptr;
1281 PendingWant::BuildServicePendingWant(context, requestCode, want2, flags, type, pendingWant2);
1282 EXPECT_EQ(pendingWant->IsEquals(pendingWant, pendingWant2), NOTEQ);
1283 TAG_LOGI(AAFwkTag::TEST, "PendingWant_7000 end.");
1284 }
1285
1286 /*
1287 * @tc.number : PendingWant_7100
1288 * @tc.name : PendingWant GetBundleName
1289 * @tc.desc : 1.GetBundleName
1290 */
1291 HWTEST_F(PendingWantTest, PendingWant_7100, Function | MediumTest | Level1)
1292 {
1293 TAG_LOGI(AAFwkTag::TEST, "PendingWant_7100 start.");
1294 PendingWant pendingWant(nullptr);
1295 std::string bundleName;
1296 ErrCode err = pendingWant.GetBundleName(nullptr, bundleName);
1297 EXPECT_EQ(err, ERR_ABILITY_RUNTIME_EXTERNAL_INVALID_WANTAGENT);
1298 TAG_LOGI(AAFwkTag::TEST, "PendingWant_7100 end.");
1299 }
1300
1301 /*
1302 * @tc.number : PendingWant_7200
1303 * @tc.name : PendingWant GetBundleName
1304 * @tc.desc : 1.GetBundleName
1305 */
1306 HWTEST_F(PendingWantTest, PendingWant_7200, Function | MediumTest | Level1)
1307 {
1308 TAG_LOGI(AAFwkTag::TEST, "PendingWant_7200 start.");
1309 int requestCode = 10;
1310 std::shared_ptr<Want> want1 = std::make_shared<Want>();
1311 ElementName element1("ohos_device", "bundleName", "abilityName");
1312 want1->SetElement(element1);
1313 unsigned int flags = 1;
1314 flags |= FLAG_ONE_SHOT;
1315 WantAgentConstant::OperationType type = WantAgentConstant::OperationType::START_FOREGROUND_SERVICE;
1316 std::shared_ptr<AbilityRuntime::ApplicationContext> context =
1317 AbilityRuntime::ApplicationContext::GetInstance();
1318 std::shared_ptr<PendingWant> pendingWant = nullptr;
1319 PendingWant::BuildServicePendingWant(context, requestCode, want1, flags, type, pendingWant);
1320
1321 std::string bundleName;
1322 ErrCode err = pendingWant->GetBundleName(pendingWant->GetTarget(), bundleName);
1323 EXPECT_EQ(err, ERR_OK);
1324 TAG_LOGI(AAFwkTag::TEST, "PendingWant_7200 start.");
1325 }
1326
1327 /*
1328 * @tc.number : PendingWant_7300
1329 * @tc.name : PendingWant PerformReceive
1330 * @tc.desc : 1.PerformReceive
1331 */
1332 HWTEST_F(PendingWantTest, PendingWant_7300, Function | MediumTest | Level1)
1333 {
1334 std::shared_ptr<PendingWant> pendingWant = std::make_shared<PendingWant>(nullptr);
1335 std::shared_ptr<CancelListener> cancelListener1 = std::make_shared<CancelListenerSon>();
1336 std::shared_ptr<CancelListener> cancelListener2 = std::make_shared<CancelListenerSon>();
1337 pendingWant->RegisterCancelListener(cancelListener1, nullptr);
1338 pendingWant->RegisterCancelListener(cancelListener2, nullptr);
1339 std::weak_ptr<PendingWant> outerInstance(pendingWant);
1340 PendingWant::CancelReceiver cancelreceiver(outerInstance);
1341 AAFwk::Want want;
1342 int resultCode = 1;
1343 std::string data = "";
1344 AAFwk::WantParams extras;
1345 bool serialized = true;
1346 bool sticky = true;
1347 int sendingUser = 1;
1348 cancelreceiver.PerformReceive(want, resultCode, data, extras, serialized, sticky, sendingUser);
1349
1350 EXPECT_EQ(callBackCancelListenerConnt, 0);
1351 callBackCancelListenerConnt = 0;
1352 }
1353
1354 /*
1355 * @tc.number : PendingWant_7400
1356 * @tc.name : PendingWant GetServiceExtension
1357 * @tc.desc : 1.Get pendingWant (want is nullptr)
1358 */
1359 HWTEST_F(PendingWantTest, PendingWant_7400, Function | MediumTest | Level1)
1360 {
1361 int requestCode = 10;
1362 std::shared_ptr<Want> want;
1363 unsigned int flags = 1;
1364 flags |= FLAG_ONE_SHOT;
1365 std::shared_ptr<PendingWant> pendingWant = nullptr;
1366 PendingWant::GetServiceExtension(GetAppContext(), requestCode, want, flags, pendingWant);
1367 EXPECT_NE(pendingWant, nullptr);
1368 }
1369
1370 /*
1371 * @tc.number : PendingWant_7500
1372 * @tc.name : PendingWant GetServiceExtension
1373 * @tc.desc : 1.Get pendingWant (context is nullptr)
1374 */
1375 HWTEST_F(PendingWantTest, PendingWant_7500, Function | MediumTest | Level1)
1376 {
1377 int requestCode = 10;
1378 std::shared_ptr<Want> want = std::make_shared<Want>();
1379 ElementName element("device", "bundleName", "abilityName");
1380 want->SetElement(element);
1381 unsigned int flags = 1;
1382 flags |= FLAG_NO_CREATE;
1383 std::shared_ptr<PendingWant> pendingWant = nullptr;
1384 PendingWant::GetServiceExtension(nullptr, requestCode, want, flags, pendingWant);
1385 EXPECT_EQ(pendingWant, nullptr);
1386 }
1387 } // namespace OHOS::AbilityRuntime::WantAgent
1388