diff --git a/test/unitTest/call/recorder.cpp b/test/unitTest/call/recorder.cpp index 621c0d5559c087c3c6ad366217b22b21b0879834..d7c84ad160550e4bba97922b56c5daf41ce166cd 100644 --- a/test/unitTest/call/recorder.cpp +++ b/test/unitTest/call/recorder.cpp @@ -87,12 +87,14 @@ private: void registerSignalHandlers(); void testRecordCall(); void testRecordAudioOnlyCall(); + void testRecordCallOnePersonRdv(); void testStopCallWhileRecording(); void testDaemonPreference(); CPPUNIT_TEST_SUITE(RecorderTest); CPPUNIT_TEST(testRecordCall); CPPUNIT_TEST(testRecordAudioOnlyCall); + CPPUNIT_TEST(testRecordCallOnePersonRdv); CPPUNIT_TEST(testStopCallWhileRecording); CPPUNIT_TEST(testDaemonPreference); CPPUNIT_TEST_SUITE_END(); @@ -177,6 +179,7 @@ RecorderTest::registerSignalHandlers() void RecorderTest::testRecordCall() { + JAMI_INFO("Start testRecordCall"); registerSignalHandlers(); auto aliceAccount = Manager::instance().getAccount<JamiAccount>(aliceId); auto bobAccount = Manager::instance().getAccount<JamiAccount>(bobId); @@ -221,11 +224,13 @@ RecorderTest::testRecordCall() Manager::instance().hangupCall(aliceId, callId); CPPUNIT_ASSERT(cv.wait_for(lk, 20s, [&] { return bobCall.state == "OVER"; })); + JAMI_INFO("End testRecordCall"); } void RecorderTest::testRecordAudioOnlyCall() { + JAMI_INFO("Start testRecordAudioOnlyCall"); registerSignalHandlers(); auto aliceAccount = Manager::instance().getAccount<JamiAccount>(aliceId); auto bobAccount = Manager::instance().getAccount<JamiAccount>(bobId); @@ -263,11 +268,63 @@ RecorderTest::testRecordAudioOnlyCall() Manager::instance().hangupCall(aliceId, callId); CPPUNIT_ASSERT(cv.wait_for(lk, 20s, [&] { return bobCall.state == "OVER"; })); + JAMI_INFO("End testRecordAudioOnlyCall"); +} + +void +RecorderTest::testRecordCallOnePersonRdv() +{ + JAMI_INFO("Start testRecordCallOnePersonRdv"); + registerSignalHandlers(); + auto aliceAccount = Manager::instance().getAccount<JamiAccount>(aliceId); + auto bobAccount = Manager::instance().getAccount<JamiAccount>(bobId); + auto bobUri = bobAccount->getUsername(); + + try { + bobAccount->editConfig( + [&](AccountConfig& config) { config.isRendezVous = true; }); + } catch (...) {} + + CPPUNIT_ASSERT(bobAccount->config().isRendezVous); + + recordedFile.clear(); + + JAMI_INFO("Start call between Alice and Bob"); + std::vector<std::map<std::string, std::string>> mediaList; + std::map<std::string, std::string> mediaAttributeA + = {{libjami::Media::MediaAttributeKey::MEDIA_TYPE, libjami::Media::MediaAttributeValue::AUDIO}, + {libjami::Media::MediaAttributeKey::ENABLED, TRUE_STR}, + {libjami::Media::MediaAttributeKey::MUTED, FALSE_STR}, + {libjami::Media::MediaAttributeKey::SOURCE, ""}}; + mediaList.emplace_back(mediaAttributeA); + auto callId = libjami::placeCallWithMedia(aliceId, bobUri, mediaList); + CPPUNIT_ASSERT(cv.wait_for(lk, 20s, [&] { return !bobCall.callId.empty(); })); + CPPUNIT_ASSERT(cv.wait_for(lk, 20s, [&] { + return bobCall.mediaStatus + == libjami::Media::MediaNegotiationStatusEvents::NEGOTIATION_SUCCESS; + })); + + CPPUNIT_ASSERT(!libjami::getIsRecording(aliceId, callId)); + libjami::toggleRecording(aliceId, callId); + + // Stop recorder after a few seconds + std::this_thread::sleep_for(5s); + CPPUNIT_ASSERT(libjami::getIsRecording(aliceId, callId)); + libjami::toggleRecording(aliceId, callId); + CPPUNIT_ASSERT(!libjami::getIsRecording(aliceId, callId)); + + CPPUNIT_ASSERT(cv.wait_for(lk, 20s, [&] { return !recordedFile.empty(); })); + + Manager::instance().hangupCall(aliceId, callId); + CPPUNIT_ASSERT( + cv.wait_for(lk, 20s, [&] { return bobCall.state == "OVER" && !recordedFile.empty(); })); + JAMI_INFO("End testRecordCallOnePersonRdv"); } void RecorderTest::testStopCallWhileRecording() { + JAMI_INFO("Start testStopCallWhileRecording"); registerSignalHandlers(); auto aliceAccount = Manager::instance().getAccount<JamiAccount>(aliceId); auto bobAccount = Manager::instance().getAccount<JamiAccount>(bobId); @@ -303,14 +360,17 @@ RecorderTest::testStopCallWhileRecording() // Hangup call std::this_thread::sleep_for(5s); + CPPUNIT_ASSERT(libjami::getIsRecording(aliceId, callId)); Manager::instance().hangupCall(aliceId, callId); CPPUNIT_ASSERT( cv.wait_for(lk, 20s, [&] { return bobCall.state == "OVER" && !recordedFile.empty(); })); + JAMI_INFO("End testStopCallWhileRecording"); } void RecorderTest::testDaemonPreference() { + JAMI_INFO("Start testDaemonPreference"); registerSignalHandlers(); auto aliceAccount = Manager::instance().getAccount<JamiAccount>(aliceId); auto bobAccount = Manager::instance().getAccount<JamiAccount>(bobId); @@ -337,10 +397,12 @@ RecorderTest::testDaemonPreference() // Let record some seconds std::this_thread::sleep_for(5s); + CPPUNIT_ASSERT(libjami::getIsRecording(aliceId, callId)); Manager::instance().hangupCall(aliceId, callId); CPPUNIT_ASSERT( cv.wait_for(lk, 20s, [&] { return bobCall.state == "OVER" && !recordedFile.empty(); })); + JAMI_INFO("End testDaemonPreference"); } } // namespace test