11e934351Sopenharmony_ci/* 21e934351Sopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd. 31e934351Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 41e934351Sopenharmony_ci * you may not use this file except in compliance with the License. 51e934351Sopenharmony_ci * You may obtain a copy of the License at 61e934351Sopenharmony_ci * 71e934351Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 81e934351Sopenharmony_ci * 91e934351Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 101e934351Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 111e934351Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 121e934351Sopenharmony_ci * See the License for the specific language governing permissions and 131e934351Sopenharmony_ci * limitations under the License. 141e934351Sopenharmony_ci */ 151e934351Sopenharmony_ci 161e934351Sopenharmony_ci#include <cstring> 171e934351Sopenharmony_ci 181e934351Sopenharmony_ci#include "gtest/gtest.h" 191e934351Sopenharmony_ci#include "http_request_options.h" 201e934351Sopenharmony_ci#include "netstack_log.h" 211e934351Sopenharmony_ci#include "constant.h" 221e934351Sopenharmony_ci#include "secure_char.h" 231e934351Sopenharmony_ci#include "curl/curl.h" 241e934351Sopenharmony_ci#include "tlv_utils.h" 251e934351Sopenharmony_ci 261e934351Sopenharmony_ciusing namespace OHOS::NetStack; 271e934351Sopenharmony_ciusing namespace OHOS::NetStack::Http; 281e934351Sopenharmony_ci 291e934351Sopenharmony_ciclass HttpRequestOptionsTest : public testing::Test { 301e934351Sopenharmony_cipublic: 311e934351Sopenharmony_ci static void SetUpTestCase() {} 321e934351Sopenharmony_ci 331e934351Sopenharmony_ci static void TearDownTestCase() {} 341e934351Sopenharmony_ci 351e934351Sopenharmony_ci virtual void SetUp() {} 361e934351Sopenharmony_ci 371e934351Sopenharmony_ci virtual void TearDown() {} 381e934351Sopenharmony_ci}; 391e934351Sopenharmony_ci 401e934351Sopenharmony_cinamespace { 411e934351Sopenharmony_ciusing namespace std; 421e934351Sopenharmony_ciusing namespace testing::ext; 431e934351Sopenharmony_ciconstexpr char OTHER_CA_PATH[] = "/etc/ssl/certs/other.pem"; 441e934351Sopenharmony_ci 451e934351Sopenharmony_ciHWTEST_F(HttpRequestOptionsTest, CaPathTest001, TestSize.Level1) 461e934351Sopenharmony_ci{ 471e934351Sopenharmony_ci HttpRequestOptions requestOptions; 481e934351Sopenharmony_ci 491e934351Sopenharmony_ci string path = requestOptions.GetCaPath(); 501e934351Sopenharmony_ci EXPECT_EQ(path, ""); 511e934351Sopenharmony_ci} 521e934351Sopenharmony_ci 531e934351Sopenharmony_ciHWTEST_F(HttpRequestOptionsTest, CaPathTest002, TestSize.Level1) 541e934351Sopenharmony_ci{ 551e934351Sopenharmony_ci HttpRequestOptions requestOptions; 561e934351Sopenharmony_ci 571e934351Sopenharmony_ci requestOptions.SetCaPath(""); 581e934351Sopenharmony_ci string path = requestOptions.GetCaPath(); 591e934351Sopenharmony_ci EXPECT_EQ(path, ""); 601e934351Sopenharmony_ci} 611e934351Sopenharmony_ci 621e934351Sopenharmony_ciHWTEST_F(HttpRequestOptionsTest, CaPathTest003, TestSize.Level1) 631e934351Sopenharmony_ci{ 641e934351Sopenharmony_ci HttpRequestOptions requestOptions; 651e934351Sopenharmony_ci 661e934351Sopenharmony_ci requestOptions.SetCaPath(OTHER_CA_PATH); 671e934351Sopenharmony_ci string path = requestOptions.GetCaPath(); 681e934351Sopenharmony_ci EXPECT_EQ(path, OTHER_CA_PATH); 691e934351Sopenharmony_ci} 701e934351Sopenharmony_ci 711e934351Sopenharmony_ciHWTEST_F(HttpRequestOptionsTest, SetDnsServersTest, TestSize.Level1) 721e934351Sopenharmony_ci{ 731e934351Sopenharmony_ci HttpRequestOptions requestOptions; 741e934351Sopenharmony_ci 751e934351Sopenharmony_ci std::vector<std::string> dnsServers = { "8.8.8.8", "8.8.4.4" }; 761e934351Sopenharmony_ci requestOptions.SetDnsServers(dnsServers); 771e934351Sopenharmony_ci 781e934351Sopenharmony_ci const std::vector<std::string>& retrievedDnsServers = requestOptions.GetDnsServers(); 791e934351Sopenharmony_ci EXPECT_EQ(retrievedDnsServers, dnsServers); 801e934351Sopenharmony_ci} 811e934351Sopenharmony_ci 821e934351Sopenharmony_ciHWTEST_F(HttpRequestOptionsTest, SetDohUrlTest, TestSize.Level1) 831e934351Sopenharmony_ci{ 841e934351Sopenharmony_ci HttpRequestOptions requestOptions; 851e934351Sopenharmony_ci 861e934351Sopenharmony_ci std::string dohUrl = "https://example.com/dns-query"; 871e934351Sopenharmony_ci requestOptions.SetDohUrl(dohUrl); 881e934351Sopenharmony_ci 891e934351Sopenharmony_ci const std::string& retrievedDohUrl = requestOptions.GetDohUrl(); 901e934351Sopenharmony_ci EXPECT_EQ(retrievedDohUrl, dohUrl); 911e934351Sopenharmony_ci} 921e934351Sopenharmony_ci 931e934351Sopenharmony_ciHWTEST_F(HttpRequestOptionsTest, SetRangeNumberTest001, TestSize.Level1) 941e934351Sopenharmony_ci{ 951e934351Sopenharmony_ci HttpRequestOptions requestOptions; 961e934351Sopenharmony_ci 971e934351Sopenharmony_ci uint32_t resumeFromNumber = 10; 981e934351Sopenharmony_ci uint32_t resumeToNumber = 20; 991e934351Sopenharmony_ci requestOptions.SetRangeNumber(resumeFromNumber, resumeToNumber); 1001e934351Sopenharmony_ci 1011e934351Sopenharmony_ci const std::string& rangeString = requestOptions.GetRangeString(); 1021e934351Sopenharmony_ci std::string expectedRangeString = "10-20"; 1031e934351Sopenharmony_ci EXPECT_EQ(rangeString, expectedRangeString); 1041e934351Sopenharmony_ci} 1051e934351Sopenharmony_ci 1061e934351Sopenharmony_ciHWTEST_F(HttpRequestOptionsTest, SetRangeNumberTest002, TestSize.Level1) 1071e934351Sopenharmony_ci{ 1081e934351Sopenharmony_ci HttpRequestOptions requestOptions; 1091e934351Sopenharmony_ci 1101e934351Sopenharmony_ci uint32_t resumeFromNumber = 0; 1111e934351Sopenharmony_ci uint32_t resumeToNumber = 20; 1121e934351Sopenharmony_ci requestOptions.SetRangeNumber(resumeFromNumber, resumeToNumber); 1131e934351Sopenharmony_ci 1141e934351Sopenharmony_ci const std::string& rangeString = requestOptions.GetRangeString(); 1151e934351Sopenharmony_ci std::string expectedRangeString = "-20"; 1161e934351Sopenharmony_ci EXPECT_EQ(rangeString, expectedRangeString); 1171e934351Sopenharmony_ci} 1181e934351Sopenharmony_ci 1191e934351Sopenharmony_ciHWTEST_F(HttpRequestOptionsTest, SetRangeNumberTest003, TestSize.Level1) 1201e934351Sopenharmony_ci{ 1211e934351Sopenharmony_ci HttpRequestOptions requestOptions; 1221e934351Sopenharmony_ci 1231e934351Sopenharmony_ci uint32_t resumeFromNumber = 10; 1241e934351Sopenharmony_ci uint32_t resumeToNumber = 0; 1251e934351Sopenharmony_ci requestOptions.SetRangeNumber(resumeFromNumber, resumeToNumber); 1261e934351Sopenharmony_ci 1271e934351Sopenharmony_ci const std::string& rangeString = requestOptions.GetRangeString(); 1281e934351Sopenharmony_ci std::string expectedRangeString = "10-"; 1291e934351Sopenharmony_ci EXPECT_EQ(rangeString, expectedRangeString); 1301e934351Sopenharmony_ci} 1311e934351Sopenharmony_ci 1321e934351Sopenharmony_ciHWTEST_F(HttpRequestOptionsTest, SetRangeNumberTest004, TestSize.Level1) 1331e934351Sopenharmony_ci{ 1341e934351Sopenharmony_ci HttpRequestOptions requestOptions; 1351e934351Sopenharmony_ci 1361e934351Sopenharmony_ci uint32_t resumeFromNumber = 0; 1371e934351Sopenharmony_ci uint32_t resumeToNumber = 0; 1381e934351Sopenharmony_ci requestOptions.SetRangeNumber(resumeFromNumber, resumeToNumber); 1391e934351Sopenharmony_ci 1401e934351Sopenharmony_ci const std::string& rangeString = requestOptions.GetRangeString(); 1411e934351Sopenharmony_ci std::string expectedRangeString = ""; 1421e934351Sopenharmony_ci EXPECT_EQ(rangeString, expectedRangeString); 1431e934351Sopenharmony_ci} 1441e934351Sopenharmony_ci 1451e934351Sopenharmony_ciHWTEST_F(HttpRequestOptionsTest, SetClientCertTest, TestSize.Level1) 1461e934351Sopenharmony_ci{ 1471e934351Sopenharmony_ci HttpRequestOptions requestOptions; 1481e934351Sopenharmony_ci 1491e934351Sopenharmony_ci std::string cert = "path_to_cert.pem"; 1501e934351Sopenharmony_ci std::string key = "path_to_key.pem"; 1511e934351Sopenharmony_ci std::string certType = "PEM"; 1521e934351Sopenharmony_ci Secure::SecureChar keyPasswd("password"); 1531e934351Sopenharmony_ci 1541e934351Sopenharmony_ci requestOptions.SetClientCert(cert, certType, key, keyPasswd); 1551e934351Sopenharmony_ci 1561e934351Sopenharmony_ci std::string retrievedCert; 1571e934351Sopenharmony_ci std::string retrievedKey; 1581e934351Sopenharmony_ci std::string retrievedCertType; 1591e934351Sopenharmony_ci Secure::SecureChar retrievedKeyPasswd; 1601e934351Sopenharmony_ci 1611e934351Sopenharmony_ci requestOptions.GetClientCert(retrievedCert, retrievedCertType, retrievedKey, retrievedKeyPasswd); 1621e934351Sopenharmony_ci 1631e934351Sopenharmony_ci EXPECT_EQ(retrievedCert, cert); 1641e934351Sopenharmony_ci EXPECT_EQ(retrievedKey, key); 1651e934351Sopenharmony_ci EXPECT_EQ(retrievedCertType, certType); 1661e934351Sopenharmony_ci EXPECT_EQ(strcmp(retrievedKeyPasswd.Data(), keyPasswd.Data()), 0); 1671e934351Sopenharmony_ci} 1681e934351Sopenharmony_ci 1691e934351Sopenharmony_ciHWTEST_F(HttpRequestOptionsTest, AddMultiFormDataTest, TestSize.Level1) 1701e934351Sopenharmony_ci{ 1711e934351Sopenharmony_ci HttpRequestOptions requestOptions; 1721e934351Sopenharmony_ci for (int i = 0; i < 10; i++) { 1731e934351Sopenharmony_ci MultiFormData multiFormData; 1741e934351Sopenharmony_ci multiFormData.name = "name" + std::to_string(i); 1751e934351Sopenharmony_ci multiFormData.data = "data" + std::to_string(i); 1761e934351Sopenharmony_ci multiFormData.contentType = "contentType" + std::to_string(i); 1771e934351Sopenharmony_ci multiFormData.remoteFileName = "remoteFileName" + std::to_string(i); 1781e934351Sopenharmony_ci multiFormData.filePath = "filePath" + std::to_string(i); 1791e934351Sopenharmony_ci requestOptions.AddMultiFormData(multiFormData); 1801e934351Sopenharmony_ci } 1811e934351Sopenharmony_ci std::vector<MultiFormData> dataList = requestOptions.GetMultiPartDataList(); 1821e934351Sopenharmony_ci EXPECT_EQ(dataList.size(), 10); 1831e934351Sopenharmony_ci for (int i = 0; i < 10; i++) { 1841e934351Sopenharmony_ci MultiFormData data = dataList[i]; 1851e934351Sopenharmony_ci EXPECT_EQ(data.name, "name" + std::to_string(i)); 1861e934351Sopenharmony_ci EXPECT_EQ(data.data, "data" + std::to_string(i)); 1871e934351Sopenharmony_ci EXPECT_EQ(data.contentType, "contentType" + std::to_string(i)); 1881e934351Sopenharmony_ci EXPECT_EQ(data.filePath, "filePath" + std::to_string(i)); 1891e934351Sopenharmony_ci EXPECT_EQ(data.remoteFileName, "remoteFileName" + std::to_string(i)); 1901e934351Sopenharmony_ci } 1911e934351Sopenharmony_ci} 1921e934351Sopenharmony_ci 1931e934351Sopenharmony_ciHWTEST_F(HttpRequestOptionsTest, SetUrlTest, TestSize.Level1) 1941e934351Sopenharmony_ci{ 1951e934351Sopenharmony_ci HttpRequestOptions requestOptions; 1961e934351Sopenharmony_ci 1971e934351Sopenharmony_ci std::string testValue = "Example"; 1981e934351Sopenharmony_ci requestOptions.SetUrl(testValue); 1991e934351Sopenharmony_ci std::string url = requestOptions.GetUrl(); 2001e934351Sopenharmony_ci EXPECT_EQ(url, testValue); 2011e934351Sopenharmony_ci} 2021e934351Sopenharmony_ci 2031e934351Sopenharmony_ciHWTEST_F(HttpRequestOptionsTest, SetPrioritylTest, TestSize.Level1) 2041e934351Sopenharmony_ci{ 2051e934351Sopenharmony_ci HttpRequestOptions requestOptions; 2061e934351Sopenharmony_ci 2071e934351Sopenharmony_ci uint32_t testValue = 2; 2081e934351Sopenharmony_ci requestOptions.SetPriority(testValue); 2091e934351Sopenharmony_ci uint32_t resultValue = requestOptions.GetPriority(); 2101e934351Sopenharmony_ci EXPECT_EQ(resultValue, testValue); 2111e934351Sopenharmony_ci} 2121e934351Sopenharmony_ci 2131e934351Sopenharmony_ciHWTEST_F(HttpRequestOptionsTest, SetHttpDataTypeTest, TestSize.Level1) 2141e934351Sopenharmony_ci{ 2151e934351Sopenharmony_ci HttpRequestOptions requestOptions; 2161e934351Sopenharmony_ci 2171e934351Sopenharmony_ci HttpDataType testValue = HttpDataType::ARRAY_BUFFER; 2181e934351Sopenharmony_ci requestOptions.SetHttpDataType(testValue); 2191e934351Sopenharmony_ci HttpDataType resultValue = requestOptions.GetHttpDataType(); 2201e934351Sopenharmony_ci EXPECT_EQ(resultValue, testValue); 2211e934351Sopenharmony_ci} 2221e934351Sopenharmony_ci 2231e934351Sopenharmony_ciHWTEST_F(HttpRequestOptionsTest, SetUsingProtocolTest001, TestSize.Level1) 2241e934351Sopenharmony_ci{ 2251e934351Sopenharmony_ci HttpRequestOptions requestOptions; 2261e934351Sopenharmony_ci 2271e934351Sopenharmony_ci HttpProtocol testValue = HttpProtocol::HTTP1_1; 2281e934351Sopenharmony_ci requestOptions.SetUsingProtocol(testValue); 2291e934351Sopenharmony_ci uint32_t resultValue = requestOptions.GetHttpVersion(); 2301e934351Sopenharmony_ci EXPECT_EQ(resultValue, CURL_HTTP_VERSION_1_1); 2311e934351Sopenharmony_ci} 2321e934351Sopenharmony_ci 2331e934351Sopenharmony_ciHWTEST_F(HttpRequestOptionsTest, SetUsingProtocolTest002, TestSize.Level1) 2341e934351Sopenharmony_ci{ 2351e934351Sopenharmony_ci HttpRequestOptions requestOptions; 2361e934351Sopenharmony_ci 2371e934351Sopenharmony_ci HttpProtocol testValue = HttpProtocol::HTTP2; 2381e934351Sopenharmony_ci requestOptions.SetUsingProtocol(testValue); 2391e934351Sopenharmony_ci uint32_t resultValue = requestOptions.GetHttpVersion(); 2401e934351Sopenharmony_ci EXPECT_EQ(resultValue, CURL_HTTP_VERSION_2_0); 2411e934351Sopenharmony_ci} 2421e934351Sopenharmony_ci 2431e934351Sopenharmony_ciHWTEST_F(HttpRequestOptionsTest, SetUsingProtocolTest003, TestSize.Level1) 2441e934351Sopenharmony_ci{ 2451e934351Sopenharmony_ci HttpRequestOptions requestOptions; 2461e934351Sopenharmony_ci 2471e934351Sopenharmony_ci HttpProtocol testValue = HttpProtocol::HTTP3; 2481e934351Sopenharmony_ci requestOptions.SetUsingProtocol(testValue); 2491e934351Sopenharmony_ci uint32_t resultValue = requestOptions.GetHttpVersion(); 2501e934351Sopenharmony_ci EXPECT_EQ(resultValue, CURL_HTTP_VERSION_3); 2511e934351Sopenharmony_ci} 2521e934351Sopenharmony_ci 2531e934351Sopenharmony_ciHWTEST_F(HttpRequestOptionsTest, SetUsingProtocolTest004, TestSize.Level1) 2541e934351Sopenharmony_ci{ 2551e934351Sopenharmony_ci HttpRequestOptions requestOptions; 2561e934351Sopenharmony_ci 2571e934351Sopenharmony_ci HttpProtocol testValue = HttpProtocol::HTTP_NONE; 2581e934351Sopenharmony_ci requestOptions.SetUsingProtocol(testValue); 2591e934351Sopenharmony_ci uint32_t resultValue = requestOptions.GetHttpVersion(); 2601e934351Sopenharmony_ci EXPECT_EQ(resultValue, CURL_HTTP_VERSION_NONE); 2611e934351Sopenharmony_ci} 2621e934351Sopenharmony_ci 2631e934351Sopenharmony_ciHWTEST_F(HttpRequestOptionsTest, SetMaxLimitTest, TestSize.Level1) 2641e934351Sopenharmony_ci{ 2651e934351Sopenharmony_ci HttpRequestOptions requestOptions; 2661e934351Sopenharmony_ci 2671e934351Sopenharmony_ci uint32_t testValue = 50; 2681e934351Sopenharmony_ci requestOptions.SetMaxLimit(testValue); 2691e934351Sopenharmony_ci uint32_t resultValue = requestOptions.GetMaxLimit(); 2701e934351Sopenharmony_ci EXPECT_EQ(resultValue, testValue); 2711e934351Sopenharmony_ci} 2721e934351Sopenharmony_ci 2731e934351Sopenharmony_ciHWTEST_F(HttpRequestOptionsTest, SetConnectTimeoutTest, TestSize.Level1) 2741e934351Sopenharmony_ci{ 2751e934351Sopenharmony_ci HttpRequestOptions requestOptions; 2761e934351Sopenharmony_ci 2771e934351Sopenharmony_ci uint32_t testValue = 5000; 2781e934351Sopenharmony_ci requestOptions.SetConnectTimeout(testValue); 2791e934351Sopenharmony_ci uint32_t resultValue = requestOptions.GetConnectTimeout(); 2801e934351Sopenharmony_ci EXPECT_EQ(resultValue, testValue); 2811e934351Sopenharmony_ci} 2821e934351Sopenharmony_ci 2831e934351Sopenharmony_ciHWTEST_F(HttpRequestOptionsTest, SetReadTimeoutTest, TestSize.Level1) 2841e934351Sopenharmony_ci{ 2851e934351Sopenharmony_ci HttpRequestOptions requestOptions; 2861e934351Sopenharmony_ci 2871e934351Sopenharmony_ci uint32_t testValue = 5000; 2881e934351Sopenharmony_ci requestOptions.SetReadTimeout(testValue); 2891e934351Sopenharmony_ci uint32_t resultValue = requestOptions.GetReadTimeout(); 2901e934351Sopenharmony_ci EXPECT_EQ(resultValue, testValue); 2911e934351Sopenharmony_ci} 2921e934351Sopenharmony_ci 2931e934351Sopenharmony_ciHWTEST_F(HttpRequestOptionsTest, SetHeaderTest, TestSize.Level1) 2941e934351Sopenharmony_ci{ 2951e934351Sopenharmony_ci HttpRequestOptions requestOptions; 2961e934351Sopenharmony_ci 2971e934351Sopenharmony_ci int testSize = 10; 2981e934351Sopenharmony_ci for (int i = 0; i < testSize; i++) { 2991e934351Sopenharmony_ci requestOptions.SetHeader("key" + std::to_string(i), "value" + std::to_string(i)); 3001e934351Sopenharmony_ci } 3011e934351Sopenharmony_ci const std::map<std::string, std::string> header = requestOptions.GetHeader(); 3021e934351Sopenharmony_ci for (int i = 0; i < testSize; i++) { 3031e934351Sopenharmony_ci const std::string& value = header.at("key" + std::to_string(i)); 3041e934351Sopenharmony_ci EXPECT_EQ(value, "value" + std::to_string(i)); 3051e934351Sopenharmony_ci } 3061e934351Sopenharmony_ci} 3071e934351Sopenharmony_ci 3081e934351Sopenharmony_ciHWTEST_F(HttpRequestOptionsTest, SetBodyTest, TestSize.Level1) 3091e934351Sopenharmony_ci{ 3101e934351Sopenharmony_ci HttpRequestOptions requestOptions; 3111e934351Sopenharmony_ci 3121e934351Sopenharmony_ci std::string testValue = "TestBody"; 3131e934351Sopenharmony_ci requestOptions.SetBody(testValue.data(), testValue.size()); 3141e934351Sopenharmony_ci std::string resultValue = requestOptions.GetBody(); 3151e934351Sopenharmony_ci EXPECT_EQ(resultValue, testValue); 3161e934351Sopenharmony_ci} 3171e934351Sopenharmony_ci 3181e934351Sopenharmony_ciHWTEST_F(HttpRequestOptionsTest, SetCertificatePinningTest, TestSize.Level1) 3191e934351Sopenharmony_ci{ 3201e934351Sopenharmony_ci HttpRequestOptions requestOptions; 3211e934351Sopenharmony_ci std::string testPIN = "sha256//YhKJKSzoTt2b5FP18fvpHo7fJYqQCjAa3HWY3tvRMwE=;sha256//t62CeU2tQiqkexU74Gxa2eg7fRbEg"; 3221e934351Sopenharmony_ci requestOptions.SetCertificatePinning(testPIN); 3231e934351Sopenharmony_ci std::string resultPIN = requestOptions.GetCertificatePinning(); 3241e934351Sopenharmony_ci EXPECT_EQ(testPIN, resultPIN); 3251e934351Sopenharmony_ci} 3261e934351Sopenharmony_ci 3271e934351Sopenharmony_ciHWTEST_F(HttpRequestOptionsTest, TlvEncodeDecodeTest001, TestSize.Level1) 3281e934351Sopenharmony_ci{ 3291e934351Sopenharmony_ci DfxMessage msg{}; 3301e934351Sopenharmony_ci msg.requestBeginTime_ = 0; 3311e934351Sopenharmony_ci msg.requestEndTime_ = 1; 3321e934351Sopenharmony_ci msg.requestId_ = "1"; 3331e934351Sopenharmony_ci msg.responseStatusCode_ = 200; 3341e934351Sopenharmony_ci msg.responseHttpVersion_ = "1.1"; 3351e934351Sopenharmony_ci const int bufferMaxSize = 1 * 256 * 1024; 3361e934351Sopenharmony_ci void *data = malloc(bufferMaxSize); 3371e934351Sopenharmony_ci EXPECT_TRUE(data != nullptr); 3381e934351Sopenharmony_ci uint32_t dataSize = 0; 3391e934351Sopenharmony_ci auto ret = TlvUtils::Encode(msg, data, dataSize); 3401e934351Sopenharmony_ci EXPECT_EQ(ret, TLV_OK); 3411e934351Sopenharmony_ci EXPECT_GT(dataSize, 0); 3421e934351Sopenharmony_ci DfxMessage result{}; 3431e934351Sopenharmony_ci ret = TlvUtils::Decode(result, data, dataSize); 3441e934351Sopenharmony_ci EXPECT_EQ(ret, TLV_OK); 3451e934351Sopenharmony_ci EXPECT_EQ(msg.requestBeginTime_, result.requestBeginTime_); 3461e934351Sopenharmony_ci EXPECT_EQ(msg.requestEndTime_, result.requestEndTime_); 3471e934351Sopenharmony_ci EXPECT_EQ(msg.requestId_, result.requestId_); 3481e934351Sopenharmony_ci EXPECT_EQ(msg.responseStatusCode_, result.responseStatusCode_); 3491e934351Sopenharmony_ci EXPECT_EQ(msg.responseHttpVersion_, result.responseHttpVersion_); 3501e934351Sopenharmony_ci} 3511e934351Sopenharmony_ci} // namespace