add test to prevent bug in future

This commit is contained in:
einhornimmond 2021-06-21 12:41:02 +02:00
parent 730f6541c7
commit 630d667e99
3 changed files with 158 additions and 5 deletions

View File

@ -93,10 +93,10 @@ Poco::JSON::Object* JsonGetUsers::handle(Poco::Dynamic::Var params)
result->set("state", "success");
//Poco::JSON::Object jsonResultObject;
Poco::JSON::Array jsonUsersArray;
Poco::JSON::Array::Ptr jsonUsersArray = new Poco::JSON::Array;
for (auto it = results.begin(); it != results.end(); it++) {
jsonUsersArray.add((*it)->getJson());
jsonUsersArray->add((*it)->getJson());
(*it)->release();
}
results.clear();

View File

@ -0,0 +1,144 @@
#include "gtest/gtest.h"
#include "SingletonManager/SessionManager.h"
#include "Poco/JSON/Object.h"
#include "JSONInterface/JsonGetUsers.h"
TEST(TestJsonGetUsers, NO_ADMIN)
{
auto sm = SessionManager::getInstance();
auto session = sm->getNewSession();
auto user = controller::User::create();
user->load("d_schultz32@gmx.de");
session->setUser(user);
JsonGetUsers jsonCall;
Poco::JSON::Object::Ptr params = new Poco::JSON::Object;
params->set("search", "b");
params->set("session_id", session->getHandle());
auto result = jsonCall.handle(params);
auto state = result->get("state");
ASSERT_FALSE(state.isEmpty());
ASSERT_TRUE(state.isString());
ASSERT_EQ(state.toString(), "wrong role");
auto msg = result->get("msg");
ASSERT_FALSE(msg.isEmpty());
ASSERT_TRUE(msg.isString());
ASSERT_EQ(msg.toString(), "User hasn't correct role");
sm->releaseSession(session);
}
TEST(TestJsonGetUsers, INVALID_SESSION)
{
JsonGetUsers jsonCall;
Poco::JSON::Object::Ptr params = new Poco::JSON::Object;
params->set("search", "");
params->set("session_id", rand());
auto result = jsonCall.handle(params);
auto state = result->get("state");
ASSERT_FALSE(state.isEmpty());
ASSERT_TRUE(state.isString());
ASSERT_EQ(state.toString(), "not found");
auto msg = result->get("msg");
ASSERT_FALSE(msg.isEmpty());
ASSERT_TRUE(msg.isString());
ASSERT_EQ(msg.toString(), "Session not found");
}
TEST(TestJsonGetUsers, EMPTY_SEARCH)
{
auto sm = SessionManager::getInstance();
auto session = sm->getNewSession();
auto user = controller::User::create();
user->load("Tiger_231@yahoo.com");
session->setUser(user);
JsonGetUsers jsonCall;
Poco::JSON::Object::Ptr params = new Poco::JSON::Object;
params->set("search", "");
params->set("session_id", session->getHandle());
auto result = jsonCall.handle(params);
auto state = result->get("state");
ASSERT_FALSE(state.isEmpty());
ASSERT_TRUE(state.isString());
ASSERT_EQ(state.toString(), "not found");
auto msg = result->get("msg");
ASSERT_FALSE(msg.isEmpty());
ASSERT_TRUE(msg.isString());
ASSERT_EQ(msg.toString(), "Search string is empty and account_state is all or empty");
sm->releaseSession(session);
}
TEST(TestJsonGetUsers, VALID_SEARCH)
{
auto sm = SessionManager::getInstance();
auto session = sm->getNewSession();
auto user = controller::User::create();
user->load("Tiger_231@yahoo.com");
session->setUser(user);
JsonGetUsers jsonCall;
Poco::JSON::Object::Ptr params = new Poco::JSON::Object;
params->set("search", "a");
params->set("session_id", session->getHandle());
auto result = jsonCall.handle(params);
auto state = result->get("state");
ASSERT_FALSE(state.isEmpty());
ASSERT_TRUE(state.isString());
ASSERT_EQ(state.toString(), "success");
auto msg = result->get("msg");
ASSERT_TRUE(msg.isEmpty());
EXPECT_TRUE(result->isArray("users"));
auto users = result->getArray("users");
ASSERT_FALSE(users.isNull());
ASSERT_EQ(users->size(), 6);
sm->releaseSession(session);
}
TEST(TestJsonGetUsers, VALID_STATE_SEARCH)
{
auto sm = SessionManager::getInstance();
auto session = sm->getNewSession();
auto user = controller::User::create();
user->load("Tiger_231@yahoo.com");
session->setUser(user);
JsonGetUsers jsonCall;
Poco::JSON::Object::Ptr params = new Poco::JSON::Object;
params->set("search", "");
params->set("account_state", "email not activated");
params->set("session_id", session->getHandle());
auto result = jsonCall.handle(params);
auto state = result->get("state");
ASSERT_FALSE(state.isEmpty());
ASSERT_TRUE(state.isString());
ASSERT_EQ(state.toString(), "success");
auto msg = result->get("msg");
ASSERT_TRUE(msg.isEmpty());
EXPECT_TRUE(result->isArray("users"));
auto users = result->getArray("users");
ASSERT_FALSE(users.isNull());
ASSERT_EQ(users->size(), 1);
sm->releaseSession(session);
}

View File

@ -177,9 +177,10 @@ int load(int argc, char* argv[]) {
// clean up and fill db
std::string tables[] = {
"groups",
"users"
"users",
"user_roles"
};
for (int i = 0; i < 2; i++) {
for (int i = 0; i < 3; i++) {
if (runMysql("TRUNCATE " + tables[i])) {
return -1;
}
@ -204,7 +205,15 @@ int load(int argc, char* argv[]) {
<< "(4, 'Nikola_Tesla@email.de', 'Nikola', 'Tesla', 'Erfinder', 1914014100253540772, 0x1c199421a66070afb28cb7c37de98865b28924bff26161bb65faaf5695050ee3, 0xe38ca460ca748954b29d79f0e943eed3ba85e7e13b18f69349666e31a8e3b06c9df105171796b37b4201895a2f3fe8ec8bf58a181700caaa5752a94a968c50e90ebb6280002a056126b2055ff75d69d1, '2020-02-20 16:05:46', 1, 0, 'de', 0, 1), "
<< "(5, 'Elfenhausen@arcor.de', 'Thomas', 'Markuk', 'Elf', 8105871797752167168, 0x98d703f0ea1def3ef9e6265a76281d125a94c80665425bd7a844580ec1a2ce98, 0x63612a1d07d78a0c945d765a10a30d9de2be602e79e3f39268d731bc6f7fa945d7d04c638000bae089ac058263f52e7c1f2c3550b35b5727e41523f2f592781add65d12b8b8c0b3226f32174cfa1bcee, '2020-02-20 16:05:46', 1, 0, 'de', 0, 1), "
<< "(6, 'coin-info12@gradido.net', 'coin-info12', 'Test', 'Test Username', 9005874071610817324, 0xb3ee1c82a9877f664d05364106e259621b2e203bfbb5323edb7b597051efecc2, 0xa039da7d59e2475dd1aaa635f803ec1aeffc2506e7a96a934bf8d7cf4ac2a96dc962d4e1bdf8e11c5ce7e18189edc36014b89e9e72628004ec5901be6c407a955efb5142a1ee9a2f3aed888125a44aa2, '2020-02-20 16:05:47', 1, 0, 'de', 0, 1), "
<< "(7, 'AlexWesper@gmail.com', 'Alex', 'Wesper', 'Wespe', 7264393213873828644, 0x735a5c22ebe84ab1d6453991d50019b677b82b0663b023c30127ec906ee9b59a, 0xaec30051ad3ab2d2132a76e9dfe5a396d2dfbcc83a4eb27223b4da8803893959af9e29c6963f9e73eddc447cb3d3995527b94054e7fdecd7d5f8cb45c3954ff9bb2c9e0374f2124b3170301f990c5d7d, '2020-02-20 16:05:47', 1, 0, 'de', 0, 1); ";
<< "(7, 'AlexWesper@gmail.com', 'Alex', 'Wesper', 'Wespe', 7264393213873828644, 0x735a5c22ebe84ab1d6453991d50019b677b82b0663b023c30127ec906ee9b59a, 0xaec30051ad3ab2d2132a76e9dfe5a396d2dfbcc83a4eb27223b4da8803893959af9e29c6963f9e73eddc447cb3d3995527b94054e7fdecd7d5f8cb45c3954ff9bb2c9e0374f2124b3170301f990c5d7d, '2020-02-20 16:05:47', 0, 0, 'de', 0, 1); ";
if (runMysql(ss.str())) {
return -1;
}
ss.str(std::string());
ss << "INSERT INTO `user_roles` (`id`, `user_id`, `role_id`) VALUES"
<< "(1, 3, 1);";
if (runMysql(ss.str())) {
return -1;
}