2020namespace BigBlueButton \Parameters ;
2121
2222use BigBlueButton \Core \GuestPolicy ;
23+ use BigBlueButton \Enum \Feature ;
2324use BigBlueButton \TestCase ;
2425
2526/**
@@ -90,6 +91,8 @@ public function testCreateMeetingParameters()
9091 $ this ->assertEquals ($ params ['allowRequestsWithoutSession ' ], $ createMeetingParams ->isAllowRequestsWithoutSession ());
9192 $ this ->assertEquals ($ params ['virtualBackgroundsDisabled ' ], $ createMeetingParams ->isVirtualBackgroundsDisabled ());
9293 $ this ->assertEquals (json_encode ($ params ['groups ' ]), json_encode ($ createMeetingParams ->getBreakoutRoomsGroups ()));
94+ $ this ->assertEquals ($ params ['disabledFeatures ' ], $ createMeetingParams ->getDisabledFeatures ());
95+ $ this ->assertEquals ($ params ['disabledFeaturesExclude ' ], $ createMeetingParams ->getDisabledFeaturesExclude ());
9396
9497 // Check values are empty of this is not a breakout room
9598 $ this ->assertNull ($ createMeetingParams ->isBreakout ());
@@ -104,6 +107,32 @@ public function testCreateMeetingParameters()
104107 $ this ->assertEquals ($ newId , $ createMeetingParams ->getMeetingID ());
105108 }
106109
110+ public function testDisabledFeatures (): void
111+ {
112+ $ params = $ this ->generateCreateParams ();
113+ $ createMeetingParams = $ this ->getCreateMock ($ params );
114+
115+ // Test empty disabled features
116+ $ createMeetingParams ->setDisabledFeatures ([]);
117+ $ params = urldecode ($ createMeetingParams ->getHTTPQuery ());
118+ $ this ->assertStringNotContainsString ('disabledFeatures= ' , $ params );
119+
120+ // Test with multiple disabled features
121+ $ createMeetingParams ->setDisabledFeatures ([Feature::CHAT , Feature::POLLS , Feature::CAPTIONS ]);
122+ $ params = urldecode ($ createMeetingParams ->getHTTPQuery ());
123+ $ this ->assertStringContainsString ('disabledFeatures=chat,polls,captions ' , $ params );
124+
125+ // Test empty disabled features exclude
126+ $ createMeetingParams ->setDisabledFeaturesExclude ([]);
127+ $ params = urldecode ($ createMeetingParams ->getHTTPQuery ());
128+ $ this ->assertStringNotContainsString ('disabledFeaturesExclude= ' , $ params );
129+
130+ // Test with multiple disabled features exclude
131+ $ createMeetingParams ->setDisabledFeaturesExclude ([Feature::CHAT , Feature::POLLS ]);
132+ $ params = urldecode ($ createMeetingParams ->getHTTPQuery ());
133+ $ this ->assertStringContainsString ('disabledFeaturesExclude=chat,polls ' , $ params );
134+ }
135+
107136 public function testCreateBreakoutMeeting ()
108137 {
109138 $ params = $ this ->generateBreakoutCreateParams ($ this ->generateCreateParams ());
0 commit comments