| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <string> | 5 #include <string> |
| 6 | 6 |
| 7 #include "base/json/json_writer.h" | 7 #include "base/json/json_writer.h" |
| 8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
| 9 #include "base/values.h" | 9 #include "base/values.h" |
| 10 #include "chrome/test/chromedriver/chrome/status.h" | 10 #include "chrome/test/chromedriver/chrome/status.h" |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 49 HttpResponse response; | 49 HttpResponse response; |
| 50 handler.Handle(request, &response); | 50 handler.Handle(request, &response); |
| 51 ASSERT_EQ(HttpResponse::kBadRequest, response.status()); | 51 ASSERT_EQ(HttpResponse::kBadRequest, response.status()); |
| 52 } | 52 } |
| 53 | 53 |
| 54 TEST(HttpHandlerTest, HandleUnknownCommand) { | 54 TEST(HttpHandlerTest, HandleUnknownCommand) { |
| 55 HttpHandler handler( | 55 HttpHandler handler( |
| 56 scoped_ptr<CommandExecutor>(new DummyExecutor()), | 56 scoped_ptr<CommandExecutor>(new DummyExecutor()), |
| 57 scoped_ptr<HttpHandler::CommandMap>(new HttpHandler::CommandMap()), | 57 scoped_ptr<HttpHandler::CommandMap>(new HttpHandler::CommandMap()), |
| 58 "/"); | 58 "/"); |
| 59 HttpRequest request(kGet, "/path", ""); | 59 HttpRequest request(kGet, "/path", std::string()); |
| 60 HttpResponse response; | 60 HttpResponse response; |
| 61 handler.Handle(request, &response); | 61 handler.Handle(request, &response); |
| 62 ASSERT_EQ(HttpResponse::kNotFound, response.status()); | 62 ASSERT_EQ(HttpResponse::kNotFound, response.status()); |
| 63 } | 63 } |
| 64 | 64 |
| 65 TEST(HttpHandlerTest, HandleNewSession) { | 65 TEST(HttpHandlerTest, HandleNewSession) { |
| 66 scoped_ptr<HttpHandler::CommandMap> map(new HttpHandler::CommandMap()); | 66 scoped_ptr<HttpHandler::CommandMap> map(new HttpHandler::CommandMap()); |
| 67 map->push_back(CommandMapping(kPost, "session", CommandNames::kNewSession)); | 67 map->push_back(CommandMapping(kPost, "session", CommandNames::kNewSession)); |
| 68 HttpHandler handler( | 68 HttpHandler handler( |
| 69 scoped_ptr<CommandExecutor>(new DummyExecutor()), | 69 scoped_ptr<CommandExecutor>(new DummyExecutor()), |
| 70 map.Pass(), "/base/"); | 70 map.Pass(), "/base/"); |
| 71 HttpRequest request(kPost, "/base/session", ""); | 71 HttpRequest request(kPost, "/base/session", std::string()); |
| 72 HttpResponse response; | 72 HttpResponse response; |
| 73 handler.Handle(request, &response); | 73 handler.Handle(request, &response); |
| 74 ASSERT_EQ(HttpResponse::kSeeOther, response.status()); | 74 ASSERT_EQ(HttpResponse::kSeeOther, response.status()); |
| 75 std::string location; | 75 std::string location; |
| 76 ASSERT_TRUE(response.GetHeader("Location", &location)); | 76 ASSERT_TRUE(response.GetHeader("Location", &location)); |
| 77 std::string prefix = "/base/session/"; | 77 std::string prefix = "/base/session/"; |
| 78 ASSERT_EQ(prefix, location.substr(0, prefix.length())); | 78 ASSERT_EQ(prefix, location.substr(0, prefix.length())); |
| 79 } | 79 } |
| 80 | 80 |
| 81 TEST(HttpHandlerTest, HandleInvalidPost) { | 81 TEST(HttpHandlerTest, HandleInvalidPost) { |
| 82 scoped_ptr<HttpHandler::CommandMap> map(new HttpHandler::CommandMap()); | 82 scoped_ptr<HttpHandler::CommandMap> map(new HttpHandler::CommandMap()); |
| 83 map->push_back(CommandMapping(kPost, "path", "cmd")); | 83 map->push_back(CommandMapping(kPost, "path", "cmd")); |
| 84 HttpHandler handler( | 84 HttpHandler handler( |
| 85 scoped_ptr<CommandExecutor>(new DummyExecutor()), | 85 scoped_ptr<CommandExecutor>(new DummyExecutor()), |
| 86 map.Pass(), "/"); | 86 map.Pass(), "/"); |
| 87 HttpRequest request(kPost, "/path", "should be a dictionary"); | 87 HttpRequest request(kPost, "/path", "should be a dictionary"); |
| 88 HttpResponse response; | 88 HttpResponse response; |
| 89 handler.Handle(request, &response); | 89 handler.Handle(request, &response); |
| 90 ASSERT_EQ(HttpResponse::kBadRequest, response.status()); | 90 ASSERT_EQ(HttpResponse::kBadRequest, response.status()); |
| 91 } | 91 } |
| 92 | 92 |
| 93 TEST(HttpHandlerTest, HandleUnimplementedCommand) { | 93 TEST(HttpHandlerTest, HandleUnimplementedCommand) { |
| 94 scoped_ptr<HttpHandler::CommandMap> map(new HttpHandler::CommandMap()); | 94 scoped_ptr<HttpHandler::CommandMap> map(new HttpHandler::CommandMap()); |
| 95 map->push_back(CommandMapping(kPost, "path", "cmd")); | 95 map->push_back(CommandMapping(kPost, "path", "cmd")); |
| 96 HttpHandler handler( | 96 HttpHandler handler( |
| 97 scoped_ptr<CommandExecutor>(new DummyExecutor(kUnknownCommand)), | 97 scoped_ptr<CommandExecutor>(new DummyExecutor(kUnknownCommand)), |
| 98 map.Pass(), "/"); | 98 map.Pass(), "/"); |
| 99 HttpRequest request(kPost, "/path", ""); | 99 HttpRequest request(kPost, "/path", std::string()); |
| 100 HttpResponse response; | 100 HttpResponse response; |
| 101 handler.Handle(request, &response); | 101 handler.Handle(request, &response); |
| 102 ASSERT_EQ(HttpResponse::kNotImplemented, response.status()); | 102 ASSERT_EQ(HttpResponse::kNotImplemented, response.status()); |
| 103 } | 103 } |
| 104 | 104 |
| 105 TEST(HttpHandlerTest, HandleCommand) { | 105 TEST(HttpHandlerTest, HandleCommand) { |
| 106 scoped_ptr<HttpHandler::CommandMap> map(new HttpHandler::CommandMap()); | 106 scoped_ptr<HttpHandler::CommandMap> map(new HttpHandler::CommandMap()); |
| 107 map->push_back(CommandMapping(kPost, "path", "cmd")); | 107 map->push_back(CommandMapping(kPost, "path", "cmd")); |
| 108 HttpHandler handler( | 108 HttpHandler handler( |
| 109 scoped_ptr<CommandExecutor>(new DummyExecutor()), | 109 scoped_ptr<CommandExecutor>(new DummyExecutor()), |
| 110 map.Pass(), "/"); | 110 map.Pass(), "/"); |
| 111 HttpRequest request(kPost, "/path", ""); | 111 HttpRequest request(kPost, "/path", std::string()); |
| 112 HttpResponse response; | 112 HttpResponse response; |
| 113 handler.Handle(request, &response); | 113 handler.Handle(request, &response); |
| 114 ASSERT_EQ(HttpResponse::kOk, response.status()); | 114 ASSERT_EQ(HttpResponse::kOk, response.status()); |
| 115 std::string mime; | 115 std::string mime; |
| 116 ASSERT_TRUE(response.GetHeader("Content-Type", &mime)); | 116 ASSERT_TRUE(response.GetHeader("Content-Type", &mime)); |
| 117 base::DictionaryValue body; | 117 base::DictionaryValue body; |
| 118 body.SetInteger("status", kOk); | 118 body.SetInteger("status", kOk); |
| 119 body.SetInteger("value", 1); | 119 body.SetInteger("value", 1); |
| 120 body.SetString("sessionId", "session_id"); | 120 body.SetString("sessionId", "session_id"); |
| 121 std::string json; | 121 std::string json; |
| (...skipping 11 matching lines...) Expand all Loading... |
| 133 ASSERT_EQ(0u, params.size()); | 133 ASSERT_EQ(0u, params.size()); |
| 134 } | 134 } |
| 135 | 135 |
| 136 TEST(MatchesCommandTest, DiffPathLength) { | 136 TEST(MatchesCommandTest, DiffPathLength) { |
| 137 CommandMapping command(kPost, "path/path", "command"); | 137 CommandMapping command(kPost, "path/path", "command"); |
| 138 std::string session_id; | 138 std::string session_id; |
| 139 base::DictionaryValue params; | 139 base::DictionaryValue params; |
| 140 ASSERT_FALSE(internal::MatchesCommand( | 140 ASSERT_FALSE(internal::MatchesCommand( |
| 141 kPost, "path", command, &session_id, ¶ms)); | 141 kPost, "path", command, &session_id, ¶ms)); |
| 142 ASSERT_FALSE(internal::MatchesCommand( | 142 ASSERT_FALSE(internal::MatchesCommand( |
| 143 kPost, "", command, &session_id, ¶ms)); | 143 kPost, std::string(), command, &session_id, ¶ms)); |
| 144 ASSERT_FALSE(internal::MatchesCommand( | 144 ASSERT_FALSE( |
| 145 kPost, "/", command, &session_id, ¶ms)); | 145 internal::MatchesCommand(kPost, "/", command, &session_id, ¶ms)); |
| 146 ASSERT_FALSE(internal::MatchesCommand( | 146 ASSERT_FALSE(internal::MatchesCommand( |
| 147 kPost, "path/path/path", command, &session_id, ¶ms)); | 147 kPost, "path/path/path", command, &session_id, ¶ms)); |
| 148 } | 148 } |
| 149 | 149 |
| 150 TEST(MatchesCommandTest, DiffPaths) { | 150 TEST(MatchesCommandTest, DiffPaths) { |
| 151 CommandMapping command(kPost, "path/apath", "command"); | 151 CommandMapping command(kPost, "path/apath", "command"); |
| 152 std::string session_id; | 152 std::string session_id; |
| 153 base::DictionaryValue params; | 153 base::DictionaryValue params; |
| 154 ASSERT_FALSE(internal::MatchesCommand( | 154 ASSERT_FALSE(internal::MatchesCommand( |
| 155 kPost, "path/bpath", command, &session_id, ¶ms)); | 155 kPost, "path/bpath", command, &session_id, ¶ms)); |
| 156 } | 156 } |
| 157 | 157 |
| 158 TEST(MatchesCommandTest, Substitution) { | 158 TEST(MatchesCommandTest, Substitution) { |
| 159 CommandMapping command(kPost, "path/:sessionId/space/:a/:b", "command"); | 159 CommandMapping command(kPost, "path/:sessionId/space/:a/:b", "command"); |
| 160 std::string session_id; | 160 std::string session_id; |
| 161 base::DictionaryValue params; | 161 base::DictionaryValue params; |
| 162 ASSERT_TRUE(internal::MatchesCommand( | 162 ASSERT_TRUE(internal::MatchesCommand( |
| 163 kPost, "path/1/space/2/3", command, &session_id, ¶ms)); | 163 kPost, "path/1/space/2/3", command, &session_id, ¶ms)); |
| 164 ASSERT_EQ("1", session_id); | 164 ASSERT_EQ("1", session_id); |
| 165 ASSERT_EQ(2u, params.size()); | 165 ASSERT_EQ(2u, params.size()); |
| 166 std::string param; | 166 std::string param; |
| 167 ASSERT_TRUE(params.GetString("a", ¶m)); | 167 ASSERT_TRUE(params.GetString("a", ¶m)); |
| 168 ASSERT_EQ("2", param); | 168 ASSERT_EQ("2", param); |
| 169 ASSERT_TRUE(params.GetString("b", ¶m)); | 169 ASSERT_TRUE(params.GetString("b", ¶m)); |
| 170 ASSERT_EQ("3", param); | 170 ASSERT_EQ("3", param); |
| 171 } | 171 } |
| OLD | NEW |