// 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 response(CefResponse::Create()); EXPECT_TRUE(response.get() != nullptr); 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); }