From 81da3f7678074373a4acc6f76e1d6c003b177fe2 Mon Sep 17 00:00:00 2001
From: Aline Gondim Santos <aline.gondimsantos@savoirfairelinux.com>
Date: Mon, 24 Oct 2022 15:06:11 -0300
Subject: [PATCH] conference: fix sinks creation test

The sinks only should be created when there is a video device
available. If no video device is available, no sinks should be
created.

Change-Id: Iec35288bf9966eb664470b2f8c1e5738f6909893
---
 test/unitTest/call/conference.cpp | 35 ++++++++++++++++++++++---------
 1 file changed, 25 insertions(+), 10 deletions(-)

diff --git a/test/unitTest/call/conference.cpp b/test/unitTest/call/conference.cpp
index 2ab4717bc1..aab58e0acf 100644
--- a/test/unitTest/call/conference.cpp
+++ b/test/unitTest/call/conference.cpp
@@ -24,6 +24,7 @@
 #include <string>
 
 #include "manager.h"
+#include "client/videomanager.h"
 #include "jamidht/connectionmanager.h"
 #include "jamidht/jamiaccount.h"
 #include "../../test_runner.h"
@@ -465,19 +466,33 @@ ConferenceTest::testCreateParticipantsSinks()
 
     startConference();
 
-    auto infos = DRing::getConferenceInfos(aliceId, confId);
+    auto expectedNumberOfParticipants = 3;
 
-    CPPUNIT_ASSERT(cv.wait_for(lk, 5s, [&] {
-        bool sinksStatus = true;
-        for (auto& info : infos) {
-            if (info["uri"] == bobUri) {
-                sinksStatus &= (Manager::instance().getSinkClient(info["sinkId"]) != nullptr);
-            } else if (info["uri"] == carlaUri) {
-                sinksStatus &= (Manager::instance().getSinkClient(info["sinkId"]) != nullptr);
+    // Check participants number
+    CPPUNIT_ASSERT(cv.wait_for(lk, 30s, [&]{ return pInfos_.size() == expectedNumberOfParticipants; }));
+
+    if (not jami::getVideoDeviceMonitor().getDeviceList().empty()) {
+        JAMI_INFO() << "Check sinks if video device available.";
+        for (auto& info : pInfos_) {
+            auto uri = string_remove_suffix(info["uri"], '@');
+            if (uri == bobUri) {
+                CPPUNIT_ASSERT(cv.wait_for(lk, 5s, [&]{ return Manager::instance().getSinkClient(info["sinkId"]) != nullptr; }));
+            } else if (uri == carlaUri) {
+                CPPUNIT_ASSERT(cv.wait_for(lk, 5s, [&]{ return Manager::instance().getSinkClient(info["sinkId"]) != nullptr; }));
             }
         }
-        return sinksStatus;
-    }));
+    } else {
+        JAMI_INFO() << "Check sinks if no video device available.";
+        for (auto& info : pInfos_) {
+            auto uri = string_remove_suffix(info["uri"], '@');
+            if (uri == bobUri) {
+                CPPUNIT_ASSERT(cv.wait_for(lk, 5s, [&]{ return Manager::instance().getSinkClient(info["sinkId"]) == nullptr; }));
+            } else if (uri == carlaUri) {
+                CPPUNIT_ASSERT(cv.wait_for(lk, 5s, [&]{ return Manager::instance().getSinkClient(info["sinkId"]) == nullptr; }));
+            }
+        }
+    }
+
 
     hangupConference();
 
-- 
GitLab