#ifndef TestComponent_hpp #define TestComponent_hpp #include "oatpp/web/server/HttpConnectionHandler.hpp" #include "oatpp/network/virtual_/client/ConnectionProvider.hpp" #include "oatpp/network/virtual_/server/ConnectionProvider.hpp" #include "oatpp/network/virtual_/Interface.hpp" #include "oatpp/parser/json/mapping/ObjectMapper.hpp" #include "oatpp/core/macro/component.hpp" #include "TestDatabaseComponent.hpp" /** * Test Components config */ class TestComponent { public: TestDatabaseComponent databaseComponent; /** * Create oatpp virtual network interface for test networking */ OATPP_CREATE_COMPONENT(std::shared_ptr, virtualInterface)([] { return oatpp::network::virtual_::Interface::obtainShared("virtualhost"); }()); /** * Create server ConnectionProvider of oatpp virtual connections for test */ OATPP_CREATE_COMPONENT(std::shared_ptr, serverConnectionProvider)([] { OATPP_COMPONENT(std::shared_ptr, interface); return oatpp::network::virtual_::server::ConnectionProvider::createShared(interface); }()); /** * Create client ConnectionProvider of oatpp virtual connections for test */ OATPP_CREATE_COMPONENT(std::shared_ptr, clientConnectionProvider)([] { OATPP_COMPONENT(std::shared_ptr, interface); return oatpp::network::virtual_::client::ConnectionProvider::createShared(interface); }()); /** * Create Router component */ OATPP_CREATE_COMPONENT(std::shared_ptr, httpRouter)([] { return oatpp::web::server::HttpRouter::createShared(); }()); /** * Create ConnectionHandler component which uses Router component to route requests */ OATPP_CREATE_COMPONENT(std::shared_ptr, serverConnectionHandler)([] { OATPP_COMPONENT(std::shared_ptr, router); // get Router component return oatpp::web::server::HttpConnectionHandler::createShared(router); }()); /** * Create ObjectMapper component to serialize/deserialize DTOs in Contoller's API */ OATPP_CREATE_COMPONENT(std::shared_ptr, apiObjectMapper)([] { return oatpp::parser::json::mapping::ObjectMapper::createShared(); }()); }; #endif // TestComponent_hpp