1e5d0e473Sopenharmony_ci/* 2e5d0e473Sopenharmony_ci * Copyright (C) 2023-2024 Huawei Device Co., Ltd. 3e5d0e473Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4e5d0e473Sopenharmony_ci * you may not use this file except in compliance with the License. 5e5d0e473Sopenharmony_ci * You may obtain a copy of the License at 6e5d0e473Sopenharmony_ci * 7e5d0e473Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8e5d0e473Sopenharmony_ci * 9e5d0e473Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10e5d0e473Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11e5d0e473Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12e5d0e473Sopenharmony_ci * See the License for the specific language governing permissions and 13e5d0e473Sopenharmony_ci * limitations under the License. 14e5d0e473Sopenharmony_ci */ 15e5d0e473Sopenharmony_ci 16e5d0e473Sopenharmony_ci#define private public 17e5d0e473Sopenharmony_ci#define protected public 18e5d0e473Sopenharmony_ci 19e5d0e473Sopenharmony_ci#include "cdma_sms_transport_message.h" 20e5d0e473Sopenharmony_ci#include "core_manager_inner.h" 21e5d0e473Sopenharmony_ci#include "core_service_client.h" 22e5d0e473Sopenharmony_ci#include "gtest/gtest.h" 23e5d0e473Sopenharmony_ci#include "i_sms_service_interface.h" 24e5d0e473Sopenharmony_ci#include "if_system_ability_manager.h" 25e5d0e473Sopenharmony_ci#include "iservice_registry.h" 26e5d0e473Sopenharmony_ci#include "mms_address.h" 27e5d0e473Sopenharmony_ci#include "mms_apn_info.h" 28e5d0e473Sopenharmony_ci#include "mms_attachment.h" 29e5d0e473Sopenharmony_ci#include "mms_base64.h" 30e5d0e473Sopenharmony_ci#include "mms_body.h" 31e5d0e473Sopenharmony_ci#include "mms_body_part.h" 32e5d0e473Sopenharmony_ci#include "mms_body_part_header.h" 33e5d0e473Sopenharmony_ci#include "mms_charset.h" 34e5d0e473Sopenharmony_ci#include "mms_codec_type.h" 35e5d0e473Sopenharmony_ci#include "mms_decode_buffer.h" 36e5d0e473Sopenharmony_ci#include "mms_header.h" 37e5d0e473Sopenharmony_ci#include "mms_msg.h" 38e5d0e473Sopenharmony_ci#include "mms_persist_helper.h" 39e5d0e473Sopenharmony_ci#include "mms_quoted_printable.h" 40e5d0e473Sopenharmony_ci#include "pdp_profile_data.h" 41e5d0e473Sopenharmony_ci#include "radio_event.h" 42e5d0e473Sopenharmony_ci#include "sms_broadcast_subscriber_gtest.h" 43e5d0e473Sopenharmony_ci#include "sms_mms_gtest.h" 44e5d0e473Sopenharmony_ci#include "sms_mms_test_helper.h" 45e5d0e473Sopenharmony_ci#include "sms_service.h" 46e5d0e473Sopenharmony_ci#include "sms_service_manager_client.h" 47e5d0e473Sopenharmony_ci#include "string_utils.h" 48e5d0e473Sopenharmony_ci#include "telephony_log_wrapper.h" 49e5d0e473Sopenharmony_ci#include "telephony_types.h" 50e5d0e473Sopenharmony_ci#include "uri.h" 51e5d0e473Sopenharmony_ci 52e5d0e473Sopenharmony_cinamespace OHOS { 53e5d0e473Sopenharmony_cinamespace Telephony { 54e5d0e473Sopenharmony_cinamespace { 55e5d0e473Sopenharmony_cisptr<ISmsServiceInterface> g_telephonyService = nullptr; 56e5d0e473Sopenharmony_ci} // namespace 57e5d0e473Sopenharmony_ciusing namespace testing::ext; 58e5d0e473Sopenharmony_ci 59e5d0e473Sopenharmony_ciclass MmsGtest : public testing::Test { 60e5d0e473Sopenharmony_cipublic: 61e5d0e473Sopenharmony_ci static void SetUpTestCase(); 62e5d0e473Sopenharmony_ci static void TearDownTestCase(); 63e5d0e473Sopenharmony_ci void SetUp(); 64e5d0e473Sopenharmony_ci void TearDown(); 65e5d0e473Sopenharmony_ci static sptr<ISmsServiceInterface> GetProxy(); 66e5d0e473Sopenharmony_ci static bool HasSimCard(int32_t slotId) 67e5d0e473Sopenharmony_ci { 68e5d0e473Sopenharmony_ci bool hasSimCard = false; 69e5d0e473Sopenharmony_ci if (CoreServiceClient::GetInstance().GetProxy() == nullptr) { 70e5d0e473Sopenharmony_ci return hasSimCard; 71e5d0e473Sopenharmony_ci } 72e5d0e473Sopenharmony_ci CoreServiceClient::GetInstance().HasSimCard(slotId, hasSimCard); 73e5d0e473Sopenharmony_ci return hasSimCard; 74e5d0e473Sopenharmony_ci } 75e5d0e473Sopenharmony_ci}; 76e5d0e473Sopenharmony_ci 77e5d0e473Sopenharmony_civoid MmsGtest::TearDownTestCase() {} 78e5d0e473Sopenharmony_ci 79e5d0e473Sopenharmony_civoid MmsGtest::SetUp() {} 80e5d0e473Sopenharmony_ci 81e5d0e473Sopenharmony_civoid MmsGtest::TearDown() {} 82e5d0e473Sopenharmony_ci 83e5d0e473Sopenharmony_ciconst int32_t DEFAULT_SIM_SLOT_ID_1 = 1; 84e5d0e473Sopenharmony_ciconst uint16_t MESSAGE_TYPE = 4; 85e5d0e473Sopenharmony_ciconst uint16_t WAPPUSH_PDU_LEN = 164; 86e5d0e473Sopenharmony_ciconst uint32_t MAX_MMS_ATTACHMENT_LEN = 10 * 1024 * 1024; 87e5d0e473Sopenharmony_ciconst char PDU_TEST_DATA = 35; 88e5d0e473Sopenharmony_ciconst char MIN_SHORT_OCTET = 30; 89e5d0e473Sopenharmony_ciconst char QUOTE_CHAR_LEN = 0X7F - 1; 90e5d0e473Sopenharmony_ciconst char VALUE_CHAR = 8; 91e5d0e473Sopenharmony_ciconst char PDU_COUNT = 10; 92e5d0e473Sopenharmony_ciconst char PDU_CUSITION = 5; 93e5d0e473Sopenharmony_ciconst char PDU_LENGTH = 4; 94e5d0e473Sopenharmony_ciconst char *ENCODE_CHARSET = "01010101"; 95e5d0e473Sopenharmony_ciconst uint32_t ENCODE_CHARSET1 = 0x0100; 96e5d0e473Sopenharmony_ciconst uint32_t ENCODE_CHARSET2 = 0x0001; 97e5d0e473Sopenharmony_ciconst uint32_t MMS_PDU_MAX_SIZE = 300 * 1024; 98e5d0e473Sopenharmony_cistatic constexpr const char *PDU = "pdu"; 99e5d0e473Sopenharmony_cistatic constexpr uint32_t MAX_PDU_PAGES = 4; 100e5d0e473Sopenharmony_cistatic constexpr uint8_t HEX_VALUE_0F = 0x0F; 101e5d0e473Sopenharmony_cistatic constexpr uint8_t HEX_VALUE_F0 = 0xF0; 102e5d0e473Sopenharmony_cistatic constexpr uint32_t SPLIT_PDU_LENGTH = 195 * 1024; 103e5d0e473Sopenharmony_cistatic constexpr const char *PDU_CONTENT = "pdu_content"; 104e5d0e473Sopenharmony_ciconst std::string PDP_PROFILE_NET_URI = "datashare:///com.ohos.pdpprofileability/net/pdp_profile?simId="; 105e5d0e473Sopenharmony_ciconst std::string MMS_APN_TYPE = "mms"; 106e5d0e473Sopenharmony_ciconst std::string ALL_APN_TYPE = "*"; 107e5d0e473Sopenharmony_ciconst std::string MMS_FILE_ADDRESS = "/data/app/test.mms"; 108e5d0e473Sopenharmony_ciconst std::string SMS_PROFILE_MMS_PDU_URI = "datashare:///com.ohos.smsmmsability/sms_mms/mms_pdu"; 109e5d0e473Sopenharmony_ci 110e5d0e473Sopenharmony_civoid MmsGtest::SetUpTestCase() 111e5d0e473Sopenharmony_ci{ 112e5d0e473Sopenharmony_ci TELEPHONY_LOGI("SetUpTestCase slotId%{public}d", DEFAULT_SIM_SLOT_ID_1); 113e5d0e473Sopenharmony_ci g_telephonyService = GetProxy(); 114e5d0e473Sopenharmony_ci if (g_telephonyService == nullptr) { 115e5d0e473Sopenharmony_ci return; 116e5d0e473Sopenharmony_ci } 117e5d0e473Sopenharmony_ci Singleton<SmsServiceManagerClient>::GetInstance().ResetSmsServiceProxy(); 118e5d0e473Sopenharmony_ci Singleton<SmsServiceManagerClient>::GetInstance().InitSmsServiceProxy(); 119e5d0e473Sopenharmony_ci} 120e5d0e473Sopenharmony_ci 121e5d0e473Sopenharmony_cisptr<ISmsServiceInterface> MmsGtest::GetProxy() 122e5d0e473Sopenharmony_ci{ 123e5d0e473Sopenharmony_ci auto systemAbilityMgr = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager(); 124e5d0e473Sopenharmony_ci if (systemAbilityMgr == nullptr) { 125e5d0e473Sopenharmony_ci return nullptr; 126e5d0e473Sopenharmony_ci } 127e5d0e473Sopenharmony_ci sptr<IRemoteObject> remote = systemAbilityMgr->CheckSystemAbility(TELEPHONY_SMS_MMS_SYS_ABILITY_ID); 128e5d0e473Sopenharmony_ci if (remote) { 129e5d0e473Sopenharmony_ci sptr<ISmsServiceInterface> smsService = iface_cast<ISmsServiceInterface>(remote); 130e5d0e473Sopenharmony_ci return smsService; 131e5d0e473Sopenharmony_ci } 132e5d0e473Sopenharmony_ci return nullptr; 133e5d0e473Sopenharmony_ci} 134e5d0e473Sopenharmony_ci 135e5d0e473Sopenharmony_ci#ifndef TEL_TEST_UNSUPPORT 136e5d0e473Sopenharmony_civoid ReceiveWapPushTestFunc(SmsMmsTestHelper &helper) 137e5d0e473Sopenharmony_ci{ 138e5d0e473Sopenharmony_ci AccessMmsToken token; 139e5d0e473Sopenharmony_ci auto smsReceiveHandler = std::make_shared<GsmSmsReceiveHandler>(helper.slotId); 140e5d0e473Sopenharmony_ci auto message = std::make_shared<SmsMessageInfo>(); 141e5d0e473Sopenharmony_ci message->indicationType = MESSAGE_TYPE; 142e5d0e473Sopenharmony_ci message->size = WAPPUSH_PDU_LEN; 143e5d0e473Sopenharmony_ci message->pdu = StringUtils::HexToByteVector( 144e5d0e473Sopenharmony_ci "0891683110205005F0640BA10156455102F1000432109261715023880605040B8423F04C06246170706C69636174696F6E2F766E642E77" 145e5d0e473Sopenharmony_ci "61702E6D6D732D6D65737361676500B487AF848C829850765030303031365A645430008D9089178031363630373532313930382F545950" 146e5d0e473Sopenharmony_ci "453D504C4D4E008A808E040001298D" 147e5d0e473Sopenharmony_ci "8805810303F47B83687474703A2F2F31302E3132332E31382E38303A3138302F76564F455F3000"); 148e5d0e473Sopenharmony_ci 149e5d0e473Sopenharmony_ci AppExecFwk::InnerEvent::Pointer event = AppExecFwk::InnerEvent::Get(RadioEvent::RADIO_GSM_SMS, message); 150e5d0e473Sopenharmony_ci smsReceiveHandler->ProcessEvent(event); 151e5d0e473Sopenharmony_ci} 152e5d0e473Sopenharmony_ci 153e5d0e473Sopenharmony_civoid GetSendReqDataTest(MmsMsg &encodeMsg, std::string number) 154e5d0e473Sopenharmony_ci{ 155e5d0e473Sopenharmony_ci if (!encodeMsg.SetMmsMessageType(MMS_MSGTYPE_SEND_REQ)) { 156e5d0e473Sopenharmony_ci TELEPHONY_LOGE("SetMmsMessageType fail"); 157e5d0e473Sopenharmony_ci } 158e5d0e473Sopenharmony_ci if (!encodeMsg.SetMmsTransactionId("2077.1427358451410")) { 159e5d0e473Sopenharmony_ci TELEPHONY_LOGE("SetMmsTransactionId fail"); 160e5d0e473Sopenharmony_ci } 161e5d0e473Sopenharmony_ci if (!encodeMsg.SetMmsVersion(static_cast<uint16_t>(MmsVersionType::MMS_VERSION_1_2))) { 162e5d0e473Sopenharmony_ci TELEPHONY_LOGE("SetMmsVersion fail"); 163e5d0e473Sopenharmony_ci } 164e5d0e473Sopenharmony_ci MmsAddress address; 165e5d0e473Sopenharmony_ci address.SetMmsAddressString(number); 166e5d0e473Sopenharmony_ci if (!encodeMsg.SetMmsFrom(address)) { 167e5d0e473Sopenharmony_ci TELEPHONY_LOGE("SetMmsFrom fail"); 168e5d0e473Sopenharmony_ci } 169e5d0e473Sopenharmony_ci if (!encodeMsg.SetHeaderContentType("application/vnd.wap.multipart.related")) { 170e5d0e473Sopenharmony_ci TELEPHONY_LOGE("SetHeaderContentType fail"); 171e5d0e473Sopenharmony_ci } 172e5d0e473Sopenharmony_ci if (!encodeMsg.SetMmsSubject("mms")) { 173e5d0e473Sopenharmony_ci TELEPHONY_LOGE("SetMmsSubject fail"); 174e5d0e473Sopenharmony_ci } 175e5d0e473Sopenharmony_ci if (!encodeMsg.SetHeaderOctetValue(MMS_CONTENT_CLASS, static_cast<uint8_t>(MmsContentClass::MMS_TEXT))) { 176e5d0e473Sopenharmony_ci TELEPHONY_LOGE("SetHeaderOctetValue MMS_CONTENT_CLASS fail"); 177e5d0e473Sopenharmony_ci } 178e5d0e473Sopenharmony_ci} 179e5d0e473Sopenharmony_ci 180e5d0e473Sopenharmony_cibool MmsAddAttachment(MmsMsg &msg, std::string pathName, std::string contentId, std::string contenType, bool isSmil) 181e5d0e473Sopenharmony_ci{ 182e5d0e473Sopenharmony_ci MmsAttachment imageAttachment; 183e5d0e473Sopenharmony_ci std::size_t pos = pathName.find_last_of('/'); 184e5d0e473Sopenharmony_ci std::string fileName(pathName.substr(pos + 1)); 185e5d0e473Sopenharmony_ci if (!imageAttachment.SetAttachmentFilePath(pathName, isSmil)) { 186e5d0e473Sopenharmony_ci TELEPHONY_LOGE("MmsAddAttachment SetAttachmentFilePath fail"); 187e5d0e473Sopenharmony_ci return false; 188e5d0e473Sopenharmony_ci } 189e5d0e473Sopenharmony_ci if (!imageAttachment.SetFileName(fileName)) { 190e5d0e473Sopenharmony_ci TELEPHONY_LOGE("MmsAddAttachment SetFileName fail"); 191e5d0e473Sopenharmony_ci return false; 192e5d0e473Sopenharmony_ci } 193e5d0e473Sopenharmony_ci if (!imageAttachment.SetContentId(contentId)) { 194e5d0e473Sopenharmony_ci TELEPHONY_LOGE("MmsAddAttachment SetContentId fail"); 195e5d0e473Sopenharmony_ci return false; 196e5d0e473Sopenharmony_ci } 197e5d0e473Sopenharmony_ci if (!imageAttachment.SetContentLocation(fileName)) { 198e5d0e473Sopenharmony_ci TELEPHONY_LOGE("MmsAddAttachment SetContentLocation fail"); 199e5d0e473Sopenharmony_ci return false; 200e5d0e473Sopenharmony_ci } 201e5d0e473Sopenharmony_ci if (!imageAttachment.SetContentType(contenType)) { 202e5d0e473Sopenharmony_ci TELEPHONY_LOGE("MmsAddAttachment SetContentType fail"); 203e5d0e473Sopenharmony_ci return false; 204e5d0e473Sopenharmony_ci } 205e5d0e473Sopenharmony_ci imageAttachment.SetContentDisposition("attachment"); 206e5d0e473Sopenharmony_ci if (!msg.AddAttachment(imageAttachment)) { 207e5d0e473Sopenharmony_ci TELEPHONY_LOGE("MmsAddAttachment AddAttachment fail"); 208e5d0e473Sopenharmony_ci return false; 209e5d0e473Sopenharmony_ci } 210e5d0e473Sopenharmony_ci return true; 211e5d0e473Sopenharmony_ci} 212e5d0e473Sopenharmony_ci 213e5d0e473Sopenharmony_cibool WriteBufferToFile(const std::unique_ptr<char[]> &buff, uint32_t len, const std::string &strPathName) 214e5d0e473Sopenharmony_ci{ 215e5d0e473Sopenharmony_ci FILE *pFile = nullptr; 216e5d0e473Sopenharmony_ci pFile = fopen(strPathName.c_str(), "wb"); 217e5d0e473Sopenharmony_ci if (!pFile || buff == nullptr) { 218e5d0e473Sopenharmony_ci return false; 219e5d0e473Sopenharmony_ci } 220e5d0e473Sopenharmony_ci uint32_t fileLen = fwrite(buff.get(), len, 1, pFile); 221e5d0e473Sopenharmony_ci if (fileLen > 0) { 222e5d0e473Sopenharmony_ci TELEPHONY_LOGD("write mms buffer to file success"); 223e5d0e473Sopenharmony_ci } else { 224e5d0e473Sopenharmony_ci TELEPHONY_LOGE("write mms buffer to file error"); 225e5d0e473Sopenharmony_ci } 226e5d0e473Sopenharmony_ci (void)fclose(pFile); 227e5d0e473Sopenharmony_ci return true; 228e5d0e473Sopenharmony_ci} 229e5d0e473Sopenharmony_ci 230e5d0e473Sopenharmony_cibool GetMmsPduFromFile(const std::string &fileName, std::string &mmsPdu) 231e5d0e473Sopenharmony_ci{ 232e5d0e473Sopenharmony_ci char realPath[PATH_MAX] = { 0 }; 233e5d0e473Sopenharmony_ci if (fileName.empty() || realpath(fileName.c_str(), realPath) == nullptr) { 234e5d0e473Sopenharmony_ci TELEPHONY_LOGE("path or realPath is nullptr"); 235e5d0e473Sopenharmony_ci return false; 236e5d0e473Sopenharmony_ci } 237e5d0e473Sopenharmony_ci FILE *pFile = fopen(realPath, "rb"); 238e5d0e473Sopenharmony_ci if (pFile == nullptr) { 239e5d0e473Sopenharmony_ci TELEPHONY_LOGE("openFile Error"); 240e5d0e473Sopenharmony_ci return false; 241e5d0e473Sopenharmony_ci } 242e5d0e473Sopenharmony_ci (void)fseek(pFile, 0, SEEK_END); 243e5d0e473Sopenharmony_ci long fileLen = ftell(pFile); 244e5d0e473Sopenharmony_ci if (fileLen <= 0 || fileLen > static_cast<long>(MMS_PDU_MAX_SIZE)) { 245e5d0e473Sopenharmony_ci (void)fclose(pFile); 246e5d0e473Sopenharmony_ci TELEPHONY_LOGE("fileLen Over Max Error"); 247e5d0e473Sopenharmony_ci return false; 248e5d0e473Sopenharmony_ci } 249e5d0e473Sopenharmony_ci std::unique_ptr<char[]> pduBuffer = std::make_unique<char[]>(fileLen); 250e5d0e473Sopenharmony_ci if (!pduBuffer) { 251e5d0e473Sopenharmony_ci (void)fclose(pFile); 252e5d0e473Sopenharmony_ci TELEPHONY_LOGE("make unique pduBuffer nullptr Error"); 253e5d0e473Sopenharmony_ci return false; 254e5d0e473Sopenharmony_ci } 255e5d0e473Sopenharmony_ci (void)fseek(pFile, 0, SEEK_SET); 256e5d0e473Sopenharmony_ci int32_t totolLength = static_cast<int32_t>(fread(pduBuffer.get(), 1, MMS_PDU_MAX_SIZE, pFile)); 257e5d0e473Sopenharmony_ci TELEPHONY_LOGI("fread totolLength%{public}d", totolLength); 258e5d0e473Sopenharmony_ci long i = 0; 259e5d0e473Sopenharmony_ci while (i < fileLen) { 260e5d0e473Sopenharmony_ci mmsPdu += pduBuffer[i]; 261e5d0e473Sopenharmony_ci i++; 262e5d0e473Sopenharmony_ci } 263e5d0e473Sopenharmony_ci (void)fclose(pFile); 264e5d0e473Sopenharmony_ci return true; 265e5d0e473Sopenharmony_ci} 266e5d0e473Sopenharmony_ci 267e5d0e473Sopenharmony_cistd::vector<std::string> SplitPdu(const std::string &mmsPdu) 268e5d0e473Sopenharmony_ci{ 269e5d0e473Sopenharmony_ci std::vector<std::string> mmsPdus; 270e5d0e473Sopenharmony_ci if (mmsPdu.compare(PDU) == 0) { 271e5d0e473Sopenharmony_ci for (uint32_t locate = 0; locate < MAX_PDU_PAGES; locate++) { 272e5d0e473Sopenharmony_ci mmsPdus.push_back(PDU); 273e5d0e473Sopenharmony_ci } 274e5d0e473Sopenharmony_ci return mmsPdus; 275e5d0e473Sopenharmony_ci } 276e5d0e473Sopenharmony_ci std::string targetMmsPdu; 277e5d0e473Sopenharmony_ci for (size_t i = 0; i < mmsPdu.size(); i++) { 278e5d0e473Sopenharmony_ci targetMmsPdu += static_cast<char>((mmsPdu[i] & HEX_VALUE_0F) | HEX_VALUE_F0); 279e5d0e473Sopenharmony_ci targetMmsPdu += static_cast<char>((mmsPdu[i] & HEX_VALUE_F0) | HEX_VALUE_0F); 280e5d0e473Sopenharmony_ci } 281e5d0e473Sopenharmony_ci std::string mmsPduData; 282e5d0e473Sopenharmony_ci for (uint32_t locate = 0; locate * SPLIT_PDU_LENGTH < targetMmsPdu.size(); locate++) { 283e5d0e473Sopenharmony_ci if ((locate + 1) * SPLIT_PDU_LENGTH < targetMmsPdu.size()) { 284e5d0e473Sopenharmony_ci mmsPduData = targetMmsPdu.substr(locate * SPLIT_PDU_LENGTH, SPLIT_PDU_LENGTH); 285e5d0e473Sopenharmony_ci mmsPdus.push_back(mmsPduData); 286e5d0e473Sopenharmony_ci } else { 287e5d0e473Sopenharmony_ci mmsPduData = targetMmsPdu.substr(locate * SPLIT_PDU_LENGTH); 288e5d0e473Sopenharmony_ci mmsPdus.push_back(mmsPduData); 289e5d0e473Sopenharmony_ci break; 290e5d0e473Sopenharmony_ci } 291e5d0e473Sopenharmony_ci } 292e5d0e473Sopenharmony_ci TELEPHONY_LOGI("pduLen:%{public}zu,targetPduLen:%{public}zu", mmsPdu.size(), targetMmsPdu.size()); 293e5d0e473Sopenharmony_ci return mmsPdus; 294e5d0e473Sopenharmony_ci} 295e5d0e473Sopenharmony_ci 296e5d0e473Sopenharmony_civoid GetPduToFile(int32_t slotId) 297e5d0e473Sopenharmony_ci{ 298e5d0e473Sopenharmony_ci SmsMmsTestHelper smsMmsTestHelper; 299e5d0e473Sopenharmony_ci smsMmsTestHelper.slotId = slotId; 300e5d0e473Sopenharmony_ci std::string dest = "10086"; 301e5d0e473Sopenharmony_ci std::u16string simcardNumber; 302e5d0e473Sopenharmony_ci if (!CoreServiceClient::GetInstance().GetSimTelephoneNumber(smsMmsTestHelper.slotId, simcardNumber) && 303e5d0e473Sopenharmony_ci !simcardNumber.empty()) { 304e5d0e473Sopenharmony_ci dest = StringUtils::ToUtf8(simcardNumber); 305e5d0e473Sopenharmony_ci } 306e5d0e473Sopenharmony_ci MmsMsg encodeMsg; 307e5d0e473Sopenharmony_ci std::vector<MmsAddress> vecAddrs; 308e5d0e473Sopenharmony_ci std::string toAddr = dest + "/TYPE=PLMN"; 309e5d0e473Sopenharmony_ci MmsAddress toAddrs(toAddr); 310e5d0e473Sopenharmony_ci GetSendReqDataTest(encodeMsg, toAddr); 311e5d0e473Sopenharmony_ci vecAddrs.push_back(toAddrs); 312e5d0e473Sopenharmony_ci if (!encodeMsg.SetMmsTo(vecAddrs)) { 313e5d0e473Sopenharmony_ci TELEPHONY_LOGE("SetMmsTo fail"); 314e5d0e473Sopenharmony_ci } 315e5d0e473Sopenharmony_ci const std::string filePathNameText = "/data/app/mms.text"; 316e5d0e473Sopenharmony_ci const char *source = "mms"; 317e5d0e473Sopenharmony_ci size_t sourceLen = std::strlen(source); 318e5d0e473Sopenharmony_ci std::unique_ptr<char[]> text = std::make_unique<char[]>(sourceLen + 1); 319e5d0e473Sopenharmony_ci if (snprintf_s(text.get(), sourceLen + 1, sourceLen + 1, "%s", source) < 0) { 320e5d0e473Sopenharmony_ci TELEPHONY_LOGE("snprintf_s failed"); 321e5d0e473Sopenharmony_ci return; 322e5d0e473Sopenharmony_ci } 323e5d0e473Sopenharmony_ci if (!WriteBufferToFile(std::move(text), std::strlen(source) + 1, filePathNameText)) { 324e5d0e473Sopenharmony_ci TELEPHONY_LOGE("file error."); 325e5d0e473Sopenharmony_ci } 326e5d0e473Sopenharmony_ci if (!MmsAddAttachment(encodeMsg, filePathNameText, "<content.text>", "text/plain", false)) { 327e5d0e473Sopenharmony_ci TELEPHONY_LOGE("MmsAddAttachment text fail"); 328e5d0e473Sopenharmony_ci } 329e5d0e473Sopenharmony_ci uint32_t len = 0; 330e5d0e473Sopenharmony_ci std::unique_ptr<char[]> results = encodeMsg.EncodeMsg(len); 331e5d0e473Sopenharmony_ci if (results == nullptr) { 332e5d0e473Sopenharmony_ci TELEPHONY_LOGE("encode fail result nullptr !!!!"); 333e5d0e473Sopenharmony_ci } 334e5d0e473Sopenharmony_ci if (!WriteBufferToFile(std::move(results), len, MMS_FILE_ADDRESS)) { 335e5d0e473Sopenharmony_ci TELEPHONY_LOGE("Encode write to file error."); 336e5d0e473Sopenharmony_ci } 337e5d0e473Sopenharmony_ci} 338e5d0e473Sopenharmony_ci 339e5d0e473Sopenharmony_cistd::string GetFileToDb() 340e5d0e473Sopenharmony_ci{ 341e5d0e473Sopenharmony_ci std::string mmsPdu; 342e5d0e473Sopenharmony_ci GetMmsPduFromFile(MMS_FILE_ADDRESS, mmsPdu); 343e5d0e473Sopenharmony_ci Uri uri(SMS_PROFILE_MMS_PDU_URI); 344e5d0e473Sopenharmony_ci std::shared_ptr<MmsPersistHelper> mmsPersistHelper = std::make_shared<MmsPersistHelper>(); 345e5d0e473Sopenharmony_ci if (mmsPersistHelper == nullptr) { 346e5d0e473Sopenharmony_ci return ""; 347e5d0e473Sopenharmony_ci } 348e5d0e473Sopenharmony_ci std::shared_ptr<DataShare::DataShareHelper> helper = mmsPersistHelper->CreateSmsHelper(); 349e5d0e473Sopenharmony_ci if (helper == nullptr) { 350e5d0e473Sopenharmony_ci return ""; 351e5d0e473Sopenharmony_ci } 352e5d0e473Sopenharmony_ci std::vector<std::string> mmsPdus = SplitPdu(mmsPdu); 353e5d0e473Sopenharmony_ci std::string dbUrl; 354e5d0e473Sopenharmony_ci for (std::string mmsPdu : mmsPdus) { 355e5d0e473Sopenharmony_ci DataShare::DataShareValuesBucket bucket; 356e5d0e473Sopenharmony_ci bucket.Put(PDU_CONTENT, mmsPdu); 357e5d0e473Sopenharmony_ci int32_t result = helper->Insert(uri, bucket); 358e5d0e473Sopenharmony_ci if (result < 0) { 359e5d0e473Sopenharmony_ci TELEPHONY_LOGE("mms pdu insert fail"); 360e5d0e473Sopenharmony_ci } 361e5d0e473Sopenharmony_ci dbUrl += std::to_string(result) + ','; 362e5d0e473Sopenharmony_ci } 363e5d0e473Sopenharmony_ci helper->Release(); 364e5d0e473Sopenharmony_ci return dbUrl; 365e5d0e473Sopenharmony_ci} 366e5d0e473Sopenharmony_ci 367e5d0e473Sopenharmony_cistd::string GetMmsc(int32_t slotId) 368e5d0e473Sopenharmony_ci{ 369e5d0e473Sopenharmony_ci int32_t simId = CoreManagerInner::GetInstance().GetSimId(slotId); 370e5d0e473Sopenharmony_ci Uri pdpUri(PDP_PROFILE_NET_URI + std::to_string(simId)); 371e5d0e473Sopenharmony_ci std::vector<std::string> colume; 372e5d0e473Sopenharmony_ci DataShare::DataSharePredicates predicates; 373e5d0e473Sopenharmony_ci std::u16string operatorNumeric; 374e5d0e473Sopenharmony_ci CoreServiceClient::GetInstance().GetSimOperatorNumeric(slotId, operatorNumeric); 375e5d0e473Sopenharmony_ci std::string mccmnc = StringUtils::ToUtf8(operatorNumeric); 376e5d0e473Sopenharmony_ci predicates.EqualTo(PdpProfileData::MCCMNC, mccmnc); 377e5d0e473Sopenharmony_ci std::shared_ptr<MmsApnInfo> mmsApnInfo = std::make_shared<MmsApnInfo>(slotId); 378e5d0e473Sopenharmony_ci auto pdpHelper = mmsApnInfo->CreatePdpProfileHelper(); 379e5d0e473Sopenharmony_ci if (pdpHelper == nullptr) { 380e5d0e473Sopenharmony_ci return ""; 381e5d0e473Sopenharmony_ci } 382e5d0e473Sopenharmony_ci auto resultSet = pdpHelper->Query(pdpUri, predicates, colume); 383e5d0e473Sopenharmony_ci if (resultSet == nullptr) { 384e5d0e473Sopenharmony_ci pdpHelper->Release(); 385e5d0e473Sopenharmony_ci return ""; 386e5d0e473Sopenharmony_ci } 387e5d0e473Sopenharmony_ci int count; 388e5d0e473Sopenharmony_ci resultSet->GetRowCount(count); 389e5d0e473Sopenharmony_ci if (count <= 0) { 390e5d0e473Sopenharmony_ci resultSet->Close(); 391e5d0e473Sopenharmony_ci pdpHelper->Release(); 392e5d0e473Sopenharmony_ci return ""; 393e5d0e473Sopenharmony_ci } 394e5d0e473Sopenharmony_ci std::string homeUrlVal; 395e5d0e473Sopenharmony_ci std::string mmsIPAddressVal; 396e5d0e473Sopenharmony_ci if (!mmsApnInfo->GetMmsApnValue(resultSet, count, homeUrlVal, mmsIPAddressVal)) { 397e5d0e473Sopenharmony_ci TELEPHONY_LOGI("homeUrlVal and mmsIPAddressVal not matched"); 398e5d0e473Sopenharmony_ci resultSet->Close(); 399e5d0e473Sopenharmony_ci pdpHelper->Release(); 400e5d0e473Sopenharmony_ci return ""; 401e5d0e473Sopenharmony_ci } 402e5d0e473Sopenharmony_ci resultSet->Close(); 403e5d0e473Sopenharmony_ci pdpHelper->Release(); 404e5d0e473Sopenharmony_ci return homeUrlVal; 405e5d0e473Sopenharmony_ci} 406e5d0e473Sopenharmony_ci 407e5d0e473Sopenharmony_ci/** 408e5d0e473Sopenharmony_ci * @tc.number Telephony_SmsMmsGtest_Receive_Wap_Push_0001 409e5d0e473Sopenharmony_ci * @tc.name Receive a Wap Push 410e5d0e473Sopenharmony_ci * @tc.desc Function test 411e5d0e473Sopenharmony_ci */ 412e5d0e473Sopenharmony_ciHWTEST_F(MmsGtest, Receive_Wap_Push_0001, Function | MediumTest | Level2) 413e5d0e473Sopenharmony_ci{ 414e5d0e473Sopenharmony_ci TELEPHONY_LOGI("TelSMSMMSTest::Receive_Wap_Push_0001 -->"); 415e5d0e473Sopenharmony_ci int32_t slotId = DEFAULT_SIM_SLOT_ID; 416e5d0e473Sopenharmony_ci if (!(MmsGtest::HasSimCard(slotId))) { 417e5d0e473Sopenharmony_ci TELEPHONY_LOGI("TelephonyTestService has no sim card"); 418e5d0e473Sopenharmony_ci ASSERT_FALSE(MmsGtest::HasSimCard(slotId)); 419e5d0e473Sopenharmony_ci return; 420e5d0e473Sopenharmony_ci } 421e5d0e473Sopenharmony_ci SmsMmsTestHelper helper; 422e5d0e473Sopenharmony_ci helper.slotId = slotId; 423e5d0e473Sopenharmony_ci 424e5d0e473Sopenharmony_ci EventFwk::MatchingSkills matchingSkills; 425e5d0e473Sopenharmony_ci matchingSkills.AddEvent(EventFwk::CommonEventSupport::COMMON_EVENT_SMS_WAPPUSH_RECEIVE_COMPLETED); 426e5d0e473Sopenharmony_ci EventFwk::CommonEventSubscribeInfo subscriberInfo(matchingSkills); 427e5d0e473Sopenharmony_ci std::shared_ptr<SmsBroadcastSubscriberGtest> subscriberTest = 428e5d0e473Sopenharmony_ci std::make_shared<SmsBroadcastSubscriberGtest>(subscriberInfo, helper); 429e5d0e473Sopenharmony_ci ASSERT_NE(subscriberTest, nullptr); 430e5d0e473Sopenharmony_ci bool subscribeResult = EventFwk::CommonEventManager::SubscribeCommonEvent(subscriberTest); 431e5d0e473Sopenharmony_ci TELEPHONY_LOGI("subscribeResult is : %{public}d", subscribeResult); 432e5d0e473Sopenharmony_ci 433e5d0e473Sopenharmony_ci if (!helper.Run(ReceiveWapPushTestFunc, helper)) { 434e5d0e473Sopenharmony_ci TELEPHONY_LOGI("ReceiveWapPushTestFunc out of time"); 435e5d0e473Sopenharmony_ci ASSERT_TRUE(helper.Run(ReceiveWapPushTestFunc, helper)); 436e5d0e473Sopenharmony_ci return; 437e5d0e473Sopenharmony_ci } 438e5d0e473Sopenharmony_ci TELEPHONY_LOGI("TelSMSMMSTest::Receive_Wap_Push_0001 -->finished"); 439e5d0e473Sopenharmony_ci EXPECT_TRUE(helper.GetBoolResult()); 440e5d0e473Sopenharmony_ci} 441e5d0e473Sopenharmony_ci 442e5d0e473Sopenharmony_ci/** 443e5d0e473Sopenharmony_ci * @tc.number Telephony_SmsMmsGtest_Receive_Wap_Push_0002 444e5d0e473Sopenharmony_ci * @tc.name Receive a Wap Push 445e5d0e473Sopenharmony_ci * @tc.desc Function test 446e5d0e473Sopenharmony_ci */ 447e5d0e473Sopenharmony_ciHWTEST_F(MmsGtest, Receive_Wap_Push_0002, Function | MediumTest | Level2) 448e5d0e473Sopenharmony_ci{ 449e5d0e473Sopenharmony_ci TELEPHONY_LOGI("TelSMSMMSTest::Receive_Wap_Push_0002 -->"); 450e5d0e473Sopenharmony_ci int32_t slotId = DEFAULT_SIM_SLOT_ID_1; 451e5d0e473Sopenharmony_ci if (!(MmsGtest::HasSimCard(slotId))) { 452e5d0e473Sopenharmony_ci TELEPHONY_LOGI("TelephonyTestService has no sim card"); 453e5d0e473Sopenharmony_ci ASSERT_FALSE(MmsGtest::HasSimCard(slotId)); 454e5d0e473Sopenharmony_ci return; 455e5d0e473Sopenharmony_ci } 456e5d0e473Sopenharmony_ci SmsMmsTestHelper helper; 457e5d0e473Sopenharmony_ci helper.slotId = slotId; 458e5d0e473Sopenharmony_ci 459e5d0e473Sopenharmony_ci EventFwk::MatchingSkills matchingSkills; 460e5d0e473Sopenharmony_ci matchingSkills.AddEvent(EventFwk::CommonEventSupport::COMMON_EVENT_SMS_WAPPUSH_RECEIVE_COMPLETED); 461e5d0e473Sopenharmony_ci EventFwk::CommonEventSubscribeInfo subscriberInfo(matchingSkills); 462e5d0e473Sopenharmony_ci std::shared_ptr<SmsBroadcastSubscriberGtest> subscriberTest = 463e5d0e473Sopenharmony_ci std::make_shared<SmsBroadcastSubscriberGtest>(subscriberInfo, helper); 464e5d0e473Sopenharmony_ci ASSERT_NE(subscriberTest, nullptr); 465e5d0e473Sopenharmony_ci bool subscribeResult = EventFwk::CommonEventManager::SubscribeCommonEvent(subscriberTest); 466e5d0e473Sopenharmony_ci TELEPHONY_LOGI("subscribeResult is : %{public}d", subscribeResult); 467e5d0e473Sopenharmony_ci 468e5d0e473Sopenharmony_ci if (!helper.Run(ReceiveWapPushTestFunc, helper)) { 469e5d0e473Sopenharmony_ci TELEPHONY_LOGI("ReceiveWapPushTestFunc out of time"); 470e5d0e473Sopenharmony_ci ASSERT_FALSE(helper.Run(ReceiveWapPushTestFunc, helper)); 471e5d0e473Sopenharmony_ci return; 472e5d0e473Sopenharmony_ci } 473e5d0e473Sopenharmony_ci TELEPHONY_LOGI("TelSMSMMSTest::Receive_Wap_Push_0002 -->finished"); 474e5d0e473Sopenharmony_ci EXPECT_TRUE(helper.GetBoolResult()); 475e5d0e473Sopenharmony_ci} 476e5d0e473Sopenharmony_ci 477e5d0e473Sopenharmony_ci/** 478e5d0e473Sopenharmony_ci * @tc.number Telephony_SmsMmsGtest_MmsAddress_0001 479e5d0e473Sopenharmony_ci * @tc.name Test MmsAddress 480e5d0e473Sopenharmony_ci * @tc.desc Function test 481e5d0e473Sopenharmony_ci */ 482e5d0e473Sopenharmony_ciHWTEST_F(MmsGtest, MmsAddress_0001, Function | MediumTest | Level1) 483e5d0e473Sopenharmony_ci{ 484e5d0e473Sopenharmony_ci TELEPHONY_LOGI("TelSMSMMSTest::MmsAddress_0001 -->"); 485e5d0e473Sopenharmony_ci MmsAddress address; 486e5d0e473Sopenharmony_ci address.SetMmsAddressString("12345678/TYPE=PLMN"); 487e5d0e473Sopenharmony_ci address.SetMmsAddressString("12345678/TYPE=IPv4"); 488e5d0e473Sopenharmony_ci address.SetMmsAddressString("12345678/TYPE=IPv6"); 489e5d0e473Sopenharmony_ci address.SetMmsAddressString("12345678/TYPE=UNKNOWN"); 490e5d0e473Sopenharmony_ci address.SetMmsAddressString("12345678/TYPE=EMAIL"); 491e5d0e473Sopenharmony_ci std::string ret = address.GetAddressString(); 492e5d0e473Sopenharmony_ci EXPECT_STREQ(ret.c_str(), "12345678/TYPE=EMAIL"); 493e5d0e473Sopenharmony_ci MmsAddress::MmsAddressType type = address.GetAddressType(); 494e5d0e473Sopenharmony_ci EXPECT_EQ(type, MmsAddress::MmsAddressType::ADDRESS_TYPE_PLMN); 495e5d0e473Sopenharmony_ci MmsCharSets charset = address.GetAddressCharset(); 496e5d0e473Sopenharmony_ci EXPECT_EQ(charset, MmsCharSets::UTF_8); 497e5d0e473Sopenharmony_ci} 498e5d0e473Sopenharmony_ci 499e5d0e473Sopenharmony_ci/** 500e5d0e473Sopenharmony_ci * @tc.number Telephony_SmsMmsGtest_MmsAttachment_0001 501e5d0e473Sopenharmony_ci * @tc.name Test MmsAttachment 502e5d0e473Sopenharmony_ci * @tc.desc Function test 503e5d0e473Sopenharmony_ci */ 504e5d0e473Sopenharmony_ciHWTEST_F(MmsGtest, MmsAttachment_0001, Function | MediumTest | Level1) 505e5d0e473Sopenharmony_ci{ 506e5d0e473Sopenharmony_ci TELEPHONY_LOGI("TelSMSMMSTest::MmsAttachment_0001 -->"); 507e5d0e473Sopenharmony_ci const std::string pathName = "/data/app/enSrc/618C0A89.smil"; 508e5d0e473Sopenharmony_ci std::size_t pos = pathName.find_last_of('/'); 509e5d0e473Sopenharmony_ci std::string fileName(pathName.substr(pos + 1)); 510e5d0e473Sopenharmony_ci MmsAttachment attachment; 511e5d0e473Sopenharmony_ci bool retBool; 512e5d0e473Sopenharmony_ci std::string retStr; 513e5d0e473Sopenharmony_ci retBool = attachment.SetAttachmentFilePath("", false); 514e5d0e473Sopenharmony_ci EXPECT_EQ(false, retBool); 515e5d0e473Sopenharmony_ci retBool = attachment.SetAttachmentFilePath(pathName, true); 516e5d0e473Sopenharmony_ci EXPECT_EQ(true, retBool); 517e5d0e473Sopenharmony_ci retStr = attachment.GetAttachmentFilePath(); 518e5d0e473Sopenharmony_ci EXPECT_STREQ(retStr.c_str(), pathName.c_str()); 519e5d0e473Sopenharmony_ci retBool = attachment.SetContentId(""); 520e5d0e473Sopenharmony_ci EXPECT_EQ(false, retBool); 521e5d0e473Sopenharmony_ci retBool = attachment.SetContentId("0000"); 522e5d0e473Sopenharmony_ci EXPECT_EQ(true, retBool); 523e5d0e473Sopenharmony_ci retBool = attachment.SetContentId("<0000>"); 524e5d0e473Sopenharmony_ci EXPECT_EQ(true, retBool); 525e5d0e473Sopenharmony_ci retStr = attachment.GetContentId(); 526e5d0e473Sopenharmony_ci EXPECT_STREQ(retStr.c_str(), "<0000>"); 527e5d0e473Sopenharmony_ci retBool = attachment.SetContentLocation(""); 528e5d0e473Sopenharmony_ci EXPECT_EQ(false, retBool); 529e5d0e473Sopenharmony_ci retBool = attachment.SetContentLocation("SetContentLocation"); 530e5d0e473Sopenharmony_ci EXPECT_EQ(true, retBool); 531e5d0e473Sopenharmony_ci retStr = attachment.GetContentLocation(); 532e5d0e473Sopenharmony_ci EXPECT_STREQ(retStr.c_str(), "SetContentLocation"); 533e5d0e473Sopenharmony_ci retBool = attachment.SetContentDisposition(""); 534e5d0e473Sopenharmony_ci EXPECT_EQ(false, retBool); 535e5d0e473Sopenharmony_ci retBool = attachment.SetContentDisposition("attachment"); 536e5d0e473Sopenharmony_ci EXPECT_EQ(true, retBool); 537e5d0e473Sopenharmony_ci retStr = attachment.GetContentDisposition(); 538e5d0e473Sopenharmony_ci EXPECT_STREQ(retStr.c_str(), "attachment"); 539e5d0e473Sopenharmony_ci retBool = attachment.SetContentTransferEncoding(""); 540e5d0e473Sopenharmony_ci EXPECT_EQ(false, retBool); 541e5d0e473Sopenharmony_ci retBool = attachment.SetFileName(fileName); 542e5d0e473Sopenharmony_ci EXPECT_EQ(true, retBool); 543e5d0e473Sopenharmony_ci retStr = attachment.GetFileName(); 544e5d0e473Sopenharmony_ci EXPECT_STREQ(retStr.c_str(), fileName.c_str()); 545e5d0e473Sopenharmony_ci attachment.strFileName_ = ""; 546e5d0e473Sopenharmony_ci retStr = attachment.GetFileName(); 547e5d0e473Sopenharmony_ci EXPECT_STRNE(retStr.c_str(), fileName.c_str()); 548e5d0e473Sopenharmony_ci} 549e5d0e473Sopenharmony_ci 550e5d0e473Sopenharmony_ci/** 551e5d0e473Sopenharmony_ci * @tc.number Telephony_SmsMmsGtest_MmsAttachment_0002 552e5d0e473Sopenharmony_ci * @tc.name Test MmsAttachment 553e5d0e473Sopenharmony_ci * @tc.desc Function test 554e5d0e473Sopenharmony_ci */ 555e5d0e473Sopenharmony_ciHWTEST_F(MmsGtest, MmsAttachment_0002, Function | MediumTest | Level1) 556e5d0e473Sopenharmony_ci{ 557e5d0e473Sopenharmony_ci TELEPHONY_LOGI("TelSMSMMSTest::MmsAttachment_0002 -->"); 558e5d0e473Sopenharmony_ci MmsAttachment attachment; 559e5d0e473Sopenharmony_ci bool retBool; 560e5d0e473Sopenharmony_ci std::string retStr; 561e5d0e473Sopenharmony_ci uint32_t retU32t; 562e5d0e473Sopenharmony_ci uint32_t len = 10 * 1024 * 1024; 563e5d0e473Sopenharmony_ci uint32_t charset = 0; 564e5d0e473Sopenharmony_ci retBool = attachment.SetContentTransferEncoding("SetContentTransferEncoding"); 565e5d0e473Sopenharmony_ci EXPECT_EQ(true, retBool); 566e5d0e473Sopenharmony_ci retStr = attachment.GetContentTransferEncoding(); 567e5d0e473Sopenharmony_ci EXPECT_STREQ(retStr.c_str(), "SetContentTransferEncoding"); 568e5d0e473Sopenharmony_ci retBool = attachment.SetContentType(""); 569e5d0e473Sopenharmony_ci EXPECT_EQ(false, retBool); 570e5d0e473Sopenharmony_ci attachment.SetIsSmilFile(true); 571e5d0e473Sopenharmony_ci retBool = attachment.IsSmilFile(); 572e5d0e473Sopenharmony_ci EXPECT_EQ(true, retBool); 573e5d0e473Sopenharmony_ci attachment.SetCharSet(charset); 574e5d0e473Sopenharmony_ci retU32t = attachment.GetCharSet(); 575e5d0e473Sopenharmony_ci EXPECT_EQ(charset, retU32t); 576e5d0e473Sopenharmony_ci retBool = attachment.SetDataBuffer(nullptr, 0); 577e5d0e473Sopenharmony_ci retBool = attachment.SetDataBuffer(nullptr, MAX_MMS_ATTACHMENT_LEN + 1); 578e5d0e473Sopenharmony_ci EXPECT_EQ(false, retBool); 579e5d0e473Sopenharmony_ci retBool = attachment.SetDataBuffer(std::make_unique<char[]>(len + 1), len + 1); 580e5d0e473Sopenharmony_ci EXPECT_EQ(false, retBool); 581e5d0e473Sopenharmony_ci retBool = attachment.SetDataBuffer(std::make_unique<char[]>(len - 1), len - 1); 582e5d0e473Sopenharmony_ci EXPECT_EQ(true, retBool); 583e5d0e473Sopenharmony_ci retBool = attachment.SetDataBuffer(std::make_unique<char[]>(len - 1), len + 1); 584e5d0e473Sopenharmony_ci EXPECT_EQ(false, retBool); 585e5d0e473Sopenharmony_ci EXPECT_FALSE(attachment.GetDataBuffer(len) == nullptr); 586e5d0e473Sopenharmony_ci attachment.dataLength_ = MAX_MMS_ATTACHMENT_LEN + 1; 587e5d0e473Sopenharmony_ci EXPECT_TRUE(attachment.GetDataBuffer(len) == nullptr); 588e5d0e473Sopenharmony_ci MmsAttachment attachment1(attachment); 589e5d0e473Sopenharmony_ci attachment1.SetContentType("application/smil"); 590e5d0e473Sopenharmony_ci retStr = attachment1.GetContentType(); 591e5d0e473Sopenharmony_ci EXPECT_STREQ(retStr.c_str(), "application/smil"); 592e5d0e473Sopenharmony_ci} 593e5d0e473Sopenharmony_ci 594e5d0e473Sopenharmony_ci/** 595e5d0e473Sopenharmony_ci * @tc.number Telephony_SmsMmsGtest_MmsBodyPartHeader_0001 596e5d0e473Sopenharmony_ci * @tc.name Test MmsBodyPartHeader 597e5d0e473Sopenharmony_ci * @tc.desc Function test 598e5d0e473Sopenharmony_ci */ 599e5d0e473Sopenharmony_ciHWTEST_F(MmsGtest, MmsBodyPartHeader_0001, Function | MediumTest | Level1) 600e5d0e473Sopenharmony_ci{ 601e5d0e473Sopenharmony_ci TELEPHONY_LOGI("TelSMSMMSTest::MmsBodyPartHeader_0001 -->"); 602e5d0e473Sopenharmony_ci MmsBodyPartHeader mmsBodyPartHeader; 603e5d0e473Sopenharmony_ci MmsDecodeBuffer decodeBuffer; 604e5d0e473Sopenharmony_ci std::string testStr; 605e5d0e473Sopenharmony_ci uint32_t len = 0; 606e5d0e473Sopenharmony_ci uint32_t lenErr = -1; 607e5d0e473Sopenharmony_ci uint32_t lenMax = 300 * 1024; 608e5d0e473Sopenharmony_ci mmsBodyPartHeader.DumpBodyPartHeader(); 609e5d0e473Sopenharmony_ci mmsBodyPartHeader.DecodeContentLocation(decodeBuffer, len); 610e5d0e473Sopenharmony_ci mmsBodyPartHeader.DecodeContentId(decodeBuffer, len); 611e5d0e473Sopenharmony_ci mmsBodyPartHeader.DecodeContentDisposition(decodeBuffer, len); 612e5d0e473Sopenharmony_ci mmsBodyPartHeader.DecodeDispositionParameter(decodeBuffer, lenMax, len); 613e5d0e473Sopenharmony_ci mmsBodyPartHeader.DecodeDispositionParameter(decodeBuffer, lenErr, len); 614e5d0e473Sopenharmony_ci mmsBodyPartHeader.DecodeWellKnownHeader(decodeBuffer, len); 615e5d0e473Sopenharmony_ci mmsBodyPartHeader.DecodeApplicationHeader(decodeBuffer, len); 616e5d0e473Sopenharmony_ci mmsBodyPartHeader.SetContentId("contentId"); 617e5d0e473Sopenharmony_ci mmsBodyPartHeader.GetContentId(testStr); 618e5d0e473Sopenharmony_ci EXPECT_STREQ(testStr.c_str(), "contentId"); 619e5d0e473Sopenharmony_ci mmsBodyPartHeader.SetContentTransferEncoding("contentTransferEncoding"); 620e5d0e473Sopenharmony_ci mmsBodyPartHeader.GetContentTransferEncoding(testStr); 621e5d0e473Sopenharmony_ci EXPECT_STREQ(testStr.c_str(), "contentTransferEncoding"); 622e5d0e473Sopenharmony_ci mmsBodyPartHeader.SetContentLocation("contentLocation"); 623e5d0e473Sopenharmony_ci mmsBodyPartHeader.GetContentLocation(testStr); 624e5d0e473Sopenharmony_ci EXPECT_STREQ(testStr.c_str(), "contentLocation"); 625e5d0e473Sopenharmony_ci MmsEncodeBuffer encodeBuffer; 626e5d0e473Sopenharmony_ci mmsBodyPartHeader.EncodeContentLocation(encodeBuffer); 627e5d0e473Sopenharmony_ci mmsBodyPartHeader.EncodeContentId(encodeBuffer); 628e5d0e473Sopenharmony_ci mmsBodyPartHeader.EncodeContentDisposition(encodeBuffer); 629e5d0e473Sopenharmony_ci mmsBodyPartHeader.EncodeContentTransferEncoding(encodeBuffer); 630e5d0e473Sopenharmony_ci mmsBodyPartHeader.EncodeMmsBodyPartHeader(encodeBuffer); 631e5d0e473Sopenharmony_ci MmsBodyPartHeader mmsBodyPartHeader2; 632e5d0e473Sopenharmony_ci MmsBodyPartHeader mmsBodyPartHeader3 = MmsBodyPartHeader(mmsBodyPartHeader); 633e5d0e473Sopenharmony_ci mmsBodyPartHeader2 = mmsBodyPartHeader; 634e5d0e473Sopenharmony_ci mmsBodyPartHeader2.SetContentDisposition("contentDisposition"); 635e5d0e473Sopenharmony_ci mmsBodyPartHeader2.GetContentDisposition(testStr); 636e5d0e473Sopenharmony_ci EXPECT_STREQ(testStr.c_str(), "contentDisposition"); 637e5d0e473Sopenharmony_ci} 638e5d0e473Sopenharmony_ci 639e5d0e473Sopenharmony_ci/** 640e5d0e473Sopenharmony_ci * @tc.number Telephony_SmsMmsGtest_MmsBuffer_0001 641e5d0e473Sopenharmony_ci * @tc.name Test MmsBuffer 642e5d0e473Sopenharmony_ci * @tc.desc Function test 643e5d0e473Sopenharmony_ci */ 644e5d0e473Sopenharmony_ciHWTEST_F(MmsGtest, MmsBuffer_0001, Function | MediumTest | Level1) 645e5d0e473Sopenharmony_ci{ 646e5d0e473Sopenharmony_ci TELEPHONY_LOGI("TelSMSMMSTest::MmsBuffer_0001 -->"); 647e5d0e473Sopenharmony_ci MmsBuffer mmsBuffer; 648e5d0e473Sopenharmony_ci uint32_t len = 10; 649e5d0e473Sopenharmony_ci bool retBool; 650e5d0e473Sopenharmony_ci std::string strPathName = "/data/app/enSrc/618C0A89.smil"; 651e5d0e473Sopenharmony_ci mmsBuffer.ReadDataBuffer(len); 652e5d0e473Sopenharmony_ci mmsBuffer.ReadDataBuffer(len, len); 653e5d0e473Sopenharmony_ci retBool = mmsBuffer.WriteDataBuffer(std::make_unique<char[]>(len), 0); 654e5d0e473Sopenharmony_ci EXPECT_EQ(false, retBool); 655e5d0e473Sopenharmony_ci retBool = mmsBuffer.WriteDataBuffer(std::make_unique<char[]>(len), len); 656e5d0e473Sopenharmony_ci EXPECT_EQ(true, retBool); 657e5d0e473Sopenharmony_ci mmsBuffer.WriteBufferFromFile(strPathName); 658e5d0e473Sopenharmony_ci mmsBuffer.GetCurPosition(); 659e5d0e473Sopenharmony_ci uint32_t ret = mmsBuffer.GetSize(); 660e5d0e473Sopenharmony_ci EXPECT_GE(ret, 0); 661e5d0e473Sopenharmony_ci} 662e5d0e473Sopenharmony_ci 663e5d0e473Sopenharmony_ci/** 664e5d0e473Sopenharmony_ci * @tc.number Telephony_SmsMmsGtest_MmsContentParam_0001 665e5d0e473Sopenharmony_ci * @tc.name Test MmsContentParam 666e5d0e473Sopenharmony_ci * @tc.desc Function test 667e5d0e473Sopenharmony_ci */ 668e5d0e473Sopenharmony_ciHWTEST_F(MmsGtest, MmsContentParam_0001, Function | MediumTest | Level1) 669e5d0e473Sopenharmony_ci{ 670e5d0e473Sopenharmony_ci TELEPHONY_LOGI("TelSMSMMSTest::MmsContentParam_0001 -->"); 671e5d0e473Sopenharmony_ci MmsContentParam mmsContentParam; 672e5d0e473Sopenharmony_ci MmsContentParam mmsContentParam2; 673e5d0e473Sopenharmony_ci uint8_t field = 1; 674e5d0e473Sopenharmony_ci uint32_t charset = 10; 675e5d0e473Sopenharmony_ci std::string testStr; 676e5d0e473Sopenharmony_ci uint32_t retU32t; 677e5d0e473Sopenharmony_ci mmsContentParam.DumpContentParam(); 678e5d0e473Sopenharmony_ci mmsContentParam.SetCharSet(charset); 679e5d0e473Sopenharmony_ci retU32t = mmsContentParam.GetCharSet(); 680e5d0e473Sopenharmony_ci EXPECT_EQ(charset, retU32t); 681e5d0e473Sopenharmony_ci mmsContentParam.SetType("type"); 682e5d0e473Sopenharmony_ci testStr = mmsContentParam.GetType(); 683e5d0e473Sopenharmony_ci EXPECT_STREQ(testStr.c_str(), "type"); 684e5d0e473Sopenharmony_ci mmsContentParam.SetFileName(""); 685e5d0e473Sopenharmony_ci mmsContentParam.SetStart(""); 686e5d0e473Sopenharmony_ci mmsContentParam.SetStart("start"); 687e5d0e473Sopenharmony_ci mmsContentParam.GetStart(testStr); 688e5d0e473Sopenharmony_ci EXPECT_STREQ(testStr.c_str(), "start"); 689e5d0e473Sopenharmony_ci mmsContentParam.AddNormalField(field, "value"); 690e5d0e473Sopenharmony_ci mmsContentParam.GetNormalField(field, testStr); 691e5d0e473Sopenharmony_ci EXPECT_STREQ(testStr.c_str(), "value"); 692e5d0e473Sopenharmony_ci mmsContentParam.GetParamMap(); 693e5d0e473Sopenharmony_ci mmsContentParam2 = mmsContentParam; 694e5d0e473Sopenharmony_ci mmsContentParam2.SetFileName("fileName"); 695e5d0e473Sopenharmony_ci mmsContentParam2.GetFileName(testStr); 696e5d0e473Sopenharmony_ci EXPECT_STREQ(testStr.c_str(), "fileName"); 697e5d0e473Sopenharmony_ci 698e5d0e473Sopenharmony_ci mmsContentParam.textMap_.clear(); 699e5d0e473Sopenharmony_ci mmsContentParam.AddNormalField(field, "value"); 700e5d0e473Sopenharmony_ci mmsContentParam.textMap_.clear(); 701e5d0e473Sopenharmony_ci mmsContentParam.GetNormalField(field, testStr); 702e5d0e473Sopenharmony_ci mmsContentParam.GetStart(testStr); 703e5d0e473Sopenharmony_ci mmsContentParam2.GetFileName(testStr); 704e5d0e473Sopenharmony_ci mmsContentParam.DumpContentParam(); 705e5d0e473Sopenharmony_ci EXPECT_STREQ(testStr.c_str(), "fileName"); 706e5d0e473Sopenharmony_ci} 707e5d0e473Sopenharmony_ci 708e5d0e473Sopenharmony_ci/** 709e5d0e473Sopenharmony_ci * @tc.number Telephony_SmsMmsGtest_MmsContentType_0001 710e5d0e473Sopenharmony_ci * @tc.name Test MmsContentType 711e5d0e473Sopenharmony_ci * @tc.desc Function test 712e5d0e473Sopenharmony_ci */ 713e5d0e473Sopenharmony_ciHWTEST_F(MmsGtest, MmsContentType_0001, Function | MediumTest | Level1) 714e5d0e473Sopenharmony_ci{ 715e5d0e473Sopenharmony_ci TELEPHONY_LOGI("TelSMSMMSTest::MmsContentType_0001 -->"); 716e5d0e473Sopenharmony_ci MmsContentType mmsContentType; 717e5d0e473Sopenharmony_ci MmsDecodeBuffer decodeBuffer; 718e5d0e473Sopenharmony_ci MmsContentParam contentParam; 719e5d0e473Sopenharmony_ci int32_t len = 10; 720e5d0e473Sopenharmony_ci uint8_t type = 10; 721e5d0e473Sopenharmony_ci std::string testStr; 722e5d0e473Sopenharmony_ci uint8_t count = 10; 723e5d0e473Sopenharmony_ci uint8_t index = 0; 724e5d0e473Sopenharmony_ci while (index < count) { 725e5d0e473Sopenharmony_ci decodeBuffer.pduBuffer_[index] = '1'; 726e5d0e473Sopenharmony_ci index++; 727e5d0e473Sopenharmony_ci } 728e5d0e473Sopenharmony_ci mmsContentType.DumpMmsContentType(); 729e5d0e473Sopenharmony_ci 730e5d0e473Sopenharmony_ci decodeBuffer.curPosition_ = 0; 731e5d0e473Sopenharmony_ci decodeBuffer.pduBuffer_[decodeBuffer.curPosition_++] = PDU_TEST_DATA; 732e5d0e473Sopenharmony_ci decodeBuffer.pduBuffer_[decodeBuffer.curPosition_++] = PDU_TEST_DATA; 733e5d0e473Sopenharmony_ci decodeBuffer.pduBuffer_[decodeBuffer.curPosition_] = PDU_TEST_DATA; 734e5d0e473Sopenharmony_ci mmsContentType.DecodeMmsContentType(decodeBuffer, len); 735e5d0e473Sopenharmony_ci 736e5d0e473Sopenharmony_ci decodeBuffer.curPosition_ = 0; 737e5d0e473Sopenharmony_ci mmsContentType.DecodeMmsCTGeneralForm(decodeBuffer, len); 738e5d0e473Sopenharmony_ci mmsContentType.GetContentTypeFromInt(type); 739e5d0e473Sopenharmony_ci mmsContentType.GetContentTypeFromString(""); 740e5d0e473Sopenharmony_ci 741e5d0e473Sopenharmony_ci decodeBuffer.curPosition_ = 0; 742e5d0e473Sopenharmony_ci mmsContentType.DecodeParameter(decodeBuffer, len); 743e5d0e473Sopenharmony_ci mmsContentType.SetContentParam(contentParam); 744e5d0e473Sopenharmony_ci mmsContentType.DecodeTextField(decodeBuffer, type, len); 745e5d0e473Sopenharmony_ci 746e5d0e473Sopenharmony_ci decodeBuffer.curPosition_ = 0; 747e5d0e473Sopenharmony_ci mmsContentType.DecodeCharsetField(decodeBuffer, len); 748e5d0e473Sopenharmony_ci mmsContentType.DecodeTypeField(decodeBuffer, len); 749e5d0e473Sopenharmony_ci 750e5d0e473Sopenharmony_ci MmsEncodeBuffer encodeBuffer; 751e5d0e473Sopenharmony_ci mmsContentType.EncodeTextField(encodeBuffer); 752e5d0e473Sopenharmony_ci mmsContentType.EncodeCharsetField(encodeBuffer); 753e5d0e473Sopenharmony_ci mmsContentType.EncodeTypeField(encodeBuffer); 754e5d0e473Sopenharmony_ci mmsContentType.EncodeMmsBodyPartContentParam(encodeBuffer); 755e5d0e473Sopenharmony_ci mmsContentType.EncodeMmsBodyPartContentType(encodeBuffer); 756e5d0e473Sopenharmony_ci mmsContentType.GetContentParam(); 757e5d0e473Sopenharmony_ci MmsContentType mmsContentType2(mmsContentType); 758e5d0e473Sopenharmony_ci mmsContentType2 = mmsContentType; 759e5d0e473Sopenharmony_ci mmsContentType2.SetContentType("contentType"); 760e5d0e473Sopenharmony_ci mmsContentType2.GetContentType(testStr); 761e5d0e473Sopenharmony_ci EXPECT_STREQ(testStr.c_str(), "contentType"); 762e5d0e473Sopenharmony_ci} 763e5d0e473Sopenharmony_ci 764e5d0e473Sopenharmony_ci/** 765e5d0e473Sopenharmony_ci * @tc.number Telephony_SmsMmsGtest_MmsDecodeBuffer_0001 766e5d0e473Sopenharmony_ci * @tc.name Test MmsDecodeBuffer 767e5d0e473Sopenharmony_ci * @tc.desc Function test 768e5d0e473Sopenharmony_ci */ 769e5d0e473Sopenharmony_ciHWTEST_F(MmsGtest, MmsDecodeBuffer_0001, Function | MediumTest | Level1) 770e5d0e473Sopenharmony_ci{ 771e5d0e473Sopenharmony_ci TELEPHONY_LOGI("TelSMSMMSTest::MmsDecodeBuffer_0001 -->"); 772e5d0e473Sopenharmony_ci uint8_t byteVar = 1; 773e5d0e473Sopenharmony_ci uint32_t intVar = PDU_COUNT; 774e5d0e473Sopenharmony_ci std::string testStr; 775e5d0e473Sopenharmony_ci MmsDecodeBuffer mmsDecodeBuffer; 776e5d0e473Sopenharmony_ci uint8_t count = PDU_COUNT; 777e5d0e473Sopenharmony_ci uint8_t index = 0; 778e5d0e473Sopenharmony_ci while (index < count) { 779e5d0e473Sopenharmony_ci mmsDecodeBuffer.pduBuffer_[index] = '1'; 780e5d0e473Sopenharmony_ci index++; 781e5d0e473Sopenharmony_ci } 782e5d0e473Sopenharmony_ci 783e5d0e473Sopenharmony_ci mmsDecodeBuffer.PeekOneByte(byteVar); 784e5d0e473Sopenharmony_ci mmsDecodeBuffer.GetOneByte(byteVar); 785e5d0e473Sopenharmony_ci mmsDecodeBuffer.IncreasePointer(intVar); 786e5d0e473Sopenharmony_ci mmsDecodeBuffer.DecreasePointer(intVar); 787e5d0e473Sopenharmony_ci mmsDecodeBuffer.curPosition_ = PDU_CUSITION; 788e5d0e473Sopenharmony_ci mmsDecodeBuffer.totolLength_ = PDU_LENGTH; 789e5d0e473Sopenharmony_ci mmsDecodeBuffer.PeekOneByte(byteVar); 790e5d0e473Sopenharmony_ci mmsDecodeBuffer.GetOneByte(byteVar); 791e5d0e473Sopenharmony_ci mmsDecodeBuffer.IncreasePointer(intVar); 792e5d0e473Sopenharmony_ci mmsDecodeBuffer.DecreasePointer(intVar); 793e5d0e473Sopenharmony_ci 794e5d0e473Sopenharmony_ci mmsDecodeBuffer.curPosition_ = 0; 795e5d0e473Sopenharmony_ci mmsDecodeBuffer.DecodeUintvar(intVar, intVar); 796e5d0e473Sopenharmony_ci mmsDecodeBuffer.DecodeShortLength(byteVar); 797e5d0e473Sopenharmony_ci 798e5d0e473Sopenharmony_ci char testChar = MIN_SHORT_OCTET + 1; 799e5d0e473Sopenharmony_ci mmsDecodeBuffer.pduBuffer_[mmsDecodeBuffer.curPosition_] = testChar; 800e5d0e473Sopenharmony_ci mmsDecodeBuffer.DecodeShortLength(byteVar); 801e5d0e473Sopenharmony_ci mmsDecodeBuffer.curPosition_ = 0; 802e5d0e473Sopenharmony_ci mmsDecodeBuffer.pduBuffer_[mmsDecodeBuffer.curPosition_] = MIN_SHORT_OCTET; 803e5d0e473Sopenharmony_ci mmsDecodeBuffer.DecodeValueLengthReturnLen(intVar, intVar); 804e5d0e473Sopenharmony_ci mmsDecodeBuffer.pduBuffer_[mmsDecodeBuffer.curPosition_] = testChar; 805e5d0e473Sopenharmony_ci mmsDecodeBuffer.DecodeValueLengthReturnLen(intVar, intVar); 806e5d0e473Sopenharmony_ci mmsDecodeBuffer.pduBuffer_[mmsDecodeBuffer.curPosition_] = testChar + 1; 807e5d0e473Sopenharmony_ci mmsDecodeBuffer.DecodeValueLengthReturnLen(intVar, intVar); 808e5d0e473Sopenharmony_ci 809e5d0e473Sopenharmony_ci uint8_t errVar = -1; 810e5d0e473Sopenharmony_ci bool ret = mmsDecodeBuffer.CharIsToken(errVar); 811e5d0e473Sopenharmony_ci EXPECT_EQ(false, ret); 812e5d0e473Sopenharmony_ci} 813e5d0e473Sopenharmony_ci 814e5d0e473Sopenharmony_ci/** 815e5d0e473Sopenharmony_ci * @tc.number Telephony_SmsMmsGtest_MmsDecodeBuffer_0002 816e5d0e473Sopenharmony_ci * @tc.name Test MmsDecodeBuffer 817e5d0e473Sopenharmony_ci * @tc.desc Function test 818e5d0e473Sopenharmony_ci */ 819e5d0e473Sopenharmony_ciHWTEST_F(MmsGtest, MmsDecodeBuffer_0002, Function | MediumTest | Level1) 820e5d0e473Sopenharmony_ci{ 821e5d0e473Sopenharmony_ci TELEPHONY_LOGI("TelSMSMMSTest::MmsDecodeBuffer_0002 -->"); 822e5d0e473Sopenharmony_ci uint32_t intVar = 10; 823e5d0e473Sopenharmony_ci std::string testStr; 824e5d0e473Sopenharmony_ci MmsDecodeBuffer mmsDecodeBuffer; 825e5d0e473Sopenharmony_ci uint8_t count = 10; 826e5d0e473Sopenharmony_ci uint8_t index = 0; 827e5d0e473Sopenharmony_ci while (index < count) { 828e5d0e473Sopenharmony_ci mmsDecodeBuffer.pduBuffer_[index] = '1'; 829e5d0e473Sopenharmony_ci index++; 830e5d0e473Sopenharmony_ci } 831e5d0e473Sopenharmony_ci mmsDecodeBuffer.curPosition_ = 0; 832e5d0e473Sopenharmony_ci char testChar = MIN_SHORT_OCTET + 1; 833e5d0e473Sopenharmony_ci mmsDecodeBuffer.pduBuffer_[mmsDecodeBuffer.curPosition_] = MIN_SHORT_OCTET; 834e5d0e473Sopenharmony_ci mmsDecodeBuffer.DecodeValueLength(intVar); 835e5d0e473Sopenharmony_ci mmsDecodeBuffer.pduBuffer_[mmsDecodeBuffer.curPosition_] = testChar; 836e5d0e473Sopenharmony_ci mmsDecodeBuffer.DecodeValueLength(intVar); 837e5d0e473Sopenharmony_ci mmsDecodeBuffer.pduBuffer_[mmsDecodeBuffer.curPosition_] = testChar + 1; 838e5d0e473Sopenharmony_ci mmsDecodeBuffer.DecodeValueLength(intVar); 839e5d0e473Sopenharmony_ci 840e5d0e473Sopenharmony_ci mmsDecodeBuffer.curPosition_ = 0; 841e5d0e473Sopenharmony_ci testChar += 1; 842e5d0e473Sopenharmony_ci mmsDecodeBuffer.pduBuffer_[mmsDecodeBuffer.curPosition_] = testChar; 843e5d0e473Sopenharmony_ci mmsDecodeBuffer.DecodeTokenText(testStr, intVar); 844e5d0e473Sopenharmony_ci mmsDecodeBuffer.pduBuffer_[mmsDecodeBuffer.curPosition_] = testChar + 1; 845e5d0e473Sopenharmony_ci mmsDecodeBuffer.DecodeTokenText(testStr, intVar); 846e5d0e473Sopenharmony_ci mmsDecodeBuffer.pduBuffer_[mmsDecodeBuffer.curPosition_] = QUOTE_CHAR_LEN; 847e5d0e473Sopenharmony_ci mmsDecodeBuffer.DecodeTokenText(testStr, intVar); 848e5d0e473Sopenharmony_ci 849e5d0e473Sopenharmony_ci mmsDecodeBuffer.curPosition_ = 0; 850e5d0e473Sopenharmony_ci mmsDecodeBuffer.pduBuffer_[mmsDecodeBuffer.curPosition_] = QUOTE_CHAR_LEN - 1; 851e5d0e473Sopenharmony_ci mmsDecodeBuffer.DecodeText(testStr, intVar); 852e5d0e473Sopenharmony_ci mmsDecodeBuffer.pduBuffer_[mmsDecodeBuffer.curPosition_] = QUOTE_CHAR_LEN; 853e5d0e473Sopenharmony_ci mmsDecodeBuffer.DecodeText(testStr, intVar); 854e5d0e473Sopenharmony_ci 855e5d0e473Sopenharmony_ci mmsDecodeBuffer.curPosition_ = 0; 856e5d0e473Sopenharmony_ci testChar += 1; 857e5d0e473Sopenharmony_ci mmsDecodeBuffer.pduBuffer_[mmsDecodeBuffer.curPosition_] = testChar; 858e5d0e473Sopenharmony_ci mmsDecodeBuffer.DecodeQuotedText(testStr, intVar); 859e5d0e473Sopenharmony_ci mmsDecodeBuffer.pduBuffer_[mmsDecodeBuffer.curPosition_] = testChar + 1; 860e5d0e473Sopenharmony_ci mmsDecodeBuffer.DecodeQuotedText(testStr, intVar); 861e5d0e473Sopenharmony_ci 862e5d0e473Sopenharmony_ci uint8_t errVar = -1; 863e5d0e473Sopenharmony_ci bool ret = mmsDecodeBuffer.CharIsToken(errVar); 864e5d0e473Sopenharmony_ci EXPECT_EQ(false, ret); 865e5d0e473Sopenharmony_ci} 866e5d0e473Sopenharmony_ci 867e5d0e473Sopenharmony_ci/** 868e5d0e473Sopenharmony_ci * @tc.number Telephony_SmsMmsGtest_MmsDecodeBuffer_0003 869e5d0e473Sopenharmony_ci * @tc.name Test MmsDecodeBuffer 870e5d0e473Sopenharmony_ci * @tc.desc Function test 871e5d0e473Sopenharmony_ci */ 872e5d0e473Sopenharmony_ciHWTEST_F(MmsGtest, MmsDecodeBuffer_0003, Function | MediumTest | Level1) 873e5d0e473Sopenharmony_ci{ 874e5d0e473Sopenharmony_ci TELEPHONY_LOGI("TelSMSMMSTest::MmsDecodeBuffer_0003 -->"); 875e5d0e473Sopenharmony_ci uint8_t byteVar = 1; 876e5d0e473Sopenharmony_ci uint64_t longVar = 10; 877e5d0e473Sopenharmony_ci std::string testStr; 878e5d0e473Sopenharmony_ci MmsDecodeBuffer mmsDecodeBuffer; 879e5d0e473Sopenharmony_ci uint8_t count = 10; 880e5d0e473Sopenharmony_ci uint8_t index = 0; 881e5d0e473Sopenharmony_ci while (index < count) { 882e5d0e473Sopenharmony_ci mmsDecodeBuffer.pduBuffer_[index] = '1'; 883e5d0e473Sopenharmony_ci index++; 884e5d0e473Sopenharmony_ci } 885e5d0e473Sopenharmony_ci 886e5d0e473Sopenharmony_ci mmsDecodeBuffer.curPosition_ = 0; 887e5d0e473Sopenharmony_ci char testChar = QUOTE_CHAR_LEN + 1; 888e5d0e473Sopenharmony_ci mmsDecodeBuffer.pduBuffer_[mmsDecodeBuffer.curPosition_] = testChar; 889e5d0e473Sopenharmony_ci mmsDecodeBuffer.DecodeShortInteger(byteVar); 890e5d0e473Sopenharmony_ci mmsDecodeBuffer.pduBuffer_[mmsDecodeBuffer.curPosition_] = testChar + 1; 891e5d0e473Sopenharmony_ci mmsDecodeBuffer.DecodeShortInteger(byteVar); 892e5d0e473Sopenharmony_ci 893e5d0e473Sopenharmony_ci mmsDecodeBuffer.curPosition_ = 0; 894e5d0e473Sopenharmony_ci mmsDecodeBuffer.pduBuffer_[mmsDecodeBuffer.curPosition_] = VALUE_CHAR; 895e5d0e473Sopenharmony_ci mmsDecodeBuffer.DecodeLongInteger(longVar); 896e5d0e473Sopenharmony_ci mmsDecodeBuffer.pduBuffer_[mmsDecodeBuffer.curPosition_] = VALUE_CHAR + 1; 897e5d0e473Sopenharmony_ci mmsDecodeBuffer.DecodeLongInteger(longVar); 898e5d0e473Sopenharmony_ci 899e5d0e473Sopenharmony_ci mmsDecodeBuffer.curPosition_ = 0; 900e5d0e473Sopenharmony_ci mmsDecodeBuffer.DecodeInteger(longVar); 901e5d0e473Sopenharmony_ci mmsDecodeBuffer.curPosition_ = 0; 902e5d0e473Sopenharmony_ci mmsDecodeBuffer.pduBuffer_[mmsDecodeBuffer.curPosition_] = testChar; 903e5d0e473Sopenharmony_ci mmsDecodeBuffer.DecodeIsShortInt(); 904e5d0e473Sopenharmony_ci mmsDecodeBuffer.pduBuffer_[mmsDecodeBuffer.curPosition_] = testChar + 1; 905e5d0e473Sopenharmony_ci mmsDecodeBuffer.DecodeIsShortInt(); 906e5d0e473Sopenharmony_ci 907e5d0e473Sopenharmony_ci mmsDecodeBuffer.curPosition_ = 0; 908e5d0e473Sopenharmony_ci char srcChar = MIN_SHORT_OCTET + 1; 909e5d0e473Sopenharmony_ci mmsDecodeBuffer.pduBuffer_[mmsDecodeBuffer.curPosition_] = srcChar; 910e5d0e473Sopenharmony_ci mmsDecodeBuffer.DecodeIsString(); 911e5d0e473Sopenharmony_ci mmsDecodeBuffer.pduBuffer_[mmsDecodeBuffer.curPosition_] = srcChar + 1; 912e5d0e473Sopenharmony_ci mmsDecodeBuffer.DecodeIsString(); 913e5d0e473Sopenharmony_ci mmsDecodeBuffer.pduBuffer_[mmsDecodeBuffer.curPosition_] = testChar + 1; 914e5d0e473Sopenharmony_ci mmsDecodeBuffer.DecodeIsString(); 915e5d0e473Sopenharmony_ci 916e5d0e473Sopenharmony_ci mmsDecodeBuffer.curPosition_ = 0; 917e5d0e473Sopenharmony_ci mmsDecodeBuffer.pduBuffer_[mmsDecodeBuffer.curPosition_] = srcChar; 918e5d0e473Sopenharmony_ci mmsDecodeBuffer.DecodeIsValueLength(); 919e5d0e473Sopenharmony_ci mmsDecodeBuffer.pduBuffer_[mmsDecodeBuffer.curPosition_] = srcChar + 1; 920e5d0e473Sopenharmony_ci mmsDecodeBuffer.DecodeIsValueLength(); 921e5d0e473Sopenharmony_ci 922e5d0e473Sopenharmony_ci mmsDecodeBuffer.MarkPosition(); 923e5d0e473Sopenharmony_ci mmsDecodeBuffer.UnMarkPosition(); 924e5d0e473Sopenharmony_ci uint8_t errVar = -1; 925e5d0e473Sopenharmony_ci bool ret = mmsDecodeBuffer.CharIsToken(errVar); 926e5d0e473Sopenharmony_ci EXPECT_EQ(false, ret); 927e5d0e473Sopenharmony_ci} 928e5d0e473Sopenharmony_ci 929e5d0e473Sopenharmony_ci/** 930e5d0e473Sopenharmony_ci * @tc.number Telephony_SmsMmsGtest_MmsEncodeString_0001 931e5d0e473Sopenharmony_ci * @tc.name Test MmsEncodeString 932e5d0e473Sopenharmony_ci * @tc.desc Function test 933e5d0e473Sopenharmony_ci */ 934e5d0e473Sopenharmony_ciHWTEST_F(MmsGtest, MmsEncodeString_0001, Function | MediumTest | Level1) 935e5d0e473Sopenharmony_ci{ 936e5d0e473Sopenharmony_ci TELEPHONY_LOGI("TelSMSMMSTest::MmsEncodeString_0001 -->"); 937e5d0e473Sopenharmony_ci MmsEncodeString mmsEncodeString; 938e5d0e473Sopenharmony_ci MmsDecodeBuffer decodeBuffer; 939e5d0e473Sopenharmony_ci MmsEncodeBuffer encodeBuffer; 940e5d0e473Sopenharmony_ci std::string testStr; 941e5d0e473Sopenharmony_ci uint32_t charset = PDU_COUNT; 942e5d0e473Sopenharmony_ci MmsAddress addrsss; 943e5d0e473Sopenharmony_ci uint32_t len = PDU_COUNT; 944e5d0e473Sopenharmony_ci std::unique_ptr<char[]> inBuff = std::make_unique<char[]>(len); 945e5d0e473Sopenharmony_ci for (uint32_t i = 0; i < len; i++) { 946e5d0e473Sopenharmony_ci inBuff[i] = 1; 947e5d0e473Sopenharmony_ci } 948e5d0e473Sopenharmony_ci decodeBuffer.WriteDataBuffer(std::move(inBuff), len); 949e5d0e473Sopenharmony_ci mmsEncodeString.DecodeEncodeString(decodeBuffer); 950e5d0e473Sopenharmony_ci decodeBuffer.curPosition_ = MAX_MMS_ATTACHMENT_LEN + 1; 951e5d0e473Sopenharmony_ci mmsEncodeString.DecodeEncodeString(decodeBuffer); 952e5d0e473Sopenharmony_ci mmsEncodeString.charset_ = ENCODE_CHARSET1; 953e5d0e473Sopenharmony_ci mmsEncodeString.EncodeEncodeString(encodeBuffer); 954e5d0e473Sopenharmony_ci mmsEncodeString.charset_ = ENCODE_CHARSET2; 955e5d0e473Sopenharmony_ci mmsEncodeString.EncodeEncodeString(encodeBuffer); 956e5d0e473Sopenharmony_ci mmsEncodeString.GetEncodeString(testStr); 957e5d0e473Sopenharmony_ci EXPECT_GE(testStr.size(), 0); 958e5d0e473Sopenharmony_ci mmsEncodeString.SetAddressString(addrsss); 959e5d0e473Sopenharmony_ci mmsEncodeString.GetStrEncodeString(); 960e5d0e473Sopenharmony_ci MmsEncodeString mmsEncodeString1(mmsEncodeString); 961e5d0e473Sopenharmony_ci charset = 0; 962e5d0e473Sopenharmony_ci bool ret = mmsEncodeString1.SetEncodeString(charset, testStr); 963e5d0e473Sopenharmony_ci EXPECT_EQ(true, ret); 964e5d0e473Sopenharmony_ci ret = mmsEncodeString1.SetEncodeString(charset, testStr); 965e5d0e473Sopenharmony_ci EXPECT_EQ(true, ret); 966e5d0e473Sopenharmony_ci} 967e5d0e473Sopenharmony_ci 968e5d0e473Sopenharmony_ci/** 969e5d0e473Sopenharmony_ci * @tc.number Telephony_SmsMmsGtest_MmsHeaderCateg_0001 970e5d0e473Sopenharmony_ci * @tc.name Test MmsHeaderCateg 971e5d0e473Sopenharmony_ci * @tc.desc Function test 972e5d0e473Sopenharmony_ci */ 973e5d0e473Sopenharmony_ciHWTEST_F(MmsGtest, MmsHeaderCateg_0001, Function | MediumTest | Level1) 974e5d0e473Sopenharmony_ci{ 975e5d0e473Sopenharmony_ci TELEPHONY_LOGI("TelSMSMMSTest::MmsHeaderCateg_0001 -->"); 976e5d0e473Sopenharmony_ci MmsHeaderCateg mmsHeaderCateg; 977e5d0e473Sopenharmony_ci uint8_t fieldId = 0; 978e5d0e473Sopenharmony_ci mmsHeaderCateg.FindSendReqOptType(fieldId); 979e5d0e473Sopenharmony_ci mmsHeaderCateg.FindSendConfOptType(fieldId); 980e5d0e473Sopenharmony_ci mmsHeaderCateg.FindFieldDes(fieldId); 981e5d0e473Sopenharmony_ci mmsHeaderCateg.CheckIsValueLen(fieldId); 982e5d0e473Sopenharmony_ci bool ret = mmsHeaderCateg.CheckIsValueLen(fieldId); 983e5d0e473Sopenharmony_ci EXPECT_EQ(false, ret); 984e5d0e473Sopenharmony_ci} 985e5d0e473Sopenharmony_ci 986e5d0e473Sopenharmony_ci/** 987e5d0e473Sopenharmony_ci * @tc.number Telephony_SmsMmsGtest_MmsBase64_0001 988e5d0e473Sopenharmony_ci * @tc.name Test MmsBase64 989e5d0e473Sopenharmony_ci * @tc.desc Function test 990e5d0e473Sopenharmony_ci */ 991e5d0e473Sopenharmony_ciHWTEST_F(MmsGtest, MmsBase64_0001, Function | MediumTest | Level1) 992e5d0e473Sopenharmony_ci{ 993e5d0e473Sopenharmony_ci TELEPHONY_LOGI("TelSMSMMSTest::MmsBase64_0001 -->"); 994e5d0e473Sopenharmony_ci MmsBase64 mmsBase64; 995e5d0e473Sopenharmony_ci std::string valueStr = "valueStr"; 996e5d0e473Sopenharmony_ci mmsBase64.Encode(valueStr); 997e5d0e473Sopenharmony_ci std::string ret = mmsBase64.Decode(valueStr); 998e5d0e473Sopenharmony_ci EXPECT_STRNE(ret.c_str(), "test"); 999e5d0e473Sopenharmony_ci} 1000e5d0e473Sopenharmony_ci 1001e5d0e473Sopenharmony_ci/** 1002e5d0e473Sopenharmony_ci * @tc.number Telephony_SmsMmsGtest_MmsCharSet_0001 1003e5d0e473Sopenharmony_ci * @tc.name Test MmsCharSet 1004e5d0e473Sopenharmony_ci * @tc.desc Function test 1005e5d0e473Sopenharmony_ci */ 1006e5d0e473Sopenharmony_ciHWTEST_F(MmsGtest, MmsCharSet_0001, Function | MediumTest | Level1) 1007e5d0e473Sopenharmony_ci{ 1008e5d0e473Sopenharmony_ci TELEPHONY_LOGI("TelSMSMMSTest::MmsCharSet_0001 -->"); 1009e5d0e473Sopenharmony_ci MmsCharSet mmsCharSet; 1010e5d0e473Sopenharmony_ci uint32_t charSet = 10; 1011e5d0e473Sopenharmony_ci std::string strCharSet = "US-ASCII"; 1012e5d0e473Sopenharmony_ci mmsCharSet.GetCharSetStrFromInt(strCharSet, charSet); 1013e5d0e473Sopenharmony_ci bool ret = mmsCharSet.GetCharSetIntFromString(charSet, strCharSet); 1014e5d0e473Sopenharmony_ci EXPECT_EQ(true, ret); 1015e5d0e473Sopenharmony_ci} 1016e5d0e473Sopenharmony_ci 1017e5d0e473Sopenharmony_ci/** 1018e5d0e473Sopenharmony_ci * @tc.number Telephony_SmsMmsGtest_MmsQuotedPrintable_0001 1019e5d0e473Sopenharmony_ci * @tc.name Test MmsQuotedPrintable 1020e5d0e473Sopenharmony_ci * @tc.desc Function test 1021e5d0e473Sopenharmony_ci */ 1022e5d0e473Sopenharmony_ciHWTEST_F(MmsGtest, MmsQuotedPrintable_0001, Function | MediumTest | Level1) 1023e5d0e473Sopenharmony_ci{ 1024e5d0e473Sopenharmony_ci TELEPHONY_LOGI("TelSMSMMSTest::MmsQuotedPrintable_0001 -->"); 1025e5d0e473Sopenharmony_ci MmsQuotedPrintable mmsQuotedPrintable; 1026e5d0e473Sopenharmony_ci std::string valueStr = "123"; 1027e5d0e473Sopenharmony_ci mmsQuotedPrintable.Encode(valueStr); 1028e5d0e473Sopenharmony_ci std::string destStr = ""; 1029e5d0e473Sopenharmony_ci mmsQuotedPrintable.Decode(valueStr, destStr); 1030e5d0e473Sopenharmony_ci bool ret = mmsQuotedPrintable.Decode("", valueStr); 1031e5d0e473Sopenharmony_ci EXPECT_EQ(false, ret); 1032e5d0e473Sopenharmony_ci} 1033e5d0e473Sopenharmony_ci 1034e5d0e473Sopenharmony_ci/** 1035e5d0e473Sopenharmony_ci * @tc.number Telephony_SmsServiceTest_0001 1036e5d0e473Sopenharmony_ci * @tc.name Test MmsQuotedPrintable 1037e5d0e473Sopenharmony_ci * @tc.desc Function test 1038e5d0e473Sopenharmony_ci */ 1039e5d0e473Sopenharmony_ciHWTEST_F(MmsGtest, SmsServiceTest_0001, Function | MediumTest | Level1) 1040e5d0e473Sopenharmony_ci{ 1041e5d0e473Sopenharmony_ci AccessMmsToken token; 1042e5d0e473Sopenharmony_ci int32_t slotId = 0; 1043e5d0e473Sopenharmony_ci int64_t timeStamp = 0; 1044e5d0e473Sopenharmony_ci std::string homeUrlVal; 1045e5d0e473Sopenharmony_ci std::string dbUrl; 1046e5d0e473Sopenharmony_ci GetPduToFile(slotId); 1047e5d0e473Sopenharmony_ci dbUrl = GetFileToDb(); 1048e5d0e473Sopenharmony_ci homeUrlVal = GetMmsc(slotId); 1049e5d0e473Sopenharmony_ci std::u16string mmsc = StringUtils::ToUtf16(homeUrlVal); 1050e5d0e473Sopenharmony_ci std::u16string data = StringUtils::ToUtf16(dbUrl); 1051e5d0e473Sopenharmony_ci std::u16string ua = u""; 1052e5d0e473Sopenharmony_ci std::u16string uaprof = u""; 1053e5d0e473Sopenharmony_ci Singleton<SmsServiceManagerClient>::GetInstance().SendMms(slotId, mmsc, data, ua, uaprof, timeStamp); 1054e5d0e473Sopenharmony_ci Singleton<SmsServiceManagerClient>::GetInstance().DownloadMms(slotId, mmsc, data, ua, uaprof); 1055e5d0e473Sopenharmony_ci EXPECT_GE(dbUrl.length(), 0); 1056e5d0e473Sopenharmony_ci EXPECT_GE(homeUrlVal.length(), 0); 1057e5d0e473Sopenharmony_ci} 1058e5d0e473Sopenharmony_ci#endif // TEL_TEST_UNSUPPORT 1059e5d0e473Sopenharmony_ci} // namespace Telephony 1060e5d0e473Sopenharmony_ci} // namespace OHOS