mirror of
https://github.com/IT4Change/gradido.git
synced 2025-12-13 07:45:54 +00:00
Merge pull request #576 from gradido/login_fix_user_search_bug
update mysql because tuple has changed
This commit is contained in:
commit
0caf10ec33
@ -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();
|
||||
|
||||
@ -65,11 +65,11 @@ namespace controller {
|
||||
std::vector<std::string> fieldNames = { "first_name", "last_name", "email", "email_checked" };
|
||||
auto session = cm->getConnection(CONNECTION_MYSQL_LOGIN_SERVER);
|
||||
std::vector<model::table::UserTuple> results;
|
||||
// Poco::Tuple<int, std::string, std::string, std::string, std::string, std::string, Poco::Nullable<Poco::Data::BLOB>, Poco::DateTime, int, int, int> UserTuple;
|
||||
|
||||
using namespace Poco::Data::Keywords;
|
||||
Poco::Data::Statement select(session);
|
||||
// typedef Poco::Tuple<int, std::string, std::string, std::string, std::string, Poco::Nullable<Poco::Data::BLOB>, Poco::DateTime, int, int, int> UserTuple;
|
||||
select << "SELECT id, first_name, last_name, email, username, pubkey, created, email_checked, disabled, group_id FROM " << db->getTableName();
|
||||
select << "SELECT id, first_name, last_name, email, username, description, pubkey, created, email_checked, disabled, group_id FROM " << db->getTableName();
|
||||
select << " where email_checked = 0 ";
|
||||
select, into(resultFromDB);
|
||||
if (searchString != "") {
|
||||
|
||||
144
login_server/src/cpp/test/JSONInterface/TestJsonGetUsers.cpp
Normal file
144
login_server/src/cpp/test/JSONInterface/TestJsonGetUsers.cpp
Normal 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);
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user