Третий тест покрыт фикстурой

This commit is contained in:
Антон
2025-11-18 10:18:57 +03:00
parent 6c37738ef6
commit 1a52ba4c90
3 changed files with 24 additions and 25 deletions
@@ -33,7 +33,7 @@ BOOST_FIXTURE_TEST_CASE(AuthRegistrationExecutor_Failed_Parse_Payload, AuthRegis
{ {
req.body() = "{ \"login\": ABS3 }"s; req.body() = "{ \"login\": ABS3 }"s;
BOOST_CHECK_EXCEPTION(executor->operator()(std::move(req)), session_exception, [](const session_exception& e) -> bool BOOST_CHECK_EXCEPTION(executor(std::move(req)), session_exception, [](const session_exception& e) -> bool
{ {
return e.code == beast::http::status::internal_server_error; return e.code == beast::http::status::internal_server_error;
}); });
@@ -50,25 +50,14 @@ BOOST_FIXTURE_TEST_CASE(AuthRegistrationExecutor_Invalid_Login_Data, AuthRegistr
req.body() = serialize(req_body); req.body() = serialize(req_body);
BOOST_CHECK_EXCEPTION(executor->operator()(std::move(req)), session_exception, [](const session_exception& e) -> bool BOOST_CHECK_EXCEPTION(executor(std::move(req)), session_exception, [](const session_exception& e) -> bool
{ {
return e.code == beast::http::status::unprocessable_entity; return e.code == beast::http::status::unprocessable_entity;
}); });
} }
BOOST_AUTO_TEST_CASE(AuthRegistrationExecutor_Succesfull_User_Login) BOOST_FIXTURE_TEST_CASE(AuthRegistrationExecutor_Succesfull_User_Login, AuthRegistrationExecutorTestFixture)
{ {
auto& argv = boost::unit_test::framework::master_test_suite().argv;
const std::string mysql_credentials = argv[1];
mysqlx::Session* mysql_session = new mysqlx::Session(mysql_credentials);
uad::SetMySqlSession(mysql_session);
auto user_dao = make_shared<MySQLUserDAO>(GetMySqlSession());
auto executor = RouteAuthRegistrationExecutor(GetMySqlSession(), user_dao);
Request req; Request req;
value req_body; value req_body;
@@ -82,9 +71,6 @@ BOOST_AUTO_TEST_CASE(AuthRegistrationExecutor_Succesfull_User_Login)
auto response = executor(std::move(req)); auto response = executor(std::move(req));
BOOST_CHECK_EQUAL(response.result(), http::status::created); BOOST_CHECK_EQUAL(response.result(), http::status::created);
mysql_session->close();
delete mysql_session;
} }
BOOST_AUTO_TEST_CASE(AuthRegistrationExecutor_Unsuccesfull_User_Login) BOOST_AUTO_TEST_CASE(AuthRegistrationExecutor_Unsuccesfull_User_Login)
+11 -5
View File
@@ -11,15 +11,19 @@ using namespace std;
namespace uad namespace uad
{ {
fixture_helper::fixture_helper(mysqlx::Session* session)
{
uad::SetMySqlSession(session);
}
AuthRegistrationExecutorTestFixture::AuthRegistrationExecutorTestFixture() : AuthRegistrationExecutorTestFixture::AuthRegistrationExecutorTestFixture() :
argv(boost::unit_test::framework::master_test_suite().argv), argv(boost::unit_test::framework::master_test_suite().argv),
mysql_credentials(argv[1]), mysql_credentials(argv[1]),
mysql_session(new mysqlx::Session(mysql_credentials)) mysql_session(new mysqlx::Session(mysql_credentials)),
helper(mysql_session),
user_dao(std::make_shared<MySQLUserDAO>(GetMySqlSession())),
executor(RouteAuthRegistrationExecutor(GetMySqlSession(), user_dao))
{ {
uad::SetMySqlSession(mysql_session);
user_dao = std::make_shared<MySQLUserDAO>(GetMySqlSession());
executor = std::make_unique<RouteAuthRegistrationExecutor>(GetMySqlSession(), user_dao);
BOOST_TEST_MESSAGE("Setup RouteAuthRegistrationExecutor fixture"); BOOST_TEST_MESSAGE("Setup RouteAuthRegistrationExecutor fixture");
} }
@@ -28,6 +32,8 @@ AuthRegistrationExecutorTestFixture::~AuthRegistrationExecutorTestFixture()
argv = nullptr; argv = nullptr;
mysql_session->close(); mysql_session->close();
delete mysql_session; delete mysql_session;
mysql_session = nullptr;
SetMySqlSession(nullptr);
BOOST_TEST_MESSAGE("Teardown RouteAuthRegistrationExecutor fixture"); BOOST_TEST_MESSAGE("Teardown RouteAuthRegistrationExecutor fixture");
} }
+10 -3
View File
@@ -7,9 +7,15 @@
#include <mysqlx/xdevapi.h> #include <mysqlx/xdevapi.h>
#include "./../../src/endpoints_handlers/AuthRegistrationExecutor.h" #include "./../../src/endpoints_handlers/AuthRegistrationExecutor.h"
#include "./../../src/DAO/MySQLUserDAO.h" #include "./../../src/DAO/MySQLUserDAO.h"
#include "./../../src/db/mysql_connector.h"
namespace uad namespace uad
{ {
struct fixture_helper
{
explicit fixture_helper(mysqlx::Session* session);
};
class AuthRegistrationExecutorTestFixture { class AuthRegistrationExecutorTestFixture {
public: public:
using RouteAuthRegistrationExecutor = AuthRegistrationExecutor<boost::beast::http::string_body, using RouteAuthRegistrationExecutor = AuthRegistrationExecutor<boost::beast::http::string_body,
@@ -20,11 +26,12 @@ public:
char** argv; char** argv;
const std::string mysql_credentials; const std::string mysql_credentials;
mysqlx::Session* mysql_session; mysqlx::Session* mysql_session;
std::shared_ptr<MySQLUserDAO> user_dao; fixture_helper helper;
std::unique_ptr<RouteAuthRegistrationExecutor> executor;
std::shared_ptr<IUserDAO> user_dao;
RouteAuthRegistrationExecutor executor;
Request req; Request req;