Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(286)

Side by Side Diff: net/test/embedded_test_server/http_request_unittest.cc

Issue 920483004: Added chunked upload support for embedded_test_server (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Matt's comments Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "net/test/embedded_test_server/http_request.h" 5 #include "net/test/embedded_test_server/http_request.h"
6 6
7 #include "testing/gtest/include/gtest/gtest.h" 7 #include "testing/gtest/include/gtest/gtest.h"
8 8
9 namespace net { 9 namespace net {
10 namespace test_server { 10 namespace test_server {
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 parser.ProcessChunk("Content-Length: 0\r\n\r\n"); 69 parser.ProcessChunk("Content-Length: 0\r\n\r\n");
70 ASSERT_EQ(HttpRequestParser::ACCEPTED, parser.ParseRequest()); 70 ASSERT_EQ(HttpRequestParser::ACCEPTED, parser.ParseRequest());
71 71
72 scoped_ptr<HttpRequest> request = parser.GetRequest(); 72 scoped_ptr<HttpRequest> request = parser.GetRequest();
73 EXPECT_EQ("", request->content); 73 EXPECT_EQ("", request->content);
74 EXPECT_TRUE(request->has_content); 74 EXPECT_TRUE(request->has_content);
75 EXPECT_EQ(1u, request->headers.count("Content-Length")); 75 EXPECT_EQ(1u, request->headers.count("Content-Length"));
76 EXPECT_EQ("0", request->headers["Content-Length"]); 76 EXPECT_EQ("0", request->headers["Content-Length"]);
77 } 77 }
78 78
79 TEST(HttpRequestTest, ParseRequestWithChunkedBody) {
80 HttpRequestParser parser;
81
82 parser.ProcessChunk("POST /foobar.html HTTP/1.1\r\n");
83 parser.ProcessChunk("Transfer-Encoding: chunked\r\n\r\n");
84 parser.ProcessChunk("5\r\nhello\r\n");
85 parser.ProcessChunk("1\r\n \r\n");
86 parser.ProcessChunk("5\r\nworld\r\n");
87 parser.ProcessChunk("0\r\n\r\n");
88 ASSERT_EQ(HttpRequestParser::ACCEPTED, parser.ParseRequest());
89
90 scoped_ptr<HttpRequest> request = parser.GetRequest();
mmenke 2015/02/13 17:53:29 Should include base/memory/scoped_ptr (File alread
xunjieli 2015/02/13 18:36:14 Done.
91 EXPECT_EQ("hello world", request->content);
92 EXPECT_TRUE(request->has_content);
93 EXPECT_EQ(1u, request->headers.count("Transfer-Encoding"));
94 EXPECT_EQ("chunked", request->headers["Transfer-Encoding"]);
95 }
96
97 TEST(HttpRequestTest, ParseRequestWithChunkedBodySlow) {
98 HttpRequestParser parser;
99
100 parser.ProcessChunk("POST /foobar.html HTTP/1.1\r\n");
101 parser.ProcessChunk("Transfer-Encoding: chunked\r\n\r\n");
102 parser.ProcessChunk("5\r\nhello\r\n");
103 ASSERT_EQ(HttpRequestParser::WAITING, parser.ParseRequest());
104 parser.ProcessChunk("0\r\n\r\n");
mmenke 2015/02/13 17:53:29 You need to send partial chunks here, not entire c
xunjieli 2015/02/13 18:36:14 Right, that's why I called parser.ParseRequest() o
mmenke 2015/02/13 18:43:29 You're still calling it at chunk boundaries...So i
105 ASSERT_EQ(HttpRequestParser::ACCEPTED, parser.ParseRequest());
106 scoped_ptr<HttpRequest> request = parser.GetRequest();
107 EXPECT_EQ("hello", request->content);
108 EXPECT_TRUE(request->has_content);
109 EXPECT_EQ(1u, request->headers.count("Transfer-Encoding"));
110 EXPECT_EQ("chunked", request->headers["Transfer-Encoding"]);
111 }
112
79 TEST(HttpRequestTest, ParseRequestWithoutBody) { 113 TEST(HttpRequestTest, ParseRequestWithoutBody) {
80 HttpRequestParser parser; 114 HttpRequestParser parser;
81 115
82 parser.ProcessChunk("POST /foobar.html HTTP/1.1\r\n\r\n"); 116 parser.ProcessChunk("POST /foobar.html HTTP/1.1\r\n\r\n");
83 ASSERT_EQ(HttpRequestParser::ACCEPTED, parser.ParseRequest()); 117 ASSERT_EQ(HttpRequestParser::ACCEPTED, parser.ParseRequest());
84 118
85 scoped_ptr<HttpRequest> request = parser.GetRequest(); 119 scoped_ptr<HttpRequest> request = parser.GetRequest();
86 EXPECT_EQ("", request->content); 120 EXPECT_EQ("", request->content);
87 EXPECT_FALSE(request->has_content); 121 EXPECT_FALSE(request->has_content);
88 } 122 }
89 123
90 TEST(HttpRequestTest, ParseGet) { 124 TEST(HttpRequestTest, ParseGet) {
91 HttpRequestParser parser; 125 HttpRequestParser parser;
92 126
93 parser.ProcessChunk("GET /foobar.html HTTP/1.1\r\n\r\n"); 127 parser.ProcessChunk("GET /foobar.html HTTP/1.1\r\n\r\n");
94 ASSERT_EQ(HttpRequestParser::ACCEPTED, parser.ParseRequest()); 128 ASSERT_EQ(HttpRequestParser::ACCEPTED, parser.ParseRequest());
95 129
96 scoped_ptr<HttpRequest> request = parser.GetRequest(); 130 scoped_ptr<HttpRequest> request = parser.GetRequest();
97 EXPECT_EQ("/foobar.html", request->relative_url); 131 EXPECT_EQ("/foobar.html", request->relative_url);
98 EXPECT_EQ("GET", request->method_string); 132 EXPECT_EQ("GET", request->method_string);
99 EXPECT_EQ(METHOD_GET, request->method); 133 EXPECT_EQ(METHOD_GET, request->method);
100 EXPECT_EQ("", request->content); 134 EXPECT_EQ("", request->content);
101 EXPECT_FALSE(request->has_content); 135 EXPECT_FALSE(request->has_content);
102 } 136 }
103 137
104 } // namespace test_server 138 } // namespace test_server
105 } // namespace net 139 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698