| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 #include "net/quic/core/spdy_utils.h" | 4 #include "net/quic/core/spdy_utils.h" |
| 5 | 5 |
| 6 #include "base/macros.h" | 6 #include "base/macros.h" |
| 7 #include "net/quic/platform/api/quic_string_piece.h" | 7 #include "net/quic/platform/api/quic_string_piece.h" |
| 8 #include "net/quic/platform/api/quic_test.h" |
| 8 #include "net/quic/platform/api/quic_text_utils.h" | 9 #include "net/quic/platform/api/quic_text_utils.h" |
| 9 #include "net/test/gtest_util.h" | 10 #include "net/test/gtest_util.h" |
| 10 #include "testing/gtest/include/gtest/gtest.h" | |
| 11 | 11 |
| 12 using std::string; | 12 using std::string; |
| 13 using testing::UnorderedElementsAre; | 13 using testing::UnorderedElementsAre; |
| 14 using testing::Pair; | 14 using testing::Pair; |
| 15 | 15 |
| 16 namespace net { | 16 namespace net { |
| 17 namespace test { | 17 namespace test { |
| 18 | 18 |
| 19 static std::unique_ptr<QuicHeaderList> FromList( | 19 static std::unique_ptr<QuicHeaderList> FromList( |
| 20 const QuicHeaderList::ListType& src) { | 20 const QuicHeaderList::ListType& src) { |
| 21 std::unique_ptr<QuicHeaderList> headers(new QuicHeaderList); | 21 std::unique_ptr<QuicHeaderList> headers(new QuicHeaderList); |
| 22 headers->OnHeaderBlockStart(); | 22 headers->OnHeaderBlockStart(); |
| 23 for (const auto& p : src) { | 23 for (const auto& p : src) { |
| 24 headers->OnHeader(p.first, p.second); | 24 headers->OnHeader(p.first, p.second); |
| 25 } | 25 } |
| 26 headers->OnHeaderBlockEnd(0); | 26 headers->OnHeaderBlockEnd(0); |
| 27 return headers; | 27 return headers; |
| 28 } | 28 } |
| 29 | 29 |
| 30 TEST(SpdyUtilsTest, CopyAndValidateHeaders) { | 30 class SpdyUtilsTest : public QuicTest {}; |
| 31 |
| 32 TEST_F(SpdyUtilsTest, CopyAndValidateHeaders) { |
| 31 auto headers = FromList({// All cookie crumbs are joined. | 33 auto headers = FromList({// All cookie crumbs are joined. |
| 32 {"cookie", " part 1"}, | 34 {"cookie", " part 1"}, |
| 33 {"cookie", "part 2 "}, | 35 {"cookie", "part 2 "}, |
| 34 {"cookie", "part3"}, | 36 {"cookie", "part3"}, |
| 35 | 37 |
| 36 // Already-delimited headers are passed through. | 38 // Already-delimited headers are passed through. |
| 37 {"passed-through", string("foo\0baz", 7)}, | 39 {"passed-through", string("foo\0baz", 7)}, |
| 38 | 40 |
| 39 // Other headers are joined on \0. | 41 // Other headers are joined on \0. |
| 40 {"joined", "value 1"}, | 42 {"joined", "value 1"}, |
| (...skipping 18 matching lines...) Expand all Loading... |
| 59 EXPECT_THAT(block, | 61 EXPECT_THAT(block, |
| 60 UnorderedElementsAre( | 62 UnorderedElementsAre( |
| 61 Pair("cookie", " part 1; part 2 ; part3; fin!"), | 63 Pair("cookie", " part 1; part 2 ; part3; fin!"), |
| 62 Pair("passed-through", QuicStringPiece("foo\0baz", 7)), | 64 Pair("passed-through", QuicStringPiece("foo\0baz", 7)), |
| 63 Pair("joined", QuicStringPiece("value 1\0value 2", 15)), | 65 Pair("joined", QuicStringPiece("value 1\0value 2", 15)), |
| 64 Pair("empty", ""), | 66 Pair("empty", ""), |
| 65 Pair("empty-joined", QuicStringPiece("\0foo\0\0", 6)))); | 67 Pair("empty-joined", QuicStringPiece("\0foo\0\0", 6)))); |
| 66 EXPECT_EQ(-1, content_length); | 68 EXPECT_EQ(-1, content_length); |
| 67 } | 69 } |
| 68 | 70 |
| 69 TEST(SpdyUtilsTest, CopyAndValidateHeadersEmptyName) { | 71 TEST_F(SpdyUtilsTest, CopyAndValidateHeadersEmptyName) { |
| 70 auto headers = FromList({{"foo", "foovalue"}, {"", "barvalue"}, {"baz", ""}}); | 72 auto headers = FromList({{"foo", "foovalue"}, {"", "barvalue"}, {"baz", ""}}); |
| 71 int64_t content_length = -1; | 73 int64_t content_length = -1; |
| 72 SpdyHeaderBlock block; | 74 SpdyHeaderBlock block; |
| 73 ASSERT_FALSE( | 75 ASSERT_FALSE( |
| 74 SpdyUtils::CopyAndValidateHeaders(*headers, &content_length, &block)); | 76 SpdyUtils::CopyAndValidateHeaders(*headers, &content_length, &block)); |
| 75 } | 77 } |
| 76 | 78 |
| 77 TEST(SpdyUtilsTest, CopyAndValidateHeadersUpperCaseName) { | 79 TEST_F(SpdyUtilsTest, CopyAndValidateHeadersUpperCaseName) { |
| 78 auto headers = | 80 auto headers = |
| 79 FromList({{"foo", "foovalue"}, {"bar", "barvalue"}, {"bAz", ""}}); | 81 FromList({{"foo", "foovalue"}, {"bar", "barvalue"}, {"bAz", ""}}); |
| 80 int64_t content_length = -1; | 82 int64_t content_length = -1; |
| 81 SpdyHeaderBlock block; | 83 SpdyHeaderBlock block; |
| 82 ASSERT_FALSE( | 84 ASSERT_FALSE( |
| 83 SpdyUtils::CopyAndValidateHeaders(*headers, &content_length, &block)); | 85 SpdyUtils::CopyAndValidateHeaders(*headers, &content_length, &block)); |
| 84 } | 86 } |
| 85 | 87 |
| 86 TEST(SpdyUtilsTest, CopyAndValidateHeadersMultipleContentLengths) { | 88 TEST_F(SpdyUtilsTest, CopyAndValidateHeadersMultipleContentLengths) { |
| 87 auto headers = FromList({{"content-length", "9"}, | 89 auto headers = FromList({{"content-length", "9"}, |
| 88 {"foo", "foovalue"}, | 90 {"foo", "foovalue"}, |
| 89 {"content-length", "9"}, | 91 {"content-length", "9"}, |
| 90 {"bar", "barvalue"}, | 92 {"bar", "barvalue"}, |
| 91 {"baz", ""}}); | 93 {"baz", ""}}); |
| 92 int64_t content_length = -1; | 94 int64_t content_length = -1; |
| 93 SpdyHeaderBlock block; | 95 SpdyHeaderBlock block; |
| 94 ASSERT_TRUE( | 96 ASSERT_TRUE( |
| 95 SpdyUtils::CopyAndValidateHeaders(*headers, &content_length, &block)); | 97 SpdyUtils::CopyAndValidateHeaders(*headers, &content_length, &block)); |
| 96 EXPECT_THAT(block, UnorderedElementsAre( | 98 EXPECT_THAT(block, UnorderedElementsAre( |
| 97 Pair("foo", "foovalue"), Pair("bar", "barvalue"), | 99 Pair("foo", "foovalue"), Pair("bar", "barvalue"), |
| 98 Pair("content-length", QuicStringPiece("9" | 100 Pair("content-length", QuicStringPiece("9" |
| 99 "\0" | 101 "\0" |
| 100 "9", | 102 "9", |
| 101 3)), | 103 3)), |
| 102 Pair("baz", ""))); | 104 Pair("baz", ""))); |
| 103 EXPECT_EQ(9, content_length); | 105 EXPECT_EQ(9, content_length); |
| 104 } | 106 } |
| 105 | 107 |
| 106 TEST(SpdyUtilsTest, CopyAndValidateHeadersInconsistentContentLengths) { | 108 TEST_F(SpdyUtilsTest, CopyAndValidateHeadersInconsistentContentLengths) { |
| 107 auto headers = FromList({{"content-length", "9"}, | 109 auto headers = FromList({{"content-length", "9"}, |
| 108 {"foo", "foovalue"}, | 110 {"foo", "foovalue"}, |
| 109 {"content-length", "8"}, | 111 {"content-length", "8"}, |
| 110 {"bar", "barvalue"}, | 112 {"bar", "barvalue"}, |
| 111 {"baz", ""}}); | 113 {"baz", ""}}); |
| 112 int64_t content_length = -1; | 114 int64_t content_length = -1; |
| 113 SpdyHeaderBlock block; | 115 SpdyHeaderBlock block; |
| 114 ASSERT_FALSE( | 116 ASSERT_FALSE( |
| 115 SpdyUtils::CopyAndValidateHeaders(*headers, &content_length, &block)); | 117 SpdyUtils::CopyAndValidateHeaders(*headers, &content_length, &block)); |
| 116 } | 118 } |
| 117 | 119 |
| 118 TEST(SpdyUtilsTest, CopyAndValidateHeadersLargeContentLength) { | 120 TEST_F(SpdyUtilsTest, CopyAndValidateHeadersLargeContentLength) { |
| 119 auto headers = FromList({{"content-length", "9000000000"}, | 121 auto headers = FromList({{"content-length", "9000000000"}, |
| 120 {"foo", "foovalue"}, | 122 {"foo", "foovalue"}, |
| 121 {"bar", "barvalue"}, | 123 {"bar", "barvalue"}, |
| 122 {"baz", ""}}); | 124 {"baz", ""}}); |
| 123 int64_t content_length = -1; | 125 int64_t content_length = -1; |
| 124 SpdyHeaderBlock block; | 126 SpdyHeaderBlock block; |
| 125 ASSERT_TRUE( | 127 ASSERT_TRUE( |
| 126 SpdyUtils::CopyAndValidateHeaders(*headers, &content_length, &block)); | 128 SpdyUtils::CopyAndValidateHeaders(*headers, &content_length, &block)); |
| 127 EXPECT_THAT(block, UnorderedElementsAre( | 129 EXPECT_THAT(block, UnorderedElementsAre( |
| 128 Pair("foo", "foovalue"), Pair("bar", "barvalue"), | 130 Pair("foo", "foovalue"), Pair("bar", "barvalue"), |
| 129 Pair("content-length", QuicStringPiece("9000000000")), | 131 Pair("content-length", QuicStringPiece("9000000000")), |
| 130 Pair("baz", ""))); | 132 Pair("baz", ""))); |
| 131 EXPECT_EQ(9000000000, content_length); | 133 EXPECT_EQ(9000000000, content_length); |
| 132 } | 134 } |
| 133 | 135 |
| 134 TEST(SpdyUtilsTest, CopyAndValidateHeadersMultipleValues) { | 136 TEST_F(SpdyUtilsTest, CopyAndValidateHeadersMultipleValues) { |
| 135 auto headers = FromList({{"foo", "foovalue"}, | 137 auto headers = FromList({{"foo", "foovalue"}, |
| 136 {"bar", "barvalue"}, | 138 {"bar", "barvalue"}, |
| 137 {"baz", ""}, | 139 {"baz", ""}, |
| 138 {"foo", "boo"}, | 140 {"foo", "boo"}, |
| 139 {"baz", "buzz"}}); | 141 {"baz", "buzz"}}); |
| 140 int64_t content_length = -1; | 142 int64_t content_length = -1; |
| 141 SpdyHeaderBlock block; | 143 SpdyHeaderBlock block; |
| 142 ASSERT_TRUE( | 144 ASSERT_TRUE( |
| 143 SpdyUtils::CopyAndValidateHeaders(*headers, &content_length, &block)); | 145 SpdyUtils::CopyAndValidateHeaders(*headers, &content_length, &block)); |
| 144 EXPECT_THAT(block, UnorderedElementsAre( | 146 EXPECT_THAT(block, UnorderedElementsAre( |
| 145 Pair("foo", QuicStringPiece("foovalue\0boo", 12)), | 147 Pair("foo", QuicStringPiece("foovalue\0boo", 12)), |
| 146 Pair("bar", "barvalue"), | 148 Pair("bar", "barvalue"), |
| 147 Pair("baz", QuicStringPiece("\0buzz", 5)))); | 149 Pair("baz", QuicStringPiece("\0buzz", 5)))); |
| 148 EXPECT_EQ(-1, content_length); | 150 EXPECT_EQ(-1, content_length); |
| 149 } | 151 } |
| 150 | 152 |
| 151 TEST(SpdyUtilsTest, CopyAndValidateHeadersMoreThanTwoValues) { | 153 TEST_F(SpdyUtilsTest, CopyAndValidateHeadersMoreThanTwoValues) { |
| 152 auto headers = FromList({{"set-cookie", "value1"}, | 154 auto headers = FromList({{"set-cookie", "value1"}, |
| 153 {"set-cookie", "value2"}, | 155 {"set-cookie", "value2"}, |
| 154 {"set-cookie", "value3"}}); | 156 {"set-cookie", "value3"}}); |
| 155 int64_t content_length = -1; | 157 int64_t content_length = -1; |
| 156 SpdyHeaderBlock block; | 158 SpdyHeaderBlock block; |
| 157 ASSERT_TRUE( | 159 ASSERT_TRUE( |
| 158 SpdyUtils::CopyAndValidateHeaders(*headers, &content_length, &block)); | 160 SpdyUtils::CopyAndValidateHeaders(*headers, &content_length, &block)); |
| 159 EXPECT_THAT( | 161 EXPECT_THAT( |
| 160 block, UnorderedElementsAre(Pair( | 162 block, UnorderedElementsAre(Pair( |
| 161 "set-cookie", QuicStringPiece("value1\0value2\0value3", 20)))); | 163 "set-cookie", QuicStringPiece("value1\0value2\0value3", 20)))); |
| 162 EXPECT_EQ(-1, content_length); | 164 EXPECT_EQ(-1, content_length); |
| 163 } | 165 } |
| 164 | 166 |
| 165 TEST(SpdyUtilsTest, CopyAndValidateHeadersCookie) { | 167 TEST_F(SpdyUtilsTest, CopyAndValidateHeadersCookie) { |
| 166 auto headers = FromList({{"foo", "foovalue"}, | 168 auto headers = FromList({{"foo", "foovalue"}, |
| 167 {"bar", "barvalue"}, | 169 {"bar", "barvalue"}, |
| 168 {"cookie", "value1"}, | 170 {"cookie", "value1"}, |
| 169 {"baz", ""}}); | 171 {"baz", ""}}); |
| 170 int64_t content_length = -1; | 172 int64_t content_length = -1; |
| 171 SpdyHeaderBlock block; | 173 SpdyHeaderBlock block; |
| 172 ASSERT_TRUE( | 174 ASSERT_TRUE( |
| 173 SpdyUtils::CopyAndValidateHeaders(*headers, &content_length, &block)); | 175 SpdyUtils::CopyAndValidateHeaders(*headers, &content_length, &block)); |
| 174 EXPECT_THAT(block, UnorderedElementsAre( | 176 EXPECT_THAT(block, UnorderedElementsAre( |
| 175 Pair("foo", "foovalue"), Pair("bar", "barvalue"), | 177 Pair("foo", "foovalue"), Pair("bar", "barvalue"), |
| 176 Pair("cookie", "value1"), Pair("baz", ""))); | 178 Pair("cookie", "value1"), Pair("baz", ""))); |
| 177 EXPECT_EQ(-1, content_length); | 179 EXPECT_EQ(-1, content_length); |
| 178 } | 180 } |
| 179 | 181 |
| 180 TEST(SpdyUtilsTest, CopyAndValidateHeadersMultipleCookies) { | 182 TEST_F(SpdyUtilsTest, CopyAndValidateHeadersMultipleCookies) { |
| 181 auto headers = FromList({{"foo", "foovalue"}, | 183 auto headers = FromList({{"foo", "foovalue"}, |
| 182 {"bar", "barvalue"}, | 184 {"bar", "barvalue"}, |
| 183 {"cookie", "value1"}, | 185 {"cookie", "value1"}, |
| 184 {"baz", ""}, | 186 {"baz", ""}, |
| 185 {"cookie", "value2"}}); | 187 {"cookie", "value2"}}); |
| 186 int64_t content_length = -1; | 188 int64_t content_length = -1; |
| 187 SpdyHeaderBlock block; | 189 SpdyHeaderBlock block; |
| 188 ASSERT_TRUE( | 190 ASSERT_TRUE( |
| 189 SpdyUtils::CopyAndValidateHeaders(*headers, &content_length, &block)); | 191 SpdyUtils::CopyAndValidateHeaders(*headers, &content_length, &block)); |
| 190 EXPECT_THAT(block, UnorderedElementsAre( | 192 EXPECT_THAT(block, UnorderedElementsAre( |
| 191 Pair("foo", "foovalue"), Pair("bar", "barvalue"), | 193 Pair("foo", "foovalue"), Pair("bar", "barvalue"), |
| 192 Pair("cookie", "value1; value2"), Pair("baz", ""))); | 194 Pair("cookie", "value1; value2"), Pair("baz", ""))); |
| 193 EXPECT_EQ(-1, content_length); | 195 EXPECT_EQ(-1, content_length); |
| 194 } | 196 } |
| 195 | 197 |
| 196 TEST(SpdyUtilsTest, GetUrlFromHeaderBlock) { | 198 TEST_F(SpdyUtilsTest, GetUrlFromHeaderBlock) { |
| 197 SpdyHeaderBlock headers; | 199 SpdyHeaderBlock headers; |
| 198 EXPECT_EQ(SpdyUtils::GetUrlFromHeaderBlock(headers), ""); | 200 EXPECT_EQ(SpdyUtils::GetUrlFromHeaderBlock(headers), ""); |
| 199 headers[":scheme"] = "https"; | 201 headers[":scheme"] = "https"; |
| 200 EXPECT_EQ(SpdyUtils::GetUrlFromHeaderBlock(headers), ""); | 202 EXPECT_EQ(SpdyUtils::GetUrlFromHeaderBlock(headers), ""); |
| 201 headers[":authority"] = "www.google.com"; | 203 headers[":authority"] = "www.google.com"; |
| 202 EXPECT_EQ(SpdyUtils::GetUrlFromHeaderBlock(headers), ""); | 204 EXPECT_EQ(SpdyUtils::GetUrlFromHeaderBlock(headers), ""); |
| 203 headers[":path"] = "/index.html"; | 205 headers[":path"] = "/index.html"; |
| 204 EXPECT_EQ(SpdyUtils::GetUrlFromHeaderBlock(headers), | 206 EXPECT_EQ(SpdyUtils::GetUrlFromHeaderBlock(headers), |
| 205 "https://www.google.com/index.html"); | 207 "https://www.google.com/index.html"); |
| 206 headers["key1"] = "value1"; | 208 headers["key1"] = "value1"; |
| 207 headers["key2"] = "value2"; | 209 headers["key2"] = "value2"; |
| 208 EXPECT_EQ(SpdyUtils::GetUrlFromHeaderBlock(headers), | 210 EXPECT_EQ(SpdyUtils::GetUrlFromHeaderBlock(headers), |
| 209 "https://www.google.com/index.html"); | 211 "https://www.google.com/index.html"); |
| 210 } | 212 } |
| 211 | 213 |
| 212 TEST(SpdyUtilsTest, GetHostNameFromHeaderBlock) { | 214 TEST_F(SpdyUtilsTest, GetHostNameFromHeaderBlock) { |
| 213 SpdyHeaderBlock headers; | 215 SpdyHeaderBlock headers; |
| 214 EXPECT_EQ(SpdyUtils::GetHostNameFromHeaderBlock(headers), ""); | 216 EXPECT_EQ(SpdyUtils::GetHostNameFromHeaderBlock(headers), ""); |
| 215 headers[":scheme"] = "https"; | 217 headers[":scheme"] = "https"; |
| 216 EXPECT_EQ(SpdyUtils::GetHostNameFromHeaderBlock(headers), ""); | 218 EXPECT_EQ(SpdyUtils::GetHostNameFromHeaderBlock(headers), ""); |
| 217 headers[":authority"] = "www.google.com"; | 219 headers[":authority"] = "www.google.com"; |
| 218 EXPECT_EQ(SpdyUtils::GetHostNameFromHeaderBlock(headers), ""); | 220 EXPECT_EQ(SpdyUtils::GetHostNameFromHeaderBlock(headers), ""); |
| 219 headers[":path"] = "/index.html"; | 221 headers[":path"] = "/index.html"; |
| 220 EXPECT_EQ(SpdyUtils::GetHostNameFromHeaderBlock(headers), "www.google.com"); | 222 EXPECT_EQ(SpdyUtils::GetHostNameFromHeaderBlock(headers), "www.google.com"); |
| 221 headers["key1"] = "value1"; | 223 headers["key1"] = "value1"; |
| 222 headers["key2"] = "value2"; | 224 headers["key2"] = "value2"; |
| 223 EXPECT_EQ(SpdyUtils::GetHostNameFromHeaderBlock(headers), "www.google.com"); | 225 EXPECT_EQ(SpdyUtils::GetHostNameFromHeaderBlock(headers), "www.google.com"); |
| 224 headers[":authority"] = "www.google.com:6666"; | 226 headers[":authority"] = "www.google.com:6666"; |
| 225 EXPECT_EQ(SpdyUtils::GetHostNameFromHeaderBlock(headers), "www.google.com"); | 227 EXPECT_EQ(SpdyUtils::GetHostNameFromHeaderBlock(headers), "www.google.com"); |
| 226 headers[":authority"] = "192.168.1.1"; | 228 headers[":authority"] = "192.168.1.1"; |
| 227 EXPECT_EQ(SpdyUtils::GetHostNameFromHeaderBlock(headers), "192.168.1.1"); | 229 EXPECT_EQ(SpdyUtils::GetHostNameFromHeaderBlock(headers), "192.168.1.1"); |
| 228 headers[":authority"] = "192.168.1.1:6666"; | 230 headers[":authority"] = "192.168.1.1:6666"; |
| 229 EXPECT_EQ(SpdyUtils::GetHostNameFromHeaderBlock(headers), "192.168.1.1"); | 231 EXPECT_EQ(SpdyUtils::GetHostNameFromHeaderBlock(headers), "192.168.1.1"); |
| 230 } | 232 } |
| 231 | 233 |
| 232 TEST(SpdyUtilsTest, PopulateHeaderBlockFromUrl) { | 234 TEST_F(SpdyUtilsTest, PopulateHeaderBlockFromUrl) { |
| 233 string url = "https://www.google.com/index.html"; | 235 string url = "https://www.google.com/index.html"; |
| 234 SpdyHeaderBlock headers; | 236 SpdyHeaderBlock headers; |
| 235 EXPECT_TRUE(SpdyUtils::PopulateHeaderBlockFromUrl(url, &headers)); | 237 EXPECT_TRUE(SpdyUtils::PopulateHeaderBlockFromUrl(url, &headers)); |
| 236 EXPECT_EQ("https", headers[":scheme"].as_string()); | 238 EXPECT_EQ("https", headers[":scheme"].as_string()); |
| 237 EXPECT_EQ("www.google.com", headers[":authority"].as_string()); | 239 EXPECT_EQ("www.google.com", headers[":authority"].as_string()); |
| 238 EXPECT_EQ("/index.html", headers[":path"].as_string()); | 240 EXPECT_EQ("/index.html", headers[":path"].as_string()); |
| 239 } | 241 } |
| 240 | 242 |
| 241 TEST(SpdyUtilsTest, PopulateHeaderBlockFromUrlWithNoPath) { | 243 TEST_F(SpdyUtilsTest, PopulateHeaderBlockFromUrlWithNoPath) { |
| 242 string url = "https://www.google.com"; | 244 string url = "https://www.google.com"; |
| 243 SpdyHeaderBlock headers; | 245 SpdyHeaderBlock headers; |
| 244 EXPECT_TRUE(SpdyUtils::PopulateHeaderBlockFromUrl(url, &headers)); | 246 EXPECT_TRUE(SpdyUtils::PopulateHeaderBlockFromUrl(url, &headers)); |
| 245 EXPECT_EQ("https", headers[":scheme"].as_string()); | 247 EXPECT_EQ("https", headers[":scheme"].as_string()); |
| 246 EXPECT_EQ("www.google.com", headers[":authority"].as_string()); | 248 EXPECT_EQ("www.google.com", headers[":authority"].as_string()); |
| 247 EXPECT_EQ("/", headers[":path"].as_string()); | 249 EXPECT_EQ("/", headers[":path"].as_string()); |
| 248 } | 250 } |
| 249 | 251 |
| 250 TEST(SpdyUtilsTest, PopulateHeaderBlockFromUrlFails) { | 252 TEST_F(SpdyUtilsTest, PopulateHeaderBlockFromUrlFails) { |
| 251 SpdyHeaderBlock headers; | 253 SpdyHeaderBlock headers; |
| 252 EXPECT_FALSE(SpdyUtils::PopulateHeaderBlockFromUrl("/", &headers)); | 254 EXPECT_FALSE(SpdyUtils::PopulateHeaderBlockFromUrl("/", &headers)); |
| 253 EXPECT_FALSE(SpdyUtils::PopulateHeaderBlockFromUrl("/index.html", &headers)); | 255 EXPECT_FALSE(SpdyUtils::PopulateHeaderBlockFromUrl("/index.html", &headers)); |
| 254 EXPECT_FALSE( | 256 EXPECT_FALSE( |
| 255 SpdyUtils::PopulateHeaderBlockFromUrl("www.google.com/", &headers)); | 257 SpdyUtils::PopulateHeaderBlockFromUrl("www.google.com/", &headers)); |
| 256 } | 258 } |
| 257 | 259 |
| 258 } // namespace test | 260 } // namespace test |
| 259 } // namespace net | 261 } // namespace net |
| OLD | NEW |