MCPcopy Create free account
hub / github.com/Pagghiu/SaneCppLibraries / testFormUrlEncoded

Method testFormUrlEncoded

Tests/Libraries/Http/HttpURLParserTest.cpp:364–415  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

362}
363
364void SC::HttpURLParserTest::testFormUrlEncoded()
365{
366 HttpFormUrlEncodedIterator iterator("name=Sane+Cpp&empty=&flag&encoded=%7Bok%7D&bad=%ZZ");
367 HttpURLQueryItem item;
368 char storage[64];
369 StringSpan decoded;
370
371 SC_TEST_EXPECT(iterator.next(item));
372 SC_TEST_EXPECT(item.name == "name");
373 SC_TEST_EXPECT(item.value == "Sane+Cpp");
374 SC_TEST_EXPECT(item.hasValue);
375 SC_TEST_EXPECT(HttpFormUrlDecode(item.value, storage, decoded));
376 SC_TEST_EXPECT(decoded == "Sane Cpp");
377
378 SC_TEST_EXPECT(iterator.next(item));
379 SC_TEST_EXPECT(item.name == "empty");
380 SC_TEST_EXPECT(item.value.isEmpty());
381 SC_TEST_EXPECT(item.hasValue);
382
383 SC_TEST_EXPECT(iterator.next(item));
384 SC_TEST_EXPECT(item.name == "flag");
385 SC_TEST_EXPECT(item.value.isEmpty());
386 SC_TEST_EXPECT(not item.hasValue);
387
388 SC_TEST_EXPECT(iterator.next(item));
389 SC_TEST_EXPECT(item.name == "encoded");
390 SC_TEST_EXPECT(HttpPercentDecode(item.value, storage, decoded));
391 SC_TEST_EXPECT(decoded == "{ok}");
392
393 SC_TEST_EXPECT(iterator.next(item));
394 SC_TEST_EXPECT(item.name == "bad");
395 SC_TEST_EXPECT(resultMessageEquals(HttpPercentDecode(item.value, storage, decoded), "Malformed percent escape"));
396 SC_TEST_EXPECT(resultMessageEquals(HttpFormUrlDecode("%2", storage, decoded), "Malformed percent escape"));
397 SC_TEST_EXPECT(
398 resultMessageEquals(HttpFormUrlDecode("abc", {storage, 2}, decoded), "Decoded output buffer is too small"));
399
400 SC_TEST_EXPECT(not iterator.next(item));
401
402 StringSpan value;
403 SC_TEST_EXPECT(HttpFormUrlEncodedIterator::getValue("name=first&name=second", "name", value));
404 SC_TEST_EXPECT(value == "first");
405 SC_TEST_EXPECT(HttpFormUrlEncodedIterator::getValue("empty=&flag&encoded=%7Bok%7D", "empty", value));
406 SC_TEST_EXPECT(value.isEmpty());
407 SC_TEST_EXPECT(HttpFormUrlEncodedIterator::getValue("empty=&flag&encoded=%7Bok%7D", "flag", value));
408 SC_TEST_EXPECT(value.isEmpty());
409 SC_TEST_EXPECT(HttpFormUrlEncodedIterator::getValue("empty=&flag&encoded=%7Bok%7D", "encoded", value));
410 SC_TEST_EXPECT(value == "%7Bok%7D");
411 SC_TEST_EXPECT(HttpFormUrlEncodedIterator::getValue("vâlue=tëst"_u8, "vâlue"_u8, value));
412 SC_TEST_EXPECT(value == "tëst"_u8);
413 SC_TEST_EXPECT(not HttpFormUrlEncodedIterator::getValue("", "missing", value));
414 SC_TEST_EXPECT(value.isEmpty());
415}
416
417void SC::HttpURLParserTest::testRequestTargetView()
418{

Callers

nothing calls this directly

Calls 3

resultMessageEqualsFunction · 0.70
nextMethod · 0.45
isEmptyMethod · 0.45

Tested by

no test coverage detected