Skip to content
Snippets Groups Projects
Commit 2d0c9416 authored by Konstantinos Sideris's avatar Konstantinos Sideris
Browse files

Log the errors on test failures

parent 125e201c
No related branches found
No related tags found
No related merge requests found
......@@ -17,6 +17,20 @@ using namespace std;
using ErrType = std::experimental::optional<errors::ClientError>;
void
check_error(ErrType err)
{
if (err) {
cout << "matrix (error) : " << err->matrix_error.error << "\n";
cout << "matrix (errcode): " << mtx::errors::to_string(err->matrix_error.errcode)
<< "\n";
cout << "error_code : " << err->error_code << "\n";
cout << "status_code : " << err->status_code << "\n";
}
ASSERT_FALSE(err);
}
void
validate_login(const std::string &user, const mtx::responses::Login &res)
{
......@@ -42,17 +56,17 @@ TEST(ClientAPI, LoginSuccess)
std::shared_ptr<Client> mtx_client = std::make_shared<Client>("localhost");
mtx_client->login("alice", "secret", [](const mtx::responses::Login &res, ErrType err) {
ASSERT_FALSE(err);
check_error(err);
validate_login("@alice:localhost", res);
});
mtx_client->login("bob", "secret", [](const mtx::responses::Login &res, ErrType err) {
ASSERT_FALSE(err);
check_error(err);
validate_login("@bob:localhost", res);
});
mtx_client->login("carl", "secret", [](const mtx::responses::Login &res, ErrType err) {
ASSERT_FALSE(err);
check_error(err);
validate_login("@carl:localhost", res);
});
......@@ -101,14 +115,12 @@ TEST(ClientAPI, ChangeDisplayName)
std::shared_ptr<Client> mtx_client = std::make_shared<Client>("localhost");
mtx_client->login(
"alice", "secret", [mtx_client](const mtx::responses::Login &res, ErrType err) {
ASSERT_FALSE(err);
validate_login("@alice:localhost", res);
"alice", "secret", [mtx_client](const mtx::responses::Login &, ErrType err) {
check_error(err);
// Change the display name to Arthur Dent and verify its success through the lack
// of an error
mtx_client->set_displayname("Arthur Dent",
[](ErrType err) { ASSERT_FALSE(err); });
mtx_client->set_displayname("Arthur Dent", [](ErrType err) { check_error(err); });
});
mtx_client->close();
......@@ -119,13 +131,12 @@ TEST(ClientAPI, EmptyDisplayName)
std::shared_ptr<Client> mtx_client = std::make_shared<Client>("localhost");
mtx_client->login(
"alice", "secret", [mtx_client](const mtx::responses::Login &res, ErrType err) {
ASSERT_FALSE(err);
validate_login("@alice:localhost", res);
"alice", "secret", [mtx_client](const mtx::responses::Login &, ErrType err) {
check_error(err);
// Change the display name to an empty string and verify its success through the
// lack of an error
mtx_client->set_displayname("", [](ErrType err) { ASSERT_FALSE(err); });
mtx_client->set_displayname("", [](ErrType err) { check_error(err); });
});
mtx_client->close();
......@@ -136,9 +147,8 @@ TEST(ClientAPI, CreateRoom)
std::shared_ptr<Client> mtx_client = std::make_shared<Client>("localhost");
mtx_client->login(
"alice", "secret", [mtx_client](const mtx::responses::Login &res, ErrType err) {
ASSERT_FALSE(err);
validate_login("@alice:localhost", res);
"alice", "secret", [mtx_client](const mtx::responses::Login &, ErrType err) {
check_error(err);
});
// Waiting for the previous request to complete.
......@@ -148,7 +158,7 @@ TEST(ClientAPI, CreateRoom)
req.name = "Name";
req.topic = "Topic";
mtx_client->create_room(req, [](const mtx::responses::CreateRoom &res, ErrType err) {
ASSERT_FALSE(err);
check_error(err);
ASSERT_TRUE(res.room_id.localpart().size() > 10);
EXPECT_EQ(res.room_id.hostname(), "localhost");
});
......@@ -164,8 +174,7 @@ TEST(ClientAPI, LogoutSuccess)
// Login and prove that login was successful by creating a room
mtx_client->login(
"alice", "secret", [&token](const mtx::responses::Login &res, ErrType err) {
ASSERT_FALSE(err);
validate_login("@alice:localhost", res);
check_error(err);
token = res.access_token;
});
while (token.empty()) {
......@@ -176,15 +185,12 @@ TEST(ClientAPI, LogoutSuccess)
mtx::requests::CreateRoom req;
req.name = "Test1";
req.topic = "Topic1";
mtx_client->create_room(req, [](const mtx::responses::CreateRoom &res, ErrType err) {
boost::ignore_unused(res);
ASSERT_FALSE(err);
});
mtx_client->create_room(
req, [](const mtx::responses::CreateRoom &, ErrType err) { check_error(err); });
// Logout and prove that logout was successful and deleted the access_token_ for the client
mtx_client->logout([mtx_client, &token](const mtx::responses::Logout &res, ErrType err) {
boost::ignore_unused(res);
ASSERT_FALSE(err);
mtx_client->logout([mtx_client, &token](const mtx::responses::Logout &, ErrType err) {
check_error(err);
token.clear();
});
while (token.size()) {
......@@ -195,8 +201,7 @@ TEST(ClientAPI, LogoutSuccess)
mtx::requests::CreateRoom failReq;
failReq.name = "42";
failReq.topic = "LifeUniverseEverything";
mtx_client->create_room(failReq, [](const mtx::responses::CreateRoom &res, ErrType err) {
boost::ignore_unused(res);
mtx_client->create_room(failReq, [](const mtx::responses::CreateRoom &, ErrType err) {
ASSERT_TRUE(err);
EXPECT_EQ(mtx::errors::to_string(err->matrix_error.errcode), "M_MISSING_TOKEN");
EXPECT_EQ(err->status_code, boost::beast::http::status::forbidden);
......@@ -214,8 +219,7 @@ TEST(ClientAPI, LogoutInvalidatesTokenOnServer)
// Login and prove that login was successful by creating a room
mtx_client->login(
"alice", "secret", [&token](const mtx::responses::Login &res, ErrType err) {
ASSERT_FALSE(err);
validate_login("@alice:localhost", res);
check_error(err);
token = res.access_token;
});
while (token.empty()) {
......@@ -226,16 +230,13 @@ TEST(ClientAPI, LogoutInvalidatesTokenOnServer)
mtx::requests::CreateRoom req;
req.name = "Test1";
req.topic = "Topic1";
mtx_client->create_room(req, [](const mtx::responses::CreateRoom &res, ErrType err) {
boost::ignore_unused(res);
ASSERT_FALSE(err);
});
mtx_client->create_room(
req, [](const mtx::responses::CreateRoom &, ErrType err) { check_error(err); });
// Logout and prove that logout was successful by verifying the old access_token_ is no
// longer valid
mtx_client->logout([mtx_client, &token](const mtx::responses::Logout &res, ErrType err) {
boost::ignore_unused(res);
ASSERT_FALSE(err);
mtx_client->logout([mtx_client, &token](const mtx::responses::Logout &, ErrType err) {
check_error(err);
mtx_client->set_access_token(token);
token.clear();
});
......@@ -247,8 +248,7 @@ TEST(ClientAPI, LogoutInvalidatesTokenOnServer)
mtx::requests::CreateRoom failReq;
failReq.name = "42";
failReq.topic = "LifeUniverseEverything";
mtx_client->create_room(failReq, [](const mtx::responses::CreateRoom &res, ErrType err) {
boost::ignore_unused(res);
mtx_client->create_room(failReq, [](const mtx::responses::CreateRoom &, ErrType err) {
ASSERT_TRUE(err);
EXPECT_EQ(mtx::errors::to_string(err->matrix_error.errcode), "M_UNKNOWN_TOKEN");
EXPECT_EQ(err->status_code, boost::beast::http::status::forbidden);
......@@ -263,19 +263,15 @@ TEST(ClientAPI, CreateRoomInvites)
auto bob = std::make_shared<Client>("localhost");
auto carl = std::make_shared<Client>("localhost");
alice->login("alice", "secret", [alice](const mtx::responses::Login &res, ErrType err) {
boost::ignore_unused(res);
ASSERT_FALSE(err);
alice->login("alice", "secret", [alice](const mtx::responses::Login &, ErrType err) {
check_error(err);
});
bob->login("bob", "secret", [bob](const mtx::responses::Login &res, ErrType err) {
boost::ignore_unused(res);
ASSERT_FALSE(err);
});
bob->login(
"bob", "secret", [bob](const mtx::responses::Login &, ErrType err) { check_error(err); });
carl->login("carl", "secret", [carl](const mtx::responses::Login &res, ErrType err) {
boost::ignore_unused(res);
ASSERT_FALSE(err);
carl->login("carl", "secret", [carl](const mtx::responses::Login &, ErrType err) {
check_error(err);
});
// Waiting for the previous requests to complete.
......@@ -286,14 +282,14 @@ TEST(ClientAPI, CreateRoomInvites)
req.topic = "Topic";
req.invite = {"@bob:localhost", "@carl:localhost"};
alice->create_room(req, [bob, carl](const mtx::responses::CreateRoom &res, ErrType err) {
ASSERT_FALSE(err);
check_error(err);
auto room_id = res.room_id;
bob->join_room(res.room_id,
[](const nlohmann::json &, ErrType err) { ASSERT_FALSE(err); });
[](const nlohmann::json &, ErrType err) { check_error(err); });
carl->join_room(res.room_id,
[](const nlohmann::json &, ErrType err) { ASSERT_FALSE(err); });
[](const nlohmann::json &, ErrType err) { check_error(err); });
});
alice->close();
......@@ -306,15 +302,12 @@ TEST(ClientAPI, JoinRoom)
auto alice = std::make_shared<Client>("localhost");
auto bob = std::make_shared<Client>("localhost");
alice->login("alice", "secret", [alice](const mtx::responses::Login &res, ErrType err) {
boost::ignore_unused(res);
ASSERT_FALSE(err);
alice->login("alice", "secret", [alice](const mtx::responses::Login &, ErrType err) {
check_error(err);
});
bob->login("bob", "secret", [bob](const mtx::responses::Login &res, ErrType err) {
boost::ignore_unused(res);
ASSERT_FALSE(err);
});
bob->login(
"bob", "secret", [bob](const mtx::responses::Login &, ErrType err) { check_error(err); });
// Waiting for the previous requests to complete.
std::this_thread::sleep_for(std::chrono::seconds(3));
......@@ -329,11 +322,11 @@ TEST(ClientAPI, JoinRoom)
req.invite = {"@bob:localhost"};
req.room_alias_name = alias;
alice->create_room(req, [bob, alias](const mtx::responses::CreateRoom &res, ErrType err) {
ASSERT_FALSE(err);
check_error(err);
auto room_id = res.room_id;
bob->join_room(res.room_id,
[](const nlohmann::json &, ErrType err) { ASSERT_FALSE(err); });
[](const nlohmann::json &, ErrType err) { check_error(err); });
using namespace mtx::identifiers;
bob->join_room(parse<Room>("!random_room_id:localhost"),
......@@ -345,7 +338,7 @@ TEST(ClientAPI, JoinRoom)
// Join the room using an alias.
bob->join_room("#" + alias + ":localhost",
[](const nlohmann::json &, ErrType err) { ASSERT_FALSE(err); });
[](const nlohmann::json &, ErrType err) { check_error(err); });
});
alice->close();
......@@ -357,15 +350,12 @@ TEST(ClientAPI, LeaveRoom)
auto alice = std::make_shared<Client>("localhost");
auto bob = std::make_shared<Client>("localhost");
alice->login("alice", "secret", [alice](const mtx::responses::Login &res, ErrType err) {
boost::ignore_unused(res);
ASSERT_FALSE(err);
alice->login("alice", "secret", [alice](const mtx::responses::Login &, ErrType err) {
check_error(err);
});
bob->login("bob", "secret", [bob](const mtx::responses::Login &res, ErrType err) {
boost::ignore_unused(res);
ASSERT_FALSE(err);
});
bob->login(
"bob", "secret", [bob](const mtx::responses::Login &, ErrType err) { check_error(err); });
// Waiting for the previous requests to complete.
std::this_thread::sleep_for(std::chrono::seconds(3));
......@@ -375,14 +365,14 @@ TEST(ClientAPI, LeaveRoom)
req.topic = "Topic";
req.invite = {"@bob:localhost"};
alice->create_room(req, [bob](const mtx::responses::CreateRoom &res, ErrType err) {
ASSERT_FALSE(err);
check_error(err);
auto room_id = res.room_id;
bob->join_room(res.room_id, [room_id, bob](const nlohmann::json &, ErrType err) {
ASSERT_FALSE(err);
check_error(err);
bob->leave_room(
room_id, [](const nlohmann::json &, ErrType err) { ASSERT_FALSE(err); });
room_id, [](const nlohmann::json &, ErrType err) { check_error(err); });
});
});
......@@ -403,15 +393,12 @@ TEST(ClientAPI, InviteRoom)
auto alice = std::make_shared<Client>("localhost");
auto bob = std::make_shared<Client>("localhost");
alice->login("alice", "secret", [alice](const mtx::responses::Login &res, ErrType err) {
boost::ignore_unused(res);
ASSERT_FALSE(err);
alice->login("alice", "secret", [alice](const mtx::responses::Login &, ErrType err) {
check_error(err);
});
bob->login("bob", "secret", [bob](const mtx::responses::Login &res, ErrType err) {
boost::ignore_unused(res);
ASSERT_FALSE(err);
});
bob->login(
"bob", "secret", [bob](const mtx::responses::Login &, ErrType err) { check_error(err); });
// Waiting for the previous requests to complete.
std::this_thread::sleep_for(std::chrono::seconds(3));
......@@ -421,22 +408,19 @@ TEST(ClientAPI, InviteRoom)
req.topic = "Topic";
req.invite = {};
alice->create_room(req, [alice, bob](const mtx::responses::CreateRoom &res, ErrType err) {
ASSERT_FALSE(err);
check_error(err);
auto room_id = res.room_id;
alice->invite_user(
room_id,
"@bob:localhost",
[room_id, bob](const mtx::responses::Empty &, ErrType err) {
ASSERT_FALSE(err);
if (err) {
std::cout << "Received error when inviting user" << std::endl;
}
bob->join_room(room_id, [](const nlohmann::json &, ErrType err) {
ASSERT_FALSE(err);
});
});
alice->invite_user(room_id,
"@bob:localhost",
[room_id, bob](const mtx::responses::Empty &, ErrType err) {
check_error(err);
bob->join_room(room_id,
[](const nlohmann::json &, ErrType err) {
check_error(err);
});
});
});
alice->close();
......@@ -448,15 +432,12 @@ TEST(ClientAPI, InvalidInvite)
auto alice = std::make_shared<Client>("localhost");
auto bob = std::make_shared<Client>("localhost");
alice->login("alice", "secret", [alice](const mtx::responses::Login &res, ErrType err) {
boost::ignore_unused(res);
ASSERT_FALSE(err);
alice->login("alice", "secret", [alice](const mtx::responses::Login &, ErrType err) {
check_error(err);
});
bob->login("bob", "secret", [bob](const mtx::responses::Login &res, ErrType err) {
boost::ignore_unused(res);
ASSERT_FALSE(err);
});
bob->login(
"bob", "secret", [bob](const mtx::responses::Login &, ErrType err) { check_error(err); });
// Waiting for the previous requests to complete.
std::this_thread::sleep_for(std::chrono::seconds(3));
......@@ -466,7 +447,7 @@ TEST(ClientAPI, InvalidInvite)
req.topic = "Topic";
req.invite = {};
alice->create_room(req, [alice, bob](const mtx::responses::CreateRoom &res, ErrType err) {
ASSERT_FALSE(err);
check_error(err);
auto room_id = res.room_id;
bob->invite_user(room_id,
......@@ -489,9 +470,8 @@ TEST(ClientAPI, Sync)
std::shared_ptr<Client> mtx_client = std::make_shared<Client>("localhost");
mtx_client->login(
"alice", "secret", [mtx_client](const mtx::responses::Login &res, ErrType err) {
boost::ignore_unused(res);
ASSERT_FALSE(err);
"alice", "secret", [mtx_client](const mtx::responses::Login &, ErrType err) {
check_error(err);
});
while (mtx_client->access_token().empty())
......@@ -501,11 +481,11 @@ TEST(ClientAPI, Sync)
req.name = "Name";
req.topic = "Topic";
mtx_client->create_room(req, [mtx_client](const mtx::responses::CreateRoom &, ErrType err) {
ASSERT_FALSE(err);
check_error(err);
mtx_client->sync(
"", "", false, 0, [](const mtx::responses::Sync &res, ErrType err) {
ASSERT_FALSE(err);
check_error(err);
ASSERT_TRUE(res.rooms.join.size() > 0);
ASSERT_TRUE(res.next_batch.size() > 0);
});
......@@ -519,7 +499,7 @@ TEST(ClientAPI, Versions)
std::shared_ptr<Client> mtx_client = std::make_shared<Client>("localhost");
mtx_client->versions([](const mtx::responses::Versions &res, ErrType err) {
ASSERT_FALSE(err);
check_error(err);
EXPECT_EQ(res.versions.size(), 4);
EXPECT_EQ(res.versions.at(0), "r0.0.1");
......@@ -536,17 +516,17 @@ TEST(ClientAPI, Typing)
auto alice = std::make_shared<Client>("localhost");
alice->login(
"alice", "secret", [](const mtx::responses::Login &, ErrType err) { ASSERT_FALSE(err); });
"alice", "secret", [](const mtx::responses::Login &, ErrType err) { check_error(err); });
while (alice->access_token().empty())
std::this_thread::sleep_for(std::chrono::milliseconds(100));
mtx::requests::CreateRoom req;
alice->create_room(req, [alice](const mtx::responses::CreateRoom &res, ErrType err) {
ASSERT_FALSE(err);
check_error(err);
alice->start_typing(res.room_id, 10000, [alice, res](ErrType err) {
ASSERT_FALSE(err);
check_error(err);
const auto room_id = res.room_id.toString();
atomic_bool can_continue(false);
......@@ -557,7 +537,7 @@ TEST(ClientAPI, Typing)
false,
0,
[room_id, &can_continue](const mtx::responses::Sync &res, ErrType err) {
ASSERT_FALSE(err);
check_error(err);
can_continue = true;
......@@ -571,7 +551,7 @@ TEST(ClientAPI, Typing)
std::this_thread::sleep_for(std::chrono::milliseconds(100));
alice->stop_typing(res.room_id, [alice, room_id](ErrType err) {
ASSERT_FALSE(err);
check_error(err);
alice->sync(
"",
......@@ -579,7 +559,7 @@ TEST(ClientAPI, Typing)
false,
0,
[room_id](const mtx::responses::Sync &res, ErrType err) {
ASSERT_FALSE(err);
check_error(err);
auto room = res.rooms.join.at(room_id);
EXPECT_EQ(room.ephemeral.typing.size(), 0);
});
......@@ -595,15 +575,12 @@ TEST(ClientAPI, SendMessages)
auto alice = std::make_shared<Client>("localhost");
auto bob = std::make_shared<Client>("localhost");
alice->login("alice", "secret", [alice](const mtx::responses::Login &res, ErrType err) {
boost::ignore_unused(res);
ASSERT_FALSE(err);
alice->login("alice", "secret", [alice](const mtx::responses::Login &, ErrType err) {
check_error(err);
});
bob->login("bob", "secret", [bob](const mtx::responses::Login &res, ErrType err) {
boost::ignore_unused(res);
ASSERT_FALSE(err);
});
bob->login(
"bob", "secret", [bob](const mtx::responses::Login &, ErrType err) { check_error(err); });
while (alice->access_token().empty() && bob->access_token().empty())
std::this_thread::sleep_for(std::chrono::milliseconds(100));
......@@ -611,12 +588,12 @@ TEST(ClientAPI, SendMessages)
mtx::requests::CreateRoom req;
req.invite = {"@bob:localhost"};
alice->create_room(req, [alice, bob](const mtx::responses::CreateRoom &res, ErrType err) {
ASSERT_FALSE(err);
check_error(err);
auto room_id = res.room_id;
bob->join_room(
res.room_id, [alice, bob, room_id](const nlohmann::json &, ErrType err) {
ASSERT_FALSE(err);
check_error(err);
// Flag to indicate when those messages would be ready to be read by
// alice.
......@@ -631,7 +608,7 @@ TEST(ClientAPI, SendMessages)
text,
[&event_ids](const mtx::responses::EventId &res, ErrType err) {
event_ids.push_back(res.event_id.toString());
ASSERT_FALSE(err);
check_error(err);
});
mtx::events::msg::Emote emote;
......@@ -643,7 +620,7 @@ TEST(ClientAPI, SendMessages)
emote,
[&event_ids](const mtx::responses::EventId &res, ErrType err) {
event_ids.push_back(res.event_id.toString());
ASSERT_FALSE(err);
check_error(err);
});
while (event_ids.size() != 2)
......@@ -655,7 +632,7 @@ TEST(ClientAPI, SendMessages)
false,
0,
[room_id, event_ids](const mtx::responses::Sync &res, ErrType err) {
ASSERT_FALSE(err);
check_error(err);
auto ids = get_event_ids(
res.rooms.join.at(room_id.toString()).timeline.events);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment