Index: chrome/test/webdriver/webdriver_dispatch_unittest.cc |
diff --git a/chrome/test/webdriver/webdriver_dispatch_unittest.cc b/chrome/test/webdriver/webdriver_dispatch_unittest.cc |
deleted file mode 100644 |
index e5877f81c46988a6caecca89633bebc80c5c26ec..0000000000000000000000000000000000000000 |
--- a/chrome/test/webdriver/webdriver_dispatch_unittest.cc |
+++ /dev/null |
@@ -1,222 +0,0 @@ |
-// 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 "base/format_macros.h" |
-#include "base/json/json_reader.h" |
-#include "base/memory/scoped_ptr.h" |
-#include "base/strings/stringprintf.h" |
-#include "base/values.h" |
-#include "chrome/test/webdriver/commands/response.h" |
-#include "chrome/test/webdriver/http_response.h" |
-#include "chrome/test/webdriver/webdriver_dispatch.h" |
-#include "chrome/test/webdriver/webdriver_session_manager.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
-#include "third_party/mongoose/mongoose.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); |
-} |
- |
-void ExpectHttpStatus(int expected_status, |
- const Response& command_response, |
- HttpResponse* const http_response) { |
- internal::PrepareHttpResponse(command_response, http_response); |
- EXPECT_EQ(expected_status, http_response->status()); |
-} |
- |
-void ExpectInternalError(ErrorCode command_status, |
- Response* command_response, |
- HttpResponse* const http_response) { |
- command_response->SetStatus(command_status); |
- http_response->set_status(HttpResponse::kOk); // Reset to detect changes. |
- ExpectHttpStatus(HttpResponse::kInternalServerError, |
- *command_response, http_response); |
-} |
- |
-} // namespace |
- |
-TEST(DispatchTest, CorrectlyConvertsResponseCodesToHttpStatusCodes) { |
- HttpResponse http_response; |
- |
- Response command_response; |
- command_response.SetValue(new base::StringValue("foobar")); |
- |
- command_response.SetStatus(kSuccess); |
- ExpectHttpStatus(HttpResponse::kOk, command_response, &http_response); |
- |
- command_response.SetStatus(kSeeOther); |
- ExpectHttpStatus(HttpResponse::kSeeOther, command_response, &http_response); |
- ExpectHeaderValue(http_response, "location", "foobar"); |
- http_response.ClearHeaders(); |
- |
- command_response.SetStatus(kBadRequest); |
- ExpectHttpStatus(HttpResponse::kBadRequest, command_response, |
- &http_response); |
- |
- command_response.SetStatus(kSessionNotFound); |
- ExpectHttpStatus(HttpResponse::kNotFound, command_response, |
- &http_response); |
- |
- base::ListValue* methods = new base::ListValue; |
- methods->Append(new base::StringValue("POST")); |
- methods->Append(new base::StringValue("GET")); |
- command_response.SetValue(methods); |
- command_response.SetStatus(kMethodNotAllowed); |
- ExpectHttpStatus(HttpResponse::kMethodNotAllowed, command_response, |
- &http_response); |
- ExpectHeaderValue(http_response, "allow", "POST,GET"); |
- http_response.ClearHeaders(); |
- |
- ExpectInternalError(kNoSuchElement, &command_response, &http_response); |
- ExpectInternalError(kNoSuchFrame, &command_response, &http_response); |
- ExpectInternalError(kUnknownCommand, &command_response, &http_response); |
- ExpectInternalError(kStaleElementReference, &command_response, |
- &http_response); |
- ExpectInternalError(kInvalidElementState, &command_response, &http_response); |
- ExpectInternalError(kUnknownError, &command_response, &http_response); |
- ExpectInternalError(kElementNotSelectable, &command_response, |
- &http_response); |
- ExpectInternalError(kXPathLookupError, &command_response, &http_response); |
- ExpectInternalError(kNoSuchWindow, &command_response, &http_response); |
- ExpectInternalError(kInvalidCookieDomain, &command_response, &http_response); |
- ExpectInternalError(kUnableToSetCookie, &command_response, &http_response); |
- ExpectInternalError(kInternalServerError, &command_response, &http_response); |
-} |
- |
-TEST(DispatchTest, |
- ReturnsAnErrorOnNonStringMethodsListedOnAMethodNotAllowedResponse) { |
- base::ListValue* methods = new base::ListValue; |
- methods->Append(new base::StringValue("POST")); |
- methods->Append(new base::DictionaryValue); |
- methods->Append(new base::StringValue("GET")); |
- methods->Append(new base::DictionaryValue); |
- methods->Append(new base::StringValue("DELETE")); |
- |
- Response command_response; |
- command_response.SetStatus(kMethodNotAllowed); |
- command_response.SetValue(methods); |
- |
- HttpResponse http_response; |
- ExpectHttpStatus(HttpResponse::kInternalServerError, command_response, |
- &http_response); |
-} |
- |
-TEST(DispatchTest, ReturnsCommandResponseAsJson) { |
- const std::string kExpectedData = "{\"status\":0,\"value\":\"foobar\"}"; |
- |
- Response command_response; |
- command_response.SetStatus(kSuccess); |
- command_response.SetValue(new base::StringValue("foobar")); |
- |
- HttpResponse http_response; |
- internal::PrepareHttpResponse(command_response, &http_response); |
- EXPECT_EQ(HttpResponse::kOk, http_response.status()); |
- ExpectHeaderValue(http_response, "content-type", |
- "application/json; charset=utf-8"); |
- |
- // We do not know whether the response status or value will be |
- // encoded first, so we have to parse the response body to |
- // verify it is correct. |
- int error_code; |
- std::string error_message; |
- scoped_ptr<base::Value> parsed_response(base::JSONReader::ReadAndReturnError( |
- http_response.body(), base::JSON_PARSE_RFC, &error_code, &error_message)); |
- |
- ASSERT_TRUE(parsed_response.get() != NULL) << error_message; |
- ASSERT_TRUE(parsed_response->IsType(base::Value::TYPE_DICTIONARY)) |
- << "Response should be a dictionary: " << http_response.body(); |
- |
- base::DictionaryValue* dict = |
- static_cast<base::DictionaryValue*>(parsed_response.get()); |
- EXPECT_EQ(2u, dict->size()); |
- EXPECT_TRUE(dict->HasKey("status")); |
- EXPECT_TRUE(dict->HasKey("value")); |
- |
- int status = -1; |
- EXPECT_TRUE(dict->GetInteger("status", &status)); |
- EXPECT_EQ(kSuccess, static_cast<ErrorCode>(status)); |
- |
- std::string value; |
- EXPECT_TRUE(dict->GetStringASCII("value", &value)); |
- EXPECT_EQ("foobar", value); |
-} |
- |
-class ParseRequestInfoTest : public testing::Test { |
- public: |
- static char kGet[]; |
- static char kTestPath[]; |
- |
- ParseRequestInfoTest() {} |
- virtual ~ParseRequestInfoTest() {} |
- |
- virtual void TearDown() { |
- SessionManager::GetInstance()->set_url_base(std::string()); |
- } |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(ParseRequestInfoTest); |
-}; |
- |
-char ParseRequestInfoTest::kGet[] = "GET"; |
-char ParseRequestInfoTest::kTestPath[] = "/foo/bar/baz"; |
- |
-TEST_F(ParseRequestInfoTest, ParseRequestWithEmptyUrlBase) { |
- struct mg_request_info request_info; |
- request_info.request_method = kGet; |
- request_info.uri = kTestPath; |
- |
- std::string method; |
- std::vector<std::string> path_segments; |
- base::DictionaryValue* parameters; |
- Response response; |
- |
- SessionManager::GetInstance()->set_url_base(std::string()); |
- EXPECT_TRUE(internal::ParseRequestInfo( |
- &request_info, |
- NULL, // NULL is ok because GET not POST is used |
- &method, |
- &path_segments, |
- ¶meters, |
- &response)); |
- EXPECT_EQ("GET", method); |
- ASSERT_EQ(4u, path_segments.size()); |
- EXPECT_EQ("", path_segments[0]); |
- EXPECT_EQ("foo", path_segments[1]); |
- EXPECT_EQ("bar", path_segments[2]); |
- EXPECT_EQ("baz", path_segments[3]); |
-} |
- |
-TEST_F(ParseRequestInfoTest, ParseRequestStripsNonEmptyUrlBaseFromPath) { |
- struct mg_request_info request_info; |
- request_info.request_method = kGet; |
- request_info.uri = kTestPath; |
- |
- std::string method; |
- std::vector<std::string> path_segments; |
- base::DictionaryValue* parameters; |
- Response response; |
- |
- SessionManager::GetInstance()->set_url_base("/foo"); |
- EXPECT_TRUE(internal::ParseRequestInfo( |
- &request_info, |
- NULL, // NULL is ok because GET not POST is used |
- &method, |
- &path_segments, |
- ¶meters, |
- &response)); |
- EXPECT_EQ("GET", method); |
- ASSERT_EQ(3u, path_segments.size()); |
- EXPECT_EQ("", path_segments[0]); |
- EXPECT_EQ("bar", path_segments[1]); |
- EXPECT_EQ("baz", path_segments[2]); |
-} |
- |
-} // namespace webdriver |