From c6147353213b39990e69ad6e7bdfca547842fe14 Mon Sep 17 00:00:00 2001 From: Adrien Beraud <adrien.beraud@savoirfairelinux.com> Date: Wed, 5 Feb 2025 15:28:34 -0500 Subject: [PATCH] namedirectory: fix tests GitLab: #1100 Change-Id: I6ae6d125c730fc9a8a2125b9b6da68c005922bce --- test/unitTest/namedirectory/namedirectory.cpp | 43 ++++++++++++++----- 1 file changed, 33 insertions(+), 10 deletions(-) diff --git a/test/unitTest/namedirectory/namedirectory.cpp b/test/unitTest/namedirectory/namedirectory.cpp index 951c6278a..bbb831921 100644 --- a/test/unitTest/namedirectory/namedirectory.cpp +++ b/test/unitTest/namedirectory/namedirectory.cpp @@ -71,7 +71,15 @@ public: R"(/name/:name)", [](auto req, auto params) { const auto qp = parse_query(req->header().query()); - if (params["name"] == "taken") { + const auto& name = params["name"]; + if (name.find('%') != std::string::npos) { + return req->create_response(restinio::status_bad_request()) + .set_body( + fmt::format("{{\"error\":\"invalid name\"}}") + ) + .done(); + } + else if (name == "taken") { return req->create_response() .set_body( fmt::format("{{\"name\":\"taken\",\"addr\":\"c0dec0dec0dec0dec0dec0dec0dec0dec0dec0de\"}}") @@ -88,7 +96,15 @@ public: R"(/addr/:addr)", [](auto req, auto params) { const auto qp = parse_query(req->header().query()); - if (params["addr"] == "c0dec0dec0dec0dec0dec0dec0dec0dec0dec0de") { + const auto& addr = params["addr"]; + if (addr.find_first_not_of("0123456789abcdefABCDEF") != std::string::npos) { + return req->create_response(restinio::status_bad_request()) + .set_body( + fmt::format("{{\"error\":\"invalid address\"}}") + ) + .done(); + } + else if (addr == "c0dec0dec0dec0dec0dec0dec0dec0dec0dec0de") { return req->create_response() .set_body( fmt::format("{{\"name\":\"taken\",\"addr\":\"c0dec0dec0dec0dec0dec0dec0dec0dec0dec0de\"}}") @@ -183,7 +199,6 @@ void NameDirectoryTest::testRegisterName() { std::mutex mtx; - std::unique_lock lk {mtx}; std::condition_variable cv; std::map<std::string, std::shared_ptr<libjami::CallbackWrapperBase>> confHandlers; bool nameRegistered {false}; @@ -192,11 +207,13 @@ NameDirectoryTest::testRegisterName() [&](const std::string&, int status, const std::string&) { + std::lock_guard lk {mtx}; nameRegistered = status == 0; cv.notify_one(); })); libjami::registerSignalHandlers(confHandlers); CPPUNIT_ASSERT(libjami::registerName(aliceId, "foo")); + std::unique_lock lk {mtx}; CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&] { return nameRegistered; })); } @@ -204,7 +221,6 @@ void NameDirectoryTest::testLookupName() { std::mutex mtx; - std::unique_lock lk {mtx}; std::condition_variable cv; std::map<std::string, std::shared_ptr<libjami::CallbackWrapperBase>> confHandlers; bool nameFound {false}; @@ -215,11 +231,13 @@ NameDirectoryTest::testLookupName() int status, const std::string&, const std::string&) { + std::lock_guard lk {mtx}; nameFound = status == 0; cv.notify_one(); })); libjami::registerSignalHandlers(confHandlers); CPPUNIT_ASSERT(libjami::lookupName(aliceId, "", "taken")); + std::unique_lock lk {mtx}; CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&] { return nameFound; })); } @@ -227,7 +245,6 @@ void NameDirectoryTest::testLookupNameInvalid() { std::mutex mtx; - std::unique_lock lk {mtx}; std::condition_variable cv; std::map<std::string, std::shared_ptr<libjami::CallbackWrapperBase>> confHandlers; bool nameInvalid {false}; @@ -238,11 +255,13 @@ NameDirectoryTest::testLookupNameInvalid() int status, const std::string&, const std::string&) { + std::lock_guard lk {mtx}; nameInvalid = status == 1; cv.notify_one(); })); libjami::registerSignalHandlers(confHandlers); CPPUNIT_ASSERT(libjami::lookupName(aliceId, "", "====")); + std::unique_lock lk {mtx}; CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&] { return nameInvalid; })); } @@ -250,7 +269,6 @@ void NameDirectoryTest::testLookupNameNotFound() { std::mutex mtx; - std::unique_lock lk {mtx}; std::condition_variable cv; std::map<std::string, std::shared_ptr<libjami::CallbackWrapperBase>> confHandlers; bool nameNotFound {false}; @@ -261,11 +279,13 @@ NameDirectoryTest::testLookupNameNotFound() int status, const std::string&, const std::string&) { + std::lock_guard lk {mtx}; nameNotFound = status == 2; cv.notify_one(); })); libjami::registerSignalHandlers(confHandlers); CPPUNIT_ASSERT(libjami::lookupName(aliceId, "", "nottaken")); + std::unique_lock lk {mtx}; CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&] { return nameNotFound; })); } @@ -273,7 +293,6 @@ void NameDirectoryTest::testLookupAddr() { std::mutex mtx; - std::unique_lock lk {mtx}; std::condition_variable cv; std::map<std::string, std::shared_ptr<libjami::CallbackWrapperBase>> confHandlers; bool addrFound {false}; @@ -284,11 +303,13 @@ NameDirectoryTest::testLookupAddr() int status, const std::string&, const std::string&) { + std::lock_guard lk {mtx}; addrFound = status == 0; cv.notify_one(); })); libjami::registerSignalHandlers(confHandlers); CPPUNIT_ASSERT(libjami::lookupAddress(aliceId, "", "c0dec0dec0dec0dec0dec0dec0dec0dec0dec0de")); + std::unique_lock lk {mtx}; CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&] { return addrFound; })); } @@ -296,7 +317,6 @@ void NameDirectoryTest::testLookupAddrInvalid() { std::mutex mtx; - std::unique_lock lk {mtx}; std::condition_variable cv; std::map<std::string, std::shared_ptr<libjami::CallbackWrapperBase>> confHandlers; bool addrInvalid {false}; @@ -307,11 +327,13 @@ NameDirectoryTest::testLookupAddrInvalid() int status, const std::string&, const std::string&) { + std::lock_guard lk {mtx}; addrInvalid = status == 1; cv.notify_one(); })); libjami::registerSignalHandlers(confHandlers); - CPPUNIT_ASSERT(libjami::lookupName(aliceId, "", "====")); + CPPUNIT_ASSERT(libjami::lookupAddress(aliceId, "", "====")); + std::unique_lock lk {mtx}; CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&] { return addrInvalid; })); } @@ -319,7 +341,6 @@ void NameDirectoryTest::testLookupAddrNotFound() { std::mutex mtx; - std::unique_lock lk {mtx}; std::condition_variable cv; std::map<std::string, std::shared_ptr<libjami::CallbackWrapperBase>> confHandlers; bool addrNotFound {false}; @@ -330,11 +351,13 @@ NameDirectoryTest::testLookupAddrNotFound() int status, const std::string&, const std::string&) { + std::lock_guard lk {mtx}; addrNotFound = status == 2; cv.notify_one(); })); libjami::registerSignalHandlers(confHandlers); CPPUNIT_ASSERT(libjami::lookupAddress(aliceId, "", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")); + std::unique_lock lk {mtx}; CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&] { return addrNotFound; })); } -- GitLab