From 12188c77e86aef0d7a06c053a3d320b7563f1b50 Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Thu, 10 Jun 2021 13:06:50 +0200 Subject: [PATCH] prepare for tests which needed valid user and known password in db --- .../PageRequestHandlerFactory.cpp | 6 ++ login_server/src/cpp/test/main.cpp | 42 +++++--- login_server/src/cpsp/TestUserGenerator.cpsp | 102 ++++++++++++++++++ 3 files changed, 138 insertions(+), 12 deletions(-) create mode 100644 login_server/src/cpsp/TestUserGenerator.cpsp diff --git a/login_server/src/cpp/HTTPInterface/PageRequestHandlerFactory.cpp b/login_server/src/cpp/HTTPInterface/PageRequestHandlerFactory.cpp index 47d7b8c9a..863ef12f1 100644 --- a/login_server/src/cpp/HTTPInterface/PageRequestHandlerFactory.cpp +++ b/login_server/src/cpp/HTTPInterface/PageRequestHandlerFactory.cpp @@ -12,6 +12,7 @@ #include "CheckEmailPage.h" #include "PassphrasePage.h" #include "SaveKeysPage.h" +#include "TestUserGenerator.h" #include "ElopageWebhook.h" #include "ElopageWebhookLight.h" #include "UserUpdatePasswordPage.h" @@ -229,6 +230,11 @@ Poco::Net::HTTPRequestHandler* PageRequestHandlerFactory::createRequestHandler(c return basicSetup(new LoginPage(nullptr), request, timeUsed); } } + if (ServerConfig::g_ServerSetupType != ServerConfig::SERVER_TYPE_PRODUCTION) { + if (url_first_part == "/testUserGenerator") { + return basicSetup(new TestUserGenerator, request, timeUsed); + } + } return basicSetup(new LoginPage(nullptr), request, timeUsed); //return new HandleFileRequest; //return new PageRequestHandlerFactory; diff --git a/login_server/src/cpp/test/main.cpp b/login_server/src/cpp/test/main.cpp index d4773bd9f..8f94dc1c3 100644 --- a/login_server/src/cpp/test/main.cpp +++ b/login_server/src/cpp/test/main.cpp @@ -13,6 +13,7 @@ #include "Poco/SplitterChannel.h" #include "../SingletonManager/ConnectionManager.h" +#include "../SingletonManager/SessionManager.h" #include "../lib/Profiler.h" @@ -27,7 +28,7 @@ void fillTests() // gTests.push_back(new LoginTest()); } -void runMysql(std::string sqlQuery) +int runMysql(std::string sqlQuery) { auto cm = ConnectionManager::getInstance(); auto session = cm->getConnection(CONNECTION_MYSQL_LOGIN_SERVER); @@ -39,7 +40,9 @@ void runMysql(std::string sqlQuery) } catch (Poco::Exception& ex) { printf("exception in runMysql: %s\n", ex.displayText().data()); + return -1; } + return 0; } int load(int argc, char* argv[]) { @@ -47,6 +50,9 @@ int load(int argc, char* argv[]) { std::clog << "[load]" << std::endl; Poco::AutoPtr test_config(new Poco::Util::LayeredConfiguration); std::string config_file_name = Poco::Path::config() + "grd_login/grd_login_test.properties"; +#ifdef WIN32 + config_file_name = "Gradido_LoginServer_Test.properties"; +#endif if(argc > 1 && strlen(argv[1]) > 4) { config_file_name = argv[1]; } @@ -144,6 +150,8 @@ int load(int argc, char* argv[]) { log.error("Test Error"); + SessionManager::getInstance()->init(); + //errorLog //printf("try connect php server mysql \n"); @@ -157,26 +165,35 @@ int load(int argc, char* argv[]) { "users" }; for (int i = 0; i < 2; i++) { - runMysql("TRUNCATE " + tables[i]); - runMysql("ALTER TABLE " + tables[i] + " AUTO_INCREMENT = 1"); + if (runMysql("TRUNCATE " + tables[i])) { + return -1; + } + if (runMysql("ALTER TABLE " + tables[i] + " AUTO_INCREMENT = 1")) { + return -1; + } } std::stringstream ss; + // password = TestP4ssword&H ss << "INSERT INTO `users` (`id`, `email`, `first_name`, `last_name`, `username`, `password`, `pubkey`, `privkey`, `created`, `email_checked`, `passphrase_shown`, `language`, `disabled`, `group_id`) VALUES " - << "(1, 'd_schultz32@gmx.de', 'DDD', 'Schultz', 'Diddel', 13134558453895551556, 0x146d3fb9e88abc0fca0b0091c1ab1b32b399be037436f340befa8bf004461889, 0x0dcc08960f45f631fe23bc7ddee0724cedc9ec0c861ce30f5091d20ffd96062d08ca215726fb9bd64860c754772e945eea4cc872ed0a36c7b640e8b0bf7a873ec6765fa510711622341347ce2307b5ce, '2020-02-20 16:05:44', 1, 0, 'de', 0, 1), " - << "(2, 'Jeet_bb@gmail.com', 'Darios', 'Bruder', 'Jeet', 12910944485867375321, 0x952e215a21d4376b4ac252c4bf41e156e1498e1b6b8ccf2a6826d96712f4f461, 0x4d40bf0860655f728312140dc3741e897bc2d13d00ea80a63e2961046a5a7bd8315397dfb488b89377087bc1a5f4f3af8ffdcf203329ae23ba04be7d38ad3852699d90ff1fc00e5b1ca92b64cc59c01f, '2020-02-20 16:05:44', 1, 0, 'de', 0, 1), " - << "(3, 'Tiger_231@yahoo.com', 'Dieter', 'Schultz', 'Tiger', 13528673707291575501, 0xb539944bf6444a2bfc988244f0c0c9dc326452be9b8a2a43fcd90663719f4f6d, 0x5461fda60b719b65ba00bd6298e48410c4cbf0e89deb13cc784ba8978cf047454e8556ee3eddc8487ee835c33a83163bc8d8babbf2a5c431876bc0a0c114ff0a0d6b57baa12cf8f23c64fb642c862db5, '2020-02-20 16:05:45', 1, 0, 'de', 0, 1), " - << "(4, 'Nikola_Tesla@email.de', 'Nikola', 'Tesla', 'Erfinder', 15522411320147607375, 0x476b059744f08b0995522b484c90f8d2f47d9b59f4b3c96d9dc0ae6ab7b84979, 0x5277bf044cba4fec64e6f4d38da132755b029161231daefc9a7b4692ad37e05cdd88e0a2c2215baf854dd3a813578c214167af1113607e9f999ca848a7598ba5068e38f2a1afb097e4752a88024d79c8, '2020-02-20 16:05:46', 1, 0, 'de', 0, 1), " - << "(5, 'Elfenhausen@arcor.de', 'Thomas', 'Markuk', 'Elf', 7022671043835614958, 0xb1584e169d60a7e771d3a348235dfd7b5f9e8235fcc26090761a0264b0daa6ff, 0xb46fb7110bf91e28f367aa80f84d1bbd639b6f689f4b0aa28c0f71529232df9bf9ee0fb02fa4c1b9f5a6799c82d119e5646f7231d011517379faaacf6513d973ac3043d4c786490ba62d56d75b86164d, '2020-02-20 16:05:46', 1, 0, 'de', 0, 1), " - << "(6, 'coin-info12@gradido.net', 'coin-info12', 'Test', 'Test Username', 1548398919826089202, 0x4046ae49c1b620f2a321aba0c874fa2bc7ba844ab808bb0eeb18a908d468db14, 0x9522657ecd7456eedf86d065aa087ba7a94a8961a8e4950d044136155d38fe0840f2c0a2876ce055b3eaa6e9ab95c5feba89e535e0434fb2648d94d6e6ec68211aa2ea9e42d1ccd40b6b3c31e41f848e, '2020-02-20 16:05:47', 1, 0, 'de', 0, 1), " - << "(7, 'AlexWesper@gmail.com', 'Alex', 'Wesper', 'Wespe', 5822761891727948301, 0xb13ede3402abb8f29722b14fec0a2006ae7a3a51fb677cd6a2bbd797ac6905a5, 0x6aa39d7670c64a31639c7d89b874ad929b2eaeb2e5992dbad71b6cea700bf9e3c6cf866d0f0fdc22b44a0ebf51a860799e880ef86266199931dd0a301e5552db44b9b7fa99ed5945652bc7b31eff767c, '2020-02-20 16:05:47', 1, 0, 'de', 0, 1); "; - runMysql(ss.str()); + << "(1, 'd_schultz32@gmx.de', 'DDD', 'Schultz', 'Diddel', 18242007140018938940, 0x69f2fefd6fa6947a370b9f8d3147f6617cf67416517ce25cb2d63901c666933c, 0x567f3e623a1899d1f8d69190c5799433c134ce0137c0c38cc0347874586d6234a19f2a0b484e6cc1863502e580ae6c17db1131f29a35eba45a46be29c7ee592940a3bd3ad519075fdeed6e368f0eb818, '2020-02-20 16:05:44', 1, 0, 'de', 0, 1), " + << "(2, 'Jeet_bb@gmail.com', 'Darios', 'Bruder', 'Jeet', 10417562666175322069, 0x6afd24f46eb79a839281fe537a1888155b102d4fbe0613ea92d51845bd8036cb, 0xe7aed71cd4ae2d1aba9343ffb3822b759f972e41b63a6032b7f6c69f566217784c2e7bcdaeaa2f7dd16bf3b6f1540b22afa65fc054550a9296454c6ecdbd4131eac7f9c703318a867e666691e1808a6e, '2020-02-20 16:05:44', 1, 0, 'de', 0, 1), " + << "(3, 'Tiger_231@yahoo.com', 'Dieter', 'Schultz', 'Tiger', 13790258844849208764, 0x9a79a5daea92218608fa1e3a657d78961dc04c97ff996cc0ea17d6896b5368e6, 0x4993a156a120728f0fa93fc63ab01482ed85ecf433c729c8426c4bb93f0b7ce6142fda531b11f5d5e925acd1d2e55fdfef94fe07dbb78d43322f7df1234c7251aa58946c96ec6e551395f0fb5e87decf, '2020-02-20 16:05:45', 1, 0, 'de', 0, 1), " + << "(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); "; + if (runMysql(ss.str())) { + return -1; + } ss.str(std::string()); ss << "INSERT INTO `groups` (`id`, `alias`, `name`, `url`, `description`) VALUES" << "(1, 'gdd1', 'Gradido1', 'gdd1.gradido.com', 'Der erste offizielle Gradido Server (zum Testen)'), " << "(2, 'gdd_test', 'Gradido Test', 'gdd1.gradido.com', 'Testgroup (zum Testen)'); "; - runMysql(ss.str()); + if (runMysql(ss.str())) { + return -1; + } ss.str(std::string()); @@ -219,6 +236,7 @@ void ende() } gTests.clear(); + SessionManager::getInstance()->deinitalize(); } diff --git a/login_server/src/cpsp/TestUserGenerator.cpsp b/login_server/src/cpsp/TestUserGenerator.cpsp new file mode 100644 index 000000000..41c3ad99d --- /dev/null +++ b/login_server/src/cpsp/TestUserGenerator.cpsp @@ -0,0 +1,102 @@ +<%@ page class="TestUserGenerator" %> +<%@ page form="true" %> +<%@ page baseClass="PageRequestMessagedHandler" %> +<%@ header include="HTTPInterface/PageRequestMessagedHandler.h" %> +<%! + #include "Crypto/SecretKeyCryptography.h" + #include "Crypto/KeyPairEd25519.h" + #include "ServerConfig.h" + #include "lib/DataTypeConverter.h" + + #include "controller/User.h" +%> +<%% + const char* pageName = "Test User Generator"; + // needed for header_large + auto user = controller::User::create(); + + std::string email; + std::string password_hashed; + std::string pubkey_hex; + std::string privkey_hex_encrypted; + std::string passphrase_str; + + bool user_created = false; + // add + if(!form.empty()) { + email = form.get("email", ""); + auto password = form.get("password", ""); + if(email == "") { + addError(new Error("Create User", "E-Mail is empty!")); + } + else if(password == "") { + addError(new Error("Create User", "Password is empty!")); + } + else + { + auto passphrase = Passphrase::generate(&ServerConfig::g_Mnemonic_WordLists[ServerConfig::MNEMONIC_BIP0039_SORTED_ORDER]); + passphrase_str = passphrase->getString(); + auto key_pair = KeyPairEd25519::create(passphrase); + Poco::AutoPtr secret_key = new SecretKeyCryptography; + secret_key->createKey(email, password); + password_hashed = std::to_string(secret_key->getKeyHashed()); + auto privkey_encrypted = key_pair->getCryptedPrivKey(secret_key); + privkey_hex_encrypted = DataTypeConverter::binToHex(privkey_encrypted); + pubkey_hex = key_pair->getPublicKeyHex(); + user_created = true; + delete key_pair; + } + } + + // select all + auto groups = controller::Group::listAll(); + //auto groups = controller::Group::load("gdd1"); + //std::vector> groups; + +%><%@ include file="include/header_large.cpsp" %> +<%= getErrorsHtml() %> +
+
+

Einen neuen User anlegen

+
+
+
+ + + + + +
+
+ <% if(user_created) { %> +
+
+

Generierte Daten

+
+
+
+
E-Mail
+
<%= email %>
+
+
+
Password hash
+
<%= password_hashed %>
+
+
+
public key
+
0x<%= pubkey_hex %>
+
+
+
private key encrypted
+
0x<%= privkey_hex_encrypted %>
+
+
+
Passphrase
+
<%= passphrase_str %>
+
+
+
+
'<%= email %>', <%= password_hashed %>, 0x<%= pubkey_hex %>, 0x<%= privkey_hex_encrypted %>
+ <% } %> +
+<%@ include file="include/footer.cpsp" %>