mirror of
https://github.com/boostorg/mysql.git
synced 2026-02-20 02:42:26 +00:00
Added error_info
This commit is contained in:
@@ -7,12 +7,15 @@
|
||||
|
||||
#include "mysql/connection.hpp"
|
||||
#include "integration_test_common.hpp"
|
||||
#include "test_common.hpp"
|
||||
#include <boost/asio/use_future.hpp>
|
||||
|
||||
namespace net = boost::asio;
|
||||
using namespace testing;
|
||||
using namespace mysql::test;
|
||||
|
||||
using mysql::detail::make_error_code;
|
||||
using mysql::error_info;
|
||||
|
||||
namespace
|
||||
{
|
||||
@@ -24,8 +27,9 @@ struct HandshakeTest : public mysql::test::IntegTest
|
||||
// Sync with error codes
|
||||
TEST_F(HandshakeTest, SyncErrc_FastAuthSuccessfulLogin)
|
||||
{
|
||||
conn.handshake(connection_params, errc);
|
||||
conn.handshake(connection_params, errc, info);
|
||||
EXPECT_EQ(errc, mysql::error_code());
|
||||
EXPECT_EQ(info, error_info());
|
||||
}
|
||||
|
||||
// TODO: review failure in Mac
|
||||
@@ -40,15 +44,17 @@ TEST_F(HandshakeTest, SyncErrc_FastAuthSuccessfulLogin)
|
||||
TEST_F(HandshakeTest, SyncErrc_FastAuthSuccessfulLoginNoDatabase)
|
||||
{
|
||||
connection_params.database = "";
|
||||
conn.handshake(connection_params, errc);
|
||||
conn.handshake(connection_params, errc, info);
|
||||
EXPECT_EQ(errc, mysql::error_code());
|
||||
EXPECT_EQ(info, error_info());
|
||||
}
|
||||
|
||||
TEST_F(HandshakeTest, SyncErrc_FastAuthBadUser)
|
||||
{
|
||||
connection_params.username = "non_existing_user";
|
||||
conn.handshake(connection_params, errc);
|
||||
conn.handshake(connection_params, errc, info);
|
||||
EXPECT_NE(errc, mysql::error_code());
|
||||
EXPECT_NE(info, error_info());
|
||||
// TODO: if default auth plugin is unknown, unknown auth plugin is returned instead of access denied
|
||||
// EXPECT_EQ(errc, make_error_code(mysql::Error::access_denied_error));
|
||||
}
|
||||
@@ -56,15 +62,17 @@ TEST_F(HandshakeTest, SyncErrc_FastAuthBadUser)
|
||||
TEST_F(HandshakeTest, SyncErrc_FastAuthBadPassword)
|
||||
{
|
||||
connection_params.password = "bad_password";
|
||||
conn.handshake(connection_params, errc);
|
||||
conn.handshake(connection_params, errc, info);
|
||||
EXPECT_EQ(errc, make_error_code(mysql::Error::access_denied_error));
|
||||
validate_error_info(info, {"access denied", "integ_user"});
|
||||
}
|
||||
|
||||
TEST_F(HandshakeTest, SyncErrc_FastAuthBadDatabase)
|
||||
{
|
||||
connection_params.database = "bad_database";
|
||||
conn.handshake(connection_params, errc);
|
||||
conn.handshake(connection_params, errc, info);
|
||||
EXPECT_EQ(errc, make_error_code(mysql::Error::bad_db_error));
|
||||
validate_error_info(info, {"unknown database", "bad_database"});
|
||||
}
|
||||
|
||||
// Sync with exceptions
|
||||
@@ -83,7 +91,7 @@ TEST_F(HandshakeTest, SyncExc_FastAuthBadPassword)
|
||||
TEST_F(HandshakeTest, Async_FastAuthSuccessfulLogin)
|
||||
{
|
||||
auto fut = conn.async_handshake(connection_params, boost::asio::use_future);
|
||||
EXPECT_NO_THROW(fut.get());
|
||||
EXPECT_EQ(fut.get(), error_info());
|
||||
}
|
||||
|
||||
// TODO: review failure in Mac
|
||||
@@ -92,21 +100,20 @@ TEST_F(HandshakeTest, Async_FastAuthSuccessfulLogin)
|
||||
connection_params.username = "empty_password_user";
|
||||
connection_params.password = "";
|
||||
auto fut = conn.async_handshake(connection_params, boost::asio::use_future);
|
||||
EXPECT_NO_THROW(fut.get());
|
||||
EXPECT_EQ(fut.get(), error_info());
|
||||
}*/
|
||||
|
||||
TEST_F(HandshakeTest, Async_FastAuthSuccessfulLoginNoDatabase)
|
||||
{
|
||||
connection_params.database = "";
|
||||
auto fut = conn.async_handshake(connection_params, boost::asio::use_future);
|
||||
EXPECT_NO_THROW(fut.get());
|
||||
EXPECT_EQ(fut.get(), error_info());
|
||||
}
|
||||
|
||||
TEST_F(HandshakeTest, Async_FastAuthBadUser)
|
||||
{
|
||||
connection_params.username = "non_existing_user";
|
||||
auto fut = conn.async_handshake(connection_params, boost::asio::use_future);
|
||||
|
||||
EXPECT_THROW(fut.get(), boost::system::system_error);
|
||||
// TODO: if default auth plugin is unknown, unknown auth plugin is returned instead of access denied
|
||||
// validate_future_exception(fut, make_error_code(mysql::Error::access_denied_error));
|
||||
@@ -115,15 +122,17 @@ TEST_F(HandshakeTest, Async_FastAuthBadUser)
|
||||
TEST_F(HandshakeTest, Async_FastAuthBadPassword)
|
||||
{
|
||||
connection_params.password = "bad_password";
|
||||
auto fut = conn.async_handshake(connection_params, boost::asio::use_future);
|
||||
validate_future_exception(fut, make_error_code(mysql::Error::access_denied_error));
|
||||
validate_async_fail([&](auto&& cb) {
|
||||
conn.async_handshake(connection_params, std::move(cb));
|
||||
}, mysql::Error::access_denied_error, {"access denied", "integ_user"});
|
||||
}
|
||||
|
||||
TEST_F(HandshakeTest, Async_FastAuthBadDatabase)
|
||||
{
|
||||
connection_params.database = "bad_db";
|
||||
auto fut = conn.async_handshake(connection_params, boost::asio::use_future);
|
||||
validate_future_exception(fut, make_error_code(mysql::Error::bad_db_error));
|
||||
validate_async_fail([&](auto&& cb) {
|
||||
conn.async_handshake(connection_params, std::move(cb));
|
||||
}, mysql::Error::bad_db_error, {"unknown database", "bad_db"});
|
||||
}
|
||||
|
||||
} // anon namespace
|
||||
|
||||
Reference in New Issue
Block a user