Crow/tests/ssl/ssltest.cpp
The-EDev 4cdde73388
Optimized HTTP parser
Also (likely) fixed problem with streaming without keeping connection
alive
Also fixed problem with multipart hanging on request
Also updated TODO entries to indicate Writer
2022-02-05 18:15:19 +03:00

91 lines
2.3 KiB
C++

#define CATCH_CONFIG_MAIN
#define CROW_LOG_LEVEL 0
#include <thread>
#include "../catch.hpp"
#include "crow.h"
#define LOCALHOST_ADDRESS "127.0.0.1"
using namespace boost;
// TODO(EDev): SSL test with .pem file
TEST_CASE("SSL")
{
static char buf[2048];
//static char buf2[2048];
std::system("openssl req -newkey rsa:4096 -x509 -sha256 -days 365 -nodes -out test.crt -keyout test.key -subj '/CN=127.0.0.1'");
//std::system("cat test.key > test.pem");
//std::system("cat test.crt >> test.pem");
crow::SimpleApp app;
//crow::SimpleApp app2;
CROW_ROUTE(app, "/")
([]() {
return "Hello world, I'm keycrt.";
});
/*
CROW_ROUTE(app2, "/")
([]() {
return "Hello world, I'm pem.";
});
*/
auto _ = async(std::launch::async, [&] {
app.bindaddr(LOCALHOST_ADDRESS).port(45460).ssl_file("test.crt", "test.key").run();
});
//auto _1 = async(std::launch::async,[&] { app2.bindaddr(LOCALHOST_ADDRESS).port(45461).ssl_file("test.pem").run(); });
app.wait_for_server_start();
//app2.wait_for_server_start();
std::string sendmsg = "GET /\r\n\r\n";
asio::ssl::context ctx(asio::ssl::context::sslv23);
asio::io_service is;
{
asio::ssl::stream<asio::ip::tcp::socket> c(is, ctx);
c.lowest_layer().connect(asio::ip::tcp::endpoint(asio::ip::address::from_string(LOCALHOST_ADDRESS), 45460));
c.handshake(asio::ssl::stream_base::client);
c.write_some(asio::buffer(sendmsg));
size_t x = 0;
size_t y = 0;
while (x < 121)
{
y = c.read_some(asio::buffer(buf, 2048));
x += y;
buf[y] = '\0';
}
CHECK(std::string("Hello world, I'm keycrt.") == std::string(buf));
}
/*
asio::io_service is2;
{
std::cout << "started second one" << std::endl;
asio::ssl::stream<asio::ip::tcp::socket> c(is2, ctx);
c.lowest_layer().connect(asio::ip::tcp::endpoint(
asio::ip::address::from_string(LOCALHOST_ADDRESS), 45461));
c.handshake(asio::ssl::stream_base::client);
c.write_some(asio::buffer(sendmsg));
size_t sz = c.read_some(asio::buffer(buf2, 2048));
CHECK("Hello world, I'm pem." == std::string(buf2).substr((sz - 21)));
}
*/
app.stop();
//app2.stop();
std::system("rm test.crt test.key" /*test.pem*/);
}