AuthRefistrationTest - 3 ok 1 fail

This commit is contained in:
Антон
2025-11-26 07:47:50 +03:00
parent 9b7e3e84a0
commit ac5aabb3c3
5 changed files with 77 additions and 113 deletions
-3
View File
@@ -93,7 +93,6 @@ add_executable(AuthRegistrationExecutorTests ./tests/endpoint_handlers/AuthRegis
./src/db/mysql_connector.h ./src/db/mysql_connector.h
./src/db/mysql_connector.cpp ./src/db/mysql_connector.cpp
tests/fixtures/AuthFixture.h tests/fixtures/AuthFixture.h
tests/fixtures/AuthFixture.cpp
./tests/fixtures/fixture_session_initialization_helper.h ./tests/fixtures/fixture_session_initialization_helper.h
./tests/fixtures/fixture_session_initialization_helper.cpp) ./tests/fixtures/fixture_session_initialization_helper.cpp)
target_link_libraries(AuthRegistrationExecutorTests PRIVATE Boost::boost target_link_libraries(AuthRegistrationExecutorTests PRIVATE Boost::boost
@@ -118,7 +117,6 @@ add_executable(AuthLoginExecutorTests ./tests/endpoint_handlers/AuthLoginExecuto
./src/db/mysql_connector.h ./src/db/mysql_connector.h
./src/db/mysql_connector.cpp ./src/db/mysql_connector.cpp
tests/fixtures/AuthFixture.h tests/fixtures/AuthFixture.h
tests/fixtures/AuthFixture.cpp
./tests/fixtures/fixture_session_initialization_helper.h ./tests/fixtures/fixture_session_initialization_helper.h
./tests/fixtures/fixture_session_initialization_helper.cpp) ./tests/fixtures/fixture_session_initialization_helper.cpp)
target_link_libraries(AuthLoginExecutorTests PRIVATE Boost::boost target_link_libraries(AuthLoginExecutorTests PRIVATE Boost::boost
@@ -143,7 +141,6 @@ add_executable(AuthLogoutExecutorTests ./tests/endpoint_handlers/AuthLogoutExecu
./src/db/mysql_connector.h ./src/db/mysql_connector.h
./src/db/mysql_connector.cpp ./src/db/mysql_connector.cpp
tests/fixtures/AuthFixture.h tests/fixtures/AuthFixture.h
tests/fixtures/AuthFixture.cpp
./tests/fixtures/fixture_session_initialization_helper.h ./tests/fixtures/fixture_session_initialization_helper.h
./tests/fixtures/fixture_session_initialization_helper.cpp) ./tests/fixtures/fixture_session_initialization_helper.cpp)
target_link_libraries(AuthLogoutExecutorTests PRIVATE Boost::boost target_link_libraries(AuthLogoutExecutorTests PRIVATE Boost::boost
@@ -27,22 +27,20 @@ using namespace json;
using RouteAuthLoginExecutor = AuthLoginExecutor<beast::http::string_body, using RouteAuthLoginExecutor = AuthLoginExecutor<beast::http::string_body,
std::allocator<char>, std::allocator<char>,
beast::http::string_body>; beast::http::string_body>;
using Request = boost::beast::http::request<beast::http::string_body,
beast::http::basic_fields<std::allocator<char>>>;
BOOST_FIXTURE_TEST_CASE(AuthRegistrationExecutor_Cannot_Serialize_JSON, AuthFixture) // BOOST_FIXTURE_TEST_CASE(AuthRegistrationExecutor_Cannot_Serialize_JSON, AuthFixture)
{ // {
req.body() = "{ \"login\": ABS3 }"s; // req.body() = "{ \"login\": ABS3 }"s;
req.content_length(req.body().size()); // req.content_length(req.body().size());
//
// BOOST_CHECK_EXCEPTION(executor(std::move(req)), session_exception,
// [](const session_exception& e) -> bool
// {
// return e.code == beast::http::status::bad_request;
// });
// }
BOOST_CHECK_EXCEPTION(executor(std::move(req)), session_exception, BOOST_FIXTURE_TEST_CASE(AuthRegistrationExecutor_Invalid_Login_Data, AuthFixture<RouteAuthLoginExecutor>)
[](const session_exception& e) -> bool
{
return e.code == beast::http::status::bad_request;
});
}
BOOST_FIXTURE_TEST_CASE(AuthRegistrationExecutor_Invalid_Login_Data, AuthFixture)
{ {
value req_body; value req_body;
@@ -59,43 +57,43 @@ BOOST_FIXTURE_TEST_CASE(AuthRegistrationExecutor_Invalid_Login_Data, AuthFixture
return e.code == beast::http::status::forbidden; return e.code == beast::http::status::forbidden;
}); });
} }
//
BOOST_FIXTURE_TEST_CASE(AuthRegistrationExecutor_Invalid_Fields, AuthFixture) // BOOST_FIXTURE_TEST_CASE(AuthRegistrationExecutor_Invalid_Fields, AuthFixture)
{ // {
value req_body; // value req_body;
//
req_body.emplace_object(); // req_body.emplace_object();
//
req_body.as_object().emplace("login"s, ""s); // req_body.as_object().emplace("login"s, ""s);
req_body.as_object().emplace("password"s, ""s); // req_body.as_object().emplace("password"s, ""s);
//
req.body() = serialize(req_body); // req.body() = serialize(req_body);
//
BOOST_CHECK_EXCEPTION(executor(std::move(req)), session_exception, // BOOST_CHECK_EXCEPTION(executor(std::move(req)), session_exception,
[](const session_exception& e) -> bool // [](const session_exception& e) -> bool
{ // {
return e.code == beast::http::status::unprocessable_entity; // return e.code == beast::http::status::unprocessable_entity;
}); // });
} // }
//
BOOST_FIXTURE_TEST_CASE(AuthRegistrationExecutor_Succesful_Login, AuthFixture) // BOOST_FIXTURE_TEST_CASE(AuthRegistrationExecutor_Succesful_Login, AuthFixture)
{ // {
value req_body; // value req_body;
//
user_dao->Create({""s, "MyLogin123456780"s + uuid, HashPassword("Qwerty123456"s)}); // user_dao->Create({""s, "MyLogin123456780"s + uuid, HashPassword("Qwerty123456"s)});
//
req_body.emplace_object(); // req_body.emplace_object();
//
req_body.as_object().emplace("login"s, "MyLogin123456780"s + uuid); // req_body.as_object().emplace("login"s, "MyLogin123456780"s + uuid);
req_body.as_object().emplace("password"s, "Qwerty123456"s); // req_body.as_object().emplace("password"s, "Qwerty123456"s);
//
req.body() = serialize(req_body); // req.body() = serialize(req_body);
//
auto response = executor(std::move(req)); // auto response = executor(std::move(req));
//
BOOST_CHECK(response.result() == http::status::ok); // BOOST_CHECK(response.result() == http::status::ok);
//
auto response_body = parse(response.body()); // auto response_body = parse(response.body());
//
BOOST_CHECK(response_body.as_object().count("token"s) == 1); // BOOST_CHECK(response_body.as_object().count("token"s) == 1);
} // }
@@ -27,7 +27,7 @@ using RouteAuthRegistrationExecutor = AuthRegistrationExecutor<beast::http::stri
using Request = boost::beast::http::request<beast::http::string_body, using Request = boost::beast::http::request<beast::http::string_body,
beast::http::basic_fields<std::allocator<char>>>; beast::http::basic_fields<std::allocator<char>>>;
BOOST_FIXTURE_TEST_CASE(AuthRegistrationExecutor_Failed_Parse_Payload, AuthFixture) BOOST_FIXTURE_TEST_CASE(AuthRegistrationExecutor_Failed_Parse_Payload, AuthFixture<RouteAuthRegistrationExecutor>)
{ {
req.body() = "{ \"login\": ABS3 }"s; req.body() = "{ \"login\": ABS3 }"s;
@@ -37,7 +37,7 @@ BOOST_FIXTURE_TEST_CASE(AuthRegistrationExecutor_Failed_Parse_Payload, AuthFixtu
}); });
} }
BOOST_FIXTURE_TEST_CASE(AuthRegistrationExecutor_Invalid_Login_Data, AuthFixture) BOOST_FIXTURE_TEST_CASE(AuthRegistrationExecutor_Invalid_Login_Data, AuthFixture<RouteAuthRegistrationExecutor>)
{ {
value req_body; value req_body;
@@ -54,7 +54,7 @@ BOOST_FIXTURE_TEST_CASE(AuthRegistrationExecutor_Invalid_Login_Data, AuthFixture
}); });
} }
BOOST_FIXTURE_TEST_CASE(AuthRegistrationExecutor_Succesfull_User_Login, AuthFixture) BOOST_FIXTURE_TEST_CASE(AuthRegistrationExecutor_Succesfull_User_Login, AuthFixture<RouteAuthRegistrationExecutor>)
{ {
value req_body; value req_body;
@@ -70,7 +70,7 @@ BOOST_FIXTURE_TEST_CASE(AuthRegistrationExecutor_Succesfull_User_Login, AuthFixt
BOOST_CHECK_EQUAL(response.result(), http::status::created); BOOST_CHECK_EQUAL(response.result(), http::status::created);
} }
BOOST_FIXTURE_TEST_CASE(AuthRegistrationExecutor_Unsuccesfull_User_Login, AuthFixture) BOOST_FIXTURE_TEST_CASE(AuthRegistrationExecutor_Unsuccesfull_User_Registration, AuthFixture<RouteAuthRegistrationExecutor>)
{ {
value req_body; value req_body;
-37
View File
@@ -1,37 +0,0 @@
#include "AuthFixture.h"
#include <boost/test/unit_test.hpp>
#include <boost/beast.hpp>
#include <memory>
#include "./../../src/db/mysql_connector.h"
using namespace std;
namespace uad
{
AuthFixture::AuthFixture() :
uuid(std::to_string(uad::Random())),
argv(boost::unit_test::framework::master_test_suite().argv),
mysql_credentials(argv[1]),
mysql_session(new mysqlx::Session(mysql_credentials)),
helper(mysql_session),
user_dao(std::make_shared<MySQLUserDAO>(GetMySqlSession())),
auth_dao(make_shared<MemoryAuthDAO>(GetMySqlSession())),
executor(RouteAuthRegistrationExecutor(GetMySqlSession(), user_dao))
{
BOOST_TEST_MESSAGE("Setup RouteAuthRegistrationExecutor fixture");
}
AuthFixture::~AuthFixture()
{
argv = nullptr;
mysql_session->close();
delete mysql_session;
mysql_session = nullptr;
SetMySqlSession(nullptr);
BOOST_TEST_MESSAGE("Teardown RouteAuthRegistrationExecutor fixture");
}
}
+21 -15
View File
@@ -3,6 +3,7 @@
#include <string> #include <string>
#include <boost/beast.hpp> #include <boost/beast.hpp>
#include <memory> #include <memory>
#include <boost/test/unit_test.hpp>
#include <mysqlx/xdevapi.h> #include <mysqlx/xdevapi.h>
#include "./../../src/endpoints_handlers/AuthRegistrationExecutor.h" #include "./../../src/endpoints_handlers/AuthRegistrationExecutor.h"
@@ -13,28 +14,33 @@
namespace uad namespace uad
{ {
class AuthFixture {
public:
using RouteAuthRegistrationExecutor = AuthRegistrationExecutor<boost::beast::http::string_body,
std::allocator<char>,
boost::beast::http::string_body>;
using Request = boost::beast::http::request<boost::beast::http::string_body, using Request = boost::beast::http::request<boost::beast::http::string_body,
boost::beast::http::basic_fields<std::allocator<char>>>; boost::beast::http::basic_fields<std::allocator<char>>>;
const std::string uuid;
char** argv;
const std::string mysql_credentials; template <class Executor>
mysqlx::Session* mysql_session; class AuthFixture {
public:
const std::string uuid = std::to_string(uad::Random());
char** argv = boost::unit_test::framework::master_test_suite().argv;
fixture_session_initialization_helper helper; const std::string mysql_credentials = argv[1];
mysqlx::Session* mysql_session = new mysqlx::Session(mysql_credentials);
std::shared_ptr<IUserDAO> user_dao; fixture_session_initialization_helper helper = fixture_session_initialization_helper(mysql_session);
std::shared_ptr<MemoryAuthDAO> auth_dao;
RouteAuthRegistrationExecutor executor; std::shared_ptr<IUserDAO> user_dao = std::make_shared<MySQLUserDAO>(GetMySqlSession());
std::shared_ptr<MemoryAuthDAO> auth_dao = std::make_shared<MemoryAuthDAO>(GetMySqlSession());
Executor executor = Executor(GetMySqlSession(), user_dao);
Request req; Request req;
AuthFixture(); AuthFixture()
~AuthFixture(); {
BOOST_TEST_MESSAGE("Setup fixture");
}
~AuthFixture()
{
BOOST_TEST_MESSAGE("Teardown fixture");
}
}; };
} }