20 #include <ripple/basics/Slice.h>
21 #include <ripple/basics/StringUtilities.h>
22 #include <ripple/basics/ToString.h>
23 #include <ripple/beast/unit_test.h>
72 BEAST_EXPECT(
parseUrl(pUrl,
"scheme://"));
73 BEAST_EXPECT(pUrl.
scheme ==
"scheme");
77 BEAST_EXPECT(!pUrl.
port);
87 BEAST_EXPECT(
parseUrl(pUrl,
"scheme:///"));
88 BEAST_EXPECT(pUrl.
scheme ==
"scheme");
92 BEAST_EXPECT(!pUrl.
port);
93 BEAST_EXPECT(pUrl.
path ==
"/");
98 BEAST_EXPECT(
parseUrl(pUrl,
"lower://domain"));
99 BEAST_EXPECT(pUrl.
scheme ==
"lower");
102 BEAST_EXPECT(pUrl.
domain ==
"domain");
103 BEAST_EXPECT(!pUrl.
port);
109 BEAST_EXPECT(
parseUrl(pUrl,
"UPPER://domain:234/"));
110 BEAST_EXPECT(pUrl.
scheme ==
"upper");
113 BEAST_EXPECT(pUrl.
domain ==
"domain");
114 BEAST_EXPECT(*pUrl.
port == 234);
115 BEAST_EXPECT(pUrl.
path ==
"/");
120 BEAST_EXPECT(
parseUrl(pUrl,
"Mixed://domain/path"));
121 BEAST_EXPECT(pUrl.
scheme ==
"mixed");
124 BEAST_EXPECT(pUrl.
domain ==
"domain");
125 BEAST_EXPECT(!pUrl.
port);
126 BEAST_EXPECT(pUrl.
path ==
"/path");
131 BEAST_EXPECT(
parseUrl(pUrl,
"scheme://[::1]:123/path"));
132 BEAST_EXPECT(pUrl.
scheme ==
"scheme");
135 BEAST_EXPECT(pUrl.
domain ==
"::1");
136 BEAST_EXPECT(*pUrl.
port == 123);
137 BEAST_EXPECT(pUrl.
path ==
"/path");
143 parseUrl(pUrl,
"scheme://user:pass@domain:123/abc:321"));
144 BEAST_EXPECT(pUrl.
scheme ==
"scheme");
145 BEAST_EXPECT(pUrl.
username ==
"user");
146 BEAST_EXPECT(pUrl.
password ==
"pass");
147 BEAST_EXPECT(pUrl.
domain ==
"domain");
148 BEAST_EXPECT(*pUrl.
port == 123);
149 BEAST_EXPECT(pUrl.
path ==
"/abc:321");
154 BEAST_EXPECT(
parseUrl(pUrl,
"scheme://user@domain:123/abc:321"));
155 BEAST_EXPECT(pUrl.
scheme ==
"scheme");
156 BEAST_EXPECT(pUrl.
username ==
"user");
158 BEAST_EXPECT(pUrl.
domain ==
"domain");
159 BEAST_EXPECT(*pUrl.
port == 123);
160 BEAST_EXPECT(pUrl.
path ==
"/abc:321");
165 BEAST_EXPECT(
parseUrl(pUrl,
"scheme://:pass@domain:123/abc:321"));
166 BEAST_EXPECT(pUrl.
scheme ==
"scheme");
168 BEAST_EXPECT(pUrl.
password ==
"pass");
169 BEAST_EXPECT(pUrl.
domain ==
"domain");
170 BEAST_EXPECT(*pUrl.
port == 123);
171 BEAST_EXPECT(pUrl.
path ==
"/abc:321");
176 BEAST_EXPECT(
parseUrl(pUrl,
"scheme://domain:123/abc:321"));
177 BEAST_EXPECT(pUrl.
scheme ==
"scheme");
180 BEAST_EXPECT(pUrl.
domain ==
"domain");
181 BEAST_EXPECT(*pUrl.
port == 123);
182 BEAST_EXPECT(pUrl.
path ==
"/abc:321");
187 BEAST_EXPECT(
parseUrl(pUrl,
"scheme://user:pass@domain/abc:321"));
188 BEAST_EXPECT(pUrl.
scheme ==
"scheme");
189 BEAST_EXPECT(pUrl.
username ==
"user");
190 BEAST_EXPECT(pUrl.
password ==
"pass");
191 BEAST_EXPECT(pUrl.
domain ==
"domain");
192 BEAST_EXPECT(!pUrl.
port);
193 BEAST_EXPECT(pUrl.
path ==
"/abc:321");
198 BEAST_EXPECT(
parseUrl(pUrl,
"scheme://user@domain/abc:321"));
199 BEAST_EXPECT(pUrl.
scheme ==
"scheme");
200 BEAST_EXPECT(pUrl.
username ==
"user");
202 BEAST_EXPECT(pUrl.
domain ==
"domain");
203 BEAST_EXPECT(!pUrl.
port);
204 BEAST_EXPECT(pUrl.
path ==
"/abc:321");
209 BEAST_EXPECT(
parseUrl(pUrl,
"scheme://:pass@domain/abc:321"));
210 BEAST_EXPECT(pUrl.
scheme ==
"scheme");
212 BEAST_EXPECT(pUrl.
password ==
"pass");
213 BEAST_EXPECT(pUrl.
domain ==
"domain");
214 BEAST_EXPECT(!pUrl.
port);
215 BEAST_EXPECT(pUrl.
path ==
"/abc:321");
220 BEAST_EXPECT(
parseUrl(pUrl,
"scheme://domain/abc:321"));
221 BEAST_EXPECT(pUrl.
scheme ==
"scheme");
224 BEAST_EXPECT(pUrl.
domain ==
"domain");
225 BEAST_EXPECT(!pUrl.
port);
226 BEAST_EXPECT(pUrl.
path ==
"/abc:321");
231 BEAST_EXPECT(
parseUrl(pUrl,
"scheme:///path/to/file"));
232 BEAST_EXPECT(pUrl.
scheme ==
"scheme");
236 BEAST_EXPECT(!pUrl.
port);
237 BEAST_EXPECT(pUrl.
path ==
"/path/to/file");
243 parseUrl(pUrl,
"scheme://user:pass@domain/path/with/an@sign"));
244 BEAST_EXPECT(pUrl.
scheme ==
"scheme");
245 BEAST_EXPECT(pUrl.
username ==
"user");
246 BEAST_EXPECT(pUrl.
password ==
"pass");
247 BEAST_EXPECT(pUrl.
domain ==
"domain");
248 BEAST_EXPECT(!pUrl.
port);
249 BEAST_EXPECT(pUrl.
path ==
"/path/with/an@sign");
254 BEAST_EXPECT(
parseUrl(pUrl,
"scheme://domain/path/with/an@sign"));
255 BEAST_EXPECT(pUrl.
scheme ==
"scheme");
258 BEAST_EXPECT(pUrl.
domain ==
"domain");
259 BEAST_EXPECT(!pUrl.
port);
260 BEAST_EXPECT(pUrl.
path ==
"/path/with/an@sign");
265 BEAST_EXPECT(
parseUrl(pUrl,
"scheme://:999/"));
266 BEAST_EXPECT(pUrl.
scheme ==
"scheme");
269 BEAST_EXPECT(pUrl.
domain ==
":999");
270 BEAST_EXPECT(!pUrl.
port);
271 BEAST_EXPECT(pUrl.
path ==
"/");
276 BEAST_EXPECT(
parseUrl(pUrl,
"http://::1:1234/validators"));
277 BEAST_EXPECT(pUrl.
scheme ==
"http");
280 BEAST_EXPECT(pUrl.
domain ==
"::0.1.18.52");
281 BEAST_EXPECT(!pUrl.
port);
282 BEAST_EXPECT(pUrl.
path ==
"/validators");
289 BEAST_EXPECT(!
parseUrl(pUrl,
"nonsense"));
290 BEAST_EXPECT(!
parseUrl(pUrl,
"://"));
291 BEAST_EXPECT(!
parseUrl(pUrl,
":///"));
293 !
parseUrl(pUrl,
"scheme://user:pass@domain:65536/abc:321"));
294 BEAST_EXPECT(!
parseUrl(pUrl,
"UPPER://domain:23498765/"));
295 BEAST_EXPECT(!
parseUrl(pUrl,
"UPPER://domain:0/"));
296 BEAST_EXPECT(!
parseUrl(pUrl,
"UPPER://domain:+7/"));
297 BEAST_EXPECT(!
parseUrl(pUrl,
"UPPER://domain:-7234/"));
298 BEAST_EXPECT(!
parseUrl(pUrl,
"UPPER://domain:@#$56!/"));
304 BEAST_EXPECT(!
parseUrl(pUrl, strUrl));
311 testcase(
"toString");
313 BEAST_EXPECT(result ==
"hello");
std::enable_if_t< std::is_same< T, char >::value||std::is_same< T, unsigned char >::value, Slice > makeSlice(std::array< T, N > const &a)
BEAST_DEFINE_TESTSUITE(AccountTxPaging, app, ripple)
void testUnHexSuccess(std::string const &strIn, std::string const &strExpected)
std::optional< std::uint16_t > port
bool parseUrl(parsedURL &pUrl, std::string const &strUrl)
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
std::string to_string(Manifest const &m)
Format the specified manifest to a string for debugging purposes.
void testUnHexFailure(std::string const &strIn)
std::optional< Blob > strUnHex(std::size_t strSize, Iterator begin, Iterator end)