generated from Sithas/conan_template
151 lines
4.3 KiB
C++
151 lines
4.3 KiB
C++
#ifdef WIN32
|
|
#include <sdkddkver.h>
|
|
#endif
|
|
|
|
#define BOOST_TEST_MODULE AuthRegistrationExecutors
|
|
|
|
#include <boost/test/included/unit_test.hpp>
|
|
|
|
#include <string>
|
|
|
|
#include "./../../src/endpoints_handlers/AuthRegistrationExecutor.h"
|
|
#include "./../../src/DAO/MySQLUserDAO.h"
|
|
#include "./../../src/db/mysql_connector.h"
|
|
#include "./../../src/exceptions/session_exception.h"
|
|
#include "./../../src/helpers/helpers.h"
|
|
|
|
const std::string kUUID = std::to_string(uad::Random());
|
|
|
|
using namespace std;
|
|
using namespace uad;
|
|
using namespace boost;
|
|
using namespace beast;
|
|
using namespace json;
|
|
|
|
using RouteAuthRegistrationExecutor = AuthRegistrationExecutor<beast::http::string_body,
|
|
std::allocator<char>,
|
|
beast::http::string_body>;
|
|
using Request = boost::beast::http::request<beast::http::string_body,
|
|
beast::http::basic_fields<std::allocator<char>>>;
|
|
|
|
BOOST_AUTO_TEST_CASE(AuthRegistrationExecutor_Failed_Parse_Payload)
|
|
{
|
|
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;
|
|
|
|
req.body() = "{ \"login\": ABS3 }"s;
|
|
|
|
BOOST_CHECK_EXCEPTION(executor(std::move(req)), session_exception, [](const session_exception& e) -> bool
|
|
{
|
|
return e.code == beast::http::status::internal_server_error;
|
|
});
|
|
|
|
mysql_session->close();
|
|
delete mysql_session;
|
|
}
|
|
|
|
BOOST_AUTO_TEST_CASE(AuthRegistrationExecutor_Invalid_Login_Data)
|
|
{
|
|
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;
|
|
value req_body;
|
|
|
|
req_body.emplace_object();
|
|
|
|
req_body.as_object().emplace("login"s, "wq");
|
|
req_body.as_object().emplace("password"s, "Qw");
|
|
|
|
req.body() = serialize(req_body);
|
|
|
|
BOOST_CHECK_EXCEPTION(executor(std::move(req)), session_exception, [](const session_exception& e) -> bool
|
|
{
|
|
return e.code == beast::http::status::unprocessable_entity;
|
|
});
|
|
|
|
mysql_session->close();
|
|
delete mysql_session;
|
|
}
|
|
|
|
BOOST_AUTO_TEST_CASE(AuthRegistrationExecutor_Succesfull_User_Login)
|
|
{
|
|
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;
|
|
value req_body;
|
|
|
|
req_body.emplace_object();
|
|
|
|
req_body.as_object().emplace("login"s, "MyLogin123456780"s + kUUID);
|
|
req_body.as_object().emplace("password"s, "Qwerty123456"s);
|
|
|
|
req.body() = serialize(req_body);
|
|
|
|
auto response = executor(std::move(req));
|
|
|
|
BOOST_CHECK_EQUAL(response.result(), http::status::created);
|
|
|
|
mysql_session->close();
|
|
delete mysql_session;
|
|
}
|
|
|
|
BOOST_AUTO_TEST_CASE(AuthRegistrationExecutor_Unsuccesfull_User_Login)
|
|
{
|
|
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;
|
|
value req_body;
|
|
|
|
req_body.emplace_object();
|
|
|
|
req_body.as_object().emplace("login"s, "MyLogin123456780"s + kUUID);
|
|
req_body.as_object().emplace("password"s, "Qwerty123456"s);
|
|
|
|
req.body() = serialize(req_body);
|
|
|
|
BOOST_CHECK_EXCEPTION(executor(std::move(req)), session_exception, [](const session_exception& e) -> bool
|
|
{
|
|
return e.code == beast::http::status::conflict;
|
|
});
|
|
|
|
mysql_session->close();
|
|
delete mysql_session;
|
|
}
|