| // 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, GetData) { |
| HttpResponse response; |
| response.set_body("my body"); |
| std::string data; |
| response.GetData(&data); |
| const char* expected = |
| "HTTP/1.1 200 OK\r\n" |
| "content-length:7\r\n" |
| "\r\n" |
| "my body"; |
| ASSERT_STREQ(expected, data.c_str()); |
| } |
| |
| } // namespace webdriver |