Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/ftp/ftp_directory_listing_parser_unittest.h" | 5 #include "net/ftp/ftp_directory_listing_parser_unittest.h" |
| 6 | 6 |
| 7 #include "base/format_macros.h" | 7 #include "base/format_macros.h" |
| 8 #include "base/strings/string_util.h" | 8 #include "base/strings/string_util.h" |
| 9 #include "base/strings/stringprintf.h" | 9 #include "base/strings/stringprintf.h" |
| 10 #include "base/strings/string_split.h" | 10 #include "base/strings/string_split.h" |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 69 | 69 |
| 70 std::vector<FtpDirectoryListingEntry> entries; | 70 std::vector<FtpDirectoryListingEntry> entries; |
| 71 EXPECT_TRUE(ParseFtpDirectoryListingVms(lines, | 71 EXPECT_TRUE(ParseFtpDirectoryListingVms(lines, |
| 72 &entries)); | 72 &entries)); |
| 73 VerifySingleLineTestCase(good_cases[i], entries); | 73 VerifySingleLineTestCase(good_cases[i], entries); |
| 74 } | 74 } |
| 75 } | 75 } |
| 76 | 76 |
| 77 TEST_F(FtpDirectoryListingParserVmsTest, Bad) { | 77 TEST_F(FtpDirectoryListingParserVmsTest, Bad) { |
| 78 const char* const bad_cases[] = { | 78 const char* const bad_cases[] = { |
| 79 "garbage", | 79 "garbage", |
| 80 | 80 |
| 81 // Missing file version number. | 81 // Missing file version number. |
| 82 "README.TXT 2 18-APR-2000 10:40:39", | 82 "README.TXT 2 18-APR-2000 10:40:39", |
| 83 | 83 |
| 84 // Missing extension. | 84 // Missing extension. |
| 85 "README;1 2 18-APR-2000 10:40:39", | 85 "README;1 2 18-APR-2000 10:40:39", |
| 86 | 86 |
| 87 // Malformed file size. | 87 // Malformed file size. |
| 88 "README.TXT;1 garbage 18-APR-2000 10:40:39", | 88 "README.TXT;1 garbage 18-APR-2000 10:40:39", |
| 89 "README.TXT;1 -2 18-APR-2000 10:40:39", | 89 "README.TXT;1 -2 18-APR-2000 10:40:39", |
| 90 | 90 |
| 91 // Malformed date. | 91 // Malformed date. |
| 92 "README.TXT;1 2 APR-2000 10:40:39", | 92 "README.TXT;1 2 APR-2000 10:40:39", |
| 93 "README.TXT;1 2 -18-APR-2000 10:40:39", | 93 "README.TXT;1 2 -18-APR-2000 10:40:39", "README.TXT;1 2 18-APR 10:40:39", |
| 94 "README.TXT;1 2 18-APR 10:40:39", | 94 "README.TXT;1 2 18-APR-2000 10", "README.TXT;1 2 18-APR-2000 10:40.25", |
| 95 "README.TXT;1 2 18-APR-2000 10", | 95 "README.TXT;1 2 18-APR-2000 10:40.25.25", |
| 96 "README.TXT;1 2 18-APR-2000 10:40.25", | |
| 97 "README.TXT;1 2 18-APR-2000 10:40.25.25", | |
| 98 | 96 |
| 99 // Malformed security information. | 97 // Malformed security information. |
| 100 "X.TXT;2 1 12-MAR-2005 08:44:57 (RWED,RWED,RE,RE)", | 98 "X.TXT;2 1 12-MAR-2005 08:44:57 (RWED,RWED,RE,RE)", |
| 101 "X.TXT;2 1 12-MAR-2005 08:44:57 [SYSTEM]", | 99 "X.TXT;2 1 12-MAR-2005 08:44:57 [SYSTEM]", |
| 102 "X.TXT;2 1 12-MAR-2005 08:44:57 (SYSTEM) (RWED,RWED,RE,RE)", | 100 "X.TXT;2 1 12-MAR-2005 08:44:57 (SYSTEM) (RWED,RWED,RE,RE)", |
| 103 "X.TXT;2 1 12-MAR-2005 08:44:57 [SYSTEM] [RWED,RWED,RE,RE]", | 101 "X.TXT;2 1 12-MAR-2005 08:44:57 [SYSTEM] [RWED,RWED,RE,RE]", |
| 104 "X.TXT;2 1 12-MAR-2005 08:44:57 [X] (RWED)", | 102 "X.TXT;2 1 12-MAR-2005 08:44:57 [X] (RWED)", |
| 105 "X.TXT;2 1 12-MAR-2005 08:44:57 [X] (RWED,RWED,RE,RE,RE)", | 103 "X.TXT;2 1 12-MAR-2005 08:44:57 [X] (RWED,RWED,RE,RE,RE)", |
| 106 "X.TXT;2 1 12-MAR-2005 08:44:57 [X] (RWED,RWEDRWED,RE,RE)", | 104 "X.TXT;2 1 12-MAR-2005 08:44:57 [X] (RWED,RWEDRWED,RE,RE)", |
| 107 "X.TXT;2 1 12-MAR-2005 08:44:57 [X] (RWED,DEWR,RE,RE)", | 105 "X.TXT;2 1 12-MAR-2005 08:44:57 [X] (RWED,DEWR,RE,RE)", |
| 108 "X.TXT;2 1 12-MAR-2005 08:44:57 [X] (RWED,RWED,Q,RE)", | 106 "X.TXT;2 1 12-MAR-2005 08:44:57 [X] (RWED,RWED,Q,RE)", |
| 109 "X.TXT;2 1 12-MAR-2005 08:44:57 [X] (RWED,RRWWEEDD,RE,RE)", | 107 "X.TXT;2 1 12-MAR-2005 08:44:57 [X] (RWED,RRWWEEDD,RE,RE)", |
| 108 | |
| 109 // Block size is too large, leading to overflow when calculating | |
| 110 // file size. | |
| 111 "README.TXT;1 9223372036854775807 18-APR-2000 10:40:39.90", | |
| 112 "README.TXT;1 9223372036854775807/9223372036854775807 18-APR-2000 " | |
| 113 "10:40:39.90", | |
| 114 | |
| 115 // Block size is too large (bigger than int64 max) | |
| 116 "README.TXT;1 19223372036854775807 18-APR-2000 10:40:39.90", | |
| 117 "README.TXT;1 19223372036854775807/19223372036854775807 18-APR-2000 " | |
|
mmenke
2017/01/04 19:07:24
Also a test where block site is not too large (Nor
eroman
2017/01/04 20:16:58
Done.
| |
| 118 "10:40:39.90", | |
| 110 }; | 119 }; |
| 111 for (size_t i = 0; i < arraysize(bad_cases); i++) { | 120 for (size_t i = 0; i < arraysize(bad_cases); i++) { |
| 112 SCOPED_TRACE(base::StringPrintf("Test[%" PRIuS "]: %s", i, bad_cases[i])); | 121 SCOPED_TRACE(base::StringPrintf("Test[%" PRIuS "]: %s", i, bad_cases[i])); |
| 113 | 122 |
| 114 std::vector<base::string16> lines(GetSingleLineTestCase(bad_cases[i])); | 123 std::vector<base::string16> lines(GetSingleLineTestCase(bad_cases[i])); |
| 115 | 124 |
| 116 // The parser requires a directory header before accepting regular input. | 125 // The parser requires a directory header before accepting regular input. |
| 117 lines.insert(lines.begin(), | 126 lines.insert(lines.begin(), |
| 118 ASCIIToUTF16("Directory ANONYMOUS_ROOT:[000000]")); | 127 ASCIIToUTF16("Directory ANONYMOUS_ROOT:[000000]")); |
| 119 | 128 |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 186 | 195 |
| 187 lines.push_back(ASCIIToUTF16(" ")); | 196 lines.push_back(ASCIIToUTF16(" ")); |
| 188 | 197 |
| 189 std::vector<FtpDirectoryListingEntry> entries; | 198 std::vector<FtpDirectoryListingEntry> entries; |
| 190 EXPECT_FALSE(ParseFtpDirectoryListingVms(lines, &entries)); | 199 EXPECT_FALSE(ParseFtpDirectoryListingVms(lines, &entries)); |
| 191 } | 200 } |
| 192 | 201 |
| 193 } // namespace | 202 } // namespace |
| 194 | 203 |
| 195 } // namespace net | 204 } // namespace net |
| OLD | NEW |