From 6f70d4c8b81443d7e66ca52a5f290b07c883272c Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Thu, 10 Jun 2021 15:27:28 +0200 Subject: [PATCH] update test and test environment --- .../JSONInterface/TestJsonUpdateUserInfos.cpp | 65 ++++++++++++++++++- .../JSONInterface/TestJsonUpdateUserInfos.h | 2 +- login_server/src/cpp/test/main.cpp | 24 +++++-- 3 files changed, 82 insertions(+), 9 deletions(-) diff --git a/login_server/src/cpp/test/JSONInterface/TestJsonUpdateUserInfos.cpp b/login_server/src/cpp/test/JSONInterface/TestJsonUpdateUserInfos.cpp index 506fbb80f..64891fb01 100644 --- a/login_server/src/cpp/test/JSONInterface/TestJsonUpdateUserInfos.cpp +++ b/login_server/src/cpp/test/JSONInterface/TestJsonUpdateUserInfos.cpp @@ -2,14 +2,17 @@ #include "JSONInterface/JsonUpdateUserInfos.h" #include "TestJsonUpdateUserInfos.h" +#include "lib/Profiler.h" void TestJsonUpdateUserInfos::SetUp() { auto sm = SessionManager::getInstance(); - sm->init(); + //sm->init(); mUserSession = sm->getNewSession(); - mUserSession->loadUser("Jeet_bb@gmail.com", "TestP4ssword&H"); + auto user = controller::User::create(); + user->getModel()->setEmail("Jeet_bb@gmail.com"); + mUserSession->setUser(user); } void TestJsonUpdateUserInfos::TearDown() @@ -18,7 +21,6 @@ void TestJsonUpdateUserInfos::TearDown() if (!mUserSession) { sm->releaseSession(mUserSession); } - sm->deinitalize(); } Poco::JSON::Object::Ptr TestJsonUpdateUserInfos::chooseAccount(const Poco::JSON::Object::Ptr update) @@ -30,6 +32,7 @@ Poco::JSON::Object::Ptr TestJsonUpdateUserInfos::chooseAccount(const Poco::JSON: return params; } + TEST_F(TestJsonUpdateUserInfos, EmptyOldPassword) { JsonUpdateUserInfos jsonCall; @@ -42,11 +45,67 @@ TEST_F(TestJsonUpdateUserInfos, EmptyOldPassword) auto errors = result->get("errors"); ASSERT_TRUE(errors.isArray()); + auto valid_values_obj = result->get("valid_values"); + ASSERT_TRUE(valid_values_obj.isInteger()); + int valid_values = 0; + valid_values_obj.convert(valid_values); + ASSERT_EQ(valid_values, 0); //User.password_old not found Poco::JSON::Array error_array = errors.extract(); ASSERT_EQ(error_array.size(), 1); ASSERT_EQ(error_array.getElement(0), "User.password_old not found"); + delete result; +} + +TEST_F(TestJsonUpdateUserInfos, OnlyOldPassword) +{ + JsonUpdateUserInfos jsonCall; + Poco::JSON::Object::Ptr update = new Poco::JSON::Object; + + update->set("User.password_old", "TestP4ssword&H"); + + auto params = chooseAccount(update); + auto result = jsonCall.handle(params); + + auto errors = result->get("errors"); + ASSERT_TRUE(errors.isArray()); + auto valid_values_obj = result->get("valid_values"); + ASSERT_TRUE(valid_values_obj.isInteger()); + int valid_values = 0; + valid_values_obj.convert(valid_values); + ASSERT_EQ(valid_values, 0); + Poco::JSON::Array error_array = errors.extract(); + ASSERT_EQ(error_array.size(), 0); + + delete result; +} + +TEST_F(TestJsonUpdateUserInfos, WrongPassword) +{ + JsonUpdateUserInfos jsonCall; + mUserSession->loadUser("Jeet_bb@gmail.com", "TestP4ssword&H"); + Poco::JSON::Object::Ptr update = new Poco::JSON::Object; + + update->set("User.password", "newPassword"); + update->set("User.password_old", "TestP4sswordH"); + + auto params = chooseAccount(update); + Profiler timeUsed; + auto result = jsonCall.handle(params); + ASSERT_GE(timeUsed.millis(), ServerConfig::g_FakeLoginSleepTime-200); + + auto errors = result->get("errors"); + ASSERT_TRUE(errors.isArray()); + auto valid_values_obj = result->get("valid_values"); + ASSERT_TRUE(valid_values_obj.isInteger()); + int valid_values = 0; + valid_values_obj.convert(valid_values); + ASSERT_EQ(valid_values, 0); + Poco::JSON::Array error_array = errors.extract(); + ASSERT_EQ(error_array.size(), 1); + ASSERT_EQ(error_array.getElement(0), "User.password_old didn't match"); + delete result; } \ No newline at end of file diff --git a/login_server/src/cpp/test/JSONInterface/TestJsonUpdateUserInfos.h b/login_server/src/cpp/test/JSONInterface/TestJsonUpdateUserInfos.h index 4c759ce67..dfef547a8 100644 --- a/login_server/src/cpp/test/JSONInterface/TestJsonUpdateUserInfos.h +++ b/login_server/src/cpp/test/JSONInterface/TestJsonUpdateUserInfos.h @@ -16,7 +16,7 @@ protected: Poco::JSON::Object::Ptr chooseAccount(const Poco::JSON::Object::Ptr update); Session* mUserSession; - + std::string mEmail; }; diff --git a/login_server/src/cpp/test/main.cpp b/login_server/src/cpp/test/main.cpp index 8f94dc1c3..c875ec6a0 100644 --- a/login_server/src/cpp/test/main.cpp +++ b/login_server/src/cpp/test/main.cpp @@ -17,6 +17,8 @@ #include "../lib/Profiler.h" +#include "Crypto/SecretKeyCryptography.h" + std::list gTests; @@ -85,6 +87,9 @@ int load(int argc, char* argv[]) { ServerConfig::g_CPUScheduler = new UniLib::controller::CPUSheduler(worker_count, "Default Worker"); ServerConfig::g_CryptoCPUScheduler = new UniLib::controller::CPUSheduler(2, "Crypto Worker"); + ServerConfig::g_disableEmail = true; + + SessionManager::getInstance()->init(); // load up connection configs // register MySQL connector @@ -128,6 +133,13 @@ int load(int argc, char* argv[]) { return -4; } } + + printf("measure Time for secret key generation...\n"); + Profiler timeForArgon2; + SecretKeyCryptography secret_cryptografie; + secret_cryptografie.createKey("test.email@gmx.de", "skaSI2WSEIs/"); + ServerConfig::g_FakeLoginSleepTime = timeForArgon2.millis(); + printf("time for secret key generation: %s\n", timeForArgon2.string().data()); std::string log_Path = "/var/log/grd_login/"; //#ifdef _WIN32 @@ -150,7 +162,6 @@ int load(int argc, char* argv[]) { log.error("Test Error"); - SessionManager::getInstance()->init(); //errorLog @@ -226,7 +237,7 @@ int run() return 0; } -void ende() +void endegTests() { for (std::list::iterator it = gTests.begin(); it != gTests.end(); it++) { @@ -236,7 +247,7 @@ void ende() } gTests.clear(); - SessionManager::getInstance()->deinitalize(); + } @@ -254,10 +265,13 @@ int main(int argc, char** argv) //printf ("\nStack Limit = %ld and %ld max\n", limit.rlim_cur, limit.rlim_max); run(); - ende(); - ::testing::InitGoogleTest(&argc, argv); + endegTests(); + ::testing::InitGoogleTest(&argc, argv); auto result = RUN_ALL_TESTS(); + + SessionManager::getInstance()->deinitalize(); ServerConfig::unload(); + return result; }