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>
45 testcase (
"strUnHex");
63 testcase (
"parseUrl");
68 BEAST_EXPECT(
parseUrl (pUrl,
"scheme://"));
69 BEAST_EXPECT(pUrl.
scheme ==
"scheme");
73 BEAST_EXPECT(! pUrl.
port);
83 BEAST_EXPECT(
parseUrl (pUrl,
"scheme:///"));
84 BEAST_EXPECT(pUrl.
scheme ==
"scheme");
88 BEAST_EXPECT(! pUrl.
port);
89 BEAST_EXPECT(pUrl.
path ==
"/");
94 BEAST_EXPECT(
parseUrl (pUrl,
"lower://domain"));
95 BEAST_EXPECT(pUrl.
scheme ==
"lower");
98 BEAST_EXPECT(pUrl.
domain ==
"domain");
99 BEAST_EXPECT(! pUrl.
port);
105 BEAST_EXPECT(
parseUrl (pUrl,
"UPPER://domain:234/"));
106 BEAST_EXPECT(pUrl.
scheme ==
"upper");
109 BEAST_EXPECT(pUrl.
domain ==
"domain");
110 BEAST_EXPECT(*pUrl.
port == 234);
111 BEAST_EXPECT(pUrl.
path ==
"/");
116 BEAST_EXPECT(
parseUrl (pUrl,
"Mixed://domain/path"));
117 BEAST_EXPECT(pUrl.
scheme ==
"mixed");
120 BEAST_EXPECT(pUrl.
domain ==
"domain");
121 BEAST_EXPECT(! pUrl.
port);
122 BEAST_EXPECT(pUrl.
path ==
"/path");
127 BEAST_EXPECT(
parseUrl (pUrl,
"scheme://[::1]:123/path"));
128 BEAST_EXPECT(pUrl.
scheme ==
"scheme");
131 BEAST_EXPECT(pUrl.
domain ==
"::1");
132 BEAST_EXPECT(*pUrl.
port == 123);
133 BEAST_EXPECT(pUrl.
path ==
"/path");
138 BEAST_EXPECT(
parseUrl (pUrl,
"scheme://user:pass@domain:123/abc:321"));
139 BEAST_EXPECT(pUrl.
scheme ==
"scheme");
140 BEAST_EXPECT(pUrl.
username ==
"user");
141 BEAST_EXPECT(pUrl.
password ==
"pass");
142 BEAST_EXPECT(pUrl.
domain ==
"domain");
143 BEAST_EXPECT(*pUrl.
port == 123);
144 BEAST_EXPECT(pUrl.
path ==
"/abc:321");
149 BEAST_EXPECT(
parseUrl (pUrl,
"scheme://user@domain:123/abc:321"));
150 BEAST_EXPECT(pUrl.
scheme ==
"scheme");
151 BEAST_EXPECT(pUrl.
username ==
"user");
153 BEAST_EXPECT(pUrl.
domain ==
"domain");
154 BEAST_EXPECT(*pUrl.
port == 123);
155 BEAST_EXPECT(pUrl.
path ==
"/abc:321");
160 BEAST_EXPECT(
parseUrl (pUrl,
"scheme://:pass@domain:123/abc:321"));
161 BEAST_EXPECT(pUrl.
scheme ==
"scheme");
163 BEAST_EXPECT(pUrl.
password ==
"pass");
164 BEAST_EXPECT(pUrl.
domain ==
"domain");
165 BEAST_EXPECT(*pUrl.
port == 123);
166 BEAST_EXPECT(pUrl.
path ==
"/abc:321");
171 BEAST_EXPECT(
parseUrl (pUrl,
"scheme://domain:123/abc:321"));
172 BEAST_EXPECT(pUrl.
scheme ==
"scheme");
175 BEAST_EXPECT(pUrl.
domain ==
"domain");
176 BEAST_EXPECT(*pUrl.
port == 123);
177 BEAST_EXPECT(pUrl.
path ==
"/abc:321");
182 BEAST_EXPECT(
parseUrl (pUrl,
"scheme://user:pass@domain/abc:321"));
183 BEAST_EXPECT(pUrl.
scheme ==
"scheme");
184 BEAST_EXPECT(pUrl.
username ==
"user");
185 BEAST_EXPECT(pUrl.
password ==
"pass");
186 BEAST_EXPECT(pUrl.
domain ==
"domain");
187 BEAST_EXPECT(! pUrl.
port);
188 BEAST_EXPECT(pUrl.
path ==
"/abc:321");
193 BEAST_EXPECT(
parseUrl (pUrl,
"scheme://user@domain/abc:321"));
194 BEAST_EXPECT(pUrl.
scheme ==
"scheme");
195 BEAST_EXPECT(pUrl.
username ==
"user");
197 BEAST_EXPECT(pUrl.
domain ==
"domain");
198 BEAST_EXPECT(! pUrl.
port);
199 BEAST_EXPECT(pUrl.
path ==
"/abc:321");
204 BEAST_EXPECT(
parseUrl (pUrl,
"scheme://:pass@domain/abc:321"));
205 BEAST_EXPECT(pUrl.
scheme ==
"scheme");
207 BEAST_EXPECT(pUrl.
password ==
"pass");
208 BEAST_EXPECT(pUrl.
domain ==
"domain");
209 BEAST_EXPECT(! pUrl.
port);
210 BEAST_EXPECT(pUrl.
path ==
"/abc:321");
215 BEAST_EXPECT(
parseUrl (pUrl,
"scheme://domain/abc:321"));
216 BEAST_EXPECT(pUrl.
scheme ==
"scheme");
219 BEAST_EXPECT(pUrl.
domain ==
"domain");
220 BEAST_EXPECT(! pUrl.
port);
221 BEAST_EXPECT(pUrl.
path ==
"/abc:321");
226 BEAST_EXPECT(
parseUrl (pUrl,
"scheme:///path/to/file"));
227 BEAST_EXPECT(pUrl.
scheme ==
"scheme");
231 BEAST_EXPECT(! pUrl.
port);
232 BEAST_EXPECT(pUrl.
path ==
"/path/to/file");
238 pUrl,
"scheme://user:pass@domain/path/with/an@sign"));
239 BEAST_EXPECT(pUrl.
scheme ==
"scheme");
240 BEAST_EXPECT(pUrl.
username ==
"user");
241 BEAST_EXPECT(pUrl.
password ==
"pass");
242 BEAST_EXPECT(pUrl.
domain ==
"domain");
243 BEAST_EXPECT(! pUrl.
port);
244 BEAST_EXPECT(pUrl.
path ==
"/path/with/an@sign");
250 pUrl,
"scheme://domain/path/with/an@sign"));
251 BEAST_EXPECT(pUrl.
scheme ==
"scheme");
254 BEAST_EXPECT(pUrl.
domain ==
"domain");
255 BEAST_EXPECT(! pUrl.
port);
256 BEAST_EXPECT(pUrl.
path ==
"/path/with/an@sign");
261 BEAST_EXPECT(
parseUrl (pUrl,
"scheme://:999/"));
262 BEAST_EXPECT(pUrl.
scheme ==
"scheme");
265 BEAST_EXPECT(pUrl.
domain ==
":999");
266 BEAST_EXPECT(! pUrl.
port);
267 BEAST_EXPECT(pUrl.
path ==
"/");
272 BEAST_EXPECT(
parseUrl (pUrl,
"http://::1:1234/validators"));
273 BEAST_EXPECT(pUrl.
scheme ==
"http");
276 BEAST_EXPECT(pUrl.
domain ==
"::0.1.18.52");
277 BEAST_EXPECT(! pUrl.
port);
278 BEAST_EXPECT(pUrl.
path ==
"/validators");
284 BEAST_EXPECT(!
parseUrl (pUrl,
""));
285 BEAST_EXPECT(!
parseUrl (pUrl,
"nonsense"));
286 BEAST_EXPECT(!
parseUrl (pUrl,
"://"));
287 BEAST_EXPECT(!
parseUrl (pUrl,
":///"));
293 BEAST_EXPECT(!
parseUrl (pUrl, strUrl));
299 testcase (
"toString");
301 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)
boost::optional< Blob > strUnHex(std::size_t strSize, Iterator begin, Iterator end)
std::string to_string(ListDisposition disposition)
void testUnHexSuccess(std::string const &strIn, std::string const &strExpected)
bool parseUrl(parsedURL &pUrl, std::string const &strUrl)
boost::optional< std::uint16_t > port
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
void testUnHexFailure(std::string const &strIn)