| OLD | NEW |
| 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 <algorithm> | 5 #include <algorithm> |
| 6 | 6 |
| 7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
| 8 #include "base/string_util.h" | 8 #include "base/string_util.h" |
| 9 #include "net/http/http_util.h" | 9 #include "net/http/http_util.h" |
| 10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
| (...skipping 948 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 959 CheckCurrentNameValuePair(&parser_a, true, "beta", " b ")); | 959 CheckCurrentNameValuePair(&parser_a, true, "beta", " b ")); |
| 960 | 960 |
| 961 // advance b, no effect on a | 961 // advance b, no effect on a |
| 962 ASSERT_NO_FATAL_FAILURE( | 962 ASSERT_NO_FATAL_FAILURE( |
| 963 CheckNextNameValuePair(&parser_b, true, true, "cappa", "c;")); | 963 CheckNextNameValuePair(&parser_b, true, true, "cappa", "c;")); |
| 964 ASSERT_NO_FATAL_FAILURE( | 964 ASSERT_NO_FATAL_FAILURE( |
| 965 CheckCurrentNameValuePair(&parser_a, true, "beta", " b ")); | 965 CheckCurrentNameValuePair(&parser_a, true, "beta", " b ")); |
| 966 } | 966 } |
| 967 | 967 |
| 968 TEST(HttpUtilTest, NameValuePairsIteratorEmptyInput) { | 968 TEST(HttpUtilTest, NameValuePairsIteratorEmptyInput) { |
| 969 std::string data = ""; | 969 std::string data; |
| 970 HttpUtil::NameValuePairsIterator parser(data.begin(), data.end(), ';'); | 970 HttpUtil::NameValuePairsIterator parser(data.begin(), data.end(), ';'); |
| 971 | 971 |
| 972 EXPECT_TRUE(parser.valid()); | 972 EXPECT_TRUE(parser.valid()); |
| 973 ASSERT_NO_FATAL_FAILURE( | 973 ASSERT_NO_FATAL_FAILURE(CheckNextNameValuePair( |
| 974 CheckNextNameValuePair(&parser, false, true, "", "")); | 974 &parser, false, true, std::string(), std::string())); |
| 975 } | 975 } |
| 976 | 976 |
| 977 TEST(HttpUtilTest, NameValuePairsIterator) { | 977 TEST(HttpUtilTest, NameValuePairsIterator) { |
| 978 std::string data = "alpha=1; beta= 2 ;cappa =' 3; ';" | 978 std::string data = "alpha=1; beta= 2 ;cappa =' 3; ';" |
| 979 "delta= \" \\\"4\\\" \"; e= \" '5'\"; e=6;" | 979 "delta= \" \\\"4\\\" \"; e= \" '5'\"; e=6;" |
| 980 "f='\\'\\h\\e\\l\\l\\o\\ \\w\\o\\r\\l\\d\\'';" | 980 "f='\\'\\h\\e\\l\\l\\o\\ \\w\\o\\r\\l\\d\\'';" |
| 981 "g=''; h='hello'"; | 981 "g=''; h='hello'"; |
| 982 HttpUtil::NameValuePairsIterator parser(data.begin(), data.end(), ';'); | 982 HttpUtil::NameValuePairsIterator parser(data.begin(), data.end(), ';'); |
| 983 EXPECT_TRUE(parser.valid()); | 983 EXPECT_TRUE(parser.valid()); |
| 984 | 984 |
| 985 ASSERT_NO_FATAL_FAILURE( | 985 ASSERT_NO_FATAL_FAILURE( |
| 986 CheckNextNameValuePair(&parser, true, true, "alpha", "1")); | 986 CheckNextNameValuePair(&parser, true, true, "alpha", "1")); |
| 987 ASSERT_NO_FATAL_FAILURE( | 987 ASSERT_NO_FATAL_FAILURE( |
| 988 CheckNextNameValuePair(&parser, true, true, "beta", "2")); | 988 CheckNextNameValuePair(&parser, true, true, "beta", "2")); |
| 989 ASSERT_NO_FATAL_FAILURE( | 989 ASSERT_NO_FATAL_FAILURE( |
| 990 CheckNextNameValuePair(&parser, true, true, "cappa", " 3; ")); | 990 CheckNextNameValuePair(&parser, true, true, "cappa", " 3; ")); |
| 991 ASSERT_NO_FATAL_FAILURE( | 991 ASSERT_NO_FATAL_FAILURE( |
| 992 CheckNextNameValuePair(&parser, true, true, "delta", " \"4\" ")); | 992 CheckNextNameValuePair(&parser, true, true, "delta", " \"4\" ")); |
| 993 ASSERT_NO_FATAL_FAILURE( | 993 ASSERT_NO_FATAL_FAILURE( |
| 994 CheckNextNameValuePair(&parser, true, true, "e", " '5'")); | 994 CheckNextNameValuePair(&parser, true, true, "e", " '5'")); |
| 995 ASSERT_NO_FATAL_FAILURE( | 995 ASSERT_NO_FATAL_FAILURE( |
| 996 CheckNextNameValuePair(&parser, true, true, "e", "6")); | 996 CheckNextNameValuePair(&parser, true, true, "e", "6")); |
| 997 ASSERT_NO_FATAL_FAILURE( | 997 ASSERT_NO_FATAL_FAILURE( |
| 998 CheckNextNameValuePair(&parser, true, true, "f", "'hello world'")); | 998 CheckNextNameValuePair(&parser, true, true, "f", "'hello world'")); |
| 999 ASSERT_NO_FATAL_FAILURE( | 999 ASSERT_NO_FATAL_FAILURE( |
| 1000 CheckNextNameValuePair(&parser, true, true, "g", "")); | 1000 CheckNextNameValuePair(&parser, true, true, "g", std::string())); |
| 1001 ASSERT_NO_FATAL_FAILURE( | 1001 ASSERT_NO_FATAL_FAILURE( |
| 1002 CheckNextNameValuePair(&parser, true, true, "h", "hello")); | 1002 CheckNextNameValuePair(&parser, true, true, "h", "hello")); |
| 1003 ASSERT_NO_FATAL_FAILURE( | 1003 ASSERT_NO_FATAL_FAILURE(CheckNextNameValuePair( |
| 1004 CheckNextNameValuePair(&parser, false, true, "", "")); | 1004 &parser, false, true, std::string(), std::string())); |
| 1005 } | 1005 } |
| 1006 | 1006 |
| 1007 TEST(HttpUtilTest, NameValuePairsIteratorIllegalInputs) { | 1007 TEST(HttpUtilTest, NameValuePairsIteratorIllegalInputs) { |
| 1008 ASSERT_NO_FATAL_FAILURE(CheckInvalidNameValuePair("alpha=1", "; beta")); | 1008 ASSERT_NO_FATAL_FAILURE(CheckInvalidNameValuePair("alpha=1", "; beta")); |
| 1009 ASSERT_NO_FATAL_FAILURE(CheckInvalidNameValuePair("", "beta")); | 1009 ASSERT_NO_FATAL_FAILURE(CheckInvalidNameValuePair(std::string(), "beta")); |
| 1010 | 1010 |
| 1011 ASSERT_NO_FATAL_FAILURE(CheckInvalidNameValuePair("alpha=1", "; 'beta'=2")); | 1011 ASSERT_NO_FATAL_FAILURE(CheckInvalidNameValuePair("alpha=1", "; 'beta'=2")); |
| 1012 ASSERT_NO_FATAL_FAILURE(CheckInvalidNameValuePair("", "'beta'=2")); | 1012 ASSERT_NO_FATAL_FAILURE(CheckInvalidNameValuePair(std::string(), "'beta'=2")); |
| 1013 ASSERT_NO_FATAL_FAILURE(CheckInvalidNameValuePair("alpha=1", ";beta=")); | 1013 ASSERT_NO_FATAL_FAILURE(CheckInvalidNameValuePair("alpha=1", ";beta=")); |
| 1014 ASSERT_NO_FATAL_FAILURE(CheckInvalidNameValuePair("alpha=1", | 1014 ASSERT_NO_FATAL_FAILURE(CheckInvalidNameValuePair("alpha=1", |
| 1015 ";beta=;cappa=2")); | 1015 ";beta=;cappa=2")); |
| 1016 | 1016 |
| 1017 // According to the spec this is an error, but it doesn't seem appropriate to | 1017 // According to the spec this is an error, but it doesn't seem appropriate to |
| 1018 // change our behaviour to be less permissive at this time. | 1018 // change our behaviour to be less permissive at this time. |
| 1019 // See NameValuePairsIteratorExtraSeparators test | 1019 // See NameValuePairsIteratorExtraSeparators test |
| 1020 // ASSERT_NO_FATAL_FAILURE(CheckInvalidNameValuePair("alpha=1", ";; beta=2")); | 1020 // ASSERT_NO_FATAL_FAILURE(CheckInvalidNameValuePair("alpha=1", ";; beta=2")); |
| 1021 } | 1021 } |
| 1022 | 1022 |
| 1023 // If we are going to support extra separators against the spec, let's just make | 1023 // If we are going to support extra separators against the spec, let's just make |
| 1024 // sure they work rationally. | 1024 // sure they work rationally. |
| 1025 TEST(HttpUtilTest, NameValuePairsIteratorExtraSeparators) { | 1025 TEST(HttpUtilTest, NameValuePairsIteratorExtraSeparators) { |
| 1026 std::string data = " ; ;;alpha=1; ;; ; beta= 2;cappa=3;;; ; "; | 1026 std::string data = " ; ;;alpha=1; ;; ; beta= 2;cappa=3;;; ; "; |
| 1027 HttpUtil::NameValuePairsIterator parser(data.begin(), data.end(), ';'); | 1027 HttpUtil::NameValuePairsIterator parser(data.begin(), data.end(), ';'); |
| 1028 EXPECT_TRUE(parser.valid()); | 1028 EXPECT_TRUE(parser.valid()); |
| 1029 | 1029 |
| 1030 ASSERT_NO_FATAL_FAILURE( | 1030 ASSERT_NO_FATAL_FAILURE( |
| 1031 CheckNextNameValuePair(&parser, true, true, "alpha", "1")); | 1031 CheckNextNameValuePair(&parser, true, true, "alpha", "1")); |
| 1032 ASSERT_NO_FATAL_FAILURE( | 1032 ASSERT_NO_FATAL_FAILURE( |
| 1033 CheckNextNameValuePair(&parser, true, true, "beta", "2")); | 1033 CheckNextNameValuePair(&parser, true, true, "beta", "2")); |
| 1034 ASSERT_NO_FATAL_FAILURE( | 1034 ASSERT_NO_FATAL_FAILURE( |
| 1035 CheckNextNameValuePair(&parser, true, true, "cappa", "3")); | 1035 CheckNextNameValuePair(&parser, true, true, "cappa", "3")); |
| 1036 ASSERT_NO_FATAL_FAILURE( | 1036 ASSERT_NO_FATAL_FAILURE(CheckNextNameValuePair( |
| 1037 CheckNextNameValuePair(&parser, false, true, "", "")); | 1037 &parser, false, true, std::string(), std::string())); |
| 1038 } | 1038 } |
| 1039 | 1039 |
| 1040 // See comments on the implementation of NameValuePairsIterator::GetNext | 1040 // See comments on the implementation of NameValuePairsIterator::GetNext |
| 1041 // regarding this derogation from the spec. | 1041 // regarding this derogation from the spec. |
| 1042 TEST(HttpUtilTest, NameValuePairsIteratorMissingEndQuote) { | 1042 TEST(HttpUtilTest, NameValuePairsIteratorMissingEndQuote) { |
| 1043 std::string data = "name='value"; | 1043 std::string data = "name='value"; |
| 1044 HttpUtil::NameValuePairsIterator parser(data.begin(), data.end(), ';'); | 1044 HttpUtil::NameValuePairsIterator parser(data.begin(), data.end(), ';'); |
| 1045 EXPECT_TRUE(parser.valid()); | 1045 EXPECT_TRUE(parser.valid()); |
| 1046 | 1046 |
| 1047 ASSERT_NO_FATAL_FAILURE( | 1047 ASSERT_NO_FATAL_FAILURE( |
| 1048 CheckNextNameValuePair(&parser, true, true, "name", "value")); | 1048 CheckNextNameValuePair(&parser, true, true, "name", "value")); |
| 1049 ASSERT_NO_FATAL_FAILURE( | 1049 ASSERT_NO_FATAL_FAILURE(CheckNextNameValuePair( |
| 1050 CheckNextNameValuePair(&parser, false, true, "", "")); | 1050 &parser, false, true, std::string(), std::string())); |
| 1051 } | 1051 } |
| OLD | NEW |