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

Side by Side Diff: sky/engine/platform/network/HTTPParsersTest.cpp

Issue 1239633002: Remove //sky/engine/platform/network (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: rebase Created 5 years, 5 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
« no previous file with comments | « sky/engine/platform/network/HTTPParsers.cpp ('k') | sky/engine/platform/network/HTTPRequest.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "sky/engine/platform/network/HTTPParsers.h"
6
7 #include "sky/engine/wtf/MathExtras.h"
8 #include "sky/engine/wtf/text/AtomicString.h"
9 #include "wtf/testing/WTFTestHelpers.h"
10
11 #include <gtest/gtest.h>
12
13 namespace blink {
14
15 namespace {
16
17 size_t parseHTTPHeader(const char* data, String& failureReason, AtomicString& na meStr, AtomicString& valueStr)
18 {
19 return blink::parseHTTPHeader(data, strlen(data), failureReason, nameStr, va lueStr);
20 }
21
22 } // namespace
23
24 TEST(HTTPParsersTest, ParseCacheControl)
25 {
26 CacheControlHeader header;
27
28 header = parseCacheControlDirectives("no-cache", AtomicString());
29 EXPECT_TRUE(header.parsed);
30 EXPECT_TRUE(header.containsNoCache);
31 EXPECT_FALSE(header.containsNoStore);
32 EXPECT_FALSE(header.containsMustRevalidate);
33 EXPECT_TRUE(std::isnan(header.maxAge));
34
35 header = parseCacheControlDirectives("no-cache no-store", AtomicString());
36 EXPECT_TRUE(header.parsed);
37 EXPECT_TRUE(header.containsNoCache);
38 EXPECT_FALSE(header.containsNoStore);
39 EXPECT_FALSE(header.containsMustRevalidate);
40 EXPECT_TRUE(std::isnan(header.maxAge));
41
42 header = parseCacheControlDirectives("no-store must-revalidate", AtomicStrin g());
43 EXPECT_TRUE(header.parsed);
44 EXPECT_FALSE(header.containsNoCache);
45 EXPECT_TRUE(header.containsNoStore);
46 EXPECT_FALSE(header.containsMustRevalidate);
47 EXPECT_TRUE(std::isnan(header.maxAge));
48
49 header = parseCacheControlDirectives("max-age=0", AtomicString());
50 EXPECT_TRUE(header.parsed);
51 EXPECT_FALSE(header.containsNoCache);
52 EXPECT_FALSE(header.containsNoStore);
53 EXPECT_FALSE(header.containsMustRevalidate);
54 EXPECT_EQ(0.0, header.maxAge);
55
56 header = parseCacheControlDirectives("max-age", AtomicString());
57 EXPECT_TRUE(header.parsed);
58 EXPECT_FALSE(header.containsNoCache);
59 EXPECT_FALSE(header.containsNoStore);
60 EXPECT_FALSE(header.containsMustRevalidate);
61 EXPECT_TRUE(std::isnan(header.maxAge));
62
63 header = parseCacheControlDirectives("max-age=0 no-cache", AtomicString());
64 EXPECT_TRUE(header.parsed);
65 EXPECT_FALSE(header.containsNoCache);
66 EXPECT_FALSE(header.containsNoStore);
67 EXPECT_FALSE(header.containsMustRevalidate);
68 EXPECT_EQ(0.0, header.maxAge);
69
70 header = parseCacheControlDirectives("no-cache=foo", AtomicString());
71 EXPECT_TRUE(header.parsed);
72 EXPECT_FALSE(header.containsNoCache);
73 EXPECT_FALSE(header.containsNoStore);
74 EXPECT_FALSE(header.containsMustRevalidate);
75 EXPECT_TRUE(std::isnan(header.maxAge));
76
77 header = parseCacheControlDirectives("nonsense", AtomicString());
78 EXPECT_TRUE(header.parsed);
79 EXPECT_FALSE(header.containsNoCache);
80 EXPECT_FALSE(header.containsNoStore);
81 EXPECT_FALSE(header.containsMustRevalidate);
82 EXPECT_TRUE(std::isnan(header.maxAge));
83
84 header = parseCacheControlDirectives("\rno-cache\n\t\v\0\b", AtomicString()) ;
85 EXPECT_TRUE(header.parsed);
86 EXPECT_TRUE(header.containsNoCache);
87 EXPECT_FALSE(header.containsNoStore);
88 EXPECT_FALSE(header.containsMustRevalidate);
89 EXPECT_TRUE(std::isnan(header.maxAge));
90
91 header = parseCacheControlDirectives(" no-cache ", AtomicString() );
92 EXPECT_TRUE(header.parsed);
93 EXPECT_TRUE(header.containsNoCache);
94 EXPECT_FALSE(header.containsNoStore);
95 EXPECT_FALSE(header.containsMustRevalidate);
96 EXPECT_TRUE(std::isnan(header.maxAge));
97
98 header = parseCacheControlDirectives(AtomicString(), "no-cache");
99 EXPECT_TRUE(header.parsed);
100 EXPECT_TRUE(header.containsNoCache);
101 EXPECT_FALSE(header.containsNoStore);
102 EXPECT_FALSE(header.containsMustRevalidate);
103 EXPECT_TRUE(std::isnan(header.maxAge));
104 }
105
106 TEST(HTTPParsersTest, parseHTTPHeaderSimple)
107 {
108 String failureReason;
109 AtomicString name, value;
110 EXPECT_EQ(12u, parseHTTPHeader("foo: bar\r\notherdata", failureReason, nam e, value));
111 EXPECT_TRUE(failureReason.isEmpty());
112 EXPECT_EQ("foo", name.string());
113 EXPECT_EQ("bar", value.string());
114 }
115
116 TEST(HTTPParsersTest, parseHTTPHeaderEmptyName)
117 {
118 String failureReason;
119 AtomicString name, value;
120 EXPECT_EQ(0u, parseHTTPHeader(": bar\r\notherdata", failureReason, name, val ue));
121 EXPECT_EQ("Header name is missing", failureReason);
122 }
123
124 TEST(HTTPParsersTest, parseHTTPHeaderEmptyValue)
125 {
126 String failureReason;
127 AtomicString name, value;
128 EXPECT_EQ(7u, parseHTTPHeader("foo: \r\notherdata", failureReason, name, val ue));
129 EXPECT_TRUE(failureReason.isEmpty());
130 EXPECT_EQ("foo", name.string());
131 EXPECT_TRUE(value.isEmpty());
132 }
133
134 TEST(HTTPParsersTest, parseHTTPHeaderInvalidName)
135 {
136 String failureReason;
137 AtomicString name, value;
138 EXPECT_EQ(0u, parseHTTPHeader("\xfa: \r\notherdata", failureReason, name, va lue));
139 EXPECT_EQ("Invalid UTF-8 sequence in header name", failureReason);
140 }
141
142 TEST(HTTPParsersTest, parseHTTPHeaderInvalidValue)
143 {
144 String failureReason;
145 AtomicString name, value;
146 EXPECT_EQ(0u, parseHTTPHeader("foo: \xfa\r\notherdata", failureReason, name, value));
147 EXPECT_EQ("Invalid UTF-8 sequence in header value", failureReason);
148 }
149
150 TEST(HTTPParsersTest, parseHTTPHeaderEmpty)
151 {
152 String failureReason;
153 AtomicString name, value;
154 EXPECT_EQ(0u, parseHTTPHeader("", failureReason, name, value));
155 EXPECT_EQ("Unterminated header name", failureReason);
156 }
157
158 TEST(HTTPParsersTest, parseHTTPHeaderEmptyLine)
159 {
160 String failureReason;
161 AtomicString name, value;
162 EXPECT_EQ(2u, parseHTTPHeader("\r\notherdata", failureReason, name, value));
163 EXPECT_TRUE(failureReason.isEmpty());
164 EXPECT_TRUE(name.isNull());
165 EXPECT_TRUE(value.isNull());
166 }
167
168 TEST(HTTPParsersTest, parseHTTPHeaderUnexpectedCRinName)
169 {
170 String failureReason;
171 AtomicString name, value;
172 EXPECT_EQ(0u, parseHTTPHeader("foo\rotherdata\n", failureReason, name, value ));
173 EXPECT_EQ("Unexpected CR in name at foo", failureReason);
174 }
175
176 TEST(HTTPParsersTest, parseHTTPHeaderUnexpectedLFinName)
177 {
178 String failureReason;
179 AtomicString name, value;
180 EXPECT_EQ(0u, parseHTTPHeader("foo\notherdata\n", failureReason, name, value ));
181 EXPECT_EQ("Unexpected LF in name at foo", failureReason);
182 }
183
184 TEST(HTTPParsersTest, parseHTTPHeaderUnexpectedLFinValue)
185 {
186 String failureReason;
187 AtomicString name, value;
188 EXPECT_EQ(0u, parseHTTPHeader("foo: bar\notherdata\n", failureReason, name, value));
189 EXPECT_EQ("Unexpected LF in value at bar", failureReason);
190 }
191
192 TEST(HTTPParsersTest, parseHTTPHeaderNoLFAtEndOfLine)
193 {
194 String failureReason;
195 AtomicString name, value;
196 EXPECT_EQ(0u, parseHTTPHeader("foo: bar\r", failureReason, name, value));
197 EXPECT_EQ("LF doesn't follow CR after value at ", failureReason);
198 }
199
200 TEST(HTTPParsersTest, parseHTTPHeaderNoLF)
201 {
202 String failureReason;
203 AtomicString name, value;
204 EXPECT_EQ(0u, parseHTTPHeader("foo: bar\rhoge\r\n", failureReason, name, val ue));
205 EXPECT_EQ("LF doesn't follow CR after value at hoge\r\n", failureReason);
206 }
207
208 TEST(HTTPParsersTest, parseHTTPHeaderTwoLines)
209 {
210 const char data[] = "foo: bar\r\nhoge: fuga\r\nxxx";
211 String failureReason;
212 AtomicString name, value;
213
214 EXPECT_EQ(10u, parseHTTPHeader(data, failureReason, name, value));
215 EXPECT_TRUE(failureReason.isEmpty());
216 EXPECT_EQ("foo", name.string());
217 EXPECT_EQ("bar", value.string());
218
219 EXPECT_EQ(12u, parseHTTPHeader(data + 10, failureReason, name, value));
220 EXPECT_TRUE(failureReason.isEmpty());
221 EXPECT_EQ("hoge", name.string());
222 EXPECT_EQ("fuga", value.string());
223 }
224
225 } // namespace blink
226
OLDNEW
« no previous file with comments | « sky/engine/platform/network/HTTPParsers.cpp ('k') | sky/engine/platform/network/HTTPRequest.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698