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 #define private public
17 #define protected public
18 #include "call_manager_gtest.h"
19
20 #include <gtest/gtest.h>
21 #include <cstring>
22 #include <string>
23
24 #include "bluetooth_hfp_ag.h"
25 #include "call_manager_connect.h"
26 #include "call_manager_service.h"
27 #include "surface_utils.h"
28 #include "telephony_types.h"
29 #include "voip_call.h"
30
31 using namespace OHOS::Bluetooth;
32 namespace OHOS {
33 namespace Telephony {
34 using namespace testing::ext;
35 constexpr int16_t SIM2_SLOTID = 1;
36 constexpr int16_t SIM1_SLOTID_NO_CARD = 0;
37 constexpr int16_t RETURN_VALUE_IS_ZERO = 0;
38 constexpr int16_t INVALID_NEGATIVE_ID = -100;
39 constexpr int16_t INVALID_POSITIVE_ID = 100;
40 constexpr int INVALID_DIAL_TYPE = 3;
41 constexpr int WAIT_TIME = 3;
42 constexpr int16_t CAMERA_ROTATION_90 = 90;
43 constexpr int16_t CAMERA_ROTATION_ERROR = 50;
44 constexpr int16_t SLEEP_1000_MS = 1000;
45 constexpr int BASE_TIME_MS = 1000;
46 constexpr int SLEEP_TIME_MS = 50;
47 constexpr int MAX_LIMIT_TIME = 18000;
48 constexpr int16_t SIM1_SLOTID = 0;
49 const std::string PHONE_NUMBER = "0000000000";
50
51 std::unordered_map<int32_t, std::unordered_set<int32_t>> g_callStateMap;
52 int32_t g_newCallId = -1;
53 std::mutex CallInfoManager::mutex_;
54 int16_t CallInfoManager::newCallState_;
55 CallAttributeInfo CallInfoManager::updateCallInfo_;
56 std::unordered_set<int32_t> CallInfoManager::callIdSet_;
57
CallDetailsChange(const CallAttributeInfo & info)58 int32_t CallInfoManager::CallDetailsChange(const CallAttributeInfo &info)
59 {
60 TELEPHONY_LOGI("CallDetailsChange Start");
61 std::lock_guard<std::mutex> lock(mutex_);
62 updateCallInfo_ = info;
63 if (callIdSet_.find(updateCallInfo_.callId) == callIdSet_.end()) {
64 TELEPHONY_LOGI("CallDetailsChange new call");
65 callIdSet_.insert(updateCallInfo_.callId);
66 g_newCallId = updateCallInfo_.callId;
67 newCallState_ = (int32_t)updateCallInfo_.callState;
68 std::unordered_set<int32_t> newSet;
69 newSet.clear();
70 g_callStateMap.insert(std::pair<int32_t, std::unordered_set<int32_t>>(g_newCallId, newSet));
71 }
72 g_callStateMap[updateCallInfo_.callId].insert((int32_t)updateCallInfo_.callState);
73 return TELEPHONY_SUCCESS;
74 }
75
HasActiveStatus()76 bool CallInfoManager::HasActiveStatus()
77 {
78 TELEPHONY_LOGI("Waiting for activation !");
79 int sumUseTime = 0;
80 int slipMs = SLEEP_TIME_MS;
81 do {
82 if (!(HasState(g_newCallId, static_cast<int32_t>(TelCallState::CALL_STATUS_ACTIVE)))) {
83 usleep(slipMs * BASE_TIME_MS);
84 sumUseTime += slipMs;
85 } else {
86 TELEPHONY_LOGI("===========wait %d ms callStatus:%d==============", sumUseTime, newCallState_);
87 return true;
88 }
89 } while (sumUseTime < MAX_LIMIT_TIME);
90 TELEPHONY_LOGI("===========wait %d ms callStatus:%d=====not active=========", sumUseTime, newCallState_);
91 return false;
92 }
93
HasState(int callId,int32_t callState)94 bool CallInfoManager::HasState(int callId, int32_t callState)
95 {
96 if (g_callStateMap.find(callId) == g_callStateMap.end()) {
97 return false;
98 }
99 if (g_callStateMap[callId].find(callState) == g_callStateMap[callId].end()) {
100 return false;
101 }
102 return true;
103 }
104
CallEventChange(const CallEventInfo & info)105 int32_t CallInfoManager::CallEventChange(const CallEventInfo &info)
106 {
107 return TELEPHONY_SUCCESS;
108 }
109
Init()110 void CallInfoManager::Init()
111 {
112 g_newCallId = -1;
113 updateCallInfo_.speakerphoneOn = -1;
114 updateCallInfo_.startTime = -1;
115 updateCallInfo_.isEcc = -1;
116 updateCallInfo_.accountId = -1;
117 updateCallInfo_.callType = CallType::TYPE_CS;
118 updateCallInfo_.callId = -1;
119 updateCallInfo_.callState = TelCallState::CALL_STATUS_IDLE;
120 updateCallInfo_.videoState = VideoStateType::TYPE_VOICE;
121 }
122
LockCallId(bool eq,int32_t targetId,int32_t slipMs,int32_t timeoutMs)123 void CallInfoManager::LockCallId(bool eq, int32_t targetId, int32_t slipMs, int32_t timeoutMs)
124 {
125 int32_t useTimeMs = 0;
126 std::cout << "wait for a few seconds......" << std::endl;
127 while ((updateCallInfo_.callId != targetId) && (useTimeMs < timeoutMs)) {
128 usleep(slipMs * SLEEP_1000_MS);
129 useTimeMs += slipMs;
130 }
131 std::cout << "\n===========wait " << useTimeMs << " ms target:" << updateCallInfo_.callId << std::endl;
132 if (eq) {
133 EXPECT_EQ(updateCallInfo_.callId, targetId);
134 } else {
135 EXPECT_NE(updateCallInfo_.callId, targetId);
136 }
137 }
138
LockCallState(bool eq,int32_t targetState,int32_t slipMs,int32_t timeoutMs)139 void CallInfoManager::LockCallState(bool eq, int32_t targetState, int32_t slipMs, int32_t timeoutMs)
140 {
141 if (CallManagerGtest::clientPtr_->GetCallState() == targetState) {
142 return;
143 }
144 int32_t usedTimeMs = 0;
145 std::cout << "wait for a few seconds......" << std::endl;
146 while ((CallManagerGtest::clientPtr_->GetCallState() != targetState) && (usedTimeMs < timeoutMs)) {
147 usleep(slipMs * SLEEP_1000_MS);
148 usedTimeMs += slipMs;
149 }
150 int32_t callState = CallManagerGtest::clientPtr_->GetCallState();
151 std::cout << "waited " << usedTimeMs << " seconds" << std::endl;
152 std::cout << "target call state:" << targetState << std::endl;
153 EXPECT_EQ(callState, targetState);
154 }
155
HangUpCall()156 void CallManagerGtest::HangUpCall()
157 {
158 clientPtr_->HangUpCall(INVALID_CALLID);
159 }
160
161 class ClientErrorBranchTest : public testing::Test {
162 public:
SetUpTestCase()163 static void SetUpTestCase() {};
TearDownTestCase()164 static void TearDownTestCase() {};
SetUp()165 void SetUp() {};
TearDown()166 void TearDown() {};
167 };
168
169 /******************************************* Test SetCameraZoom() *********************************************/
170 /**
171 * @tc.number Telephony_CallManager_SetCameraZoom_0100
172 * @tc.name input zoomRatio 5.0, Test SetCameraZoom
173 * @tc.desc Function test
174 */
175 HWTEST_F(CallManagerGtest, Telephony_CallManager_SetCameraZoom_0100, Function | MediumTest | Level2)
176 {
177 AccessToken token;
178 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
179 return;
180 }
181 float zoomRatio = 5.0;
182 EXPECT_EQ(CallManagerGtest::clientPtr_->SetCameraZoom(zoomRatio), RETURN_VALUE_IS_ZERO);
183 }
184
185 /**
186 * @tc.number Telephony_CallManager_SetCameraZoom_0200
187 * @tc.name input zoomRatio 0.1, Test SetCameraZoom
188 * @tc.desc Function test
189 */
190 HWTEST_F(CallManagerGtest, Telephony_CallManager_SetCameraZoom_0200, Function | MediumTest | Level2)
191 {
192 AccessToken token;
193 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
194 return;
195 }
196 float zoomRatio = 0.1;
197 EXPECT_EQ(CallManagerGtest::clientPtr_->SetCameraZoom(zoomRatio), RETURN_VALUE_IS_ZERO);
198 }
199
200 /**
201 * @tc.number Telephony_CallManager_SetCameraZoom_0300
202 * @tc.name input zoomRatio 10.0, Test SetCameraZoom
203 * @tc.desc Function test
204 */
205 HWTEST_F(CallManagerGtest, Telephony_CallManager_SetCameraZoom_0300, Function | MediumTest | Level2)
206 {
207 AccessToken token;
208 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
209 return;
210 }
211 float zoomRatio = 10.0;
212 EXPECT_EQ(CallManagerGtest::clientPtr_->SetCameraZoom(zoomRatio), RETURN_VALUE_IS_ZERO);
213 }
214
215 /**
216 * @tc.number Telephony_CallManager_SetCameraZoom_0400
217 * @tc.name input invalid para zoomRatio 15.0, Test SetCameraZoom, return error code if failed
218 * @tc.desc Function test
219 */
220 HWTEST_F(CallManagerGtest, Telephony_CallManager_SetCameraZoom_0400, Function | MediumTest | Level2)
221 {
222 AccessToken token;
223 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
224 return;
225 }
226 float zoomRatio = 15.0;
227 EXPECT_EQ(CallManagerGtest::clientPtr_->SetCameraZoom(zoomRatio), RETURN_VALUE_IS_ZERO);
228 }
229
230 /**
231 * @tc.number Telephony_CallManager_SetCameraZoom_0500
232 * @tc.name input invalid para zoomRatio 0.0, Test SetCameraZoom, return error code if failed
233 * @tc.desc Function test
234 */
235 HWTEST_F(CallManagerGtest, Telephony_CallManager_SetCameraZoom_0500, Function | MediumTest | Level2)
236 {
237 AccessToken token;
238 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
239 return;
240 }
241 float zoomRatio = 0.0;
242 EXPECT_EQ(CallManagerGtest::clientPtr_->SetCameraZoom(zoomRatio), RETURN_VALUE_IS_ZERO);
243 }
244
245 /**
246 * @tc.number Telephony_CallManager_SetCameraZoom_0600
247 * @tc.name input invalid para zoomRatio -1.0, Test SetCameraZoom, return error code if failed
248 * @tc.desc Function test
249 */
250 HWTEST_F(CallManagerGtest, Telephony_CallManager_SetCameraZoom_0600, Function | MediumTest | Level2)
251 {
252 AccessToken token;
253 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
254 return;
255 }
256 float zoomRatio = -1.0;
257 EXPECT_EQ(CallManagerGtest::clientPtr_->SetCameraZoom(zoomRatio), RETURN_VALUE_IS_ZERO);
258 }
259
260 /**
261 * @tc.number Telephony_CallManager_SetCameraZoom_0700
262 * @tc.name input invalid para zoomRatio 10.1, Test SetCameraZoom, return error code if failed
263 * @tc.desc Function test
264 */
265 HWTEST_F(CallManagerGtest, Telephony_CallManager_SetCameraZoom_0700, Function | MediumTest | Level2)
266 {
267 AccessToken token;
268 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
269 return;
270 }
271 float zoomRatio = 10.1;
272 EXPECT_EQ(CallManagerGtest::clientPtr_->SetCameraZoom(zoomRatio), RETURN_VALUE_IS_ZERO);
273 }
274 /******************************************* Test SetPausePicture() *********************************************/
275 /**
276 * @tc.number Telephony_CallManager_SetPausePicture_0100
277 * @tc.name input locale picture path /system/bin/test.png that does not exist, Test SetPausePicture,
278 * return error code if failed
279 * @tc.desc Function test
280 */
281 HWTEST_F(CallManagerGtest, Telephony_CallManager_SetPausePicture_0100, Function | MediumTest | Level2)
282 {
283 AccessToken token;
284 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
285 return;
286 }
287 int32_t callId = 1;
288 std::string pathTemp = "/system/bin/test.png";
289 std::u16string path = Str8ToStr16(pathTemp);
290 EXPECT_NE(CallManagerGtest::clientPtr_->SetPausePicture(callId, path), RETURN_VALUE_IS_ZERO);
291 }
292
293 /**
294 * @tc.number Telephony_CallManager_SetPausePicture_0200
295 * @tc.name input an invalid image format file path, Test SetPausePicture, return error code if failed
296 * @tc.desc Function test
297 */
298 HWTEST_F(CallManagerGtest, Telephony_CallManager_SetPausePicture_0200, Function | MediumTest | Level2)
299 {
300 AccessToken token;
301 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
302 return;
303 }
304 int32_t callId = 1;
305 std::string pathTemp = "/system/bin/test.jpg";
306 std::u16string path = Str8ToStr16(pathTemp);
307 EXPECT_NE(CallManagerGtest::clientPtr_->SetPausePicture(callId, path), RETURN_VALUE_IS_ZERO);
308 }
309
310 /**
311 * @tc.number Telephony_CallManager_SetPausePicture_0300
312 * @tc.name input an invalid image format file path, Test SetPausePicture, return error code if failed
313 * @tc.desc Function test
314 */
315 HWTEST_F(CallManagerGtest, Telephony_CallManager_SetPausePicture_0300, Function | MediumTest | Level2)
316 {
317 AccessToken token;
318 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
319 return;
320 }
321 int32_t callId = 1;
322 std::string pathTemp = "/system/bin/test.bmp";
323 std::u16string path = Str8ToStr16(pathTemp);
324 EXPECT_NE(CallManagerGtest::clientPtr_->SetPausePicture(callId, path), RETURN_VALUE_IS_ZERO);
325 }
326
327 /**
328 * @tc.number Telephony_CallManager_SetPausePicture_0400
329 * @tc.name input an invalid image format file path, Test SetPausePicture, return error code if failed
330 * @tc.desc Function test
331 */
332 HWTEST_F(CallManagerGtest, Telephony_CallManager_SetPausePicture_0400, Function | MediumTest | Level2)
333 {
334 AccessToken token;
335 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
336 return;
337 }
338 int32_t callId = 1;
339 std::string pathTemp = "/system/bin/test.webp";
340 std::u16string path = Str8ToStr16(pathTemp);
341 EXPECT_NE(CallManagerGtest::clientPtr_->SetPausePicture(callId, path), RETURN_VALUE_IS_ZERO);
342 }
343
344 /**
345 * @tc.number Telephony_CallManager_SetPausePicture_0500
346 * @tc.name input remote picture path http://callManager.jpg that does not exist, Test SetPausePicture,
347 * return error code if failed
348 * @tc.desc Function test
349 */
350 HWTEST_F(CallManagerGtest, Telephony_CallManager_SetPausePicture_0500, Function | MediumTest | Level2)
351 {
352 AccessToken token;
353 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
354 return;
355 }
356 int32_t callId = 1;
357 std::string pathTemp = "http://callManager.jpg";
358 std::u16string path = Str8ToStr16(pathTemp);
359 EXPECT_NE(CallManagerGtest::clientPtr_->SetPausePicture(callId, path), RETURN_VALUE_IS_ZERO);
360 }
361
362 /**
363 * @tc.number Telephony_CallManager_SetPausePicture_0600
364 * @tc.name input empty picture path, Test SetPausePicture, return error code if failed
365 * @tc.desc Function test
366 */
367 HWTEST_F(CallManagerGtest, Telephony_CallManager_SetPausePicture_0600, Function | MediumTest | Level2)
368 {
369 AccessToken token;
370 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
371 return;
372 }
373 int32_t callId = 1;
374 std::string pathTemp = "";
375 std::u16string path = Str8ToStr16(pathTemp);
376 EXPECT_NE(CallManagerGtest::clientPtr_->SetPausePicture(callId, path), RETURN_VALUE_IS_ZERO);
377 }
378
379 /**
380 * @tc.number Telephony_CallManager_CancelCallUpgrade_0100
381 * @tc.name input callId:1, Test CancelCallUpgrade, return error code if failed
382 * @tc.desc Function test
383 */
384 HWTEST_F(CallManagerGtest, Telephony_CallManager_CancelCallUpgrade_0100, Function | MediumTest | Level2)
385 {
386 AccessToken token;
387 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
388 return;
389 }
390 int32_t callId = 1;
391 EXPECT_NE(CallManagerGtest::clientPtr_->CancelCallUpgrade(callId), RETURN_VALUE_IS_ZERO);
392 }
393
394 /**
395 * @tc.number Telephony_CallManager_RequestCameraCapabilities_0100
396 * @tc.name input callId:1, Test RequestCameraCapabilities, return error code if failed
397 * @tc.desc Function test
398 */
399 HWTEST_F(CallManagerGtest, Telephony_CallManager_RequestCameraCapabilities_0100, Function | MediumTest | Level2)
400 {
401 AccessToken token;
402 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
403 return;
404 }
405 int32_t callId = 1;
406 EXPECT_NE(CallManagerGtest::clientPtr_->RequestCameraCapabilities(callId), RETURN_VALUE_IS_ZERO);
407 }
408
409 /********************************************* Test GetImsConfig() ************************************************/
410 /**
411 * @tc.number Telephony_CallManager_GetImsConfig_0100
412 * @tc.name test get ims config item video quality
413 * @tc.desc Function test
414 */
415 HWTEST_F(CallManagerGtest, Telephony_CallManager_GetImsConfig_0100, Function | MediumTest | Level3)
416 {
417 AccessToken token;
418 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
419 return;
420 }
421
422 if (HasSimCard(SIM1_SLOTID)) {
423 EXPECT_EQ(CallManagerGtest::clientPtr_->GetImsConfig(SIM1_SLOTID, ITEM_VIDEO_QUALITY), RETURN_VALUE_IS_ZERO);
424 }
425 if (HasSimCard(SIM2_SLOTID)) {
426 EXPECT_EQ(CallManagerGtest::clientPtr_->GetImsConfig(SIM2_SLOTID, ITEM_VIDEO_QUALITY), RETURN_VALUE_IS_ZERO);
427 }
428 }
429
430 /**
431 * @tc.number Telephony_CallManager_GetImsConfig_0200
432 * @tc.name test get ims config item ims switch status
433 * @tc.desc Function test
434 */
435 HWTEST_F(CallManagerGtest, Telephony_CallManager_GetImsConfig_0200, Function | MediumTest | Level3)
436 {
437 AccessToken token;
438 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
439 return;
440 }
441
442 if (HasSimCard(SIM1_SLOTID)) {
443 EXPECT_EQ(
444 CallManagerGtest::clientPtr_->GetImsConfig(SIM1_SLOTID, ITEM_IMS_SWITCH_STATUS), RETURN_VALUE_IS_ZERO);
445 }
446 if (HasSimCard(SIM2_SLOTID)) {
447 EXPECT_EQ(
448 CallManagerGtest::clientPtr_->GetImsConfig(SIM2_SLOTID, ITEM_IMS_SWITCH_STATUS), RETURN_VALUE_IS_ZERO);
449 }
450 }
451
452 /**
453 * @tc.number Telephony_CallManager_GetImsConfig_0300
454 * @tc.name test get ims config item with invalid item
455 * @tc.desc Function test
456 */
457 HWTEST_F(CallManagerGtest, Telephony_CallManager_GetImsConfig_0300, Function | MediumTest | Level3)
458 {
459 AccessToken token;
460 ImsConfigItem item = static_cast<ImsConfigItem>(2);
461 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
462 return;
463 }
464
465 if (HasSimCard(SIM1_SLOTID)) {
466 EXPECT_EQ(CallManagerGtest::clientPtr_->GetImsConfig(SIM1_SLOTID, item), RETURN_VALUE_IS_ZERO);
467 }
468 if (HasSimCard(SIM2_SLOTID)) {
469 EXPECT_EQ(CallManagerGtest::clientPtr_->GetImsConfig(SIM2_SLOTID, item), RETURN_VALUE_IS_ZERO);
470 }
471 }
472
473 /********************************************* Test SetImsConfig() ************************************************/
474 /**
475 * @tc.number Telephony_CallManager_SetImsConfig_0100
476 * @tc.name test set ims config item video quality
477 * @tc.desc Function test
478 */
479 HWTEST_F(CallManagerGtest, Telephony_CallManager_SetImsConfig_0100, Function | MediumTest | Level3)
480 {
481 AccessToken token;
482 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
483 return;
484 }
485
486 std::u16string value = u"123";
487 if (HasSimCard(SIM1_SLOTID)) {
488 EXPECT_EQ(
489 CallManagerGtest::clientPtr_->SetImsConfig(SIM1_SLOTID, ITEM_VIDEO_QUALITY, value), RETURN_VALUE_IS_ZERO);
490 }
491 if (HasSimCard(SIM2_SLOTID)) {
492 EXPECT_EQ(
493 CallManagerGtest::clientPtr_->SetImsConfig(SIM2_SLOTID, ITEM_VIDEO_QUALITY, value), RETURN_VALUE_IS_ZERO);
494 }
495 }
496
497 /**
498 * @tc.number Telephony_CallManager_SetImsConfig_0200
499 * @tc.name test set ims config item ims switch status
500 * @tc.desc Function test
501 */
502 HWTEST_F(CallManagerGtest, Telephony_CallManager_SetImsConfig_0200, Function | MediumTest | Level3)
503 {
504 AccessToken token;
505 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
506 return;
507 }
508
509 std::u16string value = u"123";
510 if (HasSimCard(SIM1_SLOTID)) {
511 EXPECT_EQ(CallManagerGtest::clientPtr_->SetImsConfig(SIM1_SLOTID, ITEM_IMS_SWITCH_STATUS, value),
512 RETURN_VALUE_IS_ZERO);
513 }
514 if (HasSimCard(SIM2_SLOTID)) {
515 EXPECT_EQ(CallManagerGtest::clientPtr_->SetImsConfig(SIM2_SLOTID, ITEM_IMS_SWITCH_STATUS, value),
516 RETURN_VALUE_IS_ZERO);
517 }
518 }
519
520 /**
521 * @tc.number Telephony_CallManager_SetImsConfig_0300
522 * @tc.name test set ims config item with invalid item
523 * @tc.desc Function test
524 */
525 HWTEST_F(CallManagerGtest, Telephony_CallManager_SetImsConfig_0300, Function | MediumTest | Level3)
526 {
527 AccessToken token;
528 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
529 return;
530 }
531
532 std::u16string value = u"123";
533 ImsConfigItem item = static_cast<ImsConfigItem>(2);
534 if (HasSimCard(SIM1_SLOTID)) {
535 EXPECT_EQ(CallManagerGtest::clientPtr_->SetImsConfig(SIM1_SLOTID, item, value), RETURN_VALUE_IS_ZERO);
536 }
537 if (HasSimCard(SIM2_SLOTID)) {
538 EXPECT_EQ(CallManagerGtest::clientPtr_->SetImsConfig(SIM2_SLOTID, item, value), RETURN_VALUE_IS_ZERO);
539 }
540 }
541
542 /*********************************** Test GetImsFeatureValue() ****************************************/
543 /**
544 * @tc.number Telephony_CallManager_GetImsFeatureValue_0100
545 * @tc.name test get ims feature value type voice over lte
546 * @tc.desc Function test
547 */
548 HWTEST_F(CallManagerGtest, Telephony_CallManager_GetImsFeatureValue_0100, Function | MediumTest | Level3)
549 {
550 AccessToken token;
551 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
552 return;
553 }
554
555 if (HasSimCard(SIM1_SLOTID)) {
556 EXPECT_EQ(
557 CallManagerGtest::clientPtr_->GetImsFeatureValue(SIM1_SLOTID, TYPE_VOICE_OVER_LTE), RETURN_VALUE_IS_ZERO);
558 }
559 if (HasSimCard(SIM2_SLOTID)) {
560 EXPECT_EQ(
561 CallManagerGtest::clientPtr_->GetImsFeatureValue(SIM2_SLOTID, TYPE_VOICE_OVER_LTE), RETURN_VALUE_IS_ZERO);
562 }
563 }
564
565 /**
566 * @tc.number Telephony_CallManager_GetImsFeatureValue_0200
567 * @tc.name test get ims feature value type video over lte
568 * @tc.desc Function test
569 */
570 HWTEST_F(CallManagerGtest, Telephony_CallManager_GetImsFeatureValue_0200, Function | MediumTest | Level3)
571 {
572 AccessToken token;
573 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
574 return;
575 }
576
577 if (HasSimCard(SIM1_SLOTID)) {
578 EXPECT_EQ(
579 CallManagerGtest::clientPtr_->GetImsFeatureValue(SIM1_SLOTID, TYPE_VIDEO_OVER_LTE), RETURN_VALUE_IS_ZERO);
580 }
581 if (HasSimCard(SIM2_SLOTID)) {
582 EXPECT_EQ(
583 CallManagerGtest::clientPtr_->GetImsFeatureValue(SIM2_SLOTID, TYPE_VIDEO_OVER_LTE), RETURN_VALUE_IS_ZERO);
584 }
585 }
586
587 /**
588 * @tc.number Telephony_CallManager_GetImsFeatureValue_0300
589 * @tc.name test get ims feature value type ss over ut
590 * @tc.desc Function test
591 */
592 HWTEST_F(CallManagerGtest, Telephony_CallManager_GetImsFeatureValue_0300, Function | MediumTest | Level3)
593 {
594 AccessToken token;
595 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
596 return;
597 }
598
599 if (HasSimCard(SIM1_SLOTID)) {
600 EXPECT_EQ(CallManagerGtest::clientPtr_->GetImsFeatureValue(SIM1_SLOTID, TYPE_SS_OVER_UT),
601 RETURN_VALUE_IS_ZERO);
602 }
603 if (HasSimCard(SIM2_SLOTID)) {
604 EXPECT_EQ(CallManagerGtest::clientPtr_->GetImsFeatureValue(SIM2_SLOTID, TYPE_SS_OVER_UT),
605 RETURN_VALUE_IS_ZERO);
606 }
607 }
608
609 /**
610 * @tc.number Telephony_CallManager_GetImsFeatureValue_0400
611 * @tc.name test get ims feature value with invalid type
612 * @tc.desc Function test
613 */
614 HWTEST_F(CallManagerGtest, Telephony_CallManager_GetImsFeatureValue_0400, Function | MediumTest | Level3)
615 {
616 AccessToken token;
617 FeatureType type = static_cast<FeatureType>(3);
618 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
619 return;
620 }
621
622 if (HasSimCard(SIM1_SLOTID)) {
623 EXPECT_EQ(CallManagerGtest::clientPtr_->GetImsFeatureValue(SIM1_SLOTID, type), RETURN_VALUE_IS_ZERO);
624 }
625 if (HasSimCard(SIM2_SLOTID)) {
626 EXPECT_EQ(CallManagerGtest::clientPtr_->GetImsFeatureValue(SIM2_SLOTID, type), RETURN_VALUE_IS_ZERO);
627 }
628 }
629
630 /***************************************** Test SetImsFeatureValue() ***************************************/
631 /**
632 * @tc.number Telephony_CallManager_SetImsFeatureValue_0100
633 * @tc.name test set ims feature value type voice over lte
634 * @tc.desc Function test
635 */
636 HWTEST_F(CallManagerGtest, Telephony_CallManager_SetImsFeatureValue_0100, Function | MediumTest | Level3)
637 {
638 AccessToken token;
639 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
640 return;
641 }
642
643 int32_t value = 1;
644 if (HasSimCard(SIM1_SLOTID)) {
645 EXPECT_EQ(CallManagerGtest::clientPtr_->SetImsFeatureValue(SIM1_SLOTID, TYPE_VOICE_OVER_LTE, value),
646 RETURN_VALUE_IS_ZERO);
647 }
648 if (HasSimCard(SIM2_SLOTID)) {
649 EXPECT_EQ(CallManagerGtest::clientPtr_->SetImsFeatureValue(SIM2_SLOTID, TYPE_VOICE_OVER_LTE, value),
650 RETURN_VALUE_IS_ZERO);
651 }
652 }
653
654 /**
655 * @tc.number Telephony_CallManager_SetImsFeatureValue_0200
656 * @tc.name test set ims feature value type video over lte
657 * @tc.desc Function test
658 */
659 HWTEST_F(CallManagerGtest, Telephony_CallManager_SetImsFeatureValue_0200, Function | MediumTest | Level3)
660 {
661 AccessToken token;
662 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
663 return;
664 }
665
666 int32_t value = 1;
667 if (HasSimCard(SIM1_SLOTID)) {
668 EXPECT_EQ(CallManagerGtest::clientPtr_->SetImsFeatureValue(SIM1_SLOTID, TYPE_VIDEO_OVER_LTE, value),
669 RETURN_VALUE_IS_ZERO);
670 }
671 if (HasSimCard(SIM2_SLOTID)) {
672 EXPECT_EQ(CallManagerGtest::clientPtr_->SetImsFeatureValue(SIM2_SLOTID, TYPE_VIDEO_OVER_LTE, value),
673 RETURN_VALUE_IS_ZERO);
674 }
675 }
676
677 /**
678 * @tc.number Telephony_CallManager_SetImsFeatureValue_0300
679 * @tc.name test set ims feature value type ss over ut
680 * @tc.desc Function test
681 */
682 HWTEST_F(CallManagerGtest, Telephony_CallManager_SetImsFeatureValue_0300, Function | MediumTest | Level3)
683 {
684 AccessToken token;
685 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
686 return;
687 }
688
689 int32_t value = 1;
690 if (HasSimCard(SIM1_SLOTID)) {
691 EXPECT_EQ(CallManagerGtest::clientPtr_->SetImsFeatureValue(SIM1_SLOTID, TYPE_SS_OVER_UT, value),
692 RETURN_VALUE_IS_ZERO);
693 }
694 if (HasSimCard(SIM2_SLOTID)) {
695 EXPECT_EQ(CallManagerGtest::clientPtr_->SetImsFeatureValue(SIM2_SLOTID, TYPE_SS_OVER_UT, value),
696 RETURN_VALUE_IS_ZERO);
697 }
698 }
699
700 /**
701 * @tc.number Telephony_CallManager_SetImsFeatureValue_0400
702 * @tc.name test set ims feature value with invalid type
703 * @tc.desc Function test
704 */
705 HWTEST_F(CallManagerGtest, Telephony_CallManager_SetImsFeatureValue_0400, Function | MediumTest | Level3)
706 {
707 AccessToken token;
708 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
709 return;
710 }
711
712 int32_t value = 1;
713 FeatureType type = static_cast<FeatureType>(3);
714 if (HasSimCard(SIM1_SLOTID)) {
715 EXPECT_EQ(CallManagerGtest::clientPtr_->SetImsFeatureValue(SIM1_SLOTID, type, value), RETURN_VALUE_IS_ZERO);
716 }
717 if (HasSimCard(SIM2_SLOTID)) {
718 EXPECT_EQ(CallManagerGtest::clientPtr_->SetImsFeatureValue(SIM2_SLOTID, type, value), RETURN_VALUE_IS_ZERO);
719 }
720 }
721
722 /************************************** Test UpdateImsCallMode() ****************************************/
723 /**
724 * @tc.number Telephony_CallManager_UpdateImsCallMode_0100
725 * @tc.name test update ims call mode audio only
726 * @tc.desc Function test
727 */
728 HWTEST_F(CallManagerGtest, Telephony_CallManager_UpdateImsCallMode_0100, Function | MediumTest | Level3)
729 {
730 AccessToken token;
731 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
732 return;
733 }
734
735 int32_t callId = 1;
736 EXPECT_NE(CallManagerGtest::clientPtr_->UpdateImsCallMode(callId, CALL_MODE_AUDIO_ONLY), RETURN_VALUE_IS_ZERO);
737 }
738
739 /**
740 * @tc.number Telephony_CallManager_UpdateImsCallMode_0200
741 * @tc.name test update ims call mode send only
742 * @tc.desc Function test
743 */
744 HWTEST_F(CallManagerGtest, Telephony_CallManager_UpdateImsCallMode_0200, Function | MediumTest | Level3)
745 {
746 AccessToken token;
747 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
748 return;
749 }
750
751 int32_t callId = 1;
752 EXPECT_NE(CallManagerGtest::clientPtr_->UpdateImsCallMode(callId, CALL_MODE_SEND_ONLY), RETURN_VALUE_IS_ZERO);
753 }
754
755 /**
756 * @tc.number Telephony_CallManager_UpdateImsCallMode_0300
757 * @tc.name test update ims call mode recerve only
758 * @tc.desc Function test
759 */
760 HWTEST_F(CallManagerGtest, Telephony_CallManager_UpdateImsCallMode_0300, Function | MediumTest | Level3)
761 {
762 AccessToken token;
763 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
764 return;
765 }
766
767 int32_t callId = 1;
768 EXPECT_NE(CallManagerGtest::clientPtr_->UpdateImsCallMode(callId, CALL_MODE_RECEIVE_ONLY), RETURN_VALUE_IS_ZERO);
769 }
770
771 /**
772 * @tc.number Telephony_CallManager_UpdateImsCallMode_0400
773 * @tc.name test update ims call mode send receive
774 * @tc.desc Function test
775 */
776 HWTEST_F(CallManagerGtest, Telephony_CallManager_UpdateImsCallMode_0400, Function | MediumTest | Level3)
777 {
778 AccessToken token;
779 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
780 return;
781 }
782
783 int32_t callId = 1;
784 EXPECT_NE(CallManagerGtest::clientPtr_->UpdateImsCallMode(callId, CALL_MODE_SEND_RECEIVE), RETURN_VALUE_IS_ZERO);
785 }
786
787 /**
788 * @tc.number Telephony_CallManager_UpdateImsCallMode_0500
789 * @tc.name test update ims call mode video paused
790 * @tc.desc Function test
791 */
792 HWTEST_F(CallManagerGtest, Telephony_CallManager_UpdateImsCallMode_0500, Function | MediumTest | Level3)
793 {
794 AccessToken token;
795 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
796 return;
797 }
798
799 int32_t callId = 1;
800 EXPECT_NE(CallManagerGtest::clientPtr_->UpdateImsCallMode(callId, CALL_MODE_VIDEO_PAUSED), RETURN_VALUE_IS_ZERO);
801 }
802
803 /**
804 * @tc.number Telephony_CallManager_UpdateImsCallMode_0600
805 * @tc.name test update ims call with invalid mode
806 * @tc.desc Function test
807 */
808 HWTEST_F(CallManagerGtest, Telephony_CallManager_UpdateImsCallMode_0600, Function | MediumTest | Level3)
809 {
810 AccessToken token;
811 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
812 return;
813 }
814
815 int32_t callId = 1;
816 ImsCallMode mode = static_cast<ImsCallMode>(5);
817 EXPECT_NE(CallManagerGtest::clientPtr_->UpdateImsCallMode(callId, mode), RETURN_VALUE_IS_ZERO);
818 }
819
820 /********************************************* Test StartRtt() ************************************************/
821 /**
822 * @tc.number Telephony_CallManager_StartRtt_0100
823 * @tc.name test start rtt
824 * @tc.desc Function test
825 */
826 HWTEST_F(CallManagerGtest, Telephony_CallManager_StartRtt_0100, Function | MediumTest | Level3)
827 {
828 AccessToken token;
829 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
830 return;
831 }
832
833 std::u16string msg = u"123";
834 int32_t callId = 1;
835 EXPECT_NE(CallManagerGtest::clientPtr_->StartRtt(callId, msg), RETURN_VALUE_IS_ZERO);
836 }
837
838 /********************************************* Test StopRtt() ************************************************/
839 /**
840 * @tc.number Telephony_CallManager_StopRtt_0100
841 * @tc.name test stop rtt
842 * @tc.desc Function test
843 */
844 HWTEST_F(CallManagerGtest, Telephony_CallManager_StopRtt_0100, Function | MediumTest | Level3)
845 {
846 AccessToken token;
847 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
848 return;
849 }
850 int32_t callId = 1;
851 EXPECT_NE(CallManagerGtest::clientPtr_->StopRtt(callId), RETURN_VALUE_IS_ZERO);
852 }
853
854 /**************************************** Test CanSetCallTransferTime() ******************************************/
855 /**
856 * @tc.number Telephony_CallManager_CanSetCallTransferTime_0100
857 * @tc.name input invalid slotId, test CanSetCallTransferTime() return failed
858 * @tc.desc Function test
859 */
860 HWTEST_F(CallManagerGtest, Telephony_CallManager_CanSetCallTransferTime_0100, Function | MediumTest | Level3)
861 {
862 AccessToken token;
863 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
864 return;
865 }
866
867 bool result;
868 EXPECT_EQ(CallManagerGtest::clientPtr_->CanSetCallTransferTime(INVALID_SLOT_ID, result), CALL_ERR_INVALID_SLOT_ID);
869 }
870
871 /**
872 * @tc.number Telephony_CallManager_CanSetCallTransferTime_0200
873 * @tc.name input slotId was out of count
874 * test CanSetCallTransferTime() return failed
875 * @tc.desc Function test
876 */
877 HWTEST_F(CallManagerGtest, Telephony_CallManager_CanSetCallTransferTime_0200, Function | MediumTest | Level3)
878 {
879 AccessToken token;
880 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
881 return;
882 }
883
884 bool result;
885 int32_t slotId = SIM_SLOT_COUNT; // out of the count
886 EXPECT_EQ(CallManagerGtest::clientPtr_->CanSetCallTransferTime(slotId, result), CALL_ERR_INVALID_SLOT_ID);
887 }
888
889 /**
890 * @tc.number Telephony_CallManager_CanSetCallTransferTime_0300
891 * @tc.name test CanSetCallTransferTime() without permission
892 * @tc.desc Function test
893 */
894 HWTEST_F(CallManagerGtest, Telephony_CallManager_CanSetCallTransferTime_0300, Function | MediumTest | Level3)
895 {
896 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
897 return;
898 }
899
900 bool result;
901 if (HasSimCard(SIM1_SLOTID)) {
902 EXPECT_EQ(
903 CallManagerGtest::clientPtr_->CanSetCallTransferTime(SIM1_SLOTID, result), TELEPHONY_ERR_PERMISSION_ERR);
904 }
905 if (HasSimCard(SIM2_SLOTID)) {
906 EXPECT_EQ(
907 CallManagerGtest::clientPtr_->CanSetCallTransferTime(SIM2_SLOTID, result), TELEPHONY_ERR_PERMISSION_ERR);
908 }
909 }
910
911 /**
912 * @tc.number Telephony_CallManager_CanSetCallTransferTime_0400
913 * @tc.name test CanSetCallTransferTime() with normal situation
914 * @tc.desc Function test
915 */
916 HWTEST_F(CallManagerGtest, Telephony_CallManager_CanSetCallTransferTime_0400, Function | MediumTest | Level3)
917 {
918 AccessToken token;
919 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
920 return;
921 }
922
923 bool result;
924 if (HasSimCard(SIM1_SLOTID)) {
925 EXPECT_EQ(CallManagerGtest::clientPtr_->CanSetCallTransferTime(SIM1_SLOTID, result), RETURN_VALUE_IS_ZERO);
926 }
927 if (HasSimCard(SIM2_SLOTID)) {
928 EXPECT_EQ(CallManagerGtest::clientPtr_->CanSetCallTransferTime(SIM2_SLOTID, result), RETURN_VALUE_IS_ZERO);
929 }
930 }
931
932 /********************************************* Test SetAudioDevice()***********************************************/
933 /**
934 * @tc.number Telephony_CallManager_SetAudioDevice_0100
935 * @tc.name make a normal buletoothAddress, set active bluetooth device
936 * @tc.desc Function test
937 * @tc.require: issueI5JUAQ
938 */
939 HWTEST_F(CallManagerGtest, Telephony_CallManager_SetAudioDevice_0100, Function | MediumTest | Level2)
940 {
941 AccessToken token;
942 if (!HasSimCard(SIM1_SLOTID) && !HasSimCard(SIM2_SLOTID)) {
943 return;
944 }
945 std::string phoneNumber = "66666666666";
946 EXPECT_EQ(CallManagerGtest::IsServiceConnected(), true);
947 if (clientPtr_->GetCallState() == static_cast<int>(CallStateToApp::CALL_STATE_OFFHOOK)) {
948 HangUpCall();
949 }
950 CallInfoManager::LockCallState(false, (int32_t)CallStateToApp::CALL_STATE_IDLE, SLEEP_200_MS, SLEEP_30000_MS);
951 int32_t ret = CallManagerGtest::clientPtr_->DialCall(Str8ToStr16(phoneNumber), dialInfo_);
952 EXPECT_EQ(ret, RETURN_VALUE_IS_ZERO);
953
954 HandsFreeAudioGateway *profile = HandsFreeAudioGateway::GetProfile();
955 vector<BluetoothRemoteDevice> devices = profile->GetConnectedDevices();
956 int deviceNum = devices.size();
957 std::string address = "";
958 const int32_t zeroDevice = 0;
959 if (deviceNum > zeroDevice) {
960 address = devices[0].GetDeviceAddr();
961 }
962
963 AudioDevice audioDevice;
964 if (memset_s(&audioDevice, sizeof(AudioDevice), 0, sizeof(AudioDevice)) != EOK) {
965 TELEPHONY_LOGE("memset_s fail");
966 return;
967 }
968 audioDevice.deviceType = AudioDeviceType::DEVICE_BLUETOOTH_SCO;
969 if (address.length() > kMaxAddressLen) {
970 TELEPHONY_LOGE("address is not too long");
971 return;
972 }
973 if (memcpy_s(audioDevice.address, kMaxAddressLen, address.c_str(), address.length()) != EOK) {
974 TELEPHONY_LOGE("memcpy_s address fail");
975 return;
976 }
977
978 CallInfoManager::LockCallState(false, (int32_t)CallStateToApp::CALL_STATE_OFFHOOK, SLEEP_200_MS, SLEEP_30000_MS);
979 EXPECT_NE(clientPtr_->SetAudioDevice(audioDevice), RETURN_VALUE_IS_ZERO);
980 }
981 } // namespace Telephony
982 } // namespace OHOS
983