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

Method basicGet

Tests/Libraries/Http/HttpAsyncClientTest.cpp:430–486  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

428void SC::HttpAsyncClientTest::multipartWriterValidation()
429{
430 HttpMultipartWriter writer;
431
432 SC_TEST_EXPECT(resultHasHttpError(writer.addField("field", "value"), HttpError::MultipartWriterBoundaryMissing));
433 SC_TEST_EXPECT(resultHasHttpError(writer.addFile("field", "ok.txt", StringSpan("body").toCharSpan()),
434 HttpError::MultipartWriterBoundaryMissing));
435 SC_TEST_EXPECT(resultHasHttpError(writer.setBoundary(""), HttpError::MultipartWriterBoundaryEmpty));
436 SC_TEST_EXPECT(resultHasHttpError(writer.setBoundary("bad boundary"), HttpError::MultipartWriterBoundaryUnsafe));
437 SC_TEST_EXPECT(resultHasHttpError(writer.setBoundary(StringSpan({"\r\n", 2}, false, StringEncoding::Ascii)),
438 HttpError::MultipartWriterBoundaryUnsafe));
439 SC_TEST_EXPECT(resultHasHttpError(
440 writer.setBoundary("01234567890123456789012345678901234567890123456789012345678901234567890"),
441 HttpError::MultipartBoundaryTooLong));
442
443 SC_TEST_EXPECT(writer.setBoundary("----SCMultipartBoundary"));
444 SC_TEST_EXPECT(resultHasHttpError(writer.addField("", "value"), HttpError::MultipartWriterFieldNameEmpty));
445 SC_TEST_EXPECT(
446 resultHasHttpError(writer.addField("bad\"name", "value"), HttpError::MultipartWriterFieldNameUnsafe));
447 SC_TEST_EXPECT(resultHasHttpError(writer.addFile("", "ok.txt", StringSpan("body").toCharSpan()),
448 HttpError::MultipartWriterFieldNameEmpty));
449 SC_TEST_EXPECT(resultHasHttpError(writer.addFile("bad\"name", "ok.txt", StringSpan("body").toCharSpan()),
450 HttpError::MultipartWriterFieldNameUnsafe));
451 SC_TEST_EXPECT(resultHasHttpError(writer.addFile("file", "bad\"name.txt", StringSpan("body").toCharSpan()),
452 HttpError::MultipartWriterFileNameUnsafe));
453 SC_TEST_EXPECT(resultHasHttpError(writer.addFile("file", "bad\\name.txt", StringSpan("body").toCharSpan()),
454 HttpError::MultipartWriterFileNameUnsafe));
455 SC_TEST_EXPECT(
456 resultHasHttpError(writer.addFile("file", "ok.txt", StringSpan("body").toCharSpan(), "text/plain\r\nX-Bad: 1"),
457 HttpError::MultipartWriterContentTypeUnsafe));
458 SC_TEST_EXPECT(writer.getNumParts() == 0);
459
460 SC_TEST_EXPECT(writer.addField("field", "value"));
461 SC_TEST_EXPECT(writer.addFile("file", "safe-name.txt", StringSpan("body").toCharSpan(), "text/plain"));
462 SC_TEST_EXPECT(writer.getNumParts() == 2);
463
464 for (size_t idx = writer.getNumParts(); idx < HttpMultipartWriter::MaxParts; ++idx)
465 {
466 SC_TEST_EXPECT(writer.addField("field", "value"));
467 }
468 SC_TEST_EXPECT(resultHasHttpError(writer.addField("field", "value"), HttpError::MultipartWriterPartLimitExceeded));
469 SC_TEST_EXPECT(resultHasHttpError(writer.addFile("file", "safe-name.txt", StringSpan("body").toCharSpan()),
470 HttpError::MultipartWriterPartLimitExceeded));
471}
472
473void SC::HttpAsyncClientTest::basicGet()
474{
475 AsyncEventLoop loop;
476 SC_TEST_EXPECT(loop.create());
477
478 ServerConnection connections[2];
479 HttpAsyncServer httpServer;
480 const uint16_t port = report.mapPort(26100);
481 SC_TEST_EXPECT(httpServer.init(Span<ServerConnection>(connections)));
482 SC_TEST_EXPECT(httpServer.start(loop, "127.0.0.1", port));
483
484 httpServer.onRequest = [this](HttpConnection& connection)
485 {
486 SC_TEST_EXPECT(connection.response.startResponse(200));
487 SC_TEST_EXPECT(connection.response.addHeader("Content-Length", "5"));

Callers

nothing calls this directly

Calls 15

mapPortMethod · 0.80
startResponseMethod · 0.80
sendHeadersMethod · 0.80
formatFunction · 0.50
createMethod · 0.45
initMethod · 0.45
startMethod · 0.45
addHeaderMethod · 0.45
writeMethod · 0.45
endMethod · 0.45
attachMethod · 0.45
detachMethod · 0.45

Tested by

no test coverage detected