// Copyright (c) 2011 The Chromium 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 "chrome/test/webdriver/http_response.h" #include "testing/gtest/include/gtest/gtest.h" namespace webdriver { namespace { void ExpectHeaderValue(const HttpResponse& response, const std::string& name, const std::string& expected_value) { std::string actual_value; EXPECT_TRUE(response.GetHeader(name, &actual_value)); EXPECT_EQ(expected_value, actual_value); } } // namespace TEST(HttpResponseTest, AddingHeaders) { HttpResponse response; response.AddHeader("FOO", "a"); ExpectHeaderValue(response, "foo", "a"); // Headers should be case insensitive. response.AddHeader("fOo", "b,c"); response.AddHeader("FoO", "d"); ExpectHeaderValue(response, "foo", "a,b,c,d"); } TEST(HttpResponseTest, RemovingHeaders) { HttpResponse response; ASSERT_FALSE(response.RemoveHeader("I-Am-Not-There")); ASSERT_FALSE(response.GetHeader("foo", NULL)); response.AddHeader("foo", "bar"); ASSERT_TRUE(response.GetHeader("foo", NULL)); ASSERT_TRUE(response.RemoveHeader("foo")); ASSERT_FALSE(response.GetHeader("foo", NULL)); } TEST(HttpResponseTest, CanClearAllHeaders) { HttpResponse response; response.AddHeader("food", "cheese"); response.AddHeader("color", "red"); ExpectHeaderValue(response, "food", "cheese"); ExpectHeaderValue(response, "color", "red"); response.ClearHeaders(); EXPECT_FALSE(response.GetHeader("food", NULL)); EXPECT_FALSE(response.GetHeader("color", NULL)); } TEST(HttpResponseTest, CanSetMimeType) { HttpResponse response; response.SetMimeType("application/json"); ExpectHeaderValue(response, "content-type", "application/json"); response.SetMimeType("text/html"); ExpectHeaderValue(response, "content-type", "text/html"); } TEST(HttpResponseTest, SetBody) { HttpResponse response; std::string body("foo bar"); response.SetBody(body); ASSERT_EQ(body.length(), response.length()); ASSERT_EQ(body, std::string(response.data(), response.length())); // Grow the response size. body.append(" baz"); response.SetBody(body); ASSERT_EQ(body.length(), response.length()); ASSERT_EQ(body, std::string(response.data(), response.length())); // Shrink the response size. body = "small"; response.SetBody(body); ASSERT_EQ(body.length(), response.length()); ASSERT_EQ(body, std::string(response.data(), response.length())); } } // namespace webdriver