2019-10-14 13:32:38 +02:00
|
|
|
// Copyright (c) 2019 The Chromium Embedded Framework Authors. All rights
|
|
|
|
// reserved. Use of this source code is governed by a BSD-style license that
|
|
|
|
// can be found in the LICENSE file.
|
|
|
|
|
|
|
|
#include "include/cef_response.h"
|
|
|
|
#include "tests/ceftests/test_util.h"
|
|
|
|
#include "tests/gtest/include/gtest/gtest.h"
|
|
|
|
|
|
|
|
TEST(ResponseTest, SetGetHeaderByName) {
|
|
|
|
CefRefPtr<CefResponse> response(CefResponse::Create());
|
2020-01-15 14:34:01 +01:00
|
|
|
EXPECT_TRUE(response.get() != nullptr);
|
2019-10-14 13:32:38 +02:00
|
|
|
|
|
|
|
CefResponse::HeaderMap headers, expectedHeaders;
|
|
|
|
|
|
|
|
response->SetHeaderByName("HeaderA", "ValueA", false);
|
|
|
|
response->SetHeaderByName("HeaderB", "ValueB", false);
|
|
|
|
|
|
|
|
expectedHeaders.insert(std::make_pair("HeaderA", "ValueA"));
|
|
|
|
expectedHeaders.insert(std::make_pair("HeaderB", "ValueB"));
|
|
|
|
|
|
|
|
// Case insensitive retrieval.
|
|
|
|
EXPECT_STREQ("ValueA",
|
|
|
|
response->GetHeaderByName("headera").ToString().c_str());
|
|
|
|
EXPECT_STREQ("ValueB",
|
|
|
|
response->GetHeaderByName("headerb").ToString().c_str());
|
|
|
|
EXPECT_STREQ("", response->GetHeaderByName("noexist").ToString().c_str());
|
|
|
|
|
|
|
|
response->GetHeaderMap(headers);
|
|
|
|
TestMapEqual(expectedHeaders, headers, false);
|
|
|
|
|
|
|
|
// Replace an existing value.
|
|
|
|
response->SetHeaderByName("HeaderA", "ValueANew", true);
|
|
|
|
|
|
|
|
expectedHeaders.clear();
|
|
|
|
expectedHeaders.insert(std::make_pair("HeaderA", "ValueANew"));
|
|
|
|
expectedHeaders.insert(std::make_pair("HeaderB", "ValueB"));
|
|
|
|
|
|
|
|
// Case insensitive retrieval.
|
|
|
|
EXPECT_STREQ("ValueANew",
|
|
|
|
response->GetHeaderByName("headerA").ToString().c_str());
|
|
|
|
|
|
|
|
response->GetHeaderMap(headers);
|
|
|
|
TestMapEqual(expectedHeaders, headers, false);
|
|
|
|
|
|
|
|
// Header with multiple values.
|
|
|
|
expectedHeaders.clear();
|
|
|
|
expectedHeaders.insert(std::make_pair("HeaderA", "ValueA1"));
|
|
|
|
expectedHeaders.insert(std::make_pair("HeaderA", "ValueA2"));
|
|
|
|
expectedHeaders.insert(std::make_pair("HeaderB", "ValueB"));
|
|
|
|
response->SetHeaderMap(expectedHeaders);
|
|
|
|
|
|
|
|
// When there are multiple values only the first is returned.
|
|
|
|
EXPECT_STREQ("ValueA1",
|
|
|
|
response->GetHeaderByName("headera").ToString().c_str());
|
|
|
|
|
|
|
|
// Don't overwrite the value.
|
|
|
|
response->SetHeaderByName("HeaderA", "ValueANew", false);
|
|
|
|
|
|
|
|
response->GetHeaderMap(headers);
|
|
|
|
TestMapEqual(expectedHeaders, headers, false);
|
|
|
|
|
|
|
|
// Overwrite the value (remove the duplicates).
|
|
|
|
response->SetHeaderByName("HeaderA", "ValueANew", true);
|
|
|
|
|
|
|
|
expectedHeaders.clear();
|
|
|
|
expectedHeaders.insert(std::make_pair("HeaderA", "ValueANew"));
|
|
|
|
expectedHeaders.insert(std::make_pair("HeaderB", "ValueB"));
|
|
|
|
|
|
|
|
response->GetHeaderMap(headers);
|
|
|
|
TestMapEqual(expectedHeaders, headers, false);
|
|
|
|
}
|