1fa7767c5Sopenharmony_ci/*
2fa7767c5Sopenharmony_ci * Copyright (c) 2023-2023 Huawei Device Co., Ltd.
3fa7767c5Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4fa7767c5Sopenharmony_ci * you may not use this file except in compliance with the License.
5fa7767c5Sopenharmony_ci * You may obtain a copy of the License at
6fa7767c5Sopenharmony_ci *
7fa7767c5Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8fa7767c5Sopenharmony_ci *
9fa7767c5Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10fa7767c5Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11fa7767c5Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12fa7767c5Sopenharmony_ci * See the License for the specific language governing permissions and
13fa7767c5Sopenharmony_ci * limitations under the License.
14fa7767c5Sopenharmony_ci */
15fa7767c5Sopenharmony_ci
16fa7767c5Sopenharmony_ci#include <string>
17fa7767c5Sopenharmony_ci#include "gtest/gtest.h"
18fa7767c5Sopenharmony_ci#include "plugin/plugins/source/http_source/download/downloader.h"
19fa7767c5Sopenharmony_ci
20fa7767c5Sopenharmony_cinamespace OHOS {
21fa7767c5Sopenharmony_cinamespace Media {
22fa7767c5Sopenharmony_cinamespace Test {
23fa7767c5Sopenharmony_ciusing namespace OHOS::Media::Plugin::HttpPlugin;
24fa7767c5Sopenharmony_ciusing namespace testing::ext;
25fa7767c5Sopenharmony_ci
26fa7767c5Sopenharmony_ciHWTEST(HttpSourcePluginTest, test_download_request_save_header, TestSize.Level1)
27fa7767c5Sopenharmony_ci{
28fa7767c5Sopenharmony_ci    std::shared_ptr<HeaderInfo> headerInfo = std::make_shared<HeaderInfo>();
29fa7767c5Sopenharmony_ci
30fa7767c5Sopenharmony_ci    const size_t fileContentLen = 20;
31fa7767c5Sopenharmony_ci    headerInfo->fileContentLen = fileContentLen;
32fa7767c5Sopenharmony_ci
33fa7767c5Sopenharmony_ci    const char contentType[] = "audio";
34fa7767c5Sopenharmony_ci    strcpy_s(headerInfo->contentType, sizeof(headerInfo->contentType), contentType);
35fa7767c5Sopenharmony_ci
36fa7767c5Sopenharmony_ci    headerInfo->isChunked = true;
37fa7767c5Sopenharmony_ci    headerInfo->isClosed = true;
38fa7767c5Sopenharmony_ci
39fa7767c5Sopenharmony_ci    DataSaveFunc dataSaveFunc = [](uint8_t*, uint32_t) {
40fa7767c5Sopenharmony_ci        return false;
41fa7767c5Sopenharmony_ci    };
42fa7767c5Sopenharmony_ci
43fa7767c5Sopenharmony_ci    StatusCallbackFunc statusCallbackFunc = [](DownloadStatus, std::shared_ptr<Downloader>&,
44fa7767c5Sopenharmony_ci        std::shared_ptr<DownloadRequest>&) {};
45fa7767c5Sopenharmony_ci
46fa7767c5Sopenharmony_ci    const std::string url = "http://test";
47fa7767c5Sopenharmony_ci    DownloadRequest downloadRequest{url, dataSaveFunc, statusCallbackFunc};
48fa7767c5Sopenharmony_ci    downloadRequest.SaveHeader(headerInfo.get());
49fa7767c5Sopenharmony_ci
50fa7767c5Sopenharmony_ci    EXPECT_EQ(fileContentLen, downloadRequest.GetFileContentLength());
51fa7767c5Sopenharmony_ci
52fa7767c5Sopenharmony_ci    EXPECT_EQ(url, downloadRequest.GetUrl());
53fa7767c5Sopenharmony_ci
54fa7767c5Sopenharmony_ci    EXPECT_EQ(true, downloadRequest.IsChunked());
55fa7767c5Sopenharmony_ci
56fa7767c5Sopenharmony_ci    EXPECT_EQ(false, downloadRequest.IsClosed());
57fa7767c5Sopenharmony_ci
58fa7767c5Sopenharmony_ci    downloadRequest.Close();
59fa7767c5Sopenharmony_ci
60fa7767c5Sopenharmony_ci    EXPECT_EQ(true, downloadRequest.IsClosed());
61fa7767c5Sopenharmony_ci}
62fa7767c5Sopenharmony_ci} // namespace Test
63fa7767c5Sopenharmony_ci} // namespace Media
64fa7767c5Sopenharmony_ci} // namespace OHOS
65